20 votos

Es posible tener bash escapar de espacios en pwd?

Me gustaría copiar el directorio actual en el portapapeles, algo así como: pwd | pbcopy. Sin embargo, pwd no escapa al espacio, así que algo en la "Solicitud de Apoyo", por ejemplo, no se copian correctamente. No me parece recordar que este siempre es el caso, lo que podría haber boffed algo. El uso de iTerm2.

Hay bash opción para escapar de todo? tiene problemas de búsqueda, demasiadas preguntas/temas acerca de los Espacios.aplicación o esc.

Actual:

$ pwd
/Library/Application Support/Google Earth/

Preferido:

$ pwd
/Library/Application\ Support/Google\ Earth/

Visto ya puestos: Copiar el directorio actual de la ruta de acceso al portapapeles y Cómo cd en un directorio con un nombre que contenga espacios en bash?, que no se ocupan de esto. Yo habría hecho un comentario en el anterior, pero no tengo los privilegios.

13voto

Mark Puntos 6

Este comando va a escapar de los espacios correctamente:

printf "%q\n" "$(pwd)" | pbcopy

Usted puede alias de usar algo con la historia como cwd si no te importa volver a la definición de una diferente cwd

alias cwd='printf "%q\n" "$(pwd)" | pbcopy'

La zanja de la tubería a pbcopy si quieres que funcione más como pwd y sólo imprima la escaparon de la ruta.

5voto

Derek Puntos 21
pwd | sed 's/ /\\ /g'

Pero no estoy seguro de esto en última instancia va a solucionar su problema. pbcopy es copiar exactamente lo que se recibe en la entrada estándar.

1voto

Old Pro Puntos 2851

No hay ninguna manera integrada de hacer pwd salida escapado de las rutas de archivos, ya que esto generalmente no es útil.

No tiene sentido para pwd o pbcopy a ser la adición de barras diagonales inversas a lo que se copia. Si desea copiar la ruta de acceso en un archivo de texto o en la web de correos, usted no quiere una barra diagonal inversa insertado en ella.

Probablemente lo que quiero hacer es crear por separado como alias, como qwd, para imprimir el citado formulario del directorio actual, o simplemente escapar de la salida de pbpaste, que es tan fácil como poner en 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 es sólo de los espacios que necesita escapar. Hacia adelante y hacia atrás barras, estrellas, signo de interrogación, signo de y comercial, semi-colon, y otros personajes necesidad de escapar, demasiado. Más seguro es sólo para el uso de comillas dobles, como en el ejemplo, que funcionará incluso si la ruta incluye comillas dobles.

Si quieres ser perverso sobre él, podría hacer que AppleScript cita el directorio actual:

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, que en su mayoría están de acuerdo con Glenn, excepto, como en el anterior, me gustaría alias el citado formulario qwd a fin de no interferir con el normal pwd:

alias qwd='printf "%q\n" "$(pwd)"'

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X