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...