O que significa su> echo "<username>"?

17

Quando eu estava digitando o comando

su > echo  "sachin"

estava pedindo uma senha. Quando dei minha senha, algumas coisas estranhas aconteceram como você pode ver:

Digite a descrição da imagem aqui

Mais uma coisa: há outro usuário, Hadoop , no meu laptop, mas quando eu faço isso

su > echo "Hadoop"

diz

nenhuma entrada de senha para o Hadoop

O que isto significa?

Sachin Setiya
fonte
o su é o pedido de permissões de superusuário, o eco é imprimir algo, o eco <text> é o texto, o> é o que se segue, como, su> echo "sachin" é o mesmo que su sachin, porque echo " sachin "retorna sachin
OverCoder 04/10
3
@ Yousef's: No. echonão é executado. após o comando de redirecionamento ">", é lido como um nome de arquivo. O restante do argumento é passado sucomo de costume!
Rmano 4/04
11
@ Yousef Você pode estar pensando su $(echo "sachin"). Isso faria o que você está dizendo.
Eliah Kagan 04/10
hmmmm, tão triste para a informação errada, eu não tinha certeza sobre isso, mas eu tentei e é isso que eu primeiro descobri, graças por me informar com a informação certa
OverCoder

Respostas:

30

Ah! Belo quebra-cabeça!

Apenas diga " exit", e todos os seus arquivos estarão lá (e a saída que você perdeu em um arquivo chamado echo).

Explicação:

 su > echo user 

é o mesmo que

 su user > echo

Então você está iniciando um (sub) shell com su(alternar usuário) para o seu usuário, com toda a saída redirecionada para um arquivo chamadoecho !

Veja:

[romano:~] % cd tmp/dvd-usa-hd 
[romano:~/tmp/dvd-usa-hd] % ls
dvd-usa-hd_01_01.avi
[romano:~/tmp/dvd-usa-hd] % su > echo romano
Password: 
[romano:~/tmp/dvd-usa-hd] % ls
[romano:~/tmp/dvd-usa-hd] % exit
[romano:~/tmp/dvd-usa-hd] % ls
dvd-usa-hd_01_01.avi  echo
[romano:~/tmp/dvd-usa-hd] % cat echo
dvd-usa-hd_01_01.avi
echo
[romano:~/tmp/dvd-usa-hd] % 
Rmano
fonte
13
Boa resposta. O principal aspecto confuso e interessante desse quebra-cabeça é que, embora geralmente os forneçamos no final (ou às vezes no início) de um comando simples, os redirecionamentos podem realmente ir a qualquer lugar - mesmo entre argumentos. Vemos comandos como su user > echoo tempo todo, e > echo su usercom alguma frequência, mas su > echo userquase nunca, pois raramente há razões práticas para escrever um comando de maneira tão confusa. (Que tal sintaxe é aceito é ocasionalmente útil ao gerar automaticamente comandos de um programa ou script, no entanto.)
Elias Kagan
2
@EliahKagan yes --- e a confusão aqui é aprimorada pelo nome do arquivo. su > stdout.txt usernão seria tão complicado ...
Rmano 6/10
@EliahKagan Learned!
laike9m