练习 7:Bash:重定向,stdin,stdout,stderr,<,>,>
发布时间:2020-12-15 16:12:16 所属栏目:安全 来源:网络整理
导读:在 Linux 中,一切都只是文件。这意味着,对于控制台程序: 键盘表示为一个文件,Bash 从中读取你的输入。 显示器表示为一个文件,Bash向输出写入它。 让我们假设,你有一个程序可以计算文件中的行。你可以通过键入 wc -l 来调用它。现在尝试一下 没有发生什
在 Linux 中,一切都只是文件。这意味着,对于控制台程序:
让我们假设,你有一个程序可以计算文件中的行。你可以通过键入 line_counter = 0 while end of file is not reached read a line add 1 to line_counter print line_counter 所以 但是如果你想计算现有文件中的行呢?那么,这就需要重定向 了!为了在其输入上提供现有文件,请键入以下内容:
现在,你将学习如何将程序的输入和输出重定向到文件或其他程序。 这样做1: sudo aptitude install pv 2: read foo < /dev/tty 3: Hello World! 4: echo $foo > foo.out 5: cat foo.out 6: echo $foo >> foo.out 7: cat foo.out 8: echo > foo.out 9: cat foo.out10: ls -al | grep foo 11: ls -al | tee ls.out12: dd if=/dev/zero of=~/test.img bs=1M count=10 13: pv ~/test.img | dd if=/dev/stdin of=/dev/null bs=114: rm -v foo.out 15: rm -v test.img 你应该看到什么user1@vm1:~$ sudo aptitude install pv The following NEW packages will be installed: pv 0 packages upgraded,1 newly installed,0 to remove and 0 not upgraded. Need to get 0 B/28.9 kB of archives. After unpacking 143 kB will be used. Selecting previously deselected package pv. (Reading database ... 39657 files and directories currently installed.) Unpacking pv (from .../archives/pv_1.1.4-1_amd64.deb) ... Processing triggers for man-db ... Setting up pv (1.1.4-1) ... user1@vm1:~$ read foo < /dev/tty Hello World! user1@vm1:~$ echo $foo > foo.out user1@vm1:~$ cat foo.out Hello World! user1@vm1:~$ echo $foo >> foo.out user1@vm1:~$ cat foo.out Hello World! Hello World! user1@vm1:~$ echo > foo.out user1@vm1:~$ cat foo.out user1@vm1:~$ ls -al | grep foo -rw-r--r-- 1 user1 user1 1 Jun 15 20:03 foo.out user1@vm1:~$ ls -al | tee ls.out total 44 drwxr-xr-x 2 user1 user1 4096 Jun 15 20:01 . drwxr-xr-x 3 root root 4096 Jun 6 21:49 .. -rw------- 1 user1 user1 4865 Jun 15 19:34 .bash_history -rw-r--r-- 1 user1 user1 220 Jun 6 21:48 .bash_logout -rw-r--r-- 1 user1 user1 3184 Jun 14 12:24 .bashrc -rw-r--r-- 1 user1 user1 1 Jun 15 20:03 foo.out -rw------- 1 user1 user1 50 Jun 15 18:41 .lesshst -rw-r--r-- 1 user1 user1 0 Jun 15 20:03 ls.out -rw-r--r-- 1 user1 user1 697 Jun 7 12:25 .profile -rw-r--r-- 1 user1 user1 741 Jun 7 12:19 .profile.bak -rw-r--r-- 1 user1 user1 741 Jun 7 13:12 .profile.bak1 -rw-r--r-- 1 user1 user1 0 Jun 15 20:02 test.img user1@vm1:~$ dd if=/dev/zero of=~/test.img bs=1M count=10 10+0 records in 10+0 records out 10485760 bytes (10 MB) copied,0.0130061 s,806 MB/s user1@vm1:~$ pv ~/test.img | dd if=/dev/stdin of=/dev/null bs=1 10MB 0:00:03 [3.24MB/s] [=================================================================================>] 100% 10485760+0 records in 10485760+0 records out 10485760 bytes (10 MB) copied,3.10446 s,3.4 MB/s user1@vm1:~$ rm -v foo.out removed `foo.out' user1@vm1:~$ rm -v test.img removed `test.img' user1@vm1:~$ 解释
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |