Linux基礎之重定向,管道

2021-10-03 10:26:36 字數 3909 閱讀 7977

fd簡介

file descriptors ,fd,檔案描述符

程序使用檔案描述符來管理開啟的檔案

fd是訪問檔案的標識,即鏈結檔案

0是鍵盤唯讀,

1,2是終端可以理解是螢幕,

3+是檔案,可讀可寫

示例通過我們非常熟悉的vim程式。來觀察乙個程序的fd資訊。

1.通過乙個終端,開啟乙個文字。

vim 1.txt
2.通過另乙個終端,查詢文字程式的程序號

ps  aux| grep vim
3.在/proc目錄中檢視文字程式的fd

通常在 /proc/pid/fd 就能看到檔案的fd呼叫情況。

[root@localhost ~

]# ls /proc/5606/fd

感覺好像沒什麼。用用ls -l呢?
[root@localhost ~

]# ll /proc/5606/fd

總用量 0

lrwx---

---.

1 root root 64

10月 1007:

370->

/dev/pts/

2 標準輸入

lrwx---

---.

1 root root 64

10月 1007:

371->

/dev/pts/

2 標準輸出

lrwx---

---.

1 root root 64

10月 1007:

372->

/dev/pts/

2 標準錯誤輸出

lrwx---

---.

1 root root 64

10月 1007:

373->

/root/

.1.txt.swp

常規檔案

4.總結

看到的0124就是fd,程式通過描述符訪問檔案,

可以是常規檔案,也可以是裝置檔案。

標準輸入、標準輸出、標準錯誤

例1 標準輸入輸出

鍵盤0:標準輸入 date < /file1.txt/程式《檔案

檔案輸入到程式裡ex:郵件 mail -s 「sss」 alice 案例2:錯誤輸出重定向

錯誤示範

[root@lll ~

]# ls /home/ 2> list.txt

觀察list.txt檔案中有沒有內容?

因為沒有錯誤資訊

正確示範

當某條命令產生錯誤時,才會有錯誤輸出。

[root@lll ~

]# ls /aaaaaaaaa 2> list.txt

[root@lll ~

]#cat list.txt

ls: 無法訪問/aaaaaaaaa: 沒有那個檔案或目錄

案例3: 正確和錯誤都輸入到相同位置

[root@lll ~

]# ls /home/ /aaaaaaaaa &>list.txt

生產環境

[root@lll ~

]#yum install httpd &>/dev/null

2.輸入重定向及結合案例

簡介標準輸入: < 等價 0<

案例:輸入重定向傳送郵件

1 觀察預設傳送郵件的過程。

編寫郵件

[root@lll ~

]# mail -s "ssss" alice

111222

333.

點代表郵件編輯已結束。

檢視郵件

[root@lll ~

]# su - alice

[alice@lll ~

]$ mail

mail version 8.16/

6/93. type ? for

help

."/var/spool/mail/alice"

:1 message 1 new

>n 1 [email protected] mon oct 2914:

0918

/657

"ssss"

& 按郵件編號:1

.即可看郵件。

按q 退出。

2 使用

重定向快速建立郵件

如果已經有了現成的郵件內容呢,如何快速輸入郵件內容。

就可以用重定向建立郵件!!!

先準備一段郵件內容

vim  word.txt

[root@lll ~

]# mail -s "test01" alice < word.txt

原理:利用輸入重定向,把檔案內容代替人為的輸入。

程序管道 piping

簡介管道命令可以將多條命令組合起來,一次性完成複雜的處理任務。

語法

command1 | command2 |command3 |..

.

tee管道

簡介三通管道,即交給另乙個程式處理。又儲存乙份副本

案例

```python

[root@localhost ~

]# cat /etc/passwd |tee 88.txt | tail -1

lll:x:

1001

:1001::

/home/lll:

/bin

/bash

[root@localhost ~

]# cat 888.txt

888.txt文字中是什麼內容呢?一行還是所有行?

答案是 所有

目的是把輸入保留副本,命令查詢/tee檔案/命令 檔案保留查詢內容

#### 引數傳遞 xargs

cp rm一些特殊命令就是不服其他程式。

案例11 環境準備,準備一些檔案。

```python

[root@localhost ~]# touch /home/file

[root@localhost ~]#ls /home

2 接到訊息,部分檔案需要刪除。

[root@localhost ~

]# vim files.txt

/home/file1

/home/file3

/home/file5

3 使用管道

[root@localhost ~

]# cat files.txt |rm -rvf

失敗

4.貌似之前的不行。下面加上xargs

[root@localhost ~

]# cat files.txt |xargs rm -rvf

removed 『/home/file1』

removed 『/home/file3』

removed 『/home/file5』

[root@localhost ~

]#ls /home

通過|xargs成功連線rm命令

cat files.txt |xargs rm -rvf
統計/usr/bin目錄下的檔案個數命令

ls /usr/

bin/wc -l

Linux基礎 管道與重定向

fd 檔案描述符 檔案控制代碼 程序使用檔案描述符來管理開啟的檔案 是數字,0 255 fd是訪問檔案的標識,即鏈結檔案 0是鍵盤唯讀,標準輸入 1,2是終端可以理解是螢幕 1標準正確輸出,2標準錯誤輸出 3 是檔案,可讀可寫ls proc pid fd 檢視鏈結檔案 ln s 1.txt 333 ...

Linux基礎之tr與重定向管道

一些總結吧。1.重定向與管道 以 改變標準輸入 program file 將program的 標準輸入修改為file 以 改變標準輸出 program file 可將program的 標準輸出修改為file 以 附加到檔案 program file 可將program的標準輸出附加到file結尾處 ...

linux重定向 管道

1 這條命令是什麼意思?cat file1 file2 grep name tee file3 file4 file5 wc l 該命令表示 將 file1 file2 中的包含 name 的行重定向輸出。使用 tee 命令表示 將該輸出有兩個去向。乙個是定向到檔案 file3,file4,flie...