Prije svega, želio bih se ispričati, jer prošli petak nisam mogao napisati post, pa ću danas dodati dodatka da nadoknadim izgubljeni dan. 🙂
Brace Expansion
Na španskom jeziku čini mi se da je proširenje ključa funkcija inspirisana c-ljuska, ovo generira kombinacije između znakova koji se unose unutar zagrada, redoslijed koji koristi je slijeva udesno. Nije uopće komplicirano, ali to je opcija koja će biti vrlo korisna u našim obilascima GNU / Linuxa.
Primjer:
$ echo a {1,2,3} a1 a2 a3
Kada se koristi sa zarezima (,) generira kombinacije između vrijednosti a i vrijednosti unutar zagrada. Da nema vrijednosti izvan zagrada, to bi samo jednom prikazalo svaku vrijednost koju sadrži ključ.
$ echo {a, b, c} abc
Njegova upotreba uopće nije složena, postoje i drugi češći primjeri poput stvaranja mnogih direktorija u mapi
$ mkdir ~ / Poslovi / {jedan, dva, tri, četiri, pet}
Ovo stvara pet mapa unutar mape poslova, to je kao da unosite jednu po jednu naredbu. Izrada 5 direktorija.
Postoje dva proširenja .. ovo stvara niz brojeva ili znakova koji idu od početne do konačne vrijednosti, nemojte koristiti brojeve sa slovima.
$ echo {1..5} # Ispravno 1 2 3 4 5 $ echo {a..f} # Ispravno abcdf $ echo {a..5} # Neispravno {a..5} # Mislim da nikada neću dobiti naviknuta na ovu plavu boju u pismu
Stvaranjem ciklusa možemo uštedjeti vrijeme za
# Umjesto pisanja $ for ((i = 1; i <= 5; i ++)); odjeknite "Moj broj $ i"; gotovo Moj broj 1 Moj broj 2 Moj broj 3 Moj broj 4 Moj broj 5 # Spremi kôd pomoću proširenja zagrade. $ za i za {1..5}; do echo "Moj broj $ i; gotovo Moj broj 1 Moj broj 2 Moj broj 3 Moj broj 4 Moj broj 5 #Naravno da je valjano koristiti iako su izlazi različiti. $ echo" Moj broj "{1..5} Moj broj 1 Moj broj 2 Moj broj 3 Moj broj 4 Moj broj 5
Pa mislim da je koncept jasan, haha, sad ću samo komentirati da se može kombinirati i ugniježditi.Što pod tim mislim?
Pomoću kombiniranog možemo pridružiti jedan ili više ključeva
$ echo {a..c} {1..3} a1 a2 a3 b1 b2 b3 c1 c2 c3
S gniježđenjem, kako bi mnogi zamislili, možete koristiti ključeve za proširenje unutar ključeva za proširenje
$ echo {a, c {1..3}, d} a c1 c2 c3 d
I konačno od bash 4 moguće je povećati vrijednosti.
$ echo {0..20..2} 0 2 4 6 8 10 12 14 16 18 20
Ovo je sve za danas, pa hvala što ste me pročitali 🙂
ekstra
Kako stvoriti lokalnu kantu
Kad kažem a am local mislim na direktorij u kojem imamo vlastite skripte i moguće ih je izvršiti kao jednostavnu naredbu ...
To je relativno lako postići, prvo što morate učiniti je stvoriti direktorij u koji ćemo spremiti skripte.
mkdir ~ / .bin # U ovom primjeru će biti skriven
Sada imamo našu mapu za spremanje skripti, ali ona neće raditi dok ne dodamo putanju novog .bin u $ PATH
Zbog toga se datoteka uređuje bash_profilei dodaje se redak.
izvoz PATH = $ PATH: ~ / .bin
A voila je to dovoljno za stvaranje lokalne kante, naravno da će tražiti root dozvole ako je potrebno, za primjer napišemo brzu skriptu.
#! / bin / bash echo "Bok $ 1, kako si?"
Sačuvajte ga sa imenom hola
Skriptu se daje odobrenje za izvršenje i bit će dovoljno samo da je pozove s terminala
$ hello wada #Ovo će prikazati poruku Zdravo wada, kako si?
Tako ovim brzim trikom možete brže pokretati svoje skripte
To je sve za današnje ljude koji su dobro 🙂
PS Izvinite na greškama, ako ih ima, oči mi se već zatvaraju hahaha 😀
Dugo sam u bash izdanju i nisam razumio ovo proširenje aparatića, hvala.
Na triku puta, Fedora po defaultu radi nešto slično, ali u "~ / .local / bin" pogledajte isječak iz bash_profile koji sam donio Jessie.
PUT = $ PATH: $ HOME / .local / bin: $ HOME / bin
izvoz PUT
Imam nekih nedoumica:
1. Kako da ga natjeram da mi da dva intervala sa proširenjem po bodovima; uzrasta {1..24,55..90} i proširiti uzrast sa 1 na 24 i nastaviti sa 55 na devedeset. kao što sam učinio nije uspjelo. Zašto?
2. Ako želim da prva vrijednost bude nula i nastavim s numeriranjem:
wget: http://manga.favorito / slika http://manga.favorito/imagen1
Pokušao sam na sljedeći način, ali wget nije dobio: http://manga.favorito/imagen{, 1..42} Po meni, ime bih morao ostaviti bez broja i nastaviti s numeriranjem od 1 do 42, ali nije bilo tako. Zašto?
U pravu ste da neke distro distrikcije imaju ili imaju .bin, ali to je tako da svi mogu razumjeti i vidjeti da je to moguće učiniti u bilo kojoj distro distribuciji: D, hvala što ste navratili.
Vrlo dobro, vrlo dobro za ovaj doprinos znanja svijetu linuxa i njegovoj sigurnosti, nadam se da bih mogao u petak pročitati kako formatirati klatno u terminalu i snimiti iso DVD / CD sliku bilo kojeg slobodnog sistema na terminalu.
Hvala na tvojim riječima brate 😀 Obećavam da ću sljedeći petak obaviti taj post. Moram reći nešto o prilagođavanju Vima, hahaha, ali nisam želio da misle da će to pokrivati samo Vima.
Odličan članak o terminalu, najbolji koji sam već dugo čitao, računajući nekoliko blogova koji objavljuju tutorijale ovog stila. Hvala puno!!
Puno vam hvala 😀 Trudiću se da nastavim.
Odličan savjet lokalne kante!
Pozdrav!
Izvrsno, sjajno što vam je korisno, puno vam hvala što ste prosli brata 😀
Veoma dobro! Nemam pojma o ovome. Hvala 🙂
Nema na čemu, brate, hvala ti što si odvojio vrijeme za čitanje 😀
Imam nekih nedoumica:
1. Kako da ga natjeram da mi da dva intervala sa proširenjem po bodovima; uzrasta {1..24,55..90} i proširiti uzrast sa 1 na 24 i nastaviti sa 55 na devedeset. kao što sam učinio nije uspjelo. Zašto?
2. Ako želim da prva vrijednost bude nula i nastavim s numeriranjem:
wget: http://manga.favorito/imagen http://manga.favorito/imagen1
Pokušao sam na sljedeći način, ali wget nije dobio: http://manga.favorito/imagen{, 1..42} Po meni, ime bih morao ostaviti bez broja i nastaviti s numeriranjem od 1 do 42, ali nije bilo tako. Zašto?
* Oprostite, ali prvi odgovor sam stavio kao odgovor i u nekim je dijelovima bio pogrešan
1.- Vaša logika nije u redu, morate je ugnijezditi hahaha pokušajte
$ echo {{1..24},{55..90}}
2.- Isto kao i prethodni ...
$ echo "URL"{,{1..42}}
Ne brini brate, ovdje smo da nam pomognemo 🙂
Zamjena for-a ehom izgledala bi ovako
odjekni "Moj broj" {1..5} $ '\ n' | sed -e: a -e '$! N; s / \ n / \ n /; ta' | sed -e: a -e '$! N; s / 5 \ n / 5 /; ta'
ali više volim printf
printf "Ja, Ja% d \ n" {1..5}
i koristiti isti koncept proširenja ključa
atte
jvk85321
Kako se stavljaju priključne kutije ????
atte
jvk85321
Testiranje funkcionira li oznaka koda
hehe
Zamjena for-a ehom izgledala bi ovako
echo “Mi numero “{1..5}$’\n’ | sed -e :a -e ‘$!N;s/\n /\n/;ta’ | sed -e :a -e ‘$!N;s/5\n/5/;ta’
pero prefiero printf
printf “Mi numero %d\n” {1..5}
i koristiti isti koncept proširenja ključa
atte
jvk85321
Preostalo mi je nekih grešaka, ali uspjelo je
Živim maluco
Izvinite što smetam
atte
jvk85321
Hahaha i sami ste odgovorili ali ako je između etiketa
nema prostora ...
A na zamjeni for nije potrebno napraviti toliko cijevi hahahaha dovoljno sa:
echo -e "Mi numero "{1..5}"\n\b"
Iskreno govoreći, printf je najbolji način za ispis teksta u skriptama, on je prenosiviji, ali tradicionalno koristi eho.
Uzimam prostore! hahahahaha
da vidimo sada 😀
Jebote, to je "manje od" koda "veće od" "manje od" / koda "veće od" hahahaha
Problem što echo -e nije standardan, pa ne radi na svim sistemima.
Također izlazi neuredno
jvk@jvktos:~$ echo -e "Mi numero "{1..5}"\n\b"
Mi numero 1
Mi numero 2
Mi numero 3
Mi numero 4
Mi numero 5
jvk@jvktos:~$
I sa ovim
jvk@jvktos:~$ echo "Mi numero "{1..5}$'\n' | sed -e :a -e '$!N;s/\n /\n/;ta' | sed -e :a -e '$!N;s/5\n/5/;ta'
Mi numero 1
Mi numero 2
Mi numero 3
Mi numero 4
Mi numero 5
jvk@jvktos:~$
Mislim da drugi bolje predstavlja rezultat, hahaha
atte
jvk85321
Ove naljepnice su grozno, ha, hajde da vidimo hoće li sada uspjeti
jvk@jvktos:~$ echo -e "Mi numero "{1..5}"\n\b"
Mi numero 1
Mi numero 2
Mi numero 3
Mi numero 4
Mi numero 5
jvk@jvktos:~$
I sa ovim
jvk@jvktos:~$ echo "Mi numero "{1..5}$'\n' | sed -e :a -e '$!N;s/\n /\n/;ta' | sed -e :a -e '$!N;s/5\n/5/;ta'
Mi numero 1
Mi numero 2
Mi numero 3
Mi numero 4
Mi numero 5
jvk@jvktos:~$
Mislim da drugi bolje predstavlja rezultat, hahaha
atte
jvk85321
U svakom slučaju, ostavite razmake između redova, zato mrzim html, hahahaha
Odlicno! Plješćem ti po nogama haha
Nisam znao da se ključevi mogu ugnijezditi, jer ih nikada nisam ni pokušao koristiti, stvarno štedi puno koda, a i čitljiviji je na ovaj način. Hvala ti!
Zahvaljujem vam na prolasku, brate, drago mi je što je bilo korisno
Nema na čemu, zbog toga smo ovdje da dijelimo i doprinosimo idejama. Ne znam kako programirati, samo sam uradio nekoliko stvari u Bashu i objavio u dva posta neke skripte koje sam radio. Mislim da ovo može olakšati razumijevanje koda.