In einem Bash-Handbuch für Anfänger (Abschnitt 3.2.1.2. Lokale Variablen ) gibt es einen Beispielbefehl, der alle lokalen Variablen auflisten soll, die sich nicht in Umgebungsvariablen befinden, oder so denke ich:
diff set.sorted printenv.sorted | grep "<" | awk '{ print $2 }'
Ich glaube, ich verstehe alles über diesen Befehl außer dem *.sorted
Teil. Außerdem funktioniert dieser Befehl auf meinem Bash nicht, insbesondere aufgrund der oben genannten Elemente. Hier ist die Antwort (es ist die polnische Version von Keine solche Datei oder Verzeichnis ):
diff: set.sorted: Nie ma takiego pliku ani katalogu
diff: printenv.sorted: Nie ma takiego pliku ani katalogu
Bemerkenswert ist, dass ich Ubuntu 14.04 verwende, ohne dass Änderungen an der Standardinstallation vorgenommen wurden.
Aus diesem Grund konnte ich diesen Befehl in meiner Bash-Shell nicht analysieren und bei Google auch nichts darüber finden, außer dem Tutorial, aus dem ich diesen Befehl übernommen habe.
Ich werde für eine umfassende Erklärung dankbar sein, da ich noch nie zuvor auf einen solchen Ausdruck gestoßen bin.
quelle
LANG=C command
, um eine Ausgabe in Englisch für die Veröffentlichung auf Websites wie dieser zu erhalten. Zum Beispiel :LANG=C diff set.sorted printenv.sorted
.Antworten:
Sie sind keine Ausdrücke, sondern Dateinamen für Dateien, die wie folgt erstellt wurden:
Das geht aus der Dokumentation nicht hervor, so dass Ihre Verwirrung verständlich ist!
Beachten Sie, dass Sie möglicherweise helfen müssen
diff
und siegrep
zwingen müssen, ihre Eingaben als Text (mit-a
) zu behandeln . Umgebungsvariablen können Werte enthalten, die dazu führen, dass sie ihre Eingabe als binär behandeln, was nichts Nützliches ergibt:Besser noch, verwenden Sie
comm
, um die beiden Dateien zu vergleichen:Sie können die Dateien durch Prozessersetzungen ersetzen:
um das Erstellen von Dateien zu vermeiden.
quelle
printenv
oderset
, habe ich vermutet, dass die angegebenen Dateiendiff
die Ausgabe sind, die sortiert werden muss, damit der Vergleich aussagekräftig ist.