偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

理解Bash中的尖括號

系統(tǒng) Linux
Bash 內(nèi)置了很多諸如 ls、cd、mv 這樣的重要的命令,也有很多諸如 grep、awk、sed 這些有用的工具。但除此之外,其實 Bash 中還有很多可以起到膠水作用的標點符號,例如點號(.)、逗號(,)、括號(<>)、引號(")之類。

[[257019]]

為初學者介紹尖括號。

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

轉(zhuǎn)移數(shù)據(jù)

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

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

  1. ls > dir_content.txt

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

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

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

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

在我的機器上執(zhí)行上述命令之后,dir_content.txt 的內(nèi)容會是以下這樣:

  1. Applications
  2. bin
  3. cloud
  4. Desktop
  5. Documents
  6. Downloads
  7. Games
  8. ISOs
  9. lib
  10. logs
  11. Music
  12. OpenSCAD
  13. Pictures
  14. Public
  15. Templates
  16. test_dir
  17. Videos
  18. 17 dir_content.txt

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

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

你可以執(zhí)行這樣的命令:

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

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

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

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

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

  1. while read name surname films;\
  2. do
  3. echo $films $name $surname >> filmsfirst;\
  4. done < CBActors

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

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

執(zhí)行完以后,查看 filmsfirst 文件,內(nèi)容會是這樣的:

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

這時候再使用 sort 命令:

  1. sort -r filmsfirst

 

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

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2019-02-12 16:20:24

Bash尖括號命令

2019-03-18 15:53:11

BashLinux花括號

2019-04-22 14:39:05

BashLinux命令

2019-04-15 11:10:34

Bash方括號命令行

2019-03-05 22:15:08

BashLinux命令

2023-01-13 12:37:43

Bashshell花括號

2024-03-04 08:49:44

2019-03-08 11:00:32

BashLinux

2022-12-13 12:55:15

Bash循環(huán)

2023-08-22 21:42:03

Bash函數(shù)

2020-10-29 07:09:07

編程花括號程序員

2022-12-09 07:58:52

Bash條件語句

2011-03-10 14:55:05

JavaScript

2022-11-30 07:47:00

Bash腳本

2022-12-08 12:05:03

Bash字符串

2021-05-11 07:50:31

BashShell腳本

2022-08-31 08:33:54

Bash操作系統(tǒng)Linux

2022-10-24 07:57:47

DebianUbuntuLinux

2020-07-01 18:31:14

Linuxbash永遠循環(huán)

2014-11-11 15:25:30

PHPWeb
點贊
收藏

51CTO技術棧公眾號