usando '&' em um nome de diretório [duplicado]

9

Eu tenho um nome de diretório com ISO & Emulator tendo alguns arquivos importantes. e esse diretório está em uma partição diferente, e a partição não está aparecendo no meu FileManager (Nautilus). então eu montei minha partição e acessei a partir do terminal, mas não consigo entrar no diretório por causa de seu nome .

quando eu tentei mudar de diretório:

cd ISO&Emulator

resultado:

[1] 1635
bash: Emulator: command not found
bash: cd: ISO: No such file or directory
[1]+  Exit 1

está tomando nome do diretório como um comando. alguma maneira de acessar este diretório do terminal?

como consertar isso?

    
por Praveen Yadav 03.10.2017 / 21:40

2 respostas

14

Você deve citar o nome do arquivo ou diretório, que contém caracteres especiais, ao usá-lo:

cd 'ISO&Emulator'
cd "ISO&Emulator"

Ou escape (ou cite) apenas o caractere especial:

cd ISO\&Emulator    
cd ISO'&'Emulator  
cd ISO"&"Emulator

Na maioria dos casos, você pode usar a função de preenchimento automático:

cd ISOTab ↹

Ao contrário das marcas de aspas simples, as marcas de aspas duplas são aplicáveis quando o nome contém uma variável:

cd "$HOME/ISO&Emulator"
    
por pa4080 03.10.2017 / 21:45
5

Como este não é um sistema somente de linha de comando e um ambiente de área de trabalho gráfico está instalado, você deve saber sobre outra maneira de usar arquivos e diretórios do terminal cujos nomes exigem citações ou que sejam de outro modo compactáveis: Arraste o ícone da pasta do navegador de arquivos para a janela do terminal. Em seu sistema, o navegador de arquivos é Nautilus , mas isso funciona com quase todos os navegadores de arquivos. Isso cola o caminho completo do arquivo ou diretório cujo ícone você arrastou com a cotação correta aplicada automaticamente .

Este não é um substituto completo para saber como citar nomes de caminho (ou, na verdade, qualquer texto) usando as técnicas pa4080 descreve , mas é extremamente útil, pode poupar muito tempo, e se você não se sentir confortável com quando e como citar usando \ , na maioria dos emuladores de terminal gráficos, essa é a forma de citar que é aplicada automaticamente quando você fizer isso, ele demonstrará isso para você. (Em alguns, ' ' são usados.)

A menos que você tenha alterado, o shell que você obtém quando abre uma janela de terminal ou faz logon em um console virtual é Bash . O propósito de citar em qualquer shell é dizer ao shell para não tratar certos caracteres especialmente. Você pode querer ler 3.1.2 Citando no Bash manual de referência .

Quando você cita manualmente, sugiro que prefira o ' ' ( aspas simples) , já que é a maneira mais simples e fácil de citar mais do que alguns caracteres de texto. Se o que você deseja citar não contiver um caractere ' , você poderá sempre colocá-lo entre aspas simples, porque o único caractere com significado especial após ' começar a citar é a% subsequente' que termina de citar.

Por fim, você pode estar se perguntando o que aconteceu quando você tinha um & sem recursos em seu comando.

Isso tratou o que veio antes dele ( cd ISO ) como um comando, executou de forma assíncrona em segundo plano, e tratou o que veio depois dele ( Emulator ) como um segundo comando para executar também (em primeiro plano, já que não tinha & após ele).

  1. [1] 1635 informou que o trabalho em background havia começado (era o trabalho 1 e seu ID do processo era 1635).
  2. bash: Emulator: command not found relatou que não havia nenhum comando chamado Emulator .
  3. A mensagem bash: cd: ISO: No such file or directory chegou do trabalho em segundo plano para informar que não havia nenhum diretório ISO para alterar.
  4. [1]+ Exit 1 relatou que o trabalho 1 terminou.
por Eliah Kagan 04.10.2017 / 00:04