su> echo“ <用户名>”是什么意思?


17

当我输入命令时

su > echo  "sachin"

它要求输入密码。当您输入密码时,您会看到一些奇怪的事情:

在此处输入图片说明

还有一件事:笔记本电脑上还有另一个用户Hadoop,但是当我这样做时

su > echo "Hadoop"

它说

没有Hadoop的passwd条目

这是什么意思?


su是要求超级用户权限的命令,echo是打印某些内容,echo <text>是打印文本,>是后面的内容,例如,su> echo“ sachin”与su sachin相同,因为echo“ sachin”返回sachin
OverCoder 2014年

3
@ Yousef's:echo不执行。它位于重定向命令“>”之后,因此将其作为文件名读取。其余参数将su照常传递!
Rmano 2014年

1
@Yousef的您可能正在考虑su $(echo "sachin")。那会满足您的要求。
伊利亚·卡根

嗯,很抱歉提供了错误的信息,我不是很确定,但是我尝试了一下,这就是我首先想出的办法,感谢您向我提供了正确的信息
OverCoder 2014年

Answers:


30

啊! 好拼图!

只需说“ exit”,您的所有文件都将在那里(以及您在名为的文件中缺少的输出echo)。

解释:

 su > echo user 

是相同的

 su user > echo

因此,您要使用su(切换用户)用户来启动(子)shell ,并将所有输出重定向到名为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] % 

13
好答案。这个难题的关键令人困惑和有趣的方面是,尽管我们通常在简单命令的结尾(有时是开头)提供它们,但重定向实际上可以在任何地方进行,即使在参数之间也是如此。我们经常看到命令su user > echo,而且> echo su user频率很高,但是su > echo user几乎没有,因为几乎没有任何实际的理由以这种令人困惑的方式编写命令。(不过,从程序或脚本自动生成命令时,接受这种语法有时会很有用。)
Eliah Kagan 2014年

2
@EliahKagan是的---并且文件名加剧了这里的混乱。su > stdout.txt user不会那么棘手...
Rmano 2014年

@EliahKagan了解到!
laike9m 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.