1. 程式人生 > >Linux輸入輸出重定向和文件查找值grep命令

Linux輸入輸出重定向和文件查找值grep命令

顯示 標準輸入 顏色 localhost 搜索 use mit 其他 host

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命令