(Nota: después de un poco más de investigación, tengo una respuesta parcial, pero no me gusta tener que escribir los comandos reales contra esa variable de manera diferente según los espacios incrustados o no. Aceptaré mejores sugerencias) .
Me gusta almacenar varias variables de trabajo en bash cuando estoy trabajando en algo. Esto evita tener que escribirlo cada vez y también ayuda cuando vuelve a trabajar en él más tarde (pegue la tarea en un archivo localprofile.sh y source
que más adelante ...) .
Me gustaría almacenar un nombre de directorio con espacios en él. Sé cómo lidiar con los espacios en los nombres de archivos / directorios de forma interactiva, usando comillas o escapes basados en \:
$ ls -1 /Users/myuser/Library/Application\ Support/ | tail -5
iTerm2
icdd
org.videolan.vlc
pip
videosubscriptionsd
o
$ ls -1 "/Users/myuser/Library/Application Support/" | tail -5
iTerm2
icdd
org.videolan.vlc
pip
videosubscriptionsd
Ahora me gustaría asignar ese directorio a una variable bash $ dn y eso no funciona tan bien.
Aquí hay algunos intentos diferentes. A propósito me mantuve alejado de la extensión de shell basada en ~.
dn='/Users/myuser/Library/Application Support/'
echo ''
echo ''
echo $dn
ls -1 $dn
dn='"/Users/myuser/Library/Application Support/"'
echo ''
echo ''
echo $dn
ls -1 $dn
dn=/Users/myuser/Library/Application\ Support/
echo ''
echo ''
echo $dn
ls -1 $dn
dn="/Users/myuser/Library/Application\ Support/"
echo ''
echo ''
echo $dn
ls -1 $dn
cada uno de estos muestra una variación en ls: /Users/myuser/Library/Application\: No such file or directory