在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在Bash shell中使用花括號擴展{..}

CHANBAEK ? 來源:TIAP ? 作者:劉光錄 ? 2023-01-17 17:37 ? 次閱讀

花括號擴展(Brace expansion) {..} 是 Linux 中使用率很高的一個 shell 功能。 你可以使用它打印數字或字母序列,將兩個整數或字母使用花括號中的兩個點分隔開,然后會看到神奇的結果。

我們舉個最簡單的例子,看如下代碼:

echo {1..10}

上述一行 echo 代碼的輸出將會是什么呢? 如下:

1 2 3 4 5 6 7 8 9 10

輸出結果,會打印在同一行中,中間使用空格隔開。

為了讓大家可以更好的理解它的功能,我們接下來列舉幾個其他例子。

一些例子

假如我們想要得到一個從 7 到 1 的數字序列:

$ echo {7..1}
7 6 5 4 3 2 1

可以添加前綴 0:

$ echo {01..10}
01 02 03 04 05 06 07 08 09 10

可以使用 {x.. y.. z} 形式的花括號來擴展生成從 x 到 y 的值,遞增(步長)為 z。 比如我們想要打印 15 以內的偶數序列,如下:

$ echo {0..15..2}
0 2 4 6 8 10 12 14

或者奇數序列:

$ echo {1..15..2}
1 3 5 7 9 11 13 15

步長可以指定為任何數值:

$ echo {100..1000..99}
100 199 298 397 496 595 694 793 892 991

也可以采用負數:

$ echo {3..-4}
3 2 1 0 -1 -2 -3 -4

注意:花括號中的點之間 不能有空格 ,否則,擴展將不起作用。

使用字母序列

我們上面的例子,介紹的是使用數字序列。 但是也可以使用它生成字母序列。 看下面的例子:

$ echo {A..H}
A B C D E F G H

也可以將順序反過來:

$ echo {H..A}
H G F E D C B A

或者指定步長:

$ echo {H..A..2}
H F D B

或者使用小寫字母:

$ echo {a..f}
a b c d e f

實際應用

上面我們介紹了花括號擴展的具體用法,下面來介紹一些關于它的實際應用。

創建一系列文件

我們可以利用花括號擴展來創建一系列具有相同文件名規則的文件,看下面的例子:

$ touch file_{1..10}.txt
$ ls
file_10.txt  file_2.txt  file_4.txt  file_6.txt  file_8.txt
file_1.txt   file_3.txt  file_5.txt  file_7.txt  file_9.txt

創建備份文件

當我們在編輯配置文件時,一般建議先對其進行備份,按照大多數人的習慣,是在原始文件名中添加 .bak 擴展名,這表示它是對原文件的一個備份。

比如:

cp -p long_filename.txt long_filename.txt.bak

現在我們來使用花括號擴展來完成這個工作,如下代碼:

cp -p long_filename.txt{,.bak}

是的,這里的 {,text} 不是上面的那種 {X.. Y} 的模式,但是你需要知道有這樣一個用法的存在。

$ cp -p long_filename.txt{,.bak}
$ ls
long_filename.txt long_filename.txt.bak

上述 cp 命令的 -p 選項表示需要保留原文件的屬性,比如所有權、時間戳等。

使用多個花括號

可以使用多個花括號來創建具有相似名稱和不同擴展名的文件,看下面的例子:

$ touch {a,b,c}.{hpp,cpp}
$ ls
a.cpp  a.hpp  b.cpp  b.hpp  c.cpp  c.hpp

在路徑中使用或括號擴展

假設有兩個路徑,其目錄結構是類似的,只有很少的一部分不一樣(比如中間某個文件夾名稱不同),這個時候,花括號擴展會非常有用。 看下面代碼:

mv project/{new,old}/dir/file

其相當于:

mv project/new/dir/file project/old/dir/file

并非所有內容都可擴展

這是不言而喻的。 如果你希望創建一個序列,給出的條件應該是可以創建成序列的東西。 如果你使用的是一個很奇怪的組合,將不能被擴展。 比如:

$ echo {1..Z}
{1..Z}

另外,也不能使用小數:

$ echo {1..5..0.5}
{1..5..0.5}

一些奇怪的組合,也會生成奇怪的結果:

