Értem, mi a zárójel-bővítés , de nem tudom, hogyan lehet a legjobban használja.
Mikor használja?
Kérjük, tanítson néhány kényelmes és figyelemre méltó példát, ha van saját tippje.
Válasz
A zárójel kiterjesztése nagyon hasznos, ha hosszú elérési útja van. Használom gyors módként egy fájl biztonsági mentésére :
cp /a/really/long/path/to/some/file.txt{,.bak}
a /a/really/long/path/to/some/file.txt
fájlt átmásolja a következőbe: /a/really/long/path/to/some/file.txt.bak
Használhatja sorrendben is . Egyszer ezt tettem rengeteg oldal letöltése a webről:
wget http://domain.com/book/page{1..5}.html
vagy
for i in {1..100} do #do something 100 times done
Megjegyzések
Válasz
Brace expand nagyon hasznos nagy könyvtárstruktúrák létrehozásakor:
mkdir -p dir1/{subdir1,subdir2}/{subsubdir1,subsubdir2}
Ez megadja
find dir1 -type d dir1 dir1/subdir1 dir1/subdir1/subsubdir1 dir1/subdir1/subsubdir2 dir1/subdir2 dir1/subdir2/subsubdir1 dir1/subdir2/subsubdir2
Akár egy lépéssel tovább is léphet, és a zárójel-bővítést belehelyezheti a zárójel-bővítésbe:
mkdir -p dir1/{subdir{1,2}}/{subsubdir{1,2}}
Ez ugyanazt a könyvtárstruktúrát biztosítja, mint a fenti példa.
Megjegyzések
- A fészkelés szép, de a fészkelési példád (
mkdir -p dir1/{subdir{1,2}}/{subsubdir{1,2}}
) nem ' valójában semmilyen célt nem szolgál. Ezt megtehette volna: éssubdir2
nem szó szerinti értelemben. Cserélje le asubdir1
szöveget acat
éssubdir2
kifejezésre adog
például. - @ephsmith: ha a " alkönyvtár1 " -t úgy értelmezi, hogy áll a " macska " és " alkönyvtár2 " div id = “c88ba133ad”>
kutya ", akkor a fészkelési példa nem sikerül, mivel az {1,2} alkönyvtárat használja, és nincs olyan karaktersorozat, amelyet kicserélhetne " alkönyvtár " ezzel az {1} alkönyvtár visszatér {macska, kutya}
Válasz
Akkor használom, ha csökkenteni akarom a gépelést:
geany /path/to/file1 /path/to/file2 # versus geany /path/to/file{1,2}
Egy másik példa:
wajig install libpam0g-dev libiw-dev libdb-dev # versus wajig install lib{pam0g,iw,db}-dev
Válasz
A tényleges összehasonlításához használom teszt kimenet a kívánt teszt kimenetre a fejlesztés során. Ha a 41-es teszt sikertelen, könnyen belátható, hogy mi a különbség a tesztkimenet (a tests.output / 041 fájlban) és a kívánt kimenet között (a tests.out / 041 fájlban):
$ diff tests.{out,output}/041
Válasz
Néhány gyakori eset számomra a következő:
Átnevezéshez:
mv myText.{txt,tex}
vagy
mv myText.tex{,.old}
vagy
cp myText.tex{,.backup}
(Bár kevésbé zavaros a verziókezelést használni az utolsó 2 feladatnál.)
Összehasonlításhoz (már említettem):
diff path{1,2}/a.txt
Válasz
Több remek válasz van itt, de egyikük sem említi, ha not a zárójel kiterjesztésének használatához. A többi válaszadóhoz hasonlóan én is eléggé alkalmazom a kapcsos zárójelet a parancssorban. Az álneveimben és a funkcióimban is használom, mivel számíthatok egy intelligens héjra.
nem használom a shell szkriptjeimben (hacsak nincs más oka a parancsfájloknak) bash vagy zsh legyen, bár ezekben az esetekben a legjobb egy “igazi” szkriptnyelvre frissíteni, például perl
vagy python
). A zárójel kibővítése nem hordozható mivel nincs benne a POSIX shell szabvány. Még akkor is, ha a /bin/sh
– shebang ed shell parancsfájljaiban működik, még több lecsupaszított /bin/sh
kagyló (pl. dash
).
Egyszámjegyű különbség esetén nincs szükség zárójel-bővítésre, elegendő egy karakterosztály:
basizmus:
diff file{1,2}
Hordozható:
diff file[12]
Megjegyzések
- Különbség van hogy a
file{1,2}
mindigfile1 file2
-re bővül, míg afile[12]
csak a meglévő fájlnevekre bővül: azaz ha létezikfile1
, defile2
nem ' t,file[12]
csakfile1
-re bővül. A[]
kiterjesztés valóban a?
bővítés (és ezeket " elérési út bővítéseknek hívják "). - Helyes, a zárójel kiterjesztése nem héj globbing (más néven útvonalnév-bővítés). Ez ' olyan jó hívás, amely nem rendelkezik
még nem igazán említettük: a zárójel-bővítés jobban megfelel a váratlanul hiányzó útvonalaknak. Globalizálhatja a zárójel kiterjesztését is.
Válasz
Miután felosztott egy nagyon nagy fájlt a következővel:
split -b 100m hugeFile.zip part.
tegyük fel, hogy 262 darabra oszlik, más szóval part.aa
, part.ab
, part.ac
… part.kb
Ezeket a darabokat újra összekapcsolhatja a következővel: zárójel-bővítések , mint ez
cat part.{{a..j}{a..z},k{a..b}} > hugeFile.zip
program -f file1 -f file2 -f file3
helyettprogram "-f file"{1..3}
program
három szót kap:"-f file1" "-f file2" "-f file3"
, a 6 helyett:"-f" "file1" "-f" "file2" "-f" "file3"
.for
hurokban való használatra kissé értelmetlen, mivel írhatfor ((i=1; i<=100; i++))
és hatékonyabb.