【shell】shell的輸入與輸出

希望各位不要白piao,點個贊或者刷個評論再走,還有【禁止轉載】我個人覺得寫的比較細,話不多說講什麼我會先列出來,如果會了可以忽略本文章,省下時間去學習別的知識~
本文講三件事:shell的輸入輸出,管道以及文件的重定向

shell輸入輸出

echo這個命令大家應該很熟悉,如果不熟悉百度各種各樣的資源,在這裏你就可以把它理解成print與System.out.println(),本意上是沒有什麼區別的。但是shell的語法上可以用echo以及|(管道命令)進行值得傳遞(echo顯示文本行或變量,或者把字符串輸入到文件)

echo [option] string

這個option是可以是-e或者 -n。
-e 解析轉義字符 -n 不回車換行。
默認情況echo回顯的內容後面跟一個回車換行。

echo -e "hello\n\n"
echo "hello\n\n"
echo "hello"
echo -n "hello"    

在這裏我多嘴一句,有些人不知道怎麼查命令的使用方法天天在那百度,其實shell相對來說真的很簡單,文檔也特別的全,我也不建議你們天天去百度,指不定哪個人就寫錯了就把你誤導了,最簡單的方式也是最好的辦法有兩種:

  1. 通過man 你想要查詢的命令比如 man echo
    在這裏插入圖片描述
  2. 通過你要查詢的命令 --help比如ls --help

管道|

可以通過管道把一個命令的輸出傳遞給另一個命令做輸入。管道用豎線表示。

# 把myfile這個文件的每一行實時傳送給more玲玲
cat myfile | more
# 把ls -l的命令的結果傳給 grep命令
ls -l | grep "myfile"
# grep -v message 是過濾掉包含message的行
df -k | awk '{print $1}' | grep -v "文件系統")
# df -k 查看磁盤空間,找到第一列,去除“文件系統”,並輸出
# tee命令把結果輸出到標準輸出,另一個副本輸出到相應文件。
df -k | awk '{print $1}' | grep -v "文件系統" | tee a.txt
# tee -a a.txt表示追加操作。
df -k | awk '{print $1}' | grep -v "文件系統" | tee -a a.txt
# tee 命令可以將結果同時輸入到多個文件中
cat "文件名" | tee a.txt b.txt
# tee命令可以將結果一次輸出兩次或者多次
cat  "文件名" | tee - a.txt  
cat  "文件名" | tee -b.txt

我已經在開頭的地方說明了怎麼去看官方文檔,大家一定要學着去看,如果你不是運維其實你涉及不到那麼多的命令,不過你想當高T尤其是在工程代碼這個領域,在你通往高T的這段路這些東西必會的。以後遇到什麼不懂得命令一定要先強迫自己通過官方文檔去理解這些含義,是在搞不懂再去看大家寫好的東西。肯定有的人會說這不是浪費時間麼?那這就由你選擇,你想要的是能力還是永遠添着人家寫好的東西。

文件重定向

首先要知道>>>以及<<<的區別,大區別是一個大於號或者小於號代表覆蓋之前的文本,兩個大於號和小於號表示不覆蓋之前的文本,只是追加文本。第二個區別就是數據流動方向,數據總是從大口向尖尖的那個口進行流動的
至於下文說到的標準輸出,錯誤輸出,大家感興趣可以去查一下,早期階段用不到,我後續的文章會把這塊單獨拉出來講。對於文件重定向前期只需要掌握我說的兩點就好了,如果不是運維我覺得錯誤輸出重定向一般真用不到。(畢竟我也是工程系程序員出身)
cmd > file 把標準輸出重定向到新文件中
cmd >> file 追加
cmd > file 2>&1 標準出錯也重定向到1所指向的file裏
cmd >> file 2>&1
cmd < file1 > file2 輸入輸出都定向到文件裏
cmd < &fd 把文件描述符fd作爲標準輸入
cmd > &fd 把文件描述符fd作爲標準輸出
cmd < &- 關閉標準輸入

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章