Ich möchte das aktuelle Verzeichnis in die Zwischenablage kopieren, etwa so: pwd | pbcopy
. Entgeht pwd
jedoch nicht dem Leerzeichen, sodass beispielsweise etwas in "Application Support" nicht korrekt kopiert wird. Ich kann mich nicht erinnern, dass dies immer der Fall war, also könnte ich etwas gebumst haben. Mit iTerm2.
Gibt es eine Bash-Einstellung, um alles zu entkommen? Probleme bei der Suche, zu viele Fragen/Themen zu Spaces.app oder esc.
Aktuell:
$ pwd
/Library/Application Support/Google Earth/
Bevorzugt:
$ pwd
/Library/Application\ Support/Google\ Earth/
Bereits gesehene Beiträge: Kopieren des Pfads des aktuellen Verzeichnisses in die Zwischenablage und Wie cd man in ein Verzeichnis mit einem Namen, der Leerzeichen in Bash enthält? , die darauf nicht eingehen. Ich hätte im ersteren einen Kommentar abgegeben, aber ich habe nicht die Privilegien.
Dieser Befehl wird Leerzeichen richtig maskieren:
printf "%q\n" "$(pwd)" | pbcopy
Sie können es mit etwas mit Geschichte aliasieren cwd
, wenn es Ihnen nichts ausmacht, eine andere cwd neu zu definieren
alias cwd='printf "%q\n" "$(pwd)" | pbcopy'
Verwerfen Sie die Pipe zu pbcopy, wenn Sie möchten, dass es eher wie pwd funktioniert, und drucken Sie einfach den Escape-Pfad aus.
Oder um das pwd zu drucken und es gleichzeitig in die Zwischenablage zu kopieren, verwenden Sie tee
und eine Ausgabeprozesssubstitution:
alias cwd='printf "%q\n" "$(pwd)" | tee >(pbcopy)'
pwd | sed 's/ /\\ /g'
Aber ich bin mir nicht sicher, ob dies Ihr Problem letztendlich beheben wird. pbcopy kopiert genau das, was es auf stdin empfängt.
Es gibt keine integrierte Möglichkeit, pwd
Dateipfade mit Escapezeichen auszugeben, da dies im Allgemeinen nicht nützlich ist.
Es ist nicht sinnvoll , pwd
Backslashes pbcopy
zu dem, was kopiert wird, hinzuzufügen. Wenn Sie den Pfad in eine Textdatei oder einen Webbeitrag kopieren möchten, möchten Sie keinen umgekehrten Schrägstrich einfügen.
Wahrscheinlich möchten Sie einen separaten Alias erstellen, z. B. qwd
, um die in Anführungszeichen gesetzte Form des aktuellen Verzeichnisses zu drucken, oder einfach die Ausgabe von maskieren pbpaste
, was so einfach ist wie das Setzen in doppelte Anführungszeichen:
bash-3.2$ pwd
/Users/user
bash-3.2$ cd test\ dir/untitled\ \"folder/
bash-3.2$ pwd
/Users/user/test dir/untitled "folder
bash-3.2$ pwd | pbcopy
bash-3.2$ echo "`pbpaste`"
/Users/user/test dir/untitled "folder
bash-3.2$ cd
bash-3.2$ pwd
/Users/user
bash-3.2$ cd `pbpaste`
bash: cd: /Users/user/test: No such file or directory
bash-3.2$ cd "`pbpaste`"
bash-3.2$ pwd
/Users/user/test dir/untitled "folder
Beachten Sie, dass nicht nur Leerzeichen maskiert werden müssen. Schrägstriche, Schrägstriche, Stern, Fragezeichen, kaufmännisches Und, Semikolon und andere Zeichen müssen ebenfalls maskiert werden. Am sichersten ist es, einfach doppelte Anführungszeichen wie im Beispiel zu verwenden, was auch dann funktioniert, wenn der Pfad doppelte Anführungszeichen enthält.
Wenn Sie es pervers angehen wollen, können Sie AppleScript dazu bringen, das aktuelle Verzeichnis für Sie zu zitieren:
bash-3.2$ alias qwd="osascript -e 'return quoted form of POSIX path of (POSIX file \"./\" as alias)'"
bash-3.2$ qwd
'/Users/user/test dir/untitled "folder'
Ansonsten stimme ich Glenn größtenteils zu, außer, wie oben, würde ich die zitierte Form qwd
als Alias verwenden, um das Normale nicht zu stören pwd
:
alias qwd='printf "%q\n" "$(pwd)"'
mmmmmm
Fahrrad
lhf
pwd | pbcopy
Funktioniert bei mir im Terminal einwandfrei. Finder/Bearbeiten/Zwischenablage anzeigen bestätigt, dass es in Ordnung ist.Grünkrieg
lhf
pwd | pbcopy
funktioniert gut in iTerm2.Grünkrieg
cd `pbpaste`
Gibt mir ein Leerzeichen ohne Escapezeichen undcd
erkennt daher das Verzeichnis nicht. Und Sie haben Recht, der Terminalemulator spielt keine Rolle. Ich weiß nicht, was ich vorher gedacht habe, weil es im Terminal nicht besser funktioniert. Muss kein Leerzeichen gehabt haben.Alter Profi
cd "`pbpaste`"
Jason Salaz
echo \'$(pbpaste)\'
dies nicht funktionieren würde.Jason Salaz
pwd |pbcopy
? Ich bin mir zu 98% sicher, dass es eine bessere Lösung gibt.Sergej Krivonos