
1 Shortcuts
- 两次
Tab键 -- 自动补全命令字、文件或目录名 \-- 一行内容分成多行显示Ctrl+U/K-- 删除当前光标所在处至行首/行尾的内容Ctrl+L(clear) -- 快速清屏Ctrl+C-- 中断,即取消命令执行Ctrl+A/Home-- 切换到命令行首Ctrl+E/End-- 切换到命令行尾Shift+Page Up/Down-- 查看上一页/下一页内容
2 目录操作命令
pwd
打印当前工作目录的位置
cd
切换工作目录(测试了用户可查看文件权限)
cd /usr/local/-- 绝对路径cd ./share-- 相对路径,“.”表示当前路径cd ../-- 相对路径,“..”表示上一级路径cd ~-- 切换到宿主目录下,“~”等同于/root绝对路径cd --- 相对路径,“-”返回用户最近操作的一次目录
ls 选项 参数
ls-- 显示指定目录下相关文件信息ls -a-- 显示隐藏文件(包括当前目录.和上级目录..)ls -A-- 隐藏文件ls -R-- 递归显示所有子目录文件信息ls -l-- 详细信息ls -d-- 只显示当前目录ls -h-- 以KB/MB/GB等显示文件大小ls -s-- 文件占用磁盘空间大小(块大小)ls -i-- 文件索引节点号(记录文件信息)
mkdir 选项 参数
创建目录
cd /optmkdir test1--/opt目录下新建空的目录test1,相对路径mkdir test2 test3--/opt目录下同时新建test2和test3两个目录,相对路径mkdir {a..f}/mkdir {aa,bb,cc}-- 批量新建多个目录,使用{a..z}或{1..10}连续集合表示,也可使用{目录名1,目录名2,······}取值列表方式表示mkdir -p a/b-- 新建/opt/a/b,选项-p和相对路径
du 选项 参数
统计目录或文件占用的磁盘空间
du -a-- 统计文件(默认只统计目录占用的磁盘空间)du -h-- 以KB/MB等方式显示文件占用的磁盘空间du -B-- 磁盘空间大小 --du -Bh /root/initial-set-ks.cfgdu -b-- 统计文件本身占用空间 --du -bh /root/initial-set-ks.cfgdu -s-- 统计占用的磁盘空间 --ls -hls /root/initial-set-ks.cfg
3 文件操作命令
stat 文件或目录
显示文件或目录的详细属性信息 -- stat /root/anaconda-ks.cfg
touch 选项 文件名
新建空白文件或更新文件的时间标记
touch -a-- 只更改访问时间touch -c-- 不创建任何文件touch -d-- 使用指定字符串表示时间而非当前时间touch -m-- 只更改修改时间
bash
[root@localhost ~] # touch 1.txt 2.txt
[root@localhost ~] # touch {a.txt,b.txt}
[root@localhost ~] # touch {x..z}.txt
[root@localhost ~] # touch {1,12,123}.txtcp 选项 源文件或目录 目标文件或目录
复制文件或目录
cp -r-- 递归复制整个目录树,复制目录时必须使用该选项cp -p-- 保持源文件的属性不变cp -f-- 强制覆盖与目标文件或目录同名的文件或目录(覆盖时不提示)cp -i-- 覆盖时提示
bash
[root@localhost ~] # cp /opt/*.txt /opt/test1
[root@localhost ~] # cp -rf /opt/test1 /opt/test2/
[root@localhost ~] # cp /opt/1.txt /opt/test2rm 选项 文件或目录
删除文件或目录
rm -f-- 强行删除文件或目录并且不提醒rm -i-- 删除文件或目录时提醒用户确认rm -r-- 递归删除整个目录树,删除目录时必须使用该选项
mv 源文件或目录 目标文件或目录
剪切或重命名文件或目录
mv -f-- 文件存在覆盖不提示mv -i-- 文件存在覆盖提示mv -n-- 不覆盖已存在文件
查找
which 命令字
在PATH环境变量中指定路径,定位与指定名字匹配的可执行命令的所在路径,同时也可判断该命令是否存在。
whereis 选项 文件名
whereis -b-- 只搜索二进制文件whereis -m-- 只搜索帮助文件whereis -s-- 只搜索源代码文件
find 路径名 选项 查询结果 处理动作
在整个磁盘中搜索文件,查找速度较慢。
find -name-- 文件名find -type-- 文件类型find -type b-- 块设备文件find -type c-- 字符设备文件find -type d-- 目录find -type f-- 普通文件find -type l-- 符号链接文件find -type p-- 管道文件find -type s-- 套接字文件
find -size-- 文件大小find -user-- 文件所属者find -group-- 文件所属组find -perm-- 文件权限find -ctime-- 最近修改文件(权限)时间find -mtime-- 最近修改(权限和内容)时间find -atime-- 最近访问时间
locate 文件或目录
在后台对系统数据库(/var/lib/locatedb)进行搜索
type 命令字
- 内部命令
builtin
- 外部命令
alias-- 别名keyword-- 关键字file-- 外部命令
bash
[root@localhost ~] # type cd
cd 是 shell 内嵌
[root@localhost ~] # type ls
ls 是 `ls --color=auto` 的别名
[root@localhost ~] # type -P ls
usr/bin/ls
[root@localhost ~] # type if
if 是 shell 关键字ln
软链接文件
符号链接,一个文件改变另一个文件会随之发生改变,删除软链接文件对原始文件无影响。
ln -s 源文件或目录 链接文件或目录
硬链接文件
删除一个文件对另外一个文件无影响且无法硬链接目录。
ln -s 源文件 链接文件
4 文件内容操作命令
管道符
|-- 将前面命令的结果作为后面命令的参数进行使用
重定向符
>-- 覆盖重定向输出:将结果直接写入文件中(无文件自动创建,有文件直接覆盖)>>-- 追加重定向输出:将结果直接写入文件中(无文件自动创建,有文件则追加)<-- 重定向输出:命令中读取内容来自文件而不是键盘
cat 文件
查看文件内容
cat -b-- 显示行号,不包括空行cat -n-- 显示行号,包括空行
bash
[root@localhost ~] # cat a.txt
[root@localhost ~] # cat >> a.txt << EOFwc 选项 文件
wc -c-- 统计字节数wc -l-- 统计行数wc -w-- 统计单词数wc -m-- 统计字符数wc -L-- 统计最长行的长度
more + less
分页
bash
[root@localhost ~] # ls -lh /etc | more
[root@localhost ~] # more /opt/etc.txt
[root@localhost ~] # cat /opt/etc.txt | moremore / less 中命令快捷键
more | less | 功能 |
|---|---|---|
| 无 | 方向键 | 向上滚动一行 |
Enter | 方向键 | 向下滚动一行 |
b | Page Up 或 b | 向上翻页 |
Space | Page Down 或 Space | 向下翻页 |
Ctrl+C 或 q | q | 退出分页显示模式 |
head + tail
截取文件中特定行数内容
head -n-- 行数tail -n-- 行数tail -f-- 实时查看更新内容(Ctrl+C终止)
5 解压缩操作命令
gzip + zcat
- 解压缩后缀名为
.gz的归档文件gzip -d 归档文件名.gzgunzip 归档文件名.gz
- 对
.gz格式压缩文件不解压查看内容zcat 归档文件名.gzgunzip -c 归档文件名.gz
gzip [-9] 文件名-- 选项-9代表高强度压缩
bzip2 + bzcat
- 解压缩后缀名为
.gz的归档文件bzip2 -d 归档文件名.bz2bunzip 归档文件名.bz2
- 对
.gz格式压缩文件不解压查看内容bzcat 归档文件名.bz2bunzip2 -c 归档文件名.bz2
bzip [-9] 文件名
zip
zip 归档文件名.zip 文件名unzip [-d]-- 指定解压路径unzip -l-- 不解压查看
bash
[root@localhost ~] # zip /home/test.zip /opt/1.txt /opt/2.txt
[root@localhost ~] # unzip -l /home/test.zip
[root@localhost ~] # unzip -d /mnt /home/test.ziptar
可对文件和目录进行压缩。
创建
tar选项 归档文件名 源文件或目录tar -c-- 创建.tar格式的包文件tar -x-- 解压.tar格式的包文件tar -v-- 输出详细信息tar -f-- 使用归档文件tar -p-- 打包时保留原始文件及目录的权限
解压
tar选项 归档文件名 [-C 目标路径]tar -t-- 列表查看包内的文件tar -C-- 解包时指定释放的目标文件夹tar -z-- 调用gzip程序进行压缩或解压tar -j-- 调用bzip2程序进行压缩或解压
bash
[root@localhost ~] # tar -czvf /home/testgz.tar.gz /opt /mnt
[root@localhost ~] # tar -xzvf /home/testgz.tar.gz -C /media6 vi 文本编辑器
命令模式
光标移动操作
- 光标移动
或 k|或 j、 h或Backspace|、 l或SpaceEnter或+|-|n+
- 翻页
Page Down或Ctrl+F|Page Up或Ctrl+BCtrl+D|Ctrl+U
- 单词间快速跳转 --
w|e|b|n+ - 行内快速跳转 --
Home、^或0|End或$ - 行间快速跳转 --
lG或gg|G|nG|n+|n- - 当前页跳转 --
H|M|L|zt|zz|zb - 行号显示 --
:set nu|:set nonu
复制、粘贴和删除操作
- 删除 --
x或Del|X|nx|dd|ndd|d^|d$|dw|de|db - 复制 --
yy|nyy|y^|y$|yw|ye|nyw - 粘贴 --
p|P
搜索操作
- 查找文件内容 --
/word|?word|n|N
撤销操作
- 撤销 --
u|U - 保存 --
ZZ
输入模式
模式切换
- 行内添加数据 --
i|I|a|A - 行间添加数据 --
o|O
输入模式操作
- 光标移动 --
| | | - 删除 --
Backspace/Del - 行内跳转 --
Home/End - 换行 --
Enter
末行模式
保存和退出操作
- 保存文件 --
:w|:w /root/newfile - 退出 --
:q|:q! - 保存文件并退出 --
:wq|:wq!
打开新文件的操作
- 编辑新文件 --
:e/路径名/文件名 - 读取新文件 --
:r/路径名/文件名
替换操作
- 当前行替换 --
:s /old/new|:s /old/new/g - 行间替换 --
:m,n s/old/new/g - 整行替换 --
:% s /old/new|:% s /old/new/g - 替换确认 --
:s /old/new/c
7 文本处理“三剑客”
元字符
^-- 行的开始$-- 行的终点\<-- 匹配单词开头的位置\>-- 匹配单词结尾的位置.-- 匹配任意一个字符*-- 重复匹配之前的字符0次或多次[class]-- 匹配字符集class中的任意字符[^class]-- 匹配任何不在字符集class中的字符[0-9]或[a-z]或[A-Z]-- 匹配一组指定范围内的字符,如数字0~9a\{m\}-- 匹配出现m次连续字符a的行a\{m,\}-- 匹配至少出现m次连续字符a的行a\{m,n\}-- 匹配出现m到n次连续字符a的行\-- 转义符
grep 选项 “条件或正则表达式” 文本名
对文件数据内容的查找和定位
grep -v-- 排除满足条件的内容grep -i-- 忽略大小写grep -n-- 输出的同时打印行号grep -c-- 统计满足条件的行数grep -o-- 仅显示匹配满足条件的字符串grep -e-- 实现多个条件逻辑或的关系grep -A-- 打印匹配条件的后几行grep -B-- 打印匹配条件的前几行grep -C-- 打印匹配条件的前后几行
bash
[root@localhost ~] # grep -n "^a" test.txt
[root@localhost ~] # grep "5$" test.txt
[root@localhost ~] # grep "^1" test.txt | grep "5$"
[root@localhost ~] # grep -c "^$" test.txt
[root@localhost ~] # grep -c -i "^a" test.txt
[root@localhost ~] # grep -o "name" test.txt
[root@localhost ~] # grep -e "^a" -e "^y" test.txt
[root@localhost ~] # grep -C 1 "^x" test.txt
[root@localhost ~] # grep -B 2 "^x" test.txt
[root@localhost ~] # grep "^[0-9]*[0-9]$" test.txt
[root@localhost ~] # grep -i "^[a-z]*[a-z]$" test.txt
[root@localhost ~] # grep "^...$" test.txt
[root@localhost ~] # grep "h\{2\}" test.txt
[root@localhost ~] # grep "h\{3,4\}" test.txtsed 选项
截取满足条件的特定行数以及替换
sed -n-- 打印sed处理的那一行数据sed -e-- 编辑,指定多个处理动作sed -f-- 将sed的动作写入文件中sed -r-- 使用扩展的正则表达式sed -i-- 直接修改文件中的内容a-- 在指定行的下一行插入数据i-- 在指定行的上一行插入数据c-- 替换指定行的数据d-- 删除p-- 打印s-- 全部替换w-- 保存r-- 读取、匹配、并入y-- 逐个替换
bash
[root@localhost ~] # cat sed.txt
1 2 3 4 5 6 11111 22222 33333 44444
[root@localhost ~] # sed -n '2p' sed.txt
2
[root@localhost ~] # sed -n '2,4p' sed.txt
2 3 4
[root@localhost ~] # sed -n '2p;6p' sed.txt
2 6
[root@localhost ~] # sed -n '2,+3p' sed.txt
2 3 4 5
[root@localhost ~] # sed '3d' sed.txt
1 2 4 5 6 11111 22222 33333 44444
[root@localhost ~] # sed '3,6d' sed.txt
1 2 11111 22222 33333 44444
[root@localhost ~] # sed '2ctest' sed.txt
1 test 3 4 5 6 11111 22222 33333 44444
[root@localhost ~] # sed 's/2/k/g' sed.txt
1 k 3 4 5 6 11111 kkkkk 33333 44444
[root@localhost ~] # sed '2itest' sed.txt
1 test 2 3 4 5 6 11111 22222 33333 44444
[root@localhost ~] # sed '2a666' sed.txt
1 2 666 3 4 5 6 11111 22222 33333 44444
[root@localhost ~] # sed '2,4iname' sed.txt
1 name 2 name 3 name 4 5 6 11111 22222 33333 44444
[root@localhost ~] # sed -i 's/^/#/' sed.txt
[root@localhost ~] # cat sed.txt
#1 #2 #3 #4 #5 #6 #11111 #22222 #33333 #44444
[root@localhost ~] # sed -i '2,6s/^#//' sed.txt
[root@localhost ~] # cat sed.txt
#1 2 3 4 5 6 #11111 #22222 #33333 #44444awk 选项 ‘BEGIN{命令} pattern{命令} END{命令}’ 文件名
文件数据切片和截取满足条件的特定列数
awk -F-- 指定分隔符,默认为空格或Tabawk -f-- 调用awk脚本awk -v-- 调用外部的Shell变量$1...$n$-- 指定分隔符对应的值$0-- 当前行的内容$NF-- 最后一列NF-- 指定分隔符号之后行的列数NR-- 当前行的行号FS-- 输入字段(列)分隔符,默认为空格或TabRS-- 输入记录(行)分隔符,默认为换行符OFS-- 输出字段(列)分隔符ORS-- 输出记录(行)分隔符FILENAME-- 保存当前的文件名
bash
[root@localhost ~] # ls -lh /root | awk '{print $1}'
[root@localhost ~] # awk -F ":" '{print $5}' /etc/passwd
[root@localhost ~] # awk -F ":" '{print $NF} /etc/passwd'
[root@localhost ~] # awk '{print NR, $0}' /etc/passwd
[root@localhost ~] # awk -F ":" 'NR==2{print NF}' /etc/passwd
[root@localhost ~] # awk 'NR==8{print $0}' /etc/passwd
[root@localhost ~] # awk -v FS=':' -v OFS='\t' 'NT==2{print $1 $1}' /etc/passwd
[root@localhost ~] # awk -v FS=':' -v OFS='\t' -v ORS='\n' 'NR=2{print $1,$2} NR==3{print $1,$2}' /etc/passwd
[root@localhost ~] # awk 'BEGIN{print "hello"}{print $0}END{print FILENAME}' /etc/passwd8 vim 的使用
命令模式
光标移动操作
- 光标移动
或 k|或 j、 h或Backspace|、 l或SpaceEnter或+|-|n+
- 翻页
Page Down或Ctrl+F|Page Up或Ctrl+BCtrl+D|Ctrl+U
- 单词间快速跳转 --
w|e|b|n+ - 行内快速跳转 --
Home、^或0|End或$ - 行间快速跳转 --
lG或gg|G|nG|n+|n- - 当前页跳转 --
H|M|L|zt|zz|zb - 行号显示 --
:set nu|:set nonu
复制、粘贴和删除操作
- 删除 --
x或Del|X|nx|dd|ndd|d^|d$|dw|de|db - 复制 --
yy|nyy|y^|y$|yw|ye|nyw - 粘贴 --
p|P
搜索操作
- 查找文件内容 --
/word|?word|n|N
撤销操作
- 撤销 --
u|U - 保存 --
ZZ
输入模式
模式切换
- 行内添加数据 --
i|I|a|A - 行间添加数据 --
o|O
输入模式操作
- 光标移动 --
| | | - 删除 --
Backspace/Del - 行内跳转 --
Home/End - 换行 --
Enter
末行模式
保存和退出操作
- 保存文件 --
:w|:w /root/newfile - 退出 --
:q|:q! - 保存文件并退出 --
:wq|:wq!
打开新文件的操作
- 编辑新文件 --
:e/路径名/文件名 - 读取新文件 --
:r/路径名/文件名
替换操作
- 当前行替换 --
:s /old/new|:s /old/new/g - 行间替换 --
:m,n s/old/new/g - 整行替换 --
:% s /old/new|:% s /old/new/g - 替换确认 --
:s /old/new/c
作业
使用
vim打开本目录下的./man.config文本文件,设定行号;bashvi /etc/man.config :set nu移动到第58行行首,再向右移动30个字符,移动到第8行行尾,再向左移动3个单词:
bash58G 30→ 8G $ 3b移动到第一行行首,并且向下搜索“man"这个字符串:
bashgg /man n将50到100行之间的man替换为MAN,并且一个一个挑选是否需要修改;
bash:50,100s/man/MAN/gc复制51到60行这十行的内容,并且贴到最后一行之后:
bash51G 10yy G p删除11到30行之间的20行,去第29行首,并且删除15个字符;
bash11G 20dd 29G 15x撤销全部操作,将文件复原:
bashu···/ :e!将文件另存成一个名为
man.config.bak的文件;bash:w man.config.bak在
man.config.bak文件最后一行后插入当前目录下turtle.txt文件内容并保存;bashr ./turtle.txt同时打开
man.config.bak和man.configbashvi ./man.config.bak ./man.config将文件
man.config.bak中添加的新内容的第1列到第10列拷贝并粘贴到man.config中;bashctrl + v :set nu 152↓ 10→ y :n p储存两个文件后离开vim。
bash:wq
Brandon
