Zunächst möchte ich mich entschuldigen, da ich letzten Freitag den Beitrag nicht schreiben konnte. Heute werde ich ein Extra hinzufügen, um den verlorenen Tag auszugleichen. 🙂
Klammererweiterung
Auf Spanisch scheint mir die Schlüsselerweiterung eine Funktion zu sein, die von inspiriert ist C-SchaleDies erzeugt Kombinationen zwischen den Zeichen, die in geschweiften Klammern eingegeben werden. Die Reihenfolge ist von links nach rechts. Es ist überhaupt nicht kompliziert, aber es ist eine Option, die bei unseren Touren durch GNU / Linux sehr nützlich sein wird.
Beispiel:
$ echo a {1,2,3} a1 a2 a3
Bei Verwendung mit Kommas (,) generiert Kombinationen zwischen dem Wert a und den Werten in geschweiften Klammern. Wenn es keinen Wert außerhalb der Schlüssel gäbe, würde jeder Wert, den der Schlüssel enthält, nur einmal angezeigt.
$ echo {a, b, c} abc
Die Verwendung ist überhaupt nicht komplex. Es gibt weitere häufigere Beispiele, z. B. das Erstellen vieler Verzeichnisse in einem Ordner
$ mkdir ~ / Jobs / {eins, zwei, drei, vier, fünf}
Dadurch werden fünf Ordner im Jobordner erstellt. Es ist so, als würden Sie jeweils einen Befehl eingeben. Erstellen der 5 Verzeichnisse.
Es gibt eine Erweiterung um zwei Punkte .. Dadurch wird eine Reihe von Zahlen oder Zeichen erstellt, die vom Anfangswert bis zum Endwert reichen. Verwenden Sie keine mit Buchstaben versehenen Zahlen.
$ echo {1..5} #Correct 1 2 3 4 5 $ echo {a..f} #Correct abcdf $ echo {a..5} #Incorrect {a..5} #Ich denke, ich werde es nie bekommen an diese blaue Farbe im Buchstaben gewöhnt
Wir können Zeit sparen, indem wir einen Zyklus erstellen für
# Statt $ for zu schreiben ((i = 1; i <= 5; i ++)); Echo "Meine Nummer $ i"; erledigt Meine Nummer 1 Meine Nummer 2 Meine Nummer 3 Meine Nummer 4 Meine Nummer 5 # Code mit Klammererweiterung speichern. $ für i in {1..5}; do echo "Meine Nummer $ i; done Meine Nummer 1 Meine Nummer 2 Meine Nummer 3 Meine Nummer 4 Meine Nummer 5 # Natürlich ist die Verwendung gültig, obwohl die Ausgabe unterschiedlich ist. $ echo" Meine Nummer "{1..5} Meine Nummer 1 Meine Nummer 2 Meine Nummer 3 Meine Nummer 4 Meine Nummer 5
Nun, ich denke, das Konzept ist klar, haha, jetzt werde ich nur kommentieren, dass es kombinierbar und verschachtelt ist. Was meine ich damit?
Mit kombinierbar, mit dem wir einen oder mehrere Schlüssel verbinden können
$ echo {a..c} {1..3} a1 a2 a3 b1 b2 b3 c1 c2 c3
Bei der Verschachtelung können sich viele Erweiterungsschlüssel in Erweiterungsschlüsseln verwenden
$ echo {a, c {1..3}, d} a c1 c2 c3 d
Und schließlich von Bash NICHTS Es ist möglich, die Werte zu erhöhen.
$ echo {0..20..2} 0 2 4 6 8 10 12 14 16 18 20
Das ist alles für heute, also danke, dass du mir Leute vorgelesen hast 🙂
Extra
So erstellen Sie einen lokalen Bin
Wenn ich a sage Kasten lokal Ich meine ein Verzeichnis, in dem wir unsere eigenen Skripte haben und es möglich ist, sie als einfachen Befehl auszuführen ...
Dies zu erreichen ist relativ einfach. Als erstes müssen Sie ein Verzeichnis erstellen, in dem die Skripte gespeichert werden.
mkdir ~ / .bin # In diesem Beispiel wird es ausgeblendet
Jetzt haben wir unseren Ordner zum Speichern der Skripte, aber es wird nicht funktionieren, bis wir den Pfad der neuen .bin zu $ PATH hinzufügen
Dazu wird die Datei bearbeitet bash_profileund die Zeile wird hinzugefügt.
export PATH = $ PATH: ~ / .bin
Und voila, das reicht aus, um einen lokalen Bin zu erstellen. Natürlich werden Root-Berechtigungen angefordert, falls dies für ein Beispiel erforderlich ist, in dem wir ein schnelles Skript schreiben.
#! / bin / bash echo "Hallo $ 1, wie geht es dir?"
Speichern Sie es mit dem Namen Hallo
Das Skript erhält eine Ausführungsberechtigung und reicht nur aus, um es vom Terminal aus aufzurufen
$ hallo wada # Dies zeigt die Nachricht Hallo wada, wie geht es dir?
Mit diesem schnellen Trick können Sie Ihre Skripte also schneller ausführen
Das ist alles für heute Menschen, denen es gut geht 🙂
PS Entschuldigung für Fehler, wenn es welche gibt, schließen sich meine Augen bereits hahaha 😀
Ich bin schon lange in der Bash-Ausgabe und hatte die Klammererweiterungen nicht verstanden, danke.
In Bezug auf den Pfad-Trick macht Fedora standardmäßig so etwas, aber in "~ / .local / bin" sehen Sie sich einen Ausschnitt des bash_profile an, den ich zu Jessie gebracht habe.
PATH = $ PATH: $ HOME / .local / bin: $ HOME / bin
PATH exportieren
Ich habe einige Bedenken:
1. Wie bringe ich ihn dazu, mir zwei Intervalle mit Punkterweiterung zu geben? Alter {1..24,55..90} und dass ich Alter von 1 bis 24 erweitern und mit 55 bis XNUMX fortfahren. wie ich es tat hat es nicht funktioniert. Warum?
2. Wenn der erste Wert null sein soll, fahren Sie mit der Nummerierung fort:
wget: http://manga.favorito /Bild http://manga.favorito/imagen1
Ich habe den folgenden Weg versucht, aber wget hat nicht bekommen: http://manga.favorito/imagen{, 1..42} Meiner Meinung nach müsste ich den Vornamen ohne Nummer lassen und mit der Nummerierung von 1 bis 42 fortfahren, aber das war nicht so. Warum?
Sie haben Recht, einige Distributionen haben oder hatten eine .bin, aber es ist so, dass jeder verstehen und sehen kann, dass es möglich ist, dies in jeder Distribution zu tun: D, Danke, dass Sie vorbeischauen.
Sehr gut, sehr gut für diese Wissensbeiträge zur Linux-Welt und ihrer Sicherheit. Ich hoffe, ich konnte an einem Freitag lesen, wie man ein Pendrive in einem Terminal formatiert und ein ISO-DVD / CD-Image eines beliebigen freien Systems in einem Terminal brennt.
Danke für deine Worte, Bruder. Ich verspreche, dass ich nächsten Freitag diesen Beitrag machen werde. Und ich muss eine über das Anpassen von Vim hahaha, aber ich wollte nicht, dass sie denken, dass es nur Vim umfassen würde.
Ausgezeichneter Terminalartikel, der beste, den ich seit langem gelesen habe, einschließlich mehrerer Blogs, die Tutorials dieses Stils veröffentlichen. Vielen Dank!!
Vielen Dank 😀 Ich werde versuchen mitzuhalten.
Hervorragender Tipp für den örtlichen Mülleimer!
Viele Grüße!
Ausgezeichnet, toll, dass es dir nützlich ist, vielen Dank, dass du Bruder 😀 verstorben bist
Sehr gut! Keine Ahnung davon. Danke 🙂
Gern geschehen, Bruder, danke, dass du dir die Zeit genommen hast, es zu lesen 😀
Ich habe einige Bedenken:
1. Wie bringe ich ihn dazu, mir zwei Intervalle mit Punkterweiterung zu geben? Alter {1..24,55..90} und dass ich Alter von 1 bis 24 erweitern und mit 55 bis XNUMX fortfahren. wie ich es tat hat es nicht funktioniert. Warum?
2. Wenn der erste Wert null sein soll, fahren Sie mit der Nummerierung fort:
wget: http://manga.favorito/imagen http://manga.favorito/imagen1
Ich habe den folgenden Weg versucht, aber wget hat nicht bekommen: http://manga.favorito/imagen{, 1..42} Meiner Meinung nach müsste ich den Vornamen ohne Nummer lassen und mit der Nummerierung von 1 bis 42 fortfahren, aber das war nicht so. Warum?
* Entschuldigung, aber ich habe den ersten Beitrag als Antwort angegeben und er war in einigen Teilen falsch
1.- Deine Logik ist falsch, du musst sie verschachteln, hahaha, versuche es mit
$ echo {{1..24},{55..90}}
2.- Wie der vorherige ...
$ echo "URL"{,{1..42}}
Mach dir keine Sorgen, Bruder, wir sind hier, um uns zu helfen 🙂
Um das for durch echo zu ersetzen, würde es so aussehen
Echo "Meine Nummer" {1..5} $ '\ n' | sed -e: a -e '$! N; s / \ n / \ n /; ta' | sed -e: a -e '$! N; s / 5 \ n / 5 /; ta'
aber ich bevorzuge printf
printf "I, I% d \ n" {1..5}
und verwenden Sie das gleiche Konzept der Schlüsselerweiterung
Atte
jvk85321
Wie setzen Sie die Klemmenkästen ????
Atte
jvk85321
Testen, ob das Code-Tag funktioniert
hehe
Um das for durch echo zu ersetzen, würde es so aussehen
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}
und verwenden Sie das gleiche Konzept der Schlüsselerweiterung
Atte
jvk85321
Ich habe einige Fehler, aber es hat funktioniert
Ich lebe Maluco
Entschuldigung für die Störung
Atte
jvk85321
Hahaha, du hast dir selbst geantwortet, aber wenn es zwischen den Labels liegt
kein Platz ...
Und bei der Ersetzung der für ist es nicht notwendig, so viel Pipe hahahaha genug zu tun mit:
echo -e "Mi numero "{1..5}"\n\b"
Um ehrlich zu sein, ist printf der beste Weg, um Text in Skripten zu drucken. Es ist portabler, verwendet aber traditionell Echo.
Ich nehme die Räume! hahahahaha
mal sehen 😀
Scheiße, es ist "kleiner als" Code größer als "" kleiner als "/ Code" größer als "hahahaha
Das Problem, dass echo -e nicht Standard ist, funktioniert daher nicht auf allen Systemen.
Kommt auch chaotisch raus
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:~$
Und damit
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:~$
Ich denke, der zweite präsentiert das Ergebnis besser, hahaha
Atte
jvk85321
Diese Labels sind ein Mist, hehehe, mal sehen, ob sie jetzt funktionieren
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:~$
Und damit
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:~$
Ich denke, der zweite präsentiert das Ergebnis besser, hahaha
Atte
jvk85321
Wie auch immer, lass die Leerzeichen zwischen den Zeilen, deshalb hasse ich HTML, hahahaha
Ausgezeichnet! Ich klatsche in deine Füße haha
Ich wusste nicht, dass Schlüssel verschachtelt werden können, da ich sie auch nie ausprobiert habe, es spart wirklich viel Code und ist auf diese Weise auch besser lesbar. Vielen Dank!
Vielen Dank für Ihren verstorbenen Bruder, ich bin froh, dass es nützlich war
Gern geschehen, dafür sind wir hier, um Ideen auszutauschen und einzubringen. Ich weiß nicht, wie man programmiert, ich habe nur ein paar Dinge in Bash gemacht und in zwei Posts einige Skripte veröffentlicht, die ich gemacht habe. Ich denke, dies zu wissen kann das Verständnis von Code erleichtern.