Su> echo Hồi <tên người dùng> có nghĩa là gì?


17

Khi tôi đang vào lệnh

su > echo  "sachin"

nó đang hỏi mật khẩu Khi tôi đưa mật khẩu, một số điều kỳ lạ đã xảy ra như bạn có thể thấy:

Nhập mô tả hình ảnh ở đây

Một điều nữa: có một người dùng khác, Hadoop , trên máy tính xách tay của tôi, nhưng khi tôi làm

su > echo "Hadoop"

nó nói rằng

không có mục nhập nào cho Hadoop

Điều đó có nghĩa là gì?


su là yêu cầu quyền siêu người dùng, tiếng vang là để in một cái gì đó, echo <text> là để in văn bản,> là những gì tiếp theo, như, su> echo "sachin" giống như su sachin, vì echo " sachin "trả lại sachin
OverCoder

3
@ Yousef's: Số echokhông được thực thi. đó là sau lệnh chuyển hướng ">", vì vậy nó được đọc dưới dạng tên tệp. Phần còn lại của cuộc tranh luận được thông qua sunhư bình thường!
Rmano

1
@ Yousef's Bạn có thể nghĩ đến su $(echo "sachin"). Điều đó sẽ làm những gì bạn đang nói.
Eliah Kagan

hmmmm, rất xin lỗi vì thông tin sai, tôi không thực sự chắc chắn về nó nhưng tôi đã thử nó và đó là những gì tôi đã tìm ra đầu tiên, cảm ơn vì đã thông báo cho tôi thông tin chính xác
OverCoder

Câu trả lời:


30

Ah! Câu đố hay!

Chỉ cần nói " exit" và tất cả các tệp của bạn sẽ ở đó (và đầu ra bạn bỏ lỡ trong một tệp có tên echo).

Giải thích:

 su > echo user 

giống như

 su user > echo

Vì vậy, bạn đang bắt đầu trình bao (phụ) với su(chuyển người dùng) sang người dùng của mình, với tất cả đầu ra được chuyển hướng đến một tệp có tênecho !

Nhìn:

[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
Câu trả lời tốt. Khía cạnh khó hiểu và thú vị của câu đố này là, mặc dù chúng ta thường cung cấp chúng ở cuối (hoặc đôi khi là bắt đầu) của một lệnh đơn giản, các chuyển hướng thực sự có thể đi bất cứ đâu - ngay cả giữa các đối số. Chúng ta thấy các lệnh giống như su user > echomọi lúc, và > echo su uservới một số tần số, nhưng su > echo userhầu như không bao giờ, vì hiếm khi có bất kỳ lý do thực tế nào để viết một lệnh theo cách khó hiểu như vậy. (Tuy nhiên, cú pháp như vậy được chấp nhận đôi khi rất hữu ích khi tự động tạo lệnh từ chương trình hoặc tập lệnh.)
Eliah Kagan

2
@EliahKagan có --- và sự nhầm lẫn ở đây được tăng cường bởi tên tệp. su > stdout.txt usersẽ không khó khăn lắm đâu ...
Rmano

@EliahKagan đã học!
laike9m
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.