2021-05-12 14:32:11
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/130298.htm
相關文章