- 运行 runlevel 可以查看当前系统的运行级别 - 输入: clear 或者 ctrl + l ,表示清屏 - pwd命令: 显示当前的目录路径 **默认比较重要的目录** - /bin: 存放的是 系统的命令,比如 cd,ls.... - /etc: 存放的是项目的配置文件, 比如mysql的 配置文件 my.cnf - /home - 如果是超级用户root,那么root用户进入系统的默认路径是 /root - 如果是普通用户,那么/home目录下面会创建一个和用户名称一样的目录,该用户进入系统的默认路径就是 当前目录 比如: peter 普通用户, 默认的路径就是 /home/peter - 规范:把 当前用户的 项目资料, 存放在 这个用户的 家目录下面 - /root: 超级用户的家目录 - /sbin: 里面的命令只有超级用户root可以执行 - /usr: 把安装的软件存放在这个目录 ## 命令 - **cd: 表示进入到某一个目录** - `.` : 表示当前目录, 一般不是配合cd使用. .的用法一般用来执行shell脚本 - `.. ` : 表示当前路径的 上一级 目录. 如果 路径以 . 或者 .. 开头都表示 相对路径 - `~` : 表示用户家目录, 不管当前在哪个目录,只要执行 cd ~,就直接跳转到 当前用户的家 目录. cd 后面不加任何字符,也表示跳转到用户家目录 - `/ `: 表示 根目录, 路径如果是以 / 开头表示 绝对路径 - `-` : 表示 用户 上一次 所在的目录 - **ls: 查看当前目录下面所有的 文件和 文件夹** - ls 命令格式: ` ls -al 文件名` - -al 表示选项, 选项的字符可以是多个, 顺序没有要求 - 如果不加文件名,那么是显示当前文件下面所以的文件 - 如果加了文件名,那就只显示这个文件的详情 - ls -l : 表示列出所有文件的详细信息 - 包含7部分 ```python -rwxr-xr-x | 1 | root | root | 45784 | 8月 20 2019 | uniq ``` - **第一部分`-rwxr-xr-x`: 表示当前文件的权限** - 第一个字符:表示文件类型 - `-`: 表示文件 - d: 表示文件夹 - l : 表示软连接, 相当于window的快捷方式 - 后面的9个字符表示文件权限: 前面3个字符表示当前用户权限, 中间3个字符表示所属组的用户权限,最后3个字符表示其他用户权限 - `-`:没有权限 - r: 有可读权限 - w:有可写权限 - x:有可执行权限 - **第二部分 `1`:** - 如果是文件夹: 表示当前文件夹里面有几个文件夹, ls -al 是显示隐藏的文件和文件夹 - 如果是文件:表示当前文件的硬链接,硬链接表示两个文件同时指向硬盘的同一个区域 - **第三部分 root: 哪个用户创建的这个文件** - **第四部分 root: 这个用户所属的用户组** - **第五部分 45784: 表示文件大小 (单位是字节)** - **第六部分` 8月 20 2019`: 表示当前文件修改时间** - **第七部分: 表示文件的名称** - ls -a : -a这个参数表示显示所有隐藏的文件和文件夹 - 所有的隐藏文件和文件夹 都是 以 . 开头 - ls -lh: -h这个参数表示把 文件大小 默认的字节(byte) 用 比较容易 看的方式(k,M,G) 显示 - ## touch: 创建一个或者多个文件 - 格式: touch 文件名1 <文件名2 文件名3...> - ## mkdir:创建目录 - 格式: mkdir 目录1 <目录2 目录3>, 如果没有 -p 选项,只能创建 一级 的文件夹 - 加了 -p 选项: mkdir -p a/b/c, 表示 可以 创建 嵌套的 a/b/c 的目录 - ## 命令后面在 空格 --help, 表示查看当前命令有哪些选项可以使用, 会显示 这些 选项详细的使用说明 - 比如: ls --help - ## rmdir: 删除空目录,不能删除文件和非空目录 - ## rm命令: 删除文件个文件夹命令 - -r : 递归的删除一个目录下面所有的文件和文件夹 - -f : 不提示信息,强制删除 - 通常的用法: rm -rf 文件名 - 特殊用法: rm -rf c*, 表示删除c字符开头的所有的文件,. *是一个通配符,能匹配所有的字符 - ## cp命令: 赋值或者拷贝文件或者文件夹 - 格式: cp 源文件路径 目标文件路径 - 如果目标路径是一个目录, 那么会原样拷贝源文件到目录中 - 如果目标路径是一个文件名,那么会把源文件名重新命名成新的文件名 - 如果拷贝的是文件夹,那么 需要加 -r 参数, 表示递归拷贝: 比如 cp -p a aaa - ## 选项 可以放到 命令的后面,也可以放在 整个命令的后面 - 例如: cp -r a aaa 和 cp a aaa -r 的结果是一样的 - ## mv命令: 重命名或者剪切文件 - 格式 mv 源文件名 目标文件名 - 如果 目标文件名是一个 目录,那么 直接把源文件移动到该目录下 - 如 目标文件一个文件名, 移动之后,会重新命令成新的文件名 - ## cat命令: 把文件的内容全部显示出来 - 格式: cat 文件名称 - ## tac命令: 从后往前把文件的内容全部显示 - 格式: tac 文件名称 - ## head 命令: 显示文件开头某几行 - 格式: head -n 文件名 - 如果没有执行 -n 多少行, 那么默认显示 10行 - 如果执行 -n 是 20行, 比如: head -20 文件名 , 那么显示文件的 前20行数据 - ## tail命令: 显示文件末尾的某几行 - 格式: tail -n 文件名 - 如果没有 -n , 默认显示 文件末尾 的 10行 - 如果加了 -n, 表示 显示末尾的 n 行, 比如 tail -5 文件名,就是显示后面5行数据 - 特殊用法: 实时监控当前文件有没有新的内容写入 - 格式 tail -f 文件名: 它是一个阻塞的状态,如果有新的内容写入, 会立刻显示新写入的内容 ## tree命令: 显示当前目录的结构层次. 注意:需要安装 `yum install tree` ## history: 显示当前用户 之前输入过的 所有的命令 ## echo命令: 通常的用法是 在一个文件中 追加少量的内容 - 格式 echo "字符串" >或者>> 文件名 - 如果是一个 > : 表示 新写入的 内容会覆盖 文件中的所有内容 - 如果是两个 >: 表示 把新写入的内容 追加到 文件末尾 ## nl命令: - 格式: nl 文件名: 显示所有文件内容,并显示每一行的行号 ## wc命令: 显示一个文件的 行数, 单词数, 字符数 - 格式: wc 文件名 - 如果想单独显示行数,单词数,字符数. 需要在wc命令后面加选项 - -l 表示行数: wc -l a.txt - -w表示单词数: wc -w a.txt - -m 表示字符数: wc -m a.txt ## more / less 命令: 可以一屏或者一行显示文件中的内容 - 格式: more/less 文件名 - enter: 按行查看 - 空格:按屏来查看 - q键:退出查看的内容 - more查看到文件最后会自动退出, less不会,需要点击q键 - less可以点击 上下键,进行按行查看 - 特殊用法: 如果一个文件夹下面有很多文件,为了不把所有的文件全部显示,只想一屏一屏查看,可以通过加 | more命令查看,这样这个文件夹下面所有的文件都是按照一屏一屏的输出 - 例如一屏一屏查看/bin目录下所有的文件,命令首相 cd /bin , 然后 ls -l | more , 管道 | 的意义,是 把前面命令的输出的内容,当做后面命令的输入内容 ## vim的三个模式: 格式vim 文件名 - 命令模式: 使用vim 文件名, 默认进入的就是命令模式. 不能直接去写数据,只能通过命令对文件内容进行增删改查 - 插入模式(编辑模式): 相当于在编辑器中对文件内容进行修改. - 进入到插入模式的方法 - 由命令模式进入插入模式: 点击 i 键 - 由编辑模式进入插入模式: 先点击 ESC 键 进入 命令模式, 然后点击 i 键进入 插入模式 - 编辑模式(末行模式): 表示当操作完文件之后,需要对文件进行保存或者退出. - 如果当前模式是命令模式: 直接点击 shift + : , 后加加上保存或者退出的按键, 例如 (:w 保存) (:q退出) - 如果当前模式是插入模式 - 首先由插入模式进入到命令模式: 按 ESC 键 - 由命令模式进入到编辑模式: 点击 shift + : , 进行对文件的保存或者退出 ## 命令模式常用的一些操作 - shift + z + z : 保存并退出当前文件 - vi a.txt +3: 表示进入到命令模式, 光标定位在 第三行 - vi a.txt +: 表示 光标定位在 最末行 - G: 定位到文件最末行 - gg: 定位到文件首行 - ngg: 表示从任何其他行,定位到第n行. 比如 5gg, 表示定位到第5行. 如果还想继续从当前行往下偏移5行,点击 5,然后点击enter - shift + 4: 表示定位到 当前行 最末尾的字符 - shift + 6 或者 0数字: 表示定位到 当前行 最开始的字符 - yy: 复制当前行 - nyy: 复制由当前行开始往下的n行, 比如当前行在第2行, 如果执行3yy,表示 复制第2行到第4行的内容 - p: 在当前行处,粘贴之前复制的内容 - ctrl + f : 下翻一页 - ctrl + b: 上翻一页 - ctrl + d: 下翻半页 - ctrl + u : 上翻 半页 - x : 表示 删除光标 右边的一个字符 - nx: 表示 删除 光标 右边 n 个字符 - X (shift + x): 表示 删除光标 左边的一个字符 - nX (3 + shift + x): 表示 删除光标 左边的 3个字符 - dd: 表示 删除当前行 - ndd: 表示删除当前行 下面的 n 行 - u: 表示 撤销上一次的操作, 可以连续点击 u, 表示 撤销上n次的操作 - ctrl + r : 表示反撤销 **在三种模式中,如果是非正常退出. 比如点击 ctrl + z 退出,或者电脑死机. 那么这种情况会生成一个 名称为 .文件名.swp的交换文件. 比如 .a.txt.swp . 如果生成这种交换文件. 那么下一次 用vim 打开文件, 会出现提示信息,需要点击 enter 才能继续编辑. 通常的做法都是把这个隐藏的交换文件删除掉.就是执行 rm -rf .a.txt.swp** ## 由 命令模式 进入 插入模式 常用的按键 - i : 在当前光标插入 - I : 在当前行 非空字符处 插入 - a : 在光标的下一个字符处 插入 - shift + a (A): 在当前行的末尾插入 - o : 在当前行的下一行的空行处插入 - shift + o (O): 在当前行的上一行的空行处插入 - s : 删除光标所在字符,并进入输入模式 - shift + s (S): 删除光标所在的行,并进入输入模式 ## 编辑模式(末行模式) 常用的按键 - `:w` : 表示保存文件不退出 - `:q` : 表示 退出, 一般有两种用法. 要么 是 `:wq` 保存退出. 要么是 `:q!` 不保存文件强制退出 - `:wq` :表示 保存文件并退出 - `:x` : 表示 保存文件并退出 - `:q!` : 表示强制退出,不保存修改 - `:w 新文件名称`: 文件修改之后,保存一个新的文件 - `:set nu` : 显示文件内容的 行号 - `:set nonu`: 隐藏文件内容的 行号 - `[:]/关键字` : 这个 `:` 可以写 也可以不写, 输入完字符后, 点击 回车, 会从开头去找第一个匹配到的关键字. - 如果想继续 往下 找相同的关键字,那么点击 n - 如果想 往上 找相同的关键字,点击 shift + n (N) - `[:]?关键字`: 从文件末尾查找匹配的关键字 - N: 从上往下找匹配的关键字 - n: 从下往上找匹配的关键字 - `:ns/查找的字符/替换的字符[/g]` - n表示第几行 - /g表示是否全局替换 - 例如 `5s/hello/HELLO`,表示的意思: 把第5行 第一次匹配到的 hello 改写成 HELLO - 例如 `5s/hello/HELLO/g`表示的意思: 把 第5行 所有匹配的的 hello 全部改写成 HELLO - `:m,ns/查找的字符/替换的字符[/g]` - 查找第m行到第n行的数据,并且替换, `/g`的用法和上面是一样的 - `:%s/查找的字符/替换的字符[/g]` - 查找所有行进行替换, `/g`的用法和上面是一样的 - `:n` 表示将光标定位到第 n 行 #### 在终端输入命令,如果想从命令开头跳到命令末尾,快捷键是 ctrl + e #### 如果想从命令末尾跳到命令开头,快捷键是 ctrl + a ## 用户管理的命令 - whoami: 查看当前的登录用户 - useradd: 添加用户 - 格式 useradd 用户名: 会自动在/home目录下面创建一个同名的文件夹,如果用这个用户登录,默认的进入系统的路径就是/home/用户名 - 有一些参数只需要了解 - -d : 指定一个路径作为 这个用户的 家目录, 一般不会添加这个参数 - -m: 老版本需要加入这个参数,表示在/home目录下面创建一个同名的家目录. 老版本中如果不加,就不会创建家目录 - -s: 表示当前用户登录系统的 shell脚本. 老版本中需要指定 -s /bin/bash, 意思是能够登录系统. 如果 -s 指定的是 /sbin/nologin 表示这个用户不能登录系统 - passwd: 设置用户密码 - passwd 用户名: 给这个用户名设置密码 - passwd 没有用户名: 给当前登录用户重新设置密码 - userdel: 删除指定的用户 - userdel 用户名: 删除指定用户, 但是不会删除这个用户的家目录 - userdel -r 用户名: 删除指定用户的同时 ,删除这个用户的家目录 - su: 切换用户 - su 非root的用户名: 表示切换到非root的用户, 由root用户切换到其他用户,不需要输入密码 - su 或者 su - : 表示切换到root用户, 需要输入root用户的密码 - sudo: 给jack用户赋予管理员的权限 - 步骤: - 用root用户, 把jack用户加入到 /etc/sudoers 文件中 ```python # 在101 行加入 如下的代码 ## Allow root to run any commands anywhere root ALL=(ALL) ALL jack ALL=(ALL) ALL ``` - 切换到jack用户: su jack - 在所有执行的命令前加入 sudo命令. 比如 编辑 /etc/vimrc, 那么命令是 `sudo vi /etc/vimrc` - visudo: 直接编辑 /etc/sudoers 文件. 等同于 vi /etc/sudoers