eu tentei cd "~/Library/Application Support/"
-bash: cd: ~/Library/Application Support/: No such file or directory
Além disso cd ~/Library/Application Support/
-bash: cd: ~/Library/Application Support/: No such file or directory
Você pode usar a Tabtecla depois de pressionar os primeiros caracteres (isso "preencherá" o restante da pasta para você, por exemplo, digite cd ~/L
Tabpreenchimento cd ~/Library/
e digite Ap
Tabe preencherá o restante para você.
Se houver um espaço entre as palavras e você não quiser usar os métodos acima, coloque uma \
(barra invertida) antes do espaço, por exemplo cd ~/Library/Application\ Support
.
shopt -s nocaseglob
ebind 'set completion-ignore-case on'
tornar o bash menos sensível ao caso.A questão principal aqui é como o shell ( bash ) faz citações e como isso afeta a expansão do til e a divisão em “palavras” (argumentos para o programa que está sendo executado).
o bash trata apenas o til principal, especialmente se não estiver entre aspas. Além disso, a barra a seguir também não deve ser citada.
Ao mesmo tempo, o bash analisa as linhas de comando em "palavras" com base no espaço em branco não citado. O
cd
comando normalmente requer exatamente um argumento (o diretório de destino). Uma linha de comando comocd foo bar
significa executarcd
com dois argumentos:foo
ebar
. Se você deseja enviar apenas umfoo bar
argumento, é necessário citar o espaço:(por exemplo)
cd foo\ bar
(veja mais exemplos de citações abaixo).Na sua situação específica, é necessário deixar o til e a barra a seguir sem aspas ao citar o espaço no nome do diretório. Sua
cd "~/Library/Application Support/"
avaliação acaba citando demais (o til e sua barra), enquanto suacd ~/Library/Application Support/
avaliação cita muito pouco (omite a citação do espaço no nome do diretório).A solução mais comum é usar escape de um caractere para citar apenas o espaço:
Você também pode usar aspas simples ou duplas em torno do espaço ou do espaço e alguns outros bits desse argumento (mas não o
~/
!):Esses tipos de citações têm significados diferentes, mas são idênticos nesses exemplos. As aspas simples protegem as cadeias literais, enquanto as aspas duplas permitem várias expansões e substituições na região entre aspas.
Muitas vezes, você pode simplesmente deixar o shell fazer o trabalho por você.
Globbing (curingas):
Você pode usar
shopt -s nocaseglob
para tornar a caixa invertida insensível:Conclusão:
Pressionando Tabdepois de entrar
cd ~/L
, provavelmente, expandi-lo paracd ~/Library/
.Pressionar Tabnovamente após entrar
Ap
(agora você temcd ~/Library/Ap
) provavelmente o expandirá paracd ~/Library/Application\ Support/
(o shell inseriu automaticamente a barra invertida).Você pode usar
bind 'set completion-ignore-case on'
para tornar a conclusão sem distinção entre maiúsculas e minúsculas:cd ~/l
Tab→cd ~/Library/
;ap
Tab→cd ~/Library/Application\ Support/
fonte
<kbd></kbd>
tag HTML (uma das várias tags HTML suportadas na marcação SE ).Ao citar duas vezes um caminho, você está interrompendo a expansão do til. Portanto, existem algumas maneiras de fazer isso:
O til não é citado aqui, portanto a expansão do til ainda será executada.
Você pode expandir variáveis de ambiente dentro de cadeias de caracteres com aspas duplas; isso é basicamente o que a expansão til está fazendo
Você também pode escapar de caracteres especiais (como espaço) com uma barra invertida.
fonte
Como alternativa, você também pode arrastar uma pasta para a janela do Terminal, o caminho completo do arquivo / pasta será colado automaticamente ao arrastar.
fonte
Você precisa escapar do espaço em "
Application Support
"Experimentar
$ cd ~/Library/Application\ Support/
fonte
Se as formas normais não funcionarem, tente substituir espaços por
%20
.Isso funcionou para mim ao lidar com SSH e outros comandos no estilo de domínio, como
auto_smb
.fonte
Você pode tentar fazer isso para pastas / arquivos espaçados, se o nome do arquivo ou da pasta contiver 1) nome do arquivo. Extensão o comando deve ser cd ~ / arquivo \ nome.extensão / (ou) cd ~ / "nome do arquivo.extensão" /
fonte