Что означает su> echo «<username>»?

17

Когда я входил в команду

su > echo  "sachin"

он просил пароль. Когда я дал свой пароль, произошли некоторые странные вещи, как вы можете видеть:

Введите описание изображения здесь

Еще одна вещь: есть еще один пользователь, Hadoop , на моем ноутбуке, но когда я делаю

su > echo "Hadoop"

это говорит

нет записи passwd для Hadoop

Что это значит?

Сачин Сетия
источник
su - это запрос прав суперпользователя, echo - что-то печатать, echo <text> - печатать текст,> это то, что следует, например, su> echo "sachin" - то же самое, что su sachin, потому что echo " sachin "возвращает sachin
OverCoder
3
@ Юсефа: № echoне выполняется. это после команды перенаправления ">", поэтому оно читается как имя файла. Остальные аргументы передаются suкак обычно!
Rmano
1
@ Yousef's Возможно, вы думаете su $(echo "sachin"). Это сделало бы то, что вы говорите.
Элия ​​Каган,
хмммм, извините за неправильную информацию, я не был уверен в этом, но я попробовал это, и это то, что я впервые понял, спасибо за информирование меня с правильной информацией
OverCoder

Ответы:

30

Ах! Хорошая головоломка!

Просто скажите « exit», и все ваши файлы будут там (и вывод, который вы пропустите в файле, называется echo).

Экспликация:

 su > echo user 

такой же как

 su user > echo

Итак, вы запускаете (под) оболочку с su(переключением пользователя) для вашего пользователя, и весь вывод перенаправляется в файл с именемecho !

Посмотрите:

[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
источник
13
Хороший ответ. Ключевой запутывающий и интересный аспект этой головоломки состоит в том, что, хотя мы обычно предоставляем их в конце (или иногда в начале) простой команды, перенаправления могут фактически идти куда угодно - даже между аргументами. Мы видим команды, как su user > echoвсе время, и > echo su userс некоторой частотой, но su > echo userпочти никогда, потому что редко есть какая-либо практическая причина написать команду таким запутанным способом. (Однако такой синтаксис иногда бывает полезен при автоматической генерации команд из программы или скрипта.)
Элия ​​Каган,
2
@EliahKagan да --- и путаница здесь усиливается именем файла. su > stdout.txt userне было бы так сложно ...
Rmano
@EliahKagan Узнал!
laike9m