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?


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] % 

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.