Ymmärrän mikä aaltosulkeen laajennus on, mutta en tiedä miten käytä sitä.
Milloin käytät sitä?
Opeta minulle käteviä ja merkittäviä esimerkkejä, jos sinulla on oma vinkki.
Vastaa
Aaltosulkeuden laajentaminen on erittäin hyödyllistä, jos sinulla on pitkät polunimet. Käytän sitä nopeana tapana varmuuskopioida tiedosto :
cp /a/really/long/path/to/some/file.txt{,.bak}
kopioi /a/really/long/path/to/some/file.txt
tiedostoon /a/really/long/path/to/some/file.txt.bak
Voit käyttää sitä myös -järjestyksessä . Tein kerran sen lataa paljon sivuja verkosta:
wget http://domain.com/book/page{1..5}.html
tai
for i in {1..100} do #do something 100 times done
kommentit
Vastaa
Ahdinlaajennus on erittäin kätevä, kun luot suuria hakemistorakenteita:
mkdir -p dir1/{subdir1,subdir2}/{subsubdir1,subsubdir2}
Tämä antaa sinulle
find dir1 -type d dir1 dir1/subdir1 dir1/subdir1/subsubdir1 dir1/subdir1/subsubdir2 dir1/subdir2 dir1/subdir2/subsubdir1 dir1/subdir2/subsubdir2
Voit jopa mennä askeleen pidemmälle ja laittaa aaltosulkeuden laajennuksen aaltosulkeuden laajentamiseen:
mkdir -p dir1/{subdir{1,2}}/{subsubdir{1,2}}
Tämä antaa sinulle saman hakemistorakenteen kuin yllä oleva esimerkki.
Kommentit
- Pesiminen on mukavaa, mutta pesimäesimerkkisi (
mkdir -p dir1/{subdir{1,2}}/{subsubdir{1,2}}
) ei ’ ei todellakaan palvele mitään tarkoitusta. Olisit voinut vain tehdä tämän:mkdir -p dir1/subdir{1,2}/subsubdir{1,2}
. - @ikonoclast, sillä on tarkoitus, jos tulkitset
subdir1
jasubdir2
ei-kirjaimellisessa mielessä. Korvaasubdir1
sanoillacat
jasubdir2
sanoilladog
. - @ephsmith: jos tulkitset ” alihakemiston1 ” seisomaan ” cat ” ja ” alihakemisto2 ” kohteelle ” koira ”, niin pesintäesimerkki epäonnistuu, koska se käyttää alihakemistoa {1,2}, eikä korvattavaa merkkijonoa ole ” alihakemisto ”, joka saa alihakemiston {1,2} palauttamaan {kissa, koira}.
vastaus
Käytän sitä, kun haluan vähentää kirjoittamista:
geany /path/to/file1 /path/to/file2 # versus geany /path/to/file{1,2}
Toinen esimerkki:
wajig install libpam0g-dev libiw-dev libdb-dev # versus wajig install lib{pam0g,iw,db}-dev
vastaus
Käytän sitä vertaamaan todellista testitulos haluttuun testitulokseen kehityksen aikana. Jos testi # 41 epäonnistuu, on helppo nähdä, mikä ero testilähdön (tiedostotests.output / 041) ja halutun tulosteen (tiedostotests.out / 041) välillä on:
$ diff tests.{out,output}/041
vastaus
Joitakin yleisiä tapauksia minulle ovat:
Uudelleennimeämiselle:
mv myText.{txt,tex}
tai
mv myText.tex{,.old}
tai
cp myText.tex{,.backup}
(Vaikka versionhallinnan käyttäminen viimeisissä kahdessa tehtävässä on vähemmän sotkuista.)
Vertailuun (jo mainittu):
diff path{1,2}/a.txt
Vastaus
Täällä on useita hyviä vastauksia, mutta yksikään niistä ei mainitse, kun not käyttää aaltosulkeutta. Kuten muutkin vastaajat, käytän komentorivillä asteikkolaajennusta melko vähän. Käytän sitä myös aliaksissani ja toiminnoissani, koska voin odottaa älykästä kuorta.
En käytä sitä shell-komentosarjoissani (ellei skripteissä ole jokin muu syy pitäisi olla bash tai zsh, vaikka näissä tapauksissa on parasta päivittää ”todelliseksi” komentosarjakieleksi, kuten perl
tai python
). Ahdinlaajennus ei ole ei kannettava koska se ei ole POSIX-kuoristandardi. Vaikka se toimii /bin/sh
– shebang ed-komentosarjakomentojesi kanssa, se ei toimi järjestelmissä, joissa on enemmän riisuttuja /bin/sh
kuoret (esim. dash
).
Jos kyseessä on yksinumeroinen luku, et tarvitse ahdinlaajennusta; merkkiluokka riittää:
basismi:
diff file{1,2}
Kannettava:
diff file[12]
Kommentit
- Ero on että
file{1,2}
laajenee aina muotoonfile1 file2
, kun taasfile[12]
laajenee vain olemassa oleviin tiedostonimiin eli josfile1
on olemassa, muttafile2
ei ’ t,file[12]
laajenee vainfile1
.[]
-laajennus on todella rajoitettu versio?
laajennus (ja niitä kutsutaan ” polun laajennuksiksi ”). - Oikea, aaltosulkeuden laajennus ei ole kuori heiluttaa (alias polunimen laajennus). Tämä ’ on hyvä kutsu, joka ei ole
ei todellakaan ole vielä mainittu: aaltosulkeuden laajentaminen on parempi huomata odottamattomasti puuttuvat polut. Voit myös liikkua aaltosulkeiden laajennuksen sisällä.
Vastaa
Erittäin suuren tiedoston jakamisen jälkeen
split -b 100m hugeFile.zip part.
Oletetaan, että se jaetaan 262 osaan, toisin sanoen part.aa
, part.ab
, part.ac
… part.kb
Voit liittyä noihin kappaleisiin uudelleen pesimällä ahdinlaajennukset , kuten tämä
cat part.{{a..j}{a..z},k{a..b}} > hugeFile.zip
program -f file1 -f file2 -f file3
, voit tehdäprogram "-f file"{1..3}
program
saa kolme sanaa:"-f file1" "-f file2" "-f file3"
eikä 6:"-f" "file1" "-f" "file2" "-f" "file3"
.for
-silmukassa on hieman turhaa, koska voit kirjoittaafor ((i=1; i<=100; i++))
ja se on tehokkaampaa.