成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

理解Bash中的尖括號

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

[[257019]]

為初學者介紹尖括號。

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

轉移數據

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

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

  1. ls > dir_content.txt

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

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

  1. 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 的內容會是以下這樣:

  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 譯注:科恩兄弟,一個美國電影導演組合)的一些演員以及他們出演電影的次數保存在 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

你可以執行這樣的命令:

  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 命令本來就可以接受傳入一個文件,因此在這里使用 < 會略顯多余,直接執行 sort CBActors 就可以得到期望的結果。

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

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

  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 參數表示降序排列,因此 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循環

2023-08-22 21:42:03

Bash函數

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字符串

2022-08-31 08:33:54

Bash操作系統Linux

2021-05-11 07:50:31

BashShell腳本

2020-07-01 18:31:14

Linuxbash永遠循環

2022-10-24 07:57:47

DebianUbuntuLinux

2014-11-11 15:25:30

PHPWeb
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品.xx视频.xxtv | 久久精品国产一区二区电影 | 精品视频一二区 | 天天射影院 | 龙珠z在线观看 | 天堂视频中文在线 | 久久综合爱 | 成人免费观看男女羞羞视频 | 欧美成人一区二区三区 | 国产视频1| 国产一区二区三区视频 | 亚洲国产中文字幕 | 91精品国产综合久久久久久 | 亚洲人成人一区二区在线观看 | 国产精品久久久久久久久久 | 久久五月婷 | 区一区二在线观看 | 91aiai| 中文字幕日韩av | 91观看 | 日韩高清中文字幕 | 男女羞羞视频在线看 | 亚洲精品成人av久久 | 一级黄色片网址 | 国产视频一区二区在线观看 | av一区二区三区四区 | 日韩中文字幕 | 久久九| 亚洲精品美女视频 | 日美女逼逼 | 亚洲先锋影音 | 亚洲精品电影网在线观看 | 日韩精品一 | 久久精品亚洲成在人线av网址 | 亚洲一区二区久久久 | 久久久久久久久久久丰满 | 伊人久操 | 日韩黄| 亚洲综合在线播放 | 欧美中文字幕一区二区 | av看片网站 |