2022/10/26
数据流重定向
重定向操作符——“>”、“>>”、“<”、“<<”
在Linux系统中
默认的输入设备(标准输入)是键盘
默认的输出设备(标准输出)是屏幕
[root@localhost ~]# head -3 /etc/passwd > aaa
[root@localhost ~]# cat aaa
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
重定向符 >
追加重定向符 >>
输入重定向符 <
终止结束符 <<
[root@localhost ~]# cat << EOF >bbb
[root@localhost ~]# cat << EOF >bbb
> 1
> 2
> 3
> 4
> 5
> EOF
[root@localhost ~]# cat bbb
1
2
3
4
5
文件有三个标识符(0 1 2)
[root@localhost ~]# cat << EOF >bbb
> 1
> 2
> 3
> 4
> 5
> EOF
[root@localhost ~]# cat bbb
[root@localhost ~]# head -3 /etc/passwd 1> ccc 2> bbb(真确1 错误2)
grep命令
[root@localhost ~]# cat /etc/passwd | grep
b 将可执行文件(binary)当作文本文件(text)来搜索
-c 仅显示找到的行数
-i 忽略大小写
-n 显示行号
-v 反向选择——仅列出没有“关键词”的行
-A -A 2:搜索时显示匹配到的那一行以及下2行
-B -B 2:搜索时显示匹配到的那一行以及上2行
-C -C 2:搜索时显示匹配到的那一行以及上下2行
[root@localhost ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# grep -c root /etc/passwd
2
[root@localhost ~]# grep -A 2 root /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
*任意长度任易字符
[root@localhost ~]# grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@localhost ~]# grep bash$ /etc/passwd
root:x:0:0:root:/root:/bin/bash
rhcsa:x:1000:1000:rhcsa:/home/rhcsa:/bin/bash
[root@localhost ~]# grep '[abcdef]' /etc/passwd
把abcdef的字符过滤出来
匹配以q开始的行 grep ^q 文件名
匹配以q结束的行 grep q$ 文件名
匹配以数字开头的行 grep ^[0-9] 文件名
匹配以q或者f开头的行 grep ^[qf] 文件名
不匹配以q或者f开头的行 grep ^[ ^qf ] 文件名
匹配以#号开头的行 grep ^# (以#开头的大多是注释)
过滤空白行 grep ^$
如果要明确搜索子目录有h的字符 grep -r h ./*
忽略子目录 grep -d skip h ./*
[root@localhost ~]# grep -r 123 /root (从根目录查找123)
练习
1.通过多种方法将以下内容写入文件。
111111111
222222222
333333333
2.过滤/etc/passwd有root关键字的行。
3.将/etc/login.defs文件的关键信息写入login文件。
4.将/etc/passwd文件中以bash结尾的信息追加写入login文件。
5.将/etc/login.defs文件中有数字的行追加写入到login文件。
#vim filename1 文件名
111111111
222222222
333333333
:wq
#nano filename2
111111111
222222222
333333333
ctrl+x y enter
#echo 111111111 > filename3
#echo 222222222 >> filename3
#echo 333333333 >> filename3
echo -e "111111111\n222222222\n333333333" > aaa
#cat <<EOF > filename4
>111111111
>222222222
>333333333
>.
2#grep -选项 '关键字匹配' 文件名
#grep 'root' /etc/passwd
3grep -v '^#' /etc/login.defs | grep -v '^$'
4grep 'bash$' /etc/passwd |tee login
grep 'bash$' /etc/passwd > login
5grep '[0-9]' /etc/login.defs | tee -a login
grep '[0-9]' /etc/login.defs >> login