Me gustaría copiar el directorio actual al portapapeles, algo como: pwd | pbcopy
. Sin embargo, pwd
no escapa al espacio, por lo que algo en "Soporte de aplicaciones", por ejemplo, no se copia correctamente. Parece que no recuerdo que este haya sido siempre el caso, por lo que podría haber fallado en algo. Usando iTerm2.
¿Hay una configuración bash para escapar de todo? tiene problemas para buscar, demasiadas preguntas/temas sobre Spaces.app o esc.
Actual:
$ pwd
/Library/Application Support/Google Earth/
Privilegiado:
$ pwd
/Library/Application\ Support/Google\ Earth/
Publicaciones ya vistas: Copiar la ruta del directorio actual al portapapeles y ¿Cómo cd a un directorio con un nombre que contiene espacios en bash? , que no abordan esto. Habría hecho un comentario en el primero, pero no tengo los privilegios.
Este comando escapará los espacios correctamente:
printf "%q\n" "$(pwd)" | pbcopy
Puede alias usando algo con historial como cwd
si no le importa volver a definir un cwd diferente
alias cwd='printf "%q\n" "$(pwd)" | pbcopy'
Deshágase de la tubería a pbcopy si desea que funcione más como pwd y simplemente imprima la ruta de escape.
O bien, para imprimir el pwd mientras lo copia al portapapeles, use tee
una sustitución del proceso de salida:
alias cwd='printf "%q\n" "$(pwd)" | tee >(pbcopy)'
pwd | sed 's/ /\\ /g'
Pero no estoy seguro de que esto finalmente solucione su problema. pbcopy está copiando exactamente lo que recibe en stdin.
No hay una forma integrada de pwd
generar rutas de archivo con escape de salida, ya que esto generalmente no es útil.
No tiene sentido que se agreguen barras invertidas pwd
a pbcopy
lo que se copia. Si desea copiar la ruta en un archivo de texto o una publicación web, no querrá que se inserte una barra invertida en él.
Probablemente lo que quiera hacer es crear un alias separado, como qwd
, para imprimir la forma citada del directorio actual, o simplemente escapar de la salida de pbpaste
, que es tan fácil como ponerlo entre comillas dobles:
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
Tenga en cuenta que no son solo los espacios los que necesitan escapar. Las barras diagonales hacia adelante y hacia atrás, la estrella, el signo de interrogación, el ampersand, el punto y coma y otros caracteres también deben escaparse. Lo más seguro es usar comillas dobles como en el ejemplo, lo que funcionará incluso si la ruta incluye comillas dobles.
Si quiere ser perverso al respecto, puede hacer que AppleScript cite el directorio actual por usted:
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'
De lo contrario, estoy mayormente de acuerdo con Glenn, excepto que, como se indicó anteriormente, le daría un alias a la forma citada para qwd
no interferir con lo normal pwd
:
alias qwd='printf "%q\n" "$(pwd)"'
mmmmmm
bmike
izq.
pwd | pbcopy
funciona bien para mí en la Terminal. Finder/Edit/Show Clipboard confirma que está bien.guerra verde
izq.
pwd | pbcopy
funciona bien en iTerm2.guerra verde
cd `pbpaste`
me da un espacio sin escapar y, por lo tanto,cd
no reconoce el directorio. Y, tienes razón, da igual el emulador de terminal. No sé en qué estaba pensando antes, porque no funciona mejor en Terminal. No debe haber tenido un espacio.Viejo profesional
cd "`pbpaste`"
jason salaz
echo \'$(pbpaste)\'
no funcionaría.jason salaz
pwd |pbcopy
? Estoy alrededor del 98% seguro de que hay una solución mejor.Serguéi Krivonos