文章目录
一、目录与文件操作命令
1.1 显示目录文件 ls
语法:ls [-aAdfFhilnrRSt] [文件或目录]
# 显示所有文件或目录(包含隐藏)
[root@localhost /]# ls -a
# 显示详细信息
[root@localhost /]# ls -l
[root@localhost /]# ll
# 递归显示当前目录下所有目录文件
[root@localhost /]# ls -R
# 按修改时间排序(降序),最好搭配-l使用
[root@localhost /]# ll -t
1.2 切换目录 cd
语法:cd [相对路径或绝对路径]
# 切换到根目录
[root@localhost ~]# cd /
# 回到上一级目录
[root@localhost ~]# cd ..
[root@localhost ~]# cd ../
# 进入当前目录
[root@localhost ~]# cd ./
# 显示并回到上一次操作的目录
[root@localhost ~]# cd -
# 切换到当前用户的宿主(家)目录
[root@localhost ~]# cd ~
[root@localhost ~]# cd
# 进入到suetnay这个用户的宿主(家)目录,即/home/suetnay
[root@localhost ~]# cd ~suetnay
1.3 显示当前所在的目录 pwd
语法:pwd [-P]
# 显示当前工作目录,即/root
[root@localhost ~]# pwd
# 显示实际的目录路径,而非连接文件本身的路径
[root@localhost ~]# pwd -P
1.4 创建新目录 mkdir
语法:mkdir [-mp] 目录名
# 创建新目录
[root@localhost data]# mkdir test
# 创建多级目录
[root@localhost data]# mkdir -p test1/test2/test3/test4
# 同时创建多个目录
[root@localhost data]# mkdir test2 test3 test4
# 创建权限为rwx--x--x的目录
[root@localhost data]# mkdir -m 711 test5
1.5 复制目录与文件 cp
语法:cp [–adfilprsu] 源文件 目标文件
# 复制目录下的所有内容到另一个目录下
[root@localhost data]# cp -r ./a ./test
# 复制目录下的所有内容到另一个目录下,并保留文件属性
[root@localhost data]# cp -a ./a ./test
# 复制文件
[root@localhost data]# cp a.txt ./test
# 保留文件属性(包括源文件时间等)
[root@localhost data]# cp -p a.txt ./test
# 复制目录下的所有内容到另一个目录下
[root@localhost data]# cp -r ./a ./test
# 复制目录下的所有内容到另一个目录下,并保留文件属性
[root@localhost data]# cp -a ./a ./test
1.6 移动目录与文件、或更名 mv
语法:mv 源路径 目标路径
# 移动目录
[root@localhost data]# mv test3 test
# 同时移动多个目录(移动test1和test2到test下)
[root@localhost data]# mv test1 test2 test
# 重命名
[root@localhost test]# mv test1 test3
# 移动文件
[root@localhost data]# mv a.txt test
# 同时移动多个文件(移动a.txt和b.txt到test下)
[root@localhost data]# mv a.txt b.txt test
# 重命名
[root@localhost test]# mv a.txt b.txt
1.7 删除空目录 rmdir
语法:rmdir [-p] 目录名
# 删除空目录
[root@localhost data]# rmdir test5
# 连同上层空目录也一起删除
[root@localhost data]# rmdir -p test1/test2/test3/test4
1.8 删除目录 rm
语法:rm [-rf] 目录或文件名
# 删除目录(询问)
[root@localhost data]# rm -r test1
# 强制删除目录
[root@localhost data]# rm -rf test1
# 删除文件(询问)
[root@localhost data]# rm a.txt
# 强制删除文件
[root@localhost data]# rm -f a.txt
1.9 创建文件 touch
语法:touch [-acdmt] 文件名
# 创建空文件或更新已存在文件的时间(不会覆盖原文件)
[root@localhost data]# touch a.txt
# 同时创建多个文件
[root@localhost data]# touch b.txt c.txt d.txt
1.10 查看文件内容
1.10.1 显示文件内容 cat
语法:cat [-An] 文件名
# 显示文件内容
[root@localhost data]# cat a.txt
# 显示行号
[root@localhost data]# cat -n a.txt
# 显示所有内容,包括隐藏的字符
[root@localhost data]# cat -A /etc/resolv.conf
1.10.2 分页显示内容 more
语法:more 文件名
- 空格键:向下翻动一页
- Enter:向下滚动一行
- /字符串:查询“字符串”这个关键字
- :f:立刻显示出文件名以及目前显示的行数
- q:立刻离开 more,不再显示该文件内容
- b 或 [ctrl]-b:往回翻页,只对文件有用,对管道无用
# 分页显示内容
[root@localhost data]# more /etc/wgetrc
1.10.3 分页显示内容 less
语法:less 文件名
- 空格键:向下翻动一页
- d:向后翻半页
- u:向前翻半页
- Enter:向下滚动一行
- [PageDown]:向下滚动一行
- [PageUp]:向上滚动一行
- /字符串:向下查询“字符串”
- ?字符串:向上查询“字符串”
- n:重复前一个查询(与 / 或 ? 有关)
- N:反向重复前一个查询(与 / 或 ? 有关)
- q:离开 less
# 分页显示内容
[root@localhost data]# less /etc/wgetrc
1.10.4 查看文件前几行 head
语法:head [-n] 文件名
# 查看文件前几行,默认显示 10 行
[root@localhost data]# head /etc/wgetrc
# 查看文件前 20 行
[root@localhost data]# head -20 /etc/wgetrc
[root@localhost data]# head -n 20 /etc/wgetrc
# 不显示文件后面的 100 行
[root@localhost data]# head -n-100 /etc/wgetrc
1.10.5 查看文件后几行 tail
语法:tail [-fFn] 文件名
- -f :依据inode号跟踪,如果目标文件被重命名,则新创建的同名文件不会被跟踪
- -F:依据路径名跟踪,如果目标文件被重名,然后创建了同名的新文件,则会继续跟新文件
# 查看文件后几行,默认显示 10 行
[root@localhost data]# tail /etc/wgetrc
# 查看文件前 20 行
[root@localhost data]# tail -20 /etc/wgetrc
[root@localhost data]# tail -n 20 /etc/wgetrc
# 只显示文件 100 行以后的内容
[root@localhost data]# tail -n+100 /etc/wgetrc
# 只显示第 11 到第 20 行
[root@localhost data]# head -n 20 /etc/wgetrc | tail -n 10
# 持续检测文件内容(按 [ctril]-c 离开tail)
[root@localhost data]# tail -f /etc/wgetrc
1.11 查找命令
1.11.1 查找系统命令所在路径 which
作用:在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
语法:which 命令
# 查找 cd 命令所在路径
[root@localhost data]# which cd
1.11.2 查找特定命令 whereis
作用:查找与命令有关的文件位置
语法:whereis [-bmsu] 命令
# 把和 ls 文件相关的文件都查找出来
[root@localhost ~]# whereis ls
1.11.3 查找文件或目录:find
语法:find [选项] [操作]
如果没有指定搜索路径,默认从当前目录查找。
选项 | 含义 |
---|---|
-name | 根据文件名查找 |
-perm | 根据文件权限查找 |
-prune | 该选项可以排除某些查找目录 |
-user | 根据文件属主查找 |
-group | 根据文件属组查找 |
-mtime -n | +n | 根据文件更改时间查找 |
# 按名称查找,精确查找
[root@localhost ~]# find /etc -name sudo
# 按名称查找,模糊查找
# *:匹配所有
# ?:匹配单个字符
[root@localhost ~]# find /etc -name "sudo???"
# -ls 以详细信息展示
[root@localhost ~]# find /etc -name "*.conf" -ls
# 按文件大小查找(找出大于 200MB 的文件)
# +:大于
# -:小于
# 不写:等于
[root@localhost ~]# find /etc -size -204800
# 按文件类型查找
# f:二进制文件
# l:软链接文件
# d:目录
# c:字符文件
[root@localhost data]# find -type d
# 查找 /root/ 目录下权限为600的文件
[root@localhost data]# find /root/ -perm 600
1.11.4 查找文件内容 grep
作用:在文件中搜寻字串匹配的行并输出,在命令的输出中搜索内容。
语法:grep [-cinv] "关键词" 文件名
# 查找文件内容并显示包含关键字的所在行
[root@localhost data]# grep "love" a.txt
# 显示匹配行的次数(以行为单位,而不是出现的次数)
[root@localhost data]# grep -c love" a.txt
# 忽略大小写
[root@localhost data]# grep -i "Love" a.txt
# 显示匹配行及行号
[root@localhost data]# grep -n "love" a.txt
# 反向选择,显示不包含匹配文本的所有行
[root@localhost data]# grep -v "love" a.txt
二. 压缩和解压文件、打(解)包目录和文件
2.1 压缩文件 gzip
作用:压缩(解压)文件,压缩文件后缀为 .gz。gzip 只能压缩文件,不能压缩目录;不保留原文件。
语法:gzip 文件名
# 压缩单个文件
[root@localhost data]# gzip a.txt
# 同时压缩多个文件
[root@localhost data]# gzip b.txt c.txt
2.2 解压文件 gunzip
语法:gzip -d 文件名
或 gunzip 文件名
# 解压单个文件
[root@localhost data]# gzip -d a.txt.gz
# 同时解压多个文件
[root@localhost data]# gzip -d b.txt.gz c.txt.gz
2.3 打(解)包目录和文件 tar
作用:打(解)包文件或目录会保留源文件
语法:tar [-zcf] 压缩后文件名 文件或目录
- -c:建立一个压缩文件的参数指令,后缀是 .tar
- -x:解开一个压缩文件的参数指令
- -z:以 gzip 命令压缩/解压缩,文件格式 .tar.gz(.tgz)
- -j:以 bzip2 命令压缩/解压缩 ,文件格式 .tar.bz2
- -v:压缩的过程中显示文件
- -f:file 指定文件名,必选项
# 单独打包文件或目录
[root@localhost data]# tar -cvf a.tar a.txt
[root@localhost data]# tar -cvf test.tar test
# 同时打包多个文件
[root@localhost data]# tar -cvf abc.tar a.txt b.txt c.txt
# 追加文件到打包文件中
[root@localhost data]# tar -rvf a.tar d.txt
# 以 gzip 压缩打包文件
[root@localhost data]# gzip a.tar
# 一步到位,打包文件并以 gzip 进行压缩
[root@localhost data]# tar -zcvf abc.tar.gz a.txt b.txt c.txt
# 解压打包文件
[root@localhost data]# tar -xvf a.tar
# 一步到位,解压 .tar.gz 文件
[root@localhost data]# tar -zxvf abc.tar.gz
# 解压到指定目录下
[root@localhost data]# tar -zxvf abc.tar.gz -C test
三、VI编辑器(VIM)
3.1 插入命令
命令 | 作用 |
---|---|
a | 在光标后附加文本 |
A(shift + a) | 在本行行末附加文本 行尾 |
i | 在光标前插入文本 |
I(shift+i) | 在本行开始插入文本 行首 |
o | 在光标下插入新行 |
O(shift+o) | 在光标上插入新行 |
3.2 定位命令
命令 | 作用 |
---|---|
:set nu | 设置行号 |
:set nonu | 取消行号 |
gg | 到第一行 |
G(shift+g) | 到最后一行 |
nG | 到第n行 |
:n | 到第n行 |
3.3 保存和退出命令
命令 | 作用 |
---|---|
:w | 保存修改 |
:w new_filename | 另存为指定文件 |
:w >> a.txt | 内容追加到a.txt文件中 文件需存在 |
:wq | 保存修改并退出 |
:wq! | 保存修改并强制退出(文件所有者可忽略文件的只读属性) |
shift+zz(ZZ) | 快捷键,保存修改并退出 |
:q! | 不保存修改退出 |
ctrl+z | 快捷键,将命令挂起在后台 |
注意:将 vi 命令挂起至后台后,在列表里会出现一个隐藏文件 .swp。输入 fg 进入 vi 编辑器重新修改,修改完成,.swp 文件会自动被删除。
3.4 删除命令
命令 | 作用 |
---|---|
x | 删除光标所在处字符 nx 删除光标所在处后n个字符 |
dd | 删除光标所在行,ndd删除n行 |
:n1,n2d | 删除指定范围的行(eg :1,3d 删除了123这三行) |
dG | 删除光标所在行到末尾的内容 |
D | 删除从光标所在处到行尾 |
3.5 复制和剪切命令
命令 | 作用 |
---|---|
yy、Y | 复制当前行 |
nyy、nY | 复制当前行以下n行 |
dd | 剪切当前行 |
ndd | 剪切当前行以下n行 |
p、P | 粘贴在当前光标所在行下 或行上 |
3.6 替换和取消命令
命令 | 作用 |
---|---|
r | 取代光标所在处字符 |
R(shift + r) | 从光标所在处开始替换字符,按Esc结束 |
u | undo,取消上一步操作 |
ctrl+r | redo,返回到undo之前 |
3.7 搜索和替换命令
命令 | 作用 |
---|---|
/string | 向后搜索指定字符串 搜索时忽略大小写 :set ic |
?string | 向前搜索指定字符串 |
n | 搜索字符串的下一个出现位置,与搜索顺序相同 |
N(Shift + n) | 搜索字符串的上一个出现位置,与搜索顺序相反 |
:%s/old/new/g | 全文替换指定字符串 |
:n1,n2s/old/new/g | 在一定范围内替换指定字符串 |
# % 指全文,s 指开始,g 指全局替换,c 询问确认
# 全局替换,把所有的 love 替换为 hate
:%s/love/hate/g
# 从第 3 到第 4 行,把 love 替换为 hate,询问是否替换
:3,4s/love/hate/c
# 同上,不询问
:3,4s/love/hate/g
# 把 /user 替换为 /usr
:%s/\/user/\/usr/g
# 把 /usr/bin 替换为 /usr/bash
:%s#/usr/bin#/usr/bash
# 在 1~2 行行首添加 # 号注释
:1,2s/^/#/g
# 在所有行的行首添加 # 号注释
:% s/^/#/g
四、权限管理
4.1 用户管理
4.1.1 添加用户
语法:useradd [-cdgGsu] 用户名
# 添加用户
[root@localhost ~]# useradd suetnay
4.1.2 修改用户
语法:
4.1.3 修改密码
语法:passwd 用户名
# 修改密码
[root@localhost ~]# passwd suetnay
4.1.4 删除用户
语法:userdel [-fr] 用户名
- -f:强制删除用户,即使用户当前已登录
- -r:删除用户的同时,删除与用户相关的所有文件
# 删除用户
[root@localhost ~]# userdel -r krystal
4.1.5 查询用户所属组
语法:groups 用户名
# 查询 suetnay 所属用户组(用户组默认与用户名一样)
[root@localhost ~]# groups suetnay
4.2 用户组管理
4.2.1 查询用户组下的用户
语法
4.2.2 新增用户组
语法:groupadd [-go] 用户组
# 新增用户组
[root@localhost ~]# groupadd developer
4.2.3 修改用户组
语法:groupmod [-gno] 用户组
- -n:修改用户组的名字
# 将组 developer 修改为 it-group
[root@localhost ~]# groupmod -n it-group developer
4.2.4 删除用户组
语法:groupdel 用户组
# 删除用户组 it-group
[root@localhost ~]# groupdel it-group
4.2.5 管理用户组中的用户
# 查看用户组 it-group 中的所有用户
[root@localhost ~]# grep "it-group" /etc/group
# 将用户 developer1 添加到组 it-group
[root@localhost ~]# gpasswd -a developer1 it-group
# 从 it-group 组中删除用户 developer3
[root@localhost ~]# gpasswd -d developer3 it-group
五、文件或目录属性与权限管理
5.1 更改文件或目录所属用户组 chgrp
语法:chgrp [-R] 用户组 文件名或目录名
# 将 a.txt 的所属组修改为 it-group
[root@localhost data]# chgrp it-group a.txt
# 递归修改目录下所有目录文件的所属组
[root@localhost data]# chgrp -R it-group a
5.2 更改文件或目录所有者 chown
语法:chown [-R] 用户名[:用户组] 文件名或目录名
# 将 a.txt 的所属用户修改为 developer1
[root@localhost data]# chown developer1 a.txt
# 递归修改目录下所有目录文件的所属用户
[root@localhost data]# chown -R developer2 a
# 将 a.txt 的所属用户和所属组修改为 root
[root@localhost data]# chown root:root a.txt
# 递归修改目录下所有目录文件的所属用户和所属组
[root@localhost data]# chown -R developer2 a
5.3 更改文件或目录权限 chmod
语法:chmod [{ugoa}{+-=}{rwx}] [文件名或目录名]
或 chmod [mode=421] [ 文件或目录]
- u:该文件的所属用户
- g:该文件的所属组
- o:其他用户
- a:全部用户
- +:增加权限
- -:取消权限
- =:唯一设定权限
- r:可读权限 4
- w:可写权限 2
- x:可执行权限 1
# 修改 a.txt 的权限为 [-rwxr-xr--]
# 数字权限
[root@localhost data]# chmod 754 a.txt
# 符号权限
[root@localhost data]# chmod u=rwx,g=rx,o=r a.txt
# 去掉 a.txt 文件所有人的可读权限
[root@localhost data]# chmod a-r a.txt
# 修改目录权限
[root@localhost data]# chmod 711 a
# 递归修改目录下所有目录文件的权限为 777
[root@localhost data]# chmod -R 777 a
六、系统管理
6.1 切换用户 su
# 切换用户
[root@localhost ~]# su suetnay
# 退出返回原使用者
[suetnay@localhost root]$ exit
6.2 关机与重启命令
# 立即关机
[root@localhost ~]# shutdown -h now
# 1分钟后关机
[root@localhost ~]# shutdown
# 指定1分钟后关机,1分钟关机并显示警告信息
[root@localhost ~]# shutdown -h 1 "1分钟后关机"
# 立即重启
[root@localhost ~]# reboot
# 指定1分钟后重启,并显示警告信息
[root@localhost ~]# shutdown -r 1 "1分钟后关机重启"
# 取消正在进行的关机或重启动作
[root@localhost ~]# shutdown -c
6.3 查看内存及交换空间使用状态 free
语法:free [-kmg]
- -k:以 KB 为单位显示(默认)
- -m:以 MB 为单位显示
- -g:以GB为单位显示
- -h:人性化显示
[root@localhost ~]# free -k
[root@localhost ~]# free -m
[root@localhost ~]# free -g
[root@localhost ~]# free -h
# 清除缓存命令
[root@localhost ~]# echo 1 > /proc/sys/vm/drop_caches
…持续增加