O que significa o F6q na saída do comando ls?

0

Eu usei ls ~ no RHEL 7, mas recebi <F6>q como saída! O que significa isso?

[user@server2 ~]$ ls /home/user/
<F6>q

[user@server2 ~]$ ll
total 4
-rw-r--r--. 1 root root 340 Sep 18 17:16 <F6>q
[user@server2 ~]$ cat <F6>q
-bash: F6: No such file or directory
[user@server2 ~]$ touch test
[user@server2 ~]$ ls
<F6>q  test
[user@server2 ~]$ vim <F6>q
-bash: F6: No such file or directory
[user@server2 ~]$ 
    
por alsadk 22.11.2018 / 09:40

2 respostas

3

Isso significa que seu arquivo é denominado <F6>q .

Estes são não caracteres indisplayable, como as respostas dos comentários e outras respostas reais sugerem. Você pode vê-los exibidos bem na sua frente. ☺

Em qualquer caso, <F6> não é nenhum dos formulários que ls emite para caracteres indisplayable.

[user@server2 ~]$ cat <F6>q
-bash: F6: No such file or directory
[user@server2 ~]$ vim <F6>q
-bash: F6: No such file or directory
[user@server2 ~]$

Você precisa aprender sobre a sintaxe do shell.

Você está executando os comandos cat e vim com suas entradas padrão redirecionadas do arquivo F6 e suas saídas padrão redirecionadas para o arquivo q , sem argumentos de comando reais. O primeiro redirecionamento falha, porque não há nenhum arquivo chamado F6 , seu arquivo sendo nomeado <F6>q , e o último redirecionamento não é, consequentemente, tentado.

Aqui está o mesmo comando, com espaço em branco mostrando como o shell está analisando:

[user@server2 ~]$ cat < F6 > q
-bash: F6: No such file or directory
[user@server2 ~]$ vim < F6 > q
-bash: F6: No such file or directory
[user@server2 ~]$

Para passar um nome de arquivo contendo meta-caracteres de shell para um comando como-é, sem que o shell responda aos metacaracteres, eles devem ser citados :

vim '<F6>q'
ou escapou :
vim \<F6\>q

Dado o que acontece no VIM quando você pressiona uma tecla de função no modo de entrada do comando ex , é bastante fácil gerar arquivos acidentalmente com nomes como esses usando o VIM.

    
por 22.11.2018 / 10:34
0

Quando você estiver usando o% comumls (ou seu alias ll ) e a saída estiver indo para um terminal, o RHEL 7 ls converterá os caracteres de controle e outros caracteres não imprimíveis em um formato visível. Isso é mais provável que você está vendo. Se a saída for para algo diferente de um terminal, essa substituição padrão não acontecerá.

Você pode usar ls -q para substituir caracteres não imprimíveis por pontos de interrogação. O ponto de interrogação é um caractere curinga apropriado para um único caractere, portanto, se você executar ls -q /home/user/ e ver ?q como resposta, significa que seu arquivo de mistério provavelmente tem um caractere não imprimível com valor ASCII de 0xF6 como seu primeiro caractere.

Você também pode usar ls -b para obter caracteres não imprimíveis representados como códigos de escape no estilo C, que podem não ser diretamente utilizáveis em um shell, mas permitem a identificação exata de cada caractere não imprimível.

Você provavelmente desejará renomear o arquivo para algo mais fácil de manipular:

cd /home/user
mv ?q possible-typo

Ele pode ter sido criado como resultado da digitação incorreta do vi command :wq as :w<extra character>q . A última forma do comando é interpretada como "salvar o arquivo atual usando o nome <extra character>q " em vez de "salvar usando o nome existente e, em seguida, sair".

    
por 22.11.2018 / 10:10

Tags