Linux輸入輸出重定向和檔案查詢值grep命令

2022-02-15 19:30:53 字數 3046 閱讀 1307

一、檔案描述符

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< 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、awk所在的行,並給awk標顏色,同時顯示行號

[root@localhost ~]# grep -n awk --color=auto  /etc/passwd

45:awk:x:1158:1001::/home/awk:/bin/bash

[root@localhost ~]# 

grep使用簡明及正規表示式  

linux下shell程式設計——grep命令的基本運用 

grep 命令詳解及相關事例 

linux基礎命令之grep詳解 

設定grep高亮顯示匹配項 

linux grep命令學習與總結 

14 個 grep 命令的例子

本文永久更新鏈結位址

Linux重定向(輸入輸出重定向)

我們知道,linux 中標準的輸入裝置預設指的是鍵盤,標準的輸出裝置預設指的是顯示器。而本節所要介紹的輸入 輸出重定向,完全可以從字面意思去理解,也就是 通常是用檔案或命令的執行結果來代替鍵盤作為新的輸入裝置,而新的輸出裝置通常指的就是檔案。對於輸入重定向來說,其需要用到的符號以及作用如表 1 所示...

linux輸入輸出重定向

基本概念 這是理解後面的知識的前提,請務必理解 a i o重定向通常與 fd有關,shell的fd通常為10個,即 0 9 b 常用fd有3個,為0 stdin,標準輸入 1 stdout,標準輸出 2 stderr,標準錯誤輸出 預設與keyboard monitor有關 c 用 來改變讀進的資料...

Linux輸入輸出重定向

標準輸入輸出 裝置 裝置檔名 檔案描述符 型別鍵盤 dev stdin 0標準輸入 顯示器 dev stdout 1標準輸出 顯示器 dev stderr 2標準錯誤輸出 輸出重定向 輸出重定向符號 1 標準輸出重定向 命令 檔案 以覆蓋方式把命令的正確輸出重定向到檔案或裝置 命令 檔案 以追加的方...