重定向和檔案查詢

2021-09-20 20:02:34 字數 3788 閱讀 3068

檔案描述符:核心(kernel)利用檔案描述符(file descriptor)來訪問檔案。檔案描述符是非負整數。開啟現存盤案或新建檔案時,核心會返回乙個檔案描述符。讀寫檔案也需要使用檔案描述符來指定待讀寫的檔案。

linux下一切皆檔案。

stdin 標準輸入 如:鍵盤檔案 檔案描述符為:0

stdout 標準輸出 螢幕終端 檔案描述符為:1

stderr 錯誤輸出 螢幕終端 檔案描述符為:2

[root@localhost ~]# echo 123456 | passwd --stdin rm &> /dev/null

/dev/null 代表空裝置檔案,就是linux中的黑洞。放多少東西都填不滿。

輸出重定向

#輸出重定向到**

1> #輸出重定向到** ,所以"> /dev/null"等同於"1> /dev/null"

[root@localhost ~]# ls /home/ 1> a.txt

[root@localhost ~]# cat a.txt

rm

2> #表示標準錯誤輸出

[root@localhost ~]# ls /homee 2> a.txt

[root@localhost ~]# cat a.txt

ls: cannot access /homee: no such file or directory

& & 表示等同於的意思

[root@localhost ~]# ls /home/ /homee 1> a.txt 2>&1

&> 混合輸出

[root@localhost ~]# ls /home/ /homee &> a.txt

輸出重定向 ,追加和覆蓋

和》 的區別

每次都產生新檔案。

> 是追加,不產生新的檔案。

[root@localhost ~]# echo xuegod > a.txt

[root@localhost ~]# cat a.txt

xuegod

[root@localhost ~]# echo xuegod >> a.txt

[root@localhost ~]# cat a.txt

xuegod

xuegod

輸入重定向

<

例項1:wc檢視檔案的位元組數、字數、行數 

[root@localhost ~]# wc /etc/passwd

43 87 2261 /etc/passwd

行 字數(以空格為分隔符) 大小(位元組為單位)

[root@localhost ~]# wc < /etc/passwd

43 87 2261

[root@localhost ~]# cat > a.txt <*welcome to heros aliance **

eof[root@localhost ~]# cat a.txt

*welcome to heros aliance **

管道 |

前乙個程式的標準輸出,交給後乙個程式做標準輸入。

[root@localhost ~]# ps -aux | grep vim

tee命令:

功能說明:讀取標準輸出的資料,並將其內容輸入成檔案。

[root@localhost ~]# ps -aux | grep vim | tee b.txt

root 3256 0.0 0.0 112644 956 pts/1 s+ 08:15 0:00 grep --color=auto vim

[root@localhost ~]# cat b.txt

root 3256 0.0 0.0 112644 956 pts/1 s+ 08:15 0:00 grep --color=auto vim

檔案查詢方法

which       檢視可執行檔案的位置 

whereis    檢視可執行檔案的位置 及相關檔案

locate       配合資料庫快取,快速檢視檔案位置 

grep 過濾

find          實際搜尋硬碟查詢檔案名稱 

[root@localhost ~]# rpm -qfwhich useradd

shadow-utils-4.1.5.1-18.el7.x86_64

[root@localhost ~]# whereis useradd

useradd: /usr/sbin/useradd /usr/share/man/man8/useradd.8.gz

locate 配合資料庫快取,快速檢視檔案位置 

[root@localhost ~]# yum install mlocate -y

[root@localhost ~]# touch abc.txt

[root@localhost ~]# locate abc.txt #查詢不到檔案

[root@localhost ~]# updatedb #更新資料庫

[root@localhost ~]# locate abc.txt

/root/abc.txt

grep 過濾

[root@localhost ~]# grep bash /etc/passwd

root:x:0:0:root:/root:/bin/bash

rm:x:1000:1000:rm:/home/rm:/bin/bash

-v 反轉

-i 忽略大小寫

^# 以#開頭

#$ 以#結尾

^$ 空行

例:-v 取反,查詢出檔案中不帶nologin 的行

[root@localhost ~]# grep -v "nologin" /etc/passwd

root:x:0:0:root:/root:/bin/bash

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

rm:x:1000:1000:rm:/home/rm:/bin/bash

例:-i 忽略大小寫進行查詢

[root@localhost ~]# grep -i rm /etc/passwd

rm:x:1000:1000:rm:/home/rm:/bin/bash

rm:x:1001:1001::/home/rm:/bin/bash

例:^ 過濾檔案中的所有以#號開頭的行

[root@localhost ~]# grep -v "^#" /etc/selinux/config

例:$ 過濾檔案中的所有以shutdown結尾的行

[root@localhost ~]# grep "shutdown$" /etc/passwd

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

例:^$ 過濾檔案中的空行

[root@localhost ~]# grep -v "^$" /etc/selinux/config

例:過濾檔案中的空行和以#號開頭的行,顯示檔案的真實有效資訊

[root@localhost ~]# grep -v "^$" /etc/selinux/config | grep -v "^#"

selinux=disabled

selinuxtype=targeted

-n 對過濾的內容加上行號

Linux重定向和檔案查詢

首先引出linux中一句比較經典的話。linux下一切皆檔案。檔案分為 普通檔案,目錄檔案,鏈結檔案,裝置檔案。檔案描述符定義 是核心為了高效管理已被開啟的檔案所建立的索引,用於指向被開啟的檔案,所有執行i o操作的系統呼叫都通過檔案描述符 檔案描述符是乙個簡單的非負整數,用以標明每乙個被程序所開啟...

查詢檔案 重定向

標準正確輸出 覆蓋 標準正確輸出 追加 混合輸出 標準輸出 標準錯誤輸出 覆蓋 混合輸出 標準輸出 標準錯誤輸出 追加 2 標準錯誤輸出 覆蓋 2 標準錯誤輸出 追加 1 te.txt 2 1 錯誤 標準輸出 te.txt 覆蓋,標準輸出是覆蓋的 1 te.txt 2 1 錯誤 標準輸出 te.tx...

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

一 檔案描述符 linux 的shell命令,可以通過檔案描述符來引用一些檔案,通常使用到的檔案描述符為0,1,2。linux系統實際上有12個檔案描述符,通常使用的檔案描述符如下圖 檔案檔案描述符 輸入檔案 標準輸入 0 預設是鍵盤,為0時是檔案或者其他命令的輸出 輸出檔案 標準輸出 1 預設是螢...