Ich habe meinen Pfad in eine Datei extrahiert und wie folgt aufgelistet:
/bin
/usr/bin
/usr/local/bin
.
/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin
/usr/java/default/bin
/usr/kerberos/bin
/usr/local/bin
/bin
/usr/bin
Ich möchte es jetzt aus dieser Datei extrahieren und als eine Zeile in einer neuen Datei mit Doppelpunkten zwischen jedem Verzeichnis wiederherstellen. Ich erhalte eine leere Datei. Kann mir bitte jemand zeigen, was ich falsch mache? Dies ist der Befehl, den ich ausführe, um die Wiederherstellung in der Datei durchzuführen:
echo -e ${bash_list tr \\ :\n} > bash_PATH
Antwort1
tr
nimmt Eingaben von STDIN (Standardeingabe) entgegen. Versuchen Sie Folgendes:
$ tr '\n' ':' > output_file < input_file
Sie haben eine Syntax für die Parametererweiterung von Bash verwendet, verwenden jedoch eine Datei als Parameter, was nicht korrekt ist, da der Parameter nur eine Variable oder ein spezieller Shell-Parameter sein kann.
Um das zu tun, was Sie versuchen, verwenden Sie nur bash
:
$ var="$(<bash_list)"
$ echo "${var//$'\n'/:}" > bash_PATH
Jetzt bash_PATH
enthält die Datei:
/bin:/usr/bin:/usr/local/bin:.:/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin:/usr/java/default/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin
Beachten Sie auch, dass Sie doppelte Verzeichnisnamen in "$PATH" haben (ich hoffe, das ist als Beispiel beabsichtigt). Um die Duplikate zu entfernen, ohne die Reihenfolge zu ändern, können Sie Folgendes versuchen:Das.