su> echo“ <username>” หมายถึงอะไร


17

เมื่อฉันป้อนคำสั่ง

su > echo  "sachin"

มันขอรหัสผ่าน เมื่อฉันให้รหัสผ่านสิ่งแปลก ๆ บางอย่างเกิดขึ้นอย่างที่คุณเห็น

ป้อนคำอธิบายภาพที่นี่

อีกอย่าง: มีผู้ใช้คนอื่นHadoopบนแล็ปท็อปของฉัน แต่เมื่อฉันทำ

su > echo "Hadoop"

มันบอกว่า

ไม่มีรายการรหัสผ่านสำหรับ Hadoop

สิ่งนี้หมายความว่า?


su คือการขอสิทธิ์ผู้ใช้ขั้นสูง, echo คือการพิมพ์บางสิ่ง, echo <text> คือการพิมพ์ข้อความ,> คืออะไรต่อไปนี้, เช่น, su> echo "sachin" นั้นเหมือนกับ su sachin, เพราะ echo " sachin "ส่งคืน sachin
OverCoder

3
@ Yousef's: echoไม่ได้ดำเนินการ มันอยู่หลังคำสั่งการเปลี่ยนเส้นทาง ">" ดังนั้นมันจึงถูกอ่านเป็นชื่อไฟล์ ส่วนที่เหลือของการโต้แย้งจะถูกส่งผ่านไปsuตามปกติ!
Rmano

1
@ Yousef su $(echo "sachin")เป็นคุณอาจจะคิดของ นั่นจะทำสิ่งที่คุณพูด
Eliah Kagan

hmmmm ดังนั้นขอโทษสำหรับข้อมูลที่ไม่ถูกต้องฉันไม่แน่ใจจริงๆเกี่ยวกับมัน แต่ฉันลองมันและนั่นคือสิ่งที่ฉันคิดออกครั้งแรกขอบคุณที่แจ้งให้ฉันทราบด้วยข้อมูลที่ถูกต้อง
OverCoder

คำตอบ:


30

อา! ปริศนาที่ดี!

เพียงแค่พูดว่า " exit" แล้วไฟล์ทั้งหมดของคุณจะอยู่ที่นั่น (และเอาต์พุตที่คุณพลาดในไฟล์ที่เรียกว่าecho)

ชี้แจง:

 su > echo user 

เป็นเช่นเดียวกับ

 su user > echo

ดังนั้นคุณจึงเริ่มต้น (sub) เชลล์ด้วย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] % 

13
คำตอบที่ดี. ประเด็นที่สับสนและน่าสนใจที่สำคัญของปริศนานี้คือแม้ว่าเรามักจะให้พวกมันในตอนท้าย (หรือบางครั้งเริ่มต้น) ของคำสั่งง่าย ๆ การเปลี่ยนเส้นทางสามารถไปได้ทุกที่ - แม้ระหว่างอาร์กิวเมนต์ เราเห็นคำสั่งต่าง ๆsu user > echoตลอดเวลาและ> echo su userมีความถี่ แต่su > echo userแทบจะไม่เคยเลยเพราะแทบไม่มีเหตุผลเชิงปฏิบัติใด ๆ ในการเขียนคำสั่งในลักษณะที่สับสน (ไวยากรณ์ดังกล่าวได้รับการยอมรับว่ามีประโยชน์ในบางครั้งเมื่อสร้างคำสั่งจากโปรแกรมหรือสคริปต์โดยอัตโนมัติ)
Eliah Kagan

2
@EliahKagan ใช่ --- และความสับสนที่นี่ถูกปรับปรุงโดยชื่อไฟล์ su > stdout.txt userจะไม่ยุ่งยากมาก ...
Rmano

@EliahKagan เรียนรู้!
laike9m
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.