Linux輸入輸出重定向和文件查找值grep命令
Linux輸入輸出重定向和文件查找值grep命令
一、文件描述符
Linux 的shell命令,可以通過文件描述符來引用一些文件,通常使用到的文件描述符為0,1,2。Linux系統實際上有12個文件描述符,通常使用的文件描述符如下圖
文件 | 文件描述符 |
輸入文件—標準輸入 | 0(缺省是鍵盤,為0時是文件或者其他命令的輸出) |
輸出文件—標準輸出 | 1(缺省是屏幕,為1時是文件) |
錯誤輸出文件—標準錯誤 | 2(缺省是屏幕,為2時是文件) |
二、文件重定向:改變程序運行的輸入和輸出,也就是輸入源和輸出地點,具體釋義如下
輸出重定向:
Command > filename | 把標準輸出重定向到一個新文件中,當filename不存在時 |
Command >> filename | 把標準輸出重定向到一個文件中(追加) |
Command > filename | 把標準輸出重定向到一個文件中 |
Command > filename 2>&1 | 把標準輸出和錯誤一起重定向到一個文件中 |
Command 2 > filename | 把標準錯誤重定向到一個文件中 |
Command 2 >> filename | 把標準輸出重定向到一個文件中(追加) |
Command >> filename2>&1 | 把標準輸出和錯誤一起重定向到一個文件(追加) |
輸入重定向:
Command < filename > filename2 | Command命令以filename文件作為標準輸入,以filename2文件作為標準輸出 |
Command < filename | Command命令以filename文件作為標準輸入 |
Command << delimiter | 從標準輸入中讀入,知道遇到delimiter分界符 |
綁定重定向:
Command >&m | 把標準輸出重定向到文件描述符m中 |
Command < &- | 關閉標準輸入 |
Command 0>&- | 同上 |
三、shell中的一些高級用法
1:把所有的標準錯誤輸出出到linux的 黑洞中,有稱為空設備(/dev/null)
[root@localhost ~]# ls /home/ins 2> /dev/null
[root@localhost ~]#
2:把執行的標準輸出和標準錯誤重定向到out.put
[root@localhost ~]# ls /home/ind >out.put 2>&1
[root@localhost ~]# cat out.put
ls: cannot access /home/ind: No such file or directory
[root@localhost ~]#
3:使用標準輸入,在a.txt文件中寫入 "hello world"
[root@localhost ~]# cat >a.txt<<eof
> HELLO WORLD !
> EOF
[root@localhost ~]# cat a.txt
HELLO WORLD !
4:新建用戶awk ,使用標準輸入設置密碼123456
[root@localhost ~]# useradd awk
[root@localhost ~]#
[root@localhost ~]# echo 123456 | passwd --stdin awk
Changing password for user awk.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# su - inds
四、grep命令
grep是Linux中一個強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用權限是所有用戶。
[options]主要參數:
-c:只輸出匹配行的計數。
-I:不區分大 小寫(只適用於單字符)。
-h:查詢多文件時不顯示文件名。
-l:查詢多文件時只輸出包含匹配字符的文件名。
-n:顯示匹配行及 行號。
-s:不顯示不存在或無匹配文本的錯誤信息。
-v:顯示不包含匹配文本的所有行。
pattern正則表達式主要參數:
\: 忽略正則表達式中特殊字符的原有含義。
^:匹配正則表達式的開始行。
$: 匹配正則表達式的結束行。
\<:從匹配正則表達 式的行開始。
\>:到匹配正則表達式的行結束。
[ ]:單個字符,如[A]即A符合要求 。
[ - ]:範圍,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的單個字符。
* :有字符,長度可以為0。
簡單舉例說明
1、過濾/etc/passwd 文件裏所有已shutdown結尾的行
[root@localhost ~]# grep shutdown$ /etc/passwd
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
2、</eof
/etc/passwd裏搜索awk所在的行,並給awk標顏色,同時顯示行號
[root@localhost ~]# grep -n awk --color=auto /etc/passwd
45:awk:x:1158:1001::/home/awk:/bin/bash
[root@localhost ~]#
grep使用簡明及正則表達式 http://www.linuxidc.com/Linux/2013-08/88534.htm
Linux下Shell編程——grep命令的基本運用 http://www.linuxidc.com/Linux/2013-06/85525.htm
grep 命令詳解及相關事例 http://www.linuxidc.com/Linux/2014-07/104041.htm
Linux基礎命令之grep詳解 http://www.linuxidc.com/Linux/2013-07/87919.htm
設置grep高亮顯示匹配項 http://www.linuxidc.com/Linux/2014-09/106871.htm
Linux grep命令學習與總結 http://www.linuxidc.com/Linux/2014-10/108112.htm
14 個 grep 命令的例子 http://www.linuxidc.com/Linux/2015-05/117626.htm
本文永久更新鏈接地址:http://www.linuxidc.com/Linux/2016-04/
Linux輸入輸出重定向和文件查找值grep命令