Allereerst wil ik mijn excuses aanbieden, aangezien ik afgelopen vrijdag de post niet kon schrijven, dus vandaag zal ik een extra toevoegen om de verloren dag in te halen. 🙂
Brace-uitbreiding
In het Spaans lijkt sleuteluitbreiding mij een functie die is geïnspireerd door C Schelp, dit genereert combinaties tussen de karakters die tussen de accolades worden ingevoerd, de volgorde die het gebruikt is van links naar rechts. Het is helemaal niet ingewikkeld, maar het is een optie die erg handig zal zijn tijdens onze rondleidingen door GNU / Linux.
voorbeeld:
$ echo a {1,2,3} a1 a2 a3
Bij gebruik met komma's genereert combinaties tussen de waarde a en de waarden tussen de accolades. Als er geen waarde buiten de sleutels zou zijn, zou het elke waarde die de sleutel bevat slechts één keer weergeven.
$ echo {a, b, c} abc
Het gebruik ervan is helemaal niet ingewikkeld, er zijn andere, meer algemene voorbeelden, zoals het maken van veel mappen in een map
$ mkdir ~ / Jobs / {een, twee, drie, vier, vijf}
Dit creëert vijf mappen binnen de jobs-map, het is alsof je één commando tegelijk invoert. De 5 mappen maken.
Er is een uitbreiding met twee punten .. Dit creëert een reeks cijfers of tekens die van de beginwaarde naar de uiteindelijke waarde gaan, gebruik geen cijfers met letters.
$ echo {1..5} #Correct 1 2 3 4 5 $ echo {a..f} #Correct abcdf $ echo {a..5} #Onjuist {a..5} #Ik denk dat ik het nooit zal krijgen gewend aan deze blauwe kleur in brief
We kunnen tijd besparen door een cyclus te creëren For
#In plaats van $ te schrijven voor ((i = 1; i <= 5; i ++)); echo "Mijn nummer $ i"; done Mijn nummer 1 Mijn nummer 2 Mijn nummer 3 Mijn nummer 4 Mijn nummer 5 #Save code met behulp van accolade uitbreiding. $ voor i in {1..5}; do echo "Mijn nummer $ i; klaar Mijn nummer 1 Mijn nummer 2 Mijn nummer 3 Mijn nummer 4 Mijn nummer 5 # Natuurlijk is het geldig om te gebruiken, hoewel de uitvoer anders is. $ echo" Mijn nummer "{1..5} Mijn nummer 1 Mijn nummer 2 Mijn nummer 3 Mijn nummer 4 Mijn nummer 5
Nou ik denk dat het concept duidelijk is, haha nu zal ik alleen maar zeggen dat het combineerbaar en genest is, wat bedoel ik hiermee?
Met combineerbaar dat we een of meer sleutels kunnen koppelen
$ echo {a..c} {1..3} a1 a2 a3 b1 b2 b3 c1 c2 c3
Met nesten zoals velen zich kunnen voorstellen, kunt u uitbreidingssleutels binnen uitbreidingssleutels gebruiken
$ echo {a, c {1..3}, d} a c1 c2 c3 d
En tot slot van Bash NIETS het is mogelijk om de waarden te verhogen.
$ echo {0..20..2} 0 2 4 6 8 10 12 14 16 18 20
Dit is alles voor vandaag, dus bedankt voor het lezen van mij mensen 🙂
Extra
Hoe u een lokale bak maakt
Als ik een bak local Ik bedoel een directory waarin we onze eigen scripts hebben en het is mogelijk om ze uit te voeren als een simpel commando ...
Om dit te bereiken is relatief eenvoudig, het eerste dat u moet doen, is een map maken waarin we de scripts zullen opslaan.
mkdir ~ / .bin # In dit voorbeeld zal het verborgen zijn
Nu hebben we onze map om de scripts op te slaan, maar het werkt pas als we het pad van de nieuwe .bin aan $ PATH hebben toegevoegd
Hiervoor wordt het bestand bewerkt bash_profiel, en de regel wordt toegevoegd.
exporteer PATH = $ PATH: ~ / .bin
En voila dat is genoeg om een lokale bin te maken, het zal natuurlijk om rootrechten vragen als dat nodig is voor een voorbeeld dat we een snel script schrijven.
#! / bin / bash echo "Hallo $ 1, hoe gaat het?"
Bewaar het met de naam van Hallo
Het script krijgt uitvoeringsmachtiging en het is voldoende om het vanaf de terminal aan te roepen
$ hallo wada # Dit toont het bericht Hallo wada, hoe gaat het?
Dus met deze snelle truc kun je je scripts sneller uitvoeren
Dat is alles voor mensen die het vandaag goed doen 🙂
PS Sorry voor fouten, als die er zijn, gaan mijn ogen al dicht hahaha 😀
Ik zit al heel lang in de bash-kwestie en ik had de brace-uitbreidingen deze niet begrepen, bedankt.
Wat de padtruc betreft, doet Fedora standaard zoiets als dit, maar zie in "~ / .local / bin" een fragment uit het bash_profile dat ik naar Jessie heb gebracht.
PATH = $ PATH: $ HOME / .local / bin: $ HOME / bin
exporteer PATH
Ik heb een aantal zorgen:
1. Hoe zorg ik ervoor dat hij mij twee intervallen geeft met uitzetting in punten; leeftijden {1..24,55..90} en dat ik de leeftijd uitbreid van 1 tot 24 en verder ga met 55 tot negentig. zoals ik deed, werkte het niet. Waarom?
2. Als ik wil dat de eerste waarde null is en ga verder met de nummering:
wget: http://manga.favorito /beeld http://manga.favorito/imagen1
Ik heb het op de volgende manier geprobeerd, maar wget kreeg het niet: http://manga.favorito/imagen{, 1..42} Volgens mij zou ik de voornaam zonder nummer moeten laten en doorgaan met de nummering van 1 tot 42, maar zo ging het niet. Waarom?
Je hebt gelijk dat sommige distro's een .bin hebben of hadden, maar het is zodat iedereen kan begrijpen en zien dat het mogelijk is om het in elke distro te doen: D, Bedankt voor het langskomen.
Heel goed, heel goed voor deze bijdragen van kennis aan de linux-wereld en zijn veiligheid, op een vrijdag hoop ik dat ik zou kunnen lezen hoe ik een pendrive in een terminal kan formatteren en een iso-dvd / cd-image van elk vrij systeem in een terminal kan branden.
Bedankt voor je woorden broer 😀 Ik beloof dat ik aanstaande vrijdag die post zal doen. En ik moet er een over het aanpassen van Vim hahaha, maar ik wilde niet dat ze dachten dat het alleen Vim zou omvatten.
Uitstekend terminaal artikel, het beste dat ik in lange tijd heb gelezen, met verschillende blogs die tutorials van deze stijl publiceren. Heel erg bedankt!!
Heel erg bedankt 😀 Ik zal proberen bij te blijven.
Uitstekende tip van de lokale prullenbak!
Groeten!
Uitstekend, geweldig dat het nuttig voor je is, heel erg bedankt voor het passeren van broer 😀
Zeer goed! Geen idee hierover. Bedankt 🙂
Graag gedaan, broeder, bedankt dat je de tijd hebt genomen om het te lezen 😀
Ik heb een aantal zorgen:
1. Hoe zorg ik ervoor dat hij mij twee intervallen geeft met uitzetting in punten; leeftijden {1..24,55..90} en dat ik de leeftijd uitbreid van 1 tot 24 en verder ga met 55 tot negentig. zoals ik deed, werkte het niet. Waarom?
2. Als ik wil dat de eerste waarde null is en ga verder met de nummering:
wget: http://manga.favorito/imagen http://manga.favorito/imagen1
Ik heb het op de volgende manier geprobeerd, maar wget kreeg het niet: http://manga.favorito/imagen{, 1..42} Volgens mij zou ik de voornaam zonder nummer moeten laten en doorgaan met de nummering van 1 tot 42, maar zo ging het niet. Waarom?
* Sorry maar ik heb het eerste bericht als antwoord geplaatst en het was in sommige delen fout
1.- Je logica klopt niet, je moet het nesten hahaha probeer het maar
$ echo {{1..24},{55..90}}
2.- Hetzelfde als de vorige ...
$ echo "URL"{,{1..42}}
Maak je geen zorgen broeder, we zijn hier om ons te helpen 🙂
Om de voor te vervangen door echo zou het er zo uitzien
echo "Mijn nummer" {1..5} $ '\ n' | sed -e: a -e '$! N; s / \ n / \ n /; ta' | sed -e: a -e '$! N; s / 5 \ n / 5 /; ta'
maar ik heb liever printf
printf "I, I% d \ n" {1..5}
en gebruik hetzelfde concept van belangrijke uitbreiding
atte
jvk85321
Hoe zet je de klemmenkasten ????
atte
jvk85321
Testen of de codetag werkt
hehe
Om de voor te vervangen door echo zou het er zo uitzien
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}
en gebruik hetzelfde concept van belangrijke uitbreiding
atte
jvk85321
Ik heb nog wat bugs, maar het werkte
Ik woon maluco
Sorry voor het storen
atte
jvk85321
Hahaha heb je zelf geantwoord maar als het tussen labels staat
geen spaties ...
En over de vervanging van de voor is het niet nodig om zoveel te pijpen hahahaha genoeg met:
echo -e "Mi numero "{1..5}"\n\b"
Om eerlijk te zijn is printf de beste manier om tekst in scripts af te drukken, het is draagbaarder maar gebruikt traditioneel echo.
Ik neem de ruimtes! hahahahaha
laten we nu kijken 😀
Fuck het is "kleiner dan" code "groter dan" "kleiner dan" / code "groter dan" hahahaha
Het probleem dat echo -e is niet standaard, dus het werkt niet op alle systemen.
Komt ook rommelig uit
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:~$
En hiermee
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:~$
Ik denk dat de tweede het resultaat beter presenteert, hahaha
atte
jvk85321
Deze labels zijn een spelbreker, hehehe, laten we eens kijken of ze nu werken
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:~$
En hiermee
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:~$
Ik denk dat de tweede het resultaat beter presenteert, hahaha
atte
jvk85321
Hoe dan ook, laat de spaties tussen de regels, daarom haat ik html, hahahaha
Uitstekend! Ik klap in je voeten haha
Ik wist niet dat sleutels konden worden genest, aangezien ik ze ook nooit heb geprobeerd te gebruiken, het scheelt echt veel code en het is ook beter leesbaar op deze manier. Dank je!
Bedankt voor het passeren van broer, ik ben blij dat het nuttig was
Graag gedaan, daarvoor zijn we hier, om te delen en mee te denken. Ik weet niet hoe ik moet programmeren, ik heb net een paar dingen gedaan in Bash en ik heb in twee posts een aantal scripts gepubliceerd die ik heb gedaan. Ik denk dat als ik dit weet, code gemakkelijker te begrijpen kan zijn.