echo "gnome-terminal "commands" " >> /dev/pts/1 ?
創建兩個空文件file1、file2,使用vi編輯器給file1和file2添加文本內容並保存,利用重定向功能實現將文件file1與file2的內容寫到文件file3命令該怎麼打啊 求幫忙
B. 管道命令(pipe)使用及與shell重定向區別
管道命令是用來定位輸出,也就是查詢到很多信息只需要其中個別然後可以切割輸出,而重定向是輸出位置不一樣,可以把查詢到的信息輸出到屏幕或者文本或者其他。
C. 系統linux 下的 管道 和 重定向 這兩個概念怎麼理解
管道是一個先進先出的特殊文件,一方只能依次寫進去,另一方也只能依次讀出來
理解管道符前先要知道一個進程運行後有3個最基本的文件,標准輸入(0表示),標准輸出(1表示),錯誤輸出(2表示)
通過命令查看當前3個基本文件,ls-l/proc/$$/fd/
shell中的管道符做了3件事,
1,先創建一個管道文件pipe
2,將管道符前面的一個命令的標准輸出替換為pipe
2,將管道符後面的一個命令的標准輸入替換為pipe
例子
echotest>/tmp/test
tail-f/tmp/test|cat&
查看tail命令3個基本文件
ls-l/proc/`pidoftail`/fd
查看cat命令3個基本文件
ls-l/proc/`pidofcat`/fd
shell重定向本身從編程角度理解就是賦值語句,0,1,2本身理解為3個變數,
<和>表示賦值符號,變數名只能用數字表示,變數只能在/proc/進程pid/fd/下查看
<以只讀方式打開一個文件,然後把打開的文件賦值給變數
>以只寫方式打開一個文件,然後把打開的文件賦值給變數
<>以讀寫方式打開一個文件,然後把打開的文件賦值給變數
exec1<>/tmp/info表示讀寫打開/tmp/info,然後賦值給變數1,執行後其他命令列印的信息都會輸入到/tmp/info里,默認所有的列印信息(echoaaaaaa)都會獲取變數1裡面打開的文件,然後把要列印的信息寫到這個文件裡面
如果寫成exec1</tmp/info這種方式,那麼列印的信息就沒法寫進去了,因為是只讀方式打開的
ls-l/dev/fd/或者ls-l/proc/$$/fd/查看
cat/proc/cmdline>/tmp/cmd通常啥這種寫法,賦值符號前面沒寫具體的變數名,默認就是1,也就是cat/proc/cmdline1>/tmp/cmd
echor>/tmp/r&&exec6</tmp/r
lsof|grep/tmp/r可以查看到6r屬性,文件以讀方式開打,並且復制給變數6