Por algum motivo estranho, tentei "'" como separador de palavras nos identificadores, como em:
$ export foo'bar=1
>
> ^C
$
O resultado é, como mostrado acima, id est o prompt muda para ">" eo sistema, obviamente, aguarda mais informações da minha parte. Como você vê, eu tive que pressionar Ctrl-C para escapar. O mesmo acontece com outros comandos, como
$ ls foo'bar
$ mkdir foo'bar
Estou curioso sobre o sentido de tudo isso, é isso que o significado especial "'" tem nos comandos do terminal (tão especial que é desmontado mesmo dentro dos IDs).
Extra: Como um aparte, eu também gostaria de saber o conjunto de caracteres especiais ou inválidos nos nomes de arquivos e pastas, nos sistemas Unix e Windows (para obter o subconjunto comum dos seguros) (em particular, o que acontece com todos não ASCII?).
Obrigado Denis
fonte
Respostas:
O caractere 'é um caractere muito poderoso sempre que usado em qualquer comando do shell. Basicamente, o '(marcas de apóstrofo) desativa todos os tipos de transformações ou modificações. Consideraria o que estiver incluído nas marcas 'como uma única entidade, ou seja, um único parâmetro. Absolutamente nenhum tipo de substituição ou expansão aconteceria.
Exemplo:
produziria na saída a
$HOME
própria string e não imprimiria o caminho para o diretório inicial. Como as aspas simples impedem qualquer tipo de expansão, a substituição e o simples consideram o que quer que esteja presente como um simples parâmetro em si.Se você deseja usar o apóstrofo como ele é, precisa escapar:
Se não for escapado, ele aguardará o fechamento do par, como aconteceu no seu primeiro exemplo.
Então, corrigido, seu comando será:
NOTA: Como Milan Todorovic notou, isso não será válido, porque você não pode usar apóstrofo neste caso.
fonte
Personagem
'
é um personagem especial. Você o usa para marcar parte da entrada da linha de comando que não será alterada (por exemplo, nenhum substituto para caracteres curinga). Por exemplo:Isso significa que o argumento para
ls
wasbla*
e não tudo o que começa combla
.A razão pela qual você obtém um
>
personagem é porque você deve usar um'
para abrir e outro'
para fechar a parte que não será alterada.Se você quiser usar
'
em nomes de pastas que você deve escapar assim:\'
. Portanto, se você deseja listar a pasta com o nomefoo'bar
, digitels foo\'bar
.Ah, e não tenho certeza se é possível usar
'
em nomes de variáveis de ambiente. Eu acho que você não pode usarexport foo\'bar=1
,Espero que isto ajude.
fonte