$ echo {a..F}
a ` _ ^ ]  [ Z Y X W V U T S R Q P O N M L K J I H G F

當你剛開始接觸花括號擴展時,會覺得它很麻煩。 但是,手動打字會更耗費時間。 一旦你熟悉了它,那你的 Linux 技能會更上一個臺階。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11314

    瀏覽量

    209784
  • 代碼
    +關注

    關注

    30

    文章

    4797

    瀏覽量

    68711
  • Shell
    +關注

    關注

    1

    文章

    366

    瀏覽量

    23410
收藏 人收藏

    評論

    相關推薦

    【RT-Thread學習筆記】bash shell -e參數

    bash shell -e參數的含義與用途,你了解嗎?
    的頭像 發表于 07-28 05:20 ?1848次閱讀
    【RT-Thread學習筆記】<b class='flag-5'>bash</b> <b class='flag-5'>shell</b> -e參數

    何在bash shell腳本中使用變量

    如果你使用編程語言編寫過程序,那么一定接觸過變量。而在 bash 腳本的編寫時,變量也是一個很重要的概念。今天我們分享一下如何在 bash 腳本中使用變量。
    發表于 12-02 16:32 ?2123次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>bash</b> <b class='flag-5'>shell</b>腳本<b class='flag-5'>中使</b>用變量

    何在bash腳本中創建第一個數組

    在前面的文章中,我們介紹了如何在 bash 中使用有限數量的變量,比如要保存一個或兩個文件名或用戶名。
    發表于 12-02 16:53 ?860次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>bash</b>腳本中創建第一個數組

    何在bash中使用條件語句

    今天我們介紹一下如何在 bash 中使用條件語句。
    的頭像 發表于 12-09 17:27 ?2163次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>bash</b><b class='flag-5'>中使</b>用條件語句

    一個小而美的嵌入式shell - letter shell

    無誤的操作工作。Shell有著不同的分類,比如Bourne shell(sh),Korn shell(ksh)、C shell (csh)、Bourne-again
    的頭像 發表于 06-10 15:11 ?9092次閱讀
    一個小而美的嵌入式<b class='flag-5'>shell</b> - letter <b class='flag-5'>shell</b>

    shell中的各種括號的使用方法 linux基礎學習

    Linux中小括號()和大括號{}都是對其中的一串命令進行執行,但有一定的區別,其具體含義如下:( ):括號內的命令會在一個子shell中執行(( )):將
    發表于 01-16 14:21

    如何更新Vivado 2014.2中的bash shell版本?

    如何更新Vivado 2014.2中的bash shell版本?謝謝!
    發表于 03-20 07:47

    在ucosiii編譯時出現括號的問題是 什么原因?

    編譯的時候出現這種錯誤,括號出現問題。void函數下面的括號也出現問題,請問是什么原因?
    發表于 05-11 23:57

    Linux_Bash腳本編程大全

    毫無疑問,UNIX/Linux 最重要的軟件之一就是shell,目前最流行的shell 被稱為Bash(Bourne Again Shell),幾乎所有的Linux 和絕大部分的UNI
    發表于 10-22 16:17 ?57次下載

    【RT-Thread學習筆記】bash和dash-shell

    ? 最近在工作中遇到一個很奇葩的問題,就是一個嵌入式的SDK編譯,它里面執行shell命令的時候,使用的dash shell來解析,而通常我們默認用的是bash shell來解析;我按
    的頭像 發表于 07-30 13:49 ?1221次閱讀
    【RT-Thread學習筆記】<b class='flag-5'>bash</b>和dash-<b class='flag-5'>shell</b>

    何在bash shell腳本中接受參數

    終端命令通常包含一些參數,在使用的時候可以提供不同的參數來確定命令的執行方式。POSIX規范中包含了用于命令行接口的選項。這也是與最早的UNIX應用程序建立的一個由來已久的約定,所以當你在寫bash腳本的時候,需要知道如何在腳本中接受參數。
    的頭像 發表于 12-09 17:34 ?2726次閱讀

    每個Linux用戶都需要知道的重要Bash shell變量

    Bash 是大多數 Linux 發行版的默認 shell。以下是每個 Linux 用戶都需要知道的一些重要的 Bash shell 變量。
    的頭像 發表于 02-13 09:22 ?937次閱讀

    BASH shell腳本篇—條件命令

    這篇文章介紹下BASH shell中的條件相關的命令,包括:if, case, while, until, for, break, continue。
    的頭像 發表于 10-11 15:21 ?640次閱讀
    <b class='flag-5'>BASH</b> <b class='flag-5'>shell</b>腳本篇—條件命令

    BASH shell腳本篇—函數

    函數是代碼重用的最重要方式。Bash函數可以定義為一組命令,在bash腳本中多次調用。
    的頭像 發表于 10-20 16:31 ?1122次閱讀

    BASH shell腳本篇—文件處理介紹

    Bash Shell腳本中,可以使用多種方法來對文件進行操作,包括讀取文件或寫入文件。
    的頭像 發表于 10-23 16:51 ?639次閱讀
    主站蜘蛛池模板: 国产成人av在线| 一级视频免费观看| 欧美a免费| 久久婷婷五综合一区二区| 久久免费视频99| 极品美女洗澡后露粉嫩木耳视频 | 在线成人看片| 亚洲人成电影在线播放| 天堂综合| 欧美一区二区三区精品| 久久综合性| 国产黄色精品| 天天爽视频| 国产精品网站在线进入| 色爱区综合激月婷婷激情五月| 中文字幕一区2区3区| 激情综合网色播五月| 性欧美videofree丝袜| 日本色www| 狠狠色噜噜| 午夜影视网站| 国产福利免费观看| 亚洲婷婷综合中文字幕第一页| 中文字幕一区精品欧美| 色99色| 天堂网www最新版在线资源| 日本亚洲精品成人| 国模爱爱| 手机看片午夜| xxxx日本69护士| 亚洲地址一地址二地址三| 全免费a级毛片免费看不卡| 国产一级特黄一级毛片| 午夜小视频免费| 夜夜bb| 一级一级18女人毛片| 一级毛片子| 欧美成人伊人久久综合网| 99久久亚洲国产高清观看| 又黄又爽又猛午夜性色播在线播放| 女同毛片免费网站|