En un bash shell en una máquina MacOS, puedo ver al escribir ls
que hay un director Application Support
:
$ ls
Accounts FontCollections PreferencePanes
Application Scripts Fonts Preferences
Application Support GameKit Printers
Assistant Google PubSub
Assistants Group Containers Safari
Audio IdentityServices SafariSafeBrowsing
Caches Input Methods Saved Application State
Calendars Internet Plug-Ins Screen Savers
CallServices Keyboard Services
ColorPickers Keyboard Layouts Sharing
Colors KeyboardServices Sounds
Compositions Keychains Spelling
Containers LanguageModeling Suggestions
Cookies LaunchAgents SyncedPreferences
CoreFollowUp Library VirtualBox
Developer Logs Voices
Dictionaries Mail WebKit
F5Networks Messages com.apple.internal.ck
Family Metadata iMovie
Favorites Mobile Documents
FileProvider Passes
Sin embargo, si intento cd
ingresar a este directorio usando comillas o caracteres de escape como se describe en ¿Cómo cd a un directorio que contiene un espacio en su nombre? , Sigo teniendo un error:
LM-SJN-21018636:Library kupeek$ cd "Application Support"
-bash: cd: Application: No such file or directory
LM-SJN-21018636:Library kupeek$ cd Application\ Support
-bash: cd: Application: No such file or directory
Parece que bash no está 'recogiendo' las comillas o los caracteres de escape y, en cambio, está buscando un directorio llamado "Aplicación". ¿Alguna idea de por qué esto no funciona?
macos
command-line
bash
shell
Kurt Peek
fuente
fuente
cd
porque está mal escrito. ¿Quécommand -v cd
imprime?command -v cd
desde el primer comentario debería sercommand -V cd
(capital V);type -a cd
También debería funcionar.Respuestas:
Tu
cd
puede ser una función o alias mal definida. Corretype -a cd
para averiguarlo.Un posible alias se explica en esta otra respuesta . Mi respuesta se concentra en las funciones de shell.
Por ejemplo, si la función utilizada
command cd $*
(command
incorporado aquí ) ocommand cd $@
ocommand cd $1
en lugar de correcto
command cd "$@"
ocommand cd "$1"
(No tan bueno como el anterior, todavía no es fatal)y su Bash no arrojó
too many arguments
(versión anterior a la 4.4, vea esta pregunta ), el comportamiento sería exactamente como lo describió porque alApplication Support
ser un solo argumento de la función se dividiría la palabra dentro de la función, porcommand cd
lo que seríaApplication
su primer argumento .Si
cd
realmente es una función mal definida, debe rastrear el lugar donde está definida y arreglarla. Una solución ad hoc sería agregar lacommand
palabra antescd
, así:o
(Esto también funcionará si el alias es el culpable).
fuente
Intenta usar más de un conjunto de citas,
Por ejemplo, poner el nombre entre comillas simples entre comillas dobles:
"Un argumento encerrado entre comillas dobles se presenta como una sola palabra, incluso si contiene separadores de espacios en blanco". Guía avanzada de secuencias de comandos Bash
El uso de dos conjuntos de comillas (comillas entre comillas) es una solución viable, suponiendo que el problema aquí es que el
cd
comando original tiene un alias. La siguiente definiciónreproduciría el problema reportado aquí (en la versión anterior a 4.4 de Bash, vea esta respuesta ). Sucede que
eval
analiza la línea de comando por segunda vez y, en el primer paso del análisis, se elimina una capa de comillas. El uso de dos conjuntos de citas funciona porque, al eliminar el primer conjunto de citas,eval
pasará el argumento con el segundo conjunto de citas acd
.Si tal alias es el caso, la mejor solución es arreglarlo en primer lugar.
fuente
Podría haber más espacios en blanco u otros caracteres no imprimibles que no veas. Prueba
cd Application*Scrip*
o similar.fuente
-bash: cd: Application: No such file or directory
, no-bash: cd: Application Support: No such file or directory
. El comando no ve toda la cadena de argumentos en primer lugar.SI su
cd
no es un alias extraño, entonces lo usaríaTABcon el autocompletado de bash (si está habilitado) para llenar un formato de trabajo para usted.Mecanografía
cd ApTAB
parece que debería autocompletarse a algo como
(Si tiene un alias de CD extraño, entonces agregar la respuesta de Kamil de escribir también
command cd A...
debería funcionar con TAB)y luego espere a que escriba más del nombre deseado (seguido de otro anotador TABpara completar automáticamente el resto). O simplemente escribiendo TABuna o dos veces más se mostrarán las opciones disponibles.
(Tampoco usaría plain
ls
, perols -la
o talls -1
vez para ver solo una entrada por línea, suls
salida no está clara)fuente
Application: No such file or directory
, noApplication Support: No such file or directory
. Si el nombre del directorio en la línea de comando simplemente no coincide con el nombre real,cd
aún así cumpliría con que todo el argumento es incorrecto. No desestimo las respuestas que pueden aplicarse a problemas muy similares, sin embargo, estoy señalando que no se ajustan por completo al problema del OP y no pueden explicar la raíz del problema.cd
is broken "), y la pestaña completa solo se mencionó brevemente en un comentario, por lo que una respuesta más completa para el "problema del título" Parecía apropiado.Es porque te falta una palabra. Intenta usar:
fuente
-bash: cd: Application: No such file or directory
, no-bash: cd: Application Support: No such file or directory
. El comando no ve toda la cadena de argumentos en primer lugar.