echo [参数] 字符串/变量
| -n | 不输出结尾的换行符 |
| -e “\a” | 发出警告音 |
| -e “\b” | 删除前面的一个字符 |
| -e “\c” | 结尾不加换行符 |
| -e “\f” | 换行,光标扔停留在原来的坐标位置 |
| -e “\n” | 换行,光标移至行首 |
| -e “\r” | 光标移至行首,但不换行 |
| -E | 禁止反斜杠转移,与-e参数功能相反 |
输出指定字符串到终端设备界面(默认为电脑屏幕):
- [root@local ~]# echo HelloWorld
- HelloWorld
输出某个变量值内容:
- [root@local ~]# echo $PATH
- /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/root/bin
搭配转义符一起使用,输出纯字符串内容:
- [root@local ~]# echo \$PATH
- $PATH
搭配输出重定向符一起使用,将字符串内容直接写入文件中:
[root@local ~]# echo "Hello World" > Document
搭配反引号执行命令,并将执行结果输出:
- [root@local ~]# echo `uptime`
- 16:16:12 up 52 min, 1 user, load average: 0.00, 0.00, 0.00
输出带有换行符的内容:
- [root@local ~]# echo -e "First\nSecond\nThird"
- First
- Second
- Third
指定删除字符串中某些字符,随后将内容输出:
- [root@local ~]# echo -e "123\b456"
- 12456
grep [参数] 文件
| -i | 忽略大小写 |
| -c | 只输出匹配行的数量 |
| -l | 只列出符合匹配的文件名,不列出具体的匹配行 |
| -n | 列出所有的匹配行,显示行号 |
| -h | 查询多文件时不显示文件名 |
| -s | 不显示不存在、没有匹配文本的错误信息 |
| -v | 显示不包含匹配文本的所有行 |
| -w | 匹配整词 |
| -x | 匹配整行 |
| -r | 递归搜索 |
| -q | 禁止输出任何结果,已退出状态表示搜索是否成功 |
| -b | 打印匹配行距文件头部的偏移量,以字节为单位 |
| -o | 与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位 |
| -F | 匹配固定字符串的内容 |
| -E | 支持扩展的正则表达式 |
搜索某个文件中,包含某个关键词的内容:
- [root@local ~]# grep root /etc/passwd
- root:x:0:0:root:/root:/bin/bash
- operator:x:11:0:operator:/root:/sbin/nologin
搜索某个文件中,以某个关键词开头的内容:
- [root@local ~]# grep ^root /etc/passwd
- root:x:0:0:root:/root:/bin/bash
搜索多个文件中,包含某个关键词的内容:
- [root@local ~]# grep linuxprobe /etc/passwd /etc/shadow
- /etc/passwd:linuxprobe:x:1000:1000:linuxprobe:/home/linuxprobe:/bin/bash
- /etc/shadow:linuxprobe:$6$9Av/41hCM17T2PrT$hoggWJ3J/j6IqEOSp62elhdOYPLhQ1qDho7hANcm5fQkPCQdib8KCWGdvxbRvDmqyOarKpWGxd8NAmp3j2Ln00::0:99999:7:::
搜索多个文件中,包含某个关键词的内容,不显示文件名称:
- [root@local ~]# grep -h linuxprobe /etc/passwd /etc/shadow
- linuxprobe:x:1000:1000:linuxprobe:/home/linuxprobe:/bin/bash
- linuxprobe:$6$9Av/41hCM17T2PrT$hoggWJ3J/j6IqEOSp62elhdOYPLhQ1qDho7hANcm5fQkPCQdib8KCWGdvxbRvDmqyOarKpWGxd8NAmp3j2Ln00::0:99999:7:::
输出在某个文件中,包含某个关键词行的数量:
- [root@local ~]# grep -c root /etc/passwd /etc/shadow
- /etc/passwd:2
- /etc/shadow:1
搜索某个文件中,包含某个关键词位置的行号及内容:
- [root@local ~]# grep -n network anaconda-ks.cfg
- 17:network --bootproto=static --device=ens160 --ip=192.168.10.10 --netmask=255.255.255.0 --onboot=off --ipv6=auto --activate
- 18:network --hostname=linuxcool.com
搜索某个文件中,不包含某个关键词的内容:
- [root@local ~]# grep -v nologin /etc/passwd
- root:x:0:0:root:/root:/bin/bash
- sync:x:5:0:sync:/sbin:/bin/sync
- shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
- halt:x:7:0:halt:/sbin:/sbin/halt
- linuxprobe:x:1000:1000:linuxprobe:/home/linuxprobe:/bin/bash
搜索当前工作目录中,包含某个关键词内容的文件,未找到则提示:
- [root@local ~]# grep -l root *
- anaconda-ks.cfg
- grep: Desktop: Is a directory
- grep: Documents: Is a directory
- grep: Downloads: Is a directory
- initial-setup-ks.cfg
- grep: Music: Is a directory
- grep: Pictures: Is a directory
- grep: Public: Is a directory
- grep: Templates: Is a directory
- grep: Videos: Is a directory
搜索当前工作目录中,包含某个关键词内容的文件,未找到不提示:
- [root@local ~]# grep -sl root *
- anaconda-ks.cfg
- initial-setup-ks.cfg
递归搜索,不仅搜索指定目录,还搜索其内子目录内是否有关键词文件:
- [root@local ~]# grep -srl root /etc
- /etc/fstab
- /etc/X11/xinit/Xclients
- /etc/X11/xinit/xinitrc
- /etc/libreport/events.d/collect_dnf.conf
- /etc/libreport/events.d/bugzilla_anaconda_event.conf
- /etc/libreport/forbidden_words.conf
- ...
搜索某个文件中,精准匹配到某个关键词的内容(搜索词应与整行内容完全一样才会显示,有别于一般搜索):
- [root@local ~]# grep -x cd anaconda-ks.cfg
- [root@local ~]# grep -x cdrom anaconda-ks.cfg
- cdrom
判断某个文件中,是否包含某个关键词,通过返回状态值输出结果(0为包含,1为不包含),方便在Shell脚本中判断和调用:
- [root@local ~]# grep -q linuxprobe anaconda-ks.cfg
- [root@local ~]# echo $?
- 0
- [root@local ~]# grep -q linuxcool anaconda-ks.cfg
- [root@local ~]# echo $?
- 1
搜索某个文件中,空行的数量:
- [root@local ~]# grep -c ^$ anaconda-ks.cfg
- 6
vi [参数] 文件
| -s | 静默模式 |
| -- -cmd<命令> | 加载任何vimrc文件之前执行指定命令 |
| -R | 只读模式 |
| -v | Vi模式 |
| -e | Ex模式 |
| -y | 简易模式 |
| -c<命令> | 加载第一个文件之后执行指定命令 |
| -s<脚本输入文件> | 从指定脚本输入文件阅读普通模式命令 |
| -w<脚本输出文件> | 追加所有类型的命令写入脚本输出文件 |
| -W<脚本输出文件> | 写入所有类型的命令到指定脚本输出文件 |
| +<行数> | 从指定行开始 |
| -- -noplugin | 不要加载插件脚本 |
| -p<数量> | 打开指定数量的标签页(带文件名) |
| -r<文件名> | 恢复崩溃的会话 |
| -L | 等同于-r |
| -r | 列出交换文件并退出 |
| -u<vimrc> | 熟用指定vimrc,而不是.vimrc |
| -T<终端> | 设置使用指定终端 |
| -o<数量> | 打开指定数量的窗口 |
| -n | 不使用交换文件,只用内存 |
| -Z | 受限模式 |
| -m | 不允许修改(写入) |
| -b | 二进制模式 |
| -M | 在文本中不允许修改 |
创建某个文件,并进行编写操作:
[root@local ~]# vi anaconda-ks.cfg
打开某个已存在的文件,从第6行开始编写:
[root@local ~]# vi +6 anaconda-ks.cfg
打开某个已存在的文件,以只读模式进入:
[root@local ~]# vi +R anaconda-ks.cfg