管道和重定向及文件管理
文件的描述符
0 - 标准输入,键盘的输入
1 - 标准输出,程序正确的执行,输出在终端上的内容
2 - 错误输出,程序正确的执行,输出在终端上的内容
管道 |
前面的标准输出通过管道传递给后面的命令继续处理。
注意:
1.管道前面是命令,要有标准输出 ls / cat /grep /tail/head
2.管道后面一定要接处理文本内容的命令 sort /grep / head …
3.管道后面的处理命令不要接路径文件
eg: 输出passwd的三到五行
head -5 /etc/passwd | cat -n | tail -3
重定向
输出重定向 - 如果目标文件不存在,将自动创建出来
“>” 标准输出重定向,覆盖模式 echo hello > /tmp /a.txt
“>>” 标准输出重定向,追加模式 >>
重定向的目标文件,如果目标文件不存在,则会被创建
● 注:清空一个文件夹: # > /tmp/b.txt
使用重定向创建一个文件 # head -2 /etc/ passwd > /c.txt
2> 错误输出重定向,覆盖模式
2>> 错误输出重定向, 追加模式
&> 所有输出重定向,
设备文件
/dev/null 垃圾桶,永远装不满
/dev/zero 永远取不完
eg :将不存在的用户natasha,不保存,不输出
id natasha &> /dev/null
1>&2 将标准输出转换为错误输出
2>&1 将错误输出转换为标准输出
[root@host1 ~]# ls /tmp/a.txt /tmp/d.txt
ls: cannot access /tmp/d.txt: No such file or directory
/tmp/a.txt
[root@host1 ~]# ls /tmp/a.txt /tmp/d.txt | cat -n
ls: cannot access /tmp/d.txt: No such file or directory
1 /tmp/a.txt
[root@host1 ~]# ls /tmp/a.txt /tmp/d.txt 2>&1 | cat -n
1 ls: cannot access /tmp/d.txt: No such file or directory
2 /tmp/a.txt
输入重定向(了解)
<
<< 定义输入结束的标识符(eof常用 , 其他亦可)
[root@localhost ~]# cat > /a/a.txt <<-eof > hello > world > eof > [root@localhost ~]# cat /a/a.txt > hello > world
文件管理2
Linux文件的时间
stat 查看文件时间命令
Access(访问):文件当天第一次访问更新 atime
Modify(修改):文件的内容发生改变 mtime
Change(更改):文件的属性发生改变(大小,属主,属组,权限…) ctime
grep – 通过关键词过滤行
grep [选项] “关键词” 文件
选项:
-v 反选
-i 忽略大小写
-n 输出的同时打印行号
-c 只打印匹配的行数
关键词
^root — root开头的行
root$ — 以root结尾的行
^$ —空行
eg :打印不以 # 开头和 非空行 --用管道
grep -v “^#” /etc/rc.local | grep -v “^$”
● wc -l 统计行数
ll /tmp | grep “^d” | wc -l 查看/tmp 目录文件个数
ls /tmp | wc -l 查看有多少个普通文件和目录文件
● sort 排序
默认情况下,按字符的升序排列
sort -n 文件 按数字的大小排列
-r 降序排列
-t 定义列的分隔符
-k 指定按照第几列排列
eg : sort -t: -k3 -n -r passwd // passwd中第三列UID,
以数值大小降序排列
[root@localhost ~]# sort -t: -k3 -n -r /etc/passwd
显示的太多,不展示
[root@localhost ~]# tail -5 /etc/passwd | sort -t: -k3 -n -r
bear1:x:1003:1003::/home/bear1:/bin/bash
tom:x:1002:1002::/home/tom:/bin/bash
hr:x:1001:1001::/home/hr:/bin/bash
yue:x:1000:1000:yue:/home/yue:/bin/bash
tcpdump:x:72:72::/:/sbin/nologin