婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 深入理解Bash中的尖括號(適合初學者)

深入理解Bash中的尖括號(適合初學者)

熱門標簽:申請400電話號碼多少錢 百應電銷機器人靠譜嗎 如何在各種地圖標注自己的地址 菏澤crm外呼系統價格 信陽銷售外呼系統招商 遼寧電銷平臺外呼系統軟件 coreldraw地圖標注 物超所值的400電話申請 營銷電銷機器人招商

前言

Bash 內置了很多諸如 ls、cd、mv 這樣的重要的命令,也有很多諸如 grep、awk、sed 這些有用的工具。但除此之外,其實 Bash 中還有很多可以起到膠水作用的標點符號,例如點號(.)、逗號(,)、括號(<>)、引號(")之類。下面我們就來看一下可以用來進行數據轉換和轉移的尖括號(<>)。

轉移數據

如果你對其它編程語言有所了解,你會知道尖括號 < 和 > 一般是作為邏輯運算符,用來比較兩個值之間的大小關系。如果你還編寫 HTML,尖括號作為各種標簽的一部分,就更不會讓你感到陌生了。

在 shell 腳本語言中,尖括號可以將數據從一個地方轉移到另一個地方。例如可以這樣把數據存放到一個文件當中:

ls > dir_content.txt

在上面的例子中,> 符號讓 shell 將 ls 命令的輸出結果寫入到 dir_content.txt 里,而不是直接顯示在命令行中。需要注意的是,如果 dir_content.txt 這個文件不存在,Bash 會為你創建;但是如果 dir_content.txt 是一個已有的非空文件,它的內容就會被覆蓋掉。所以執行類似的操作之前務必謹慎。

你也可以不使用 > 而使用 >>,這樣就可以把新的數據追加到文件的末端而不會覆蓋掉文件中已有的數據了。例如:

ls $HOME > dir_content.txt; wc -l dir_content.txt >> dir_content.txt

在這串命令里,首先將家目錄的內容寫入到 dir_content.txt 文件中,然后使用 wc -l 計算出 dir_content.txt 文件的行數(也就是家目錄中的文件數)并追加到 dir_content.txt 的末尾。

在我的機器上執行上述命令之后,dir_content.txt 的內容會是以下這樣:

Applications
bin
cloud
Desktop
Documents
Downloads
Games
ISOs
lib
logs
Music
OpenSCAD
Pictures
Public
Templates
test_dir
Videos
17 dir_content.txt

你可以將 > 和 >> 作為箭頭來理解。當然,這個箭頭的指向也可以反過來。例如,Coen brothers (LCTT 譯注:科恩兄弟,一個美國電影導演組合)的一些演員以及他們出演電影的次數保存在 CBActors 文件中,就像這樣:

John Goodman 5
John Turturro 3
George Clooney 2
Frances McDormand 6
Steve Buscemi 5
Jon Polito 4
Tony Shalhoub 3
James Gandolfini 1

你可以執行這樣的命令:

sort < CBActors
Frances McDormand 6 # 你會得到這樣的輸出
George Clooney 2
James Gandolfini 1
John Goodman 5
John Turturro 3
Jon Polito 4
Steve Buscemi 5
Tony Shalhoub 3

就可以使用 sort 命令將這個列表按照字母順序輸出。但是,sort 命令本來就可以接受傳入一個文件,因此在這里使用 < 會略顯多余,直接執行 sort CBActors 就可以得到期望的結果。

如果你想知道 Coens 最喜歡的演員是誰,你可以這樣操作。首先:

while read name surname films; do echo $films $name $surname > filmsfirst.txt; done < CBActors

上面這串命令寫在多行中可能會比較易讀:

while read name surname films;\

do
echo $films $name $surname >> filmsfirst;\

done < CBActors

下面來分析一下這些命令做了什么:

  • while …; do … done 是一個循環結構。當 while 后面的條件成立時,do 和 done 之間的部分會一直重復執行;
  • read 語句會按行讀入內容。read 會從標準輸入中持續讀入,直到沒有內容可讀入;
  • CBActors 文件的內容會通過 < 從標準輸入中讀入,因此 while 循環會將 CBActors 文件逐行完整讀入;
  • read 命令可以按照空格將每一行內容劃分為三個字段,然后分別將這三個字段賦值給 name、surname 和 films 三個變量,這樣就可以很方便地通過 echo $films $name $surname >> filmsfirst;\ 來重新排列幾個字段的放置順序并存放到 filmfirst 文件里面了。

執行完以后,查看 filmsfirst 文件,內容會是這樣的:

5 John Goodman
3 John Turturro
2 George Clooney
6 Frances McDormand
5 Steve Buscemi
4 Jon Polito
3 Tony Shalhoub
1 James Gandolfini

這時候再使用 sort 命令:

sort -r filmsfirst

就可以看到 Coens 最喜歡的演員是 Frances McDormand 了。(-r 參數表示降序排列,因此 McDormand 會排在最前面)

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

標簽:泰安 玉樹 江門 湖北 廈門 江西 瀘州 內江

巨人網絡通訊聲明:本文標題《深入理解Bash中的尖括號(適合初學者)》,本文關鍵詞  深入,理解,Bash,中的,尖,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《深入理解Bash中的尖括號(適合初學者)》相關的同類信息!
  • 本頁收集關于深入理解Bash中的尖括號(適合初學者)的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 平和县| 凤山市| 顺平县| 四平市| 射洪县| 陈巴尔虎旗| 辽宁省| 古田县| 延津县| 顺昌县| 金坛市| 唐海县| 民和| 兴化市| 绥棱县| 汽车| 兰坪| 遂宁市| 东城区| 灌阳县| 太和县| 潮州市| 淮滨县| 长顺县| 长武县| 昌乐县| 齐河县| 南昌县| 泉州市| 兴业县| 南安市| 铜山县| 浪卡子县| 陇南市| 望谟县| 福安市| 博客| 锡林浩特市| 嵩明县| 虎林市| 志丹县|