Linux之文件重定向与查找

文件描述符

作用

  • 是内核为了高效管理已经被打开的文件所创建的索引,用于指向被打开的文件,所有执行I/O操作的系统都是调用文件描述符
  • 文件描述符是一个非负整数,用来标明每一个被打开的文件 例如:第一个文件其描述符为0 第二个为1 依次类推
  • 可以将文件描述符看成文件的ID

输入输出标准说明

  • STDIN(标准输入):默认的是键盘输入 文件描述符:0
  • STDOUT(标准输出):默认是显示器 也可以重定向到文件 文件描述符:1
  • STDERR(标准错误):默认是显示器 也可以重定向到文件 文件描述符:2

fd

用来查看一个进程下打开了哪些文件

[root@SR ~]# vim /etc/passwd  

[root@SR ~]# ps -aux | grep passwd
root       3703  0.9  0.1  48716  8616 pts/0    S+   17:02   0:00 vim /etc/passwd

[root@SR ~]# ll /proc/3703/fd
总用量 0
lrwx------. 1 root root 64 5月   1 17:03 0 -> /dev/pts/0
lrwx------. 1 root root 64 5月   1 17:03 1 -> /dev/pts/0
lrwx------. 1 root root 64 5月   1 17:03 2 -> /dev/pts/0
lr-x------. 1 root root 64 5月   1 17:03 3 -> /var/lib/sss/mc/passwd
lrwx------. 1 root root 64 5月   1 17:03 4 -> ‘socket:[64492]‘
lrwx------. 1 root root 64 5月   1 17:03 6 -> /etc/.passwd.swp

ps:上述 0 1 2 4即是文件描述符

Linux之文件重定向与查找

对文件描述符的操作就是对文件本身的操作。 我可以直接通过操作文件描述来修改文件。
查看和临时设置一个迚程最多可以打开几个文件,卲:一个迚程可以打开的文件描述符限制
[root@SR ~]# ulimit -n #查看一个迚程最多可以同时打开的文件数
1024
[root@SR ~]# ulimit -n 2048 #修改一个迚程最多可以同时打开的文件数为 2048
[root@SR ~]# ulimit -n
2048

重定向

作用

将输出的内容通过重定向可以指定到我们想要存储的文件 而不是直接输出到屏幕

输出重定向

>

将输出的内容输出到一个指定的文件 如果该文件有内容会被直接覆盖

[root@SR ~]# cat /proc/cpuinfo > cpu.txt   文件重定向
[root@SR ~]#
[root@SR ~]# head -1 cpu.txt   # 查看文件首行
[root@SR ~]#
[root@SR ~]# echo hello world > cpu.txt  # 再次重定向
[root@SR ~]# head -1 cpu.txt  # 查看文件首行 发现原来的文件内容都被覆盖了

Linux之文件重定向与查找

>>

将输出的内容输出到一个指定的文件 其不会覆盖原文件的内容 而是会在尾部追加

[root@SR ~]# echo ‘测试>>尾部追加‘ > test.txt
[root@SR ~]#
[root@SR ~]# cat test.txt
测试>>尾部追加
[root@SR ~]#
[root@SR ~]# echo ‘追加成功‘ >> test.txt
[root@SR ~]#
[root@SR ~]# cat test.txt
测试>>尾部追加
追加成功

Linux之文件重定向与查找

输入重定向

其输入方式不是从键盘进行输入 而是可以从其余方式进行输入 例如:文件

<

[root@SR ~]# grep root < /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

Linux之文件重定向与查找

错误重定向

将在输入中产生的错误提示信息 重定向到文件中而不是在屏幕显示

2>

[root@SR ~]# ll asjkd~ 2> b.txt
[root@SR ~]#
[root@SR ~]# cat b.txt
ls: 无法访问‘asjkd~‘: 没有那个文件或目录

PS 使用 2> 操作符时,会像使用 > 一样覆盖目标文件的内容,若追加而丌覆盖文件的内容卲可使用 2>> 操作符

Linux之文件重定向与查找

null

把null看成黑洞 写入到该null中的所有文件都会消失 同时读取数据也不会有任何显示

[root@SR ~]# echo ‘测试null‘ > /dev/null
[root@SR ~]#
[root@SR ~]# cat /dev/null

Linux之文件重定向与查找

zero

当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。 典型用法是用它来产生一个特定大小的空白文件

[root@SR ~]# dd if=/dev/zero of=b.txt bs=1M count=50
记录了50+0 的读入
记录了50+0 的写出
52428800 bytes (52 MB, 50 MiB) copied, 0.111958 s, 468 MB/s
[root@SR ~]# ll -h b.txt
-rw-r--r--. 1 root root 50M 5月   1 18:02 b.txt
[root@SR ~]# cat b.txt  # 无任何显示

EOF

作用

  • EOF 本意是 End Of File,表明到了文件末尾。” EOF“通常不” <<“结合使用
  • <<EOF“表示后续的输入作为子命令戒子 shell 的输入,直到遇到” EOF
  • 再次返回到主调 shell,可将其理解为分界符(delimiter)。既然是分界符,那举形式自然丌是固定的
  • 这里可以将” EOF“可以迚行自定丿,但是前后的” EOF“必须成对出现丏丌能和 shell 命令冲突
[root@SR ~]# cat > a.txt << EOF
> ajksdhkasjd
> asjkdhaksd
> asdkjhaskdj
> EOF

Linux之文件重定向与查找

Linux之文件重定向与查找

上一篇:Cisco模拟器中路由器serial口设置


下一篇:Linux更改键位映射