¿Qué significa su> echo “<nombre de usuario>”?

17

Cuando estaba ingresando el comando

su > echo  "sachin"

estaba pidiendo una contraseña. Cuando le di mi contraseña, sucedieron algunas cosas extrañas como puedes ver:

Ingrese la descripción de la imagen aquí

Una cosa más: hay otro usuario, Hadoop , en mi computadora portátil, pero cuando lo hago

su > echo "Hadoop"

dice

sin entrada passwd para Hadoop

¿Qué significa esto?

Sachin Setiya
fuente
el su es la solicitud de permisos de superusuario, el echo es imprimir algo, echo <text> es imprimir texto, el> es lo que sigue, como, su> echo "sachin" es lo mismo que su sachin, porque echo " sachin "regresa sachin
OverCoder
3
@ Yousef's: No. echono se ejecuta. está después del comando de redirección ">", por lo que se lee como un nombre de archivo. ¡El resto de la discusión se pasa sucomo de costumbre!
Rmano
1
@ Yousef's Puede que estés pensando su $(echo "sachin"). Eso haría lo que estás diciendo.
Eliah Kagan
hmmmm, perdón por la información incorrecta, no estaba realmente seguro de eso, pero lo intenté y eso fue lo que descubrí por primera vez, gracias por informarme con la información correcta
OverCoder

Respuestas:

30

Ah! Bonito rompecabezas!

Simplemente diga " exit", y todos sus archivos estarán allí (y la salida que pierde en un archivo llamado echo).

Explicación:

 su > echo user 

es lo mismo que

 su user > echo

¡Entonces está comenzando un (sub) shell con su(cambiar de usuario) a su usuario, con toda la salida redirigida a un archivo llamadoecho !

Mira:

[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
fuente
13
Buena respuesta. El aspecto clave confuso e interesante de este rompecabezas es que, aunque generalmente los suministramos al final (o, a veces, al principio) de un comando simple, las redirecciones pueden ir a cualquier parte, incluso entre argumentos. Vemos comandos como su user > echotodo el tiempo, y > echo su usercon cierta frecuencia, pero su > echo usercasi nunca, ya que rara vez hay alguna razón práctica para escribir un comando de una manera tan confusa. (Sin embargo, que tal sintaxis sea aceptada es útil ocasionalmente cuando se generan comandos automáticamente desde un programa o script).
Eliah Kagan
2
@EliahKagan sí --- y la confusión aquí se ve reforzada por el nombre del archivo. su > stdout.txt userno sería tan complicado ...
Rmano
@EliahKagan Learned!
laike9m