Ich habe gelernt, mit einem wirklich coolen Einführungsbuch für C zu programmieren, und ich schreibe jedes Beispiel und jede Aufgabe auf, damit ich die Syntax auswendig lernen kann. Ich habe bis jetzt jede Datei manuell erstellt, aber das Klicken, Benennen und Speichern wird anstrengend.
Ich brauche eine Möglichkeit , mehrere Dateien wie zu erstellen bspl0001.c
, bspl0002.c
, bspl0003.c
usw. und sie im Verzeichnis „learning_c“ oder etwas zu retten.
Ich bin ein Anfänger von Ubuntu / Linux und kann es ehrlich gesagt nur über VirtualBox ausführen, da die IDE Geany einfach einzurichten war. Daher weiß ich nicht wirklich, wie das Terminal funktioniert.
edit Ich habe mich gerade in meinem alten Bericht wiedergefunden und schüttele den Kopf darüber, warum ich jemals auswendig eine Codesyntax lernen möchte. Lustigerweise bin ich fast fertig mit meinem CS / Math BSc-Studium. Vielen Dank für die Hilfe im Nachhinein!
quelle
Antworten:
Sie können dies mit diesen Befehlen tun:
Erläuterung:
mkdir learning_c
learning_c
im aktuellen Ordner aufgerufen wird~
cd
Befehl (iecd Desktop
) ändern.cd learning_c
touch bspl{0001..0003}.c
touch
ist ein Tool zum Erstellen leerer Dateien und zum Ändern von Zeitstempeln. Wir erstellen leere Dateien.touch myfile
erstellt eine leere Datei mit dem Namenmyfile
.Der hässliche Code, der auf (
bspl{0001..0003}.c
) folgt, wird als geschweifte Klammer bezeichnet . Dies ist eine großartige Funktion derbash
Shell, mit der Sie lange Listen beliebiger Zeichenfolgenkombinationen erstellen können. Mehr dazu erfahren Sie im Bash Hackers Wiki . In diesem Fall erstellen Sie eine lange Liste von Parametern, an die übergeben wirdtouch
. Sie können auch sein langes Äquivalent verwenden:Sie können die Anzahl der Dateien ändern: Wenn Sie 12 Dateien möchten, können Sie ausführen
bspl{0001..0012}.c
.0012
anstelle von12
) stellen sicher, dass die Ausgabe 4-stellig mit Nullen aufgefüllt ist.quelle
touch bspl000{1..3}.c
touch {test,tes2,tes3}.js
touch tes{t,2,3}.js
Erstellen Sie eine richtig nummerierte (nächste) Datei mit einer Tastenkombination
Warum alle Dateien auf einmal erstellen? Der Nachteil ist, dass Sie viele leere und nicht verwendete Dateien haben. Was ich gerade benutze: Drücken Sie eine Tastenkombination, um:
Alles in einem Tastendruck. Auf diese Weise verhindern Sie viele (noch) nicht verwendete Dateien. Die Dateien werden nur erstellt, wenn Sie sie benötigen.
Eine vereinfachte Version unten (Schritt 3 wird nicht ausgeführt). Bei jedem Tastendruck wird eine korrekt nummerierte Datei wie folgt erstellt:
Wie benutzt man
Führen Sie das Skript über eine Verknüpfung aus: Systemeinstellungen> Tastatur> Benutzerdefinierte Verknüpfungen. Fügen Sie den Befehl hinzu:
quelle
Sie können den folgenden Python-Code verwenden und an Ihre Bedürfnisse anpassen.
Speichern Sie den folgenden Code mit Dateiname
filecreator.py
Und führen Sie es dann mit diesem Befehl aus:
quelle
Der
bash
Weg ist gut, aber was ist, wenn Sie mit einer Shell arbeiten, die die Erweiterung der geschweiften Klammer nicht unterstützt?touch file{1..10}
funktioniert bei mirmksh
zum Beispiel nicht. Hier sind drei alternative Möglichkeiten, die unabhängig von der Shell funktionieren.seq
Ein eher shellneutraler Ansatz wäre, den
seq
Befehl zu kombinieren , um eine mitprintf
Optionen formatierte Folge von Zahlen zu generieren , und ihn an denxargs
Befehl weiterzuleiten . Zum Beispiel,Perl
Natürlich kann Perl, ein weit verbreitetes * nix-Tool, das auch. Der spezifische Einzeiler-Befehl, den wir hier haben, ist der folgende:
Im Grunde genommen werden hier drei Befehlszeilenargumente angegeben: Dateinamenpräfix, Startindex und Endindex. Anschließend
do { } for $ARGV[1] .. $ARGV[2]
iterieren wir für einen bestimmten Zahlenbereich. Sagen wir ,$ARGV[1]
war 5 und$ARGV[2]
war 9, wir würden über 5,6,7,8 und 9 iterieren.Was passiert bei jeder Iteration innerhalb der geschweiften Klammern? Wir nehmen jede mit angegebene Zahl
$_
undsprintf()
erstellen mit function einen String m, der das Präfix (erstes Kommandozeilenargument$ARGV[0]
) und die angegebene Zahlprintf
aufteilt , aber die Zahl mit 4 Nullen auffüllt (dies geschieht durch -Stil der Formatierung).%04d
Teil), und fügen Sie das.c
Suffix. Als Ergebnis auf jeder Iteration bilden wir einen Namen wiebspl0001.c
.Das
open(my $fh, ">", $var);close($fh)
fungiert effektiv alstouch
Befehl und erstellt eine Datei mit dem angegebenen Namen.Obwohl es ein wenig lang ist, funktioniert es recht gut, ähnlich wie das Python-Skript von Jacob Vlijm. Auf Wunsch kann es auch zur besseren Lesbarkeit in ein Skript konvertiert werden:
Lass uns das testen. Zuerst der Einzeiler:
Und jetzt das Drehbuch:
awk
Ein anderer Ansatz wäre
awk
, eine for-Schleife auszuführen und zu einer bestimmten Datei umzuleiten. Der Ansatz ähnelt dem Perl-Einzeiler mit Befehlszeilenargumenten. Währendawk
es sich in erster Linie um ein Textverarbeitungsprogramm handelt, kann es dennoch einige coole Systemprogrammierungen durchführen.quelle