语法格式:
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
|