Apa yang dimaksud dengan su> echo "<username>"?

17

Ketika saya memasukkan perintah

su > echo  "sachin"

itu meminta kata sandi. Ketika saya memberikan kata sandi, beberapa hal aneh terjadi seperti yang Anda lihat:

Masukkan deskripsi gambar di sini

Satu hal lagi: ada pengguna lain, Hadoop , di laptop saya, tetapi ketika saya melakukannya

su > echo "Hadoop"

ia mengatakan

tidak ada entri passwd untuk Hadoop

Apa artinya ini?

Sachin Setiya
sumber
su adalah meminta izin pengguna super, gema adalah untuk mencetak sesuatu, gema <teks> adalah untuk mencetak teks,> adalah yang mengikuti, seperti, su> gema "sachin" sama dengan su sachin, karena gema " sachin "mengembalikan sachin
OverCoder
3
@ Yousef's: Tidak. echoTidak dieksekusi. itu setelah perintah pengalihan ">", sehingga dibaca sebagai nama file. Sisa argumen dilewatkan suseperti biasa!
Rmano
1
@ Yousef's Anda mungkin berpikir su $(echo "sachin"). Itu akan melakukan apa yang Anda katakan.
Eliah Kagan
hmmmm, maaf untuk info yang salah, saya tidak begitu yakin tentang hal itu tetapi saya mencobanya dan itulah yang pertama kali saya
ketahui

Jawaban:

30

Ah! Teka-teki yang bagus!

Katakan saja " exit", dan semua file Anda akan ada di sana (dan output yang Anda lewatkan dalam sebuah file bernama echo).

Penjelasan:

 su > echo user 

sama dengan

 su user > echo

Jadi Anda memulai (sub) shell dengan su(beralih pengguna) ke pengguna Anda, dengan semua output diarahkan ke file bernamaecho !

Lihat:

[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
sumber
13
Jawaban yang bagus. Aspek kunci yang membingungkan dan menarik dari teka-teki ini adalah bahwa, meskipun kami biasanya menyediakannya pada akhir (atau kadang-kadang awal) dari perintah sederhana, pengalihan sebenarnya dapat pergi ke mana saja - bahkan di antara argumen. Kami melihat perintah seperti su user > echosepanjang waktu, dan > echo su userdengan beberapa frekuensi, tetapi su > echo userhampir tidak pernah, karena jarang ada alasan praktis untuk menulis perintah dengan cara yang membingungkan. (Bahwa sintaksis semacam itu diterima kadang-kadang berguna ketika secara otomatis menghasilkan perintah dari suatu program atau skrip.)
Eliah Kagan
2
@ ElliKagan ya --- dan kebingungan di sini ditingkatkan dengan nama file. su > stdout.txt usertidak akan terlalu rumit ...
Rmano
@EliahKagan Belajar!
laike9m