Saya adalah pengguna Ubuntu dengan tidak banyak pengalaman dan saya telah menggunakan sudo
.
Apa yang sudo !!
dilakukan dan bagaimana?
command-line
sudo
RamHS
sumber
sumber
!!
bagian dari perintah.!!
harus dilakukan dan bagaimana. Yang lain ingin metode untuk melakukan ini.sudo !!
dilakukan, dan ada dua jawaban yang sebenarnya secara spesifik menjelaskan apa yang!!
dilakukan.Jawaban:
!!
di bash adalah alias untuk perintah sebelumnya (lihat Perancang Acara ). Jadi itu menjalankan kembali perintah sebelumnya dengansudo
izin.sumber
!
perintah biasanya tidak tersedia dalam skrip bash (hanya dalam sesi interaktif). Mereka dapat dinonaktifkan denganset +o histexpand
.sudo bang bang
adalah perintah yang sangat berguna saat bekerja di Command Line Interface.Beberapa distro Linux meminta Anda login sebagai pengguna alih-alih sebagai administrator.
Jadi, untuk melakukan sesuatu yang bijaksana, Anda harus melanjutkan perintah dengan
sudo
(Super-User DO), yang memberi tahu sistem "Anda akan melakukan ini, karena saya bilang begitu." / bang-bang (! = bang) pada dasarnya adalah jalan pintas yang dapat Anda gunakan untuk mengulangi perintah sebelumnya.Jadi, skenario umum adalah bahwa Anda mencoba perintah, dan menendang kembali pesan yang mengatakan Anda harus menjadi admin untuk melakukan itu. Jadi, Anda bisa mengetik
sudo
untuk menjalankan perintah itu sebagai super-user / admin, atau Anda bisa mengetik disudo !!
mana!!
memberitahu sistem untuk menggunakan perintah sebelumnya yang dicoba. UfHAda banyak bang-command lainnya. Untuk daftar mereka dan penjelasannya, lihat Linux Bang Commands , lihat juga Bash history dan bang perintah
sumber
sudo
dan lihat baris perintah.sudo
sesuatu dan mendapatkan error, sehingga Anda segera inginsudo
itusudo
tidak berarti "super-user do", ia melakukan perintah seperti yang telah saya lakukansu
(su berarti ganti pengguna [dan bukan pengguna super]); yaitu, Anda dapat menggunakan perintah sudo sebagai pengguna mana pun, tidak hanya root (-u
beralih); Hal yang sama berlaku dengansu [user] [-c command]
su
tidak tahan untuk hal seperti itu. Lihat linux.die.net/man/1/su , gnu.org/software/coreutils/manual/html_node/su-invocation.html , linfo.org/su.html . Itu harus berarti pengguna pengganti .The
bang bang (!!)
perintah adalah jalan pintas untuk mengulang dan menjalankan perintah sebelumnya Anda masukkan di dalam terminal. Perintah ini sangat berguna ketika Anda lupa bahwa Anda memerlukan hak admin untuk melakukan tindakan tertentu, dan memungkinkan Anda mengulanginya dengan hak pengguna super hanya dengan mengetik,!!
meraih perintah jalankan terakhir.Sebagai contoh:
Outputnya adalah,
Setelah itu, jika kita menjalankan
sudo !!
perintah, hasilnya akan menjadiYang berarti
!!
bagian mengambil perintah jalankan sebelumnyaapt-get update
dan bagian sebelumnyasudo
membuat perintah untuk dijalankan dengan hak pengguna super.Dan bagaimana yang
sudo !!
berjalan perintah sebelumnya dengan hak superuser berarti, biasanya semua perintah kami memasuki pada terminal disimpan dicommand history
.run yanghistory
perintah pada terminal, itu menunjukkan semua perintah Anda entered.The!!
bagian dalamsudo !!
diperebutkan perintah terakhir yang tersimpan dalam sejarah perintah dan keseluruhansudo !!
menjalankan perintah terakhir dengan hak admin.Beberapa perintah bang lainnya dijelaskan dalam posting blog ini .
sumber
mkdir LongDirectoryName
dancd !$
harus dikeluarkan secara terpisah untuk bekerja, kecualiLongDirectoryName
kebetulan kata terakhir dari perintah sebelumnya. Untuk keperluan histori shell,mkdir LongDirectoryName; cd !$
adalah satu perintah. Interaksi sejarah dengan!!
,,!^
dan!$
menggunakan perintah terakhir shell benar-benar sepenuhnya diproses sebelum melihat!
. Ini sebuah contoh. Jika Anda menjalankan,history
Anda akan melihat bahwa perintah-perintah pada sebuah garis yang digabungkan oleh;
diingat sebagai satu perintah.Ada dua bagian jawabannya:
!!
dansudo
!!
adalah bagian dari fungsionalitas shell (dalam hal Ubuntu ini mungkin bash, tetapi shell lain seperti zsh atau csh mendukung ini, juga) yang disebut "ekspansi sejarah". Itu berperilaku dengan cara yang sama seperti ekspansi lain di mana shell memperluas 'placeholder' ke serangkaian kata. Sementarafoo*
akan diperluas ke daftar semua file yang dimulai dengan 'foo',!!
akan diperluas ke isi baris perintah sebelumnya.Seperti ekspansi lainnya, ini dilakukan sepenuhnya oleh shell, jadi jika Anda mengetik
!!
setelah beberapa perintah lain, perintah ini tidak menyadari bahwa ada!!
, tetapi hanya akan melihat baris perintah sebelumnya. (Tidak seperti ekspansi lainnya, ekspansi sejarah terjadi sebelum perintah disimpan dalam riwayat, yang bukan!!
baris perintah yang diganti akan disimpan ke riwayat.)The
sudo
perintah memungkinkan melaksanakan perintah sebagai user lain, asalkan izin ar diberikan oleh kebijakan keamanan (default dikonfigurasi dalam/etc/sudoers
).Secara default kata sandi root tetap tidak disetel di Ubuntu. Untuk melakukan tugas administrasi sistem, pengguna yang dibuat selama instalasi diberikan hak sudo. Pengguna ini sekarang dapat menjalankan perintah apa saja pada shell sebagai root, hanya dengan melakukan prepending
sudo
. Beberapa program GUI juga menggunakan mekanisme sudo, misalnya manajemen paket.Alasan mengapa
sudo
dapat menjalankan perintah lain sebagai root (atau pengguna lain) adalah bahwa sudo binary (/usr/bin/sudo
) memiliki bit setuid yang diatur dalam izinnya dan menjadi milik root. Setiap (biner) yang dapat dieksekusi dengan set setuid bit dijalankan dengan izin dari pemiliknya. Ini berarti bahwa sudo berjalan secara efektif dengan izin root tidak peduli pengguna mana yang benar-benar memanggilnya. Hanya dia kebijakan keamanan internal sudo mengelola pengguna mana yang diizinkan apa dan mencegah pengguna sewenang-wenang untuk melakukan hal-hal yang sewenang-wenang.Jadi, dalam hal
sudo !!
ini berartipada dasarnya identik dengan
kurang mengetik. Dalam kedua kasus, sudo hanya melihat
mount /dev/sdb1 /mnt
dan menjalankannya dengan izin root.sumber
!!
adalah ekspresi yang paling sederhana secara sintaksis dan mungkin paling umum untuk ekspansi sejarah .Seperti yang mungkin Anda perhatikan, setelah mengganti perintah terakhir yang dijalankan
!!
, bash melakukan dua hal (dalam konfigurasi default):Perintah lengkap dengan teks yang diganti ditampilkan kepada Anda.
Misalnya, jika perintah
lshw -c video
Anda dan Anda menjalankansudo !!
berikutnya, maka perintah setelah ekspansi sejarah adalahsudo lshw -c video
.Perintah itu dijalankan.
Biasanya kedua langkah ini terjadi tanpa gangguan dan tanpa peluang untuk interaksi pengguna, karena
shopt histverify
tidak disetel secara default (shopt -u histverify
).Namun, jika Anda mengaktifkan
shopt histverify
(shopt -s histverify
) maka ekspansi sejarah berfungsi berbeda:(Perhatikan bahwa
histverify
opsi shell hanya berlaku jika pustaka readline sedang digunakan - tetapi ketika Anda menggunakan bash secara interaktif pada sistem Ubuntu atau GNU / Linux lainnya, ini pada dasarnya selalu demikian.)Apakah
histverify
opsi shell diaktifkan atau tidak , ekspansi riwayat tidak sama dengan banyak ekspansi shell lainnya. Ekspansi shell lain tidak menunjukkan perintah yang diperluas sebelum dijalankan. Tidak seperti ekspansi lainnya, yang dimaksudkan untuk digunakan baik secara interaktif maupun non-interaktif (misalnya, dalam skrip shell), ekspansi sejarah hampir selalu digunakan secara interaktif.sumber
! digunakan di Linux untuk pintasan terkait sejarah. Jadi, !! hanya akan menjalankan perintah sebelumnya yang Anda jalankan.
Ini sangat membantu dalam kasus ketika Anda lupa untuk menempatkan sudo di depan perintah yang mengharuskannya atau Anda mendapatkan Izin Ditolak atau sesuatu seperti itu lakukan saja
dan kamu sudah selesai.sumber
!! akan mengulang dan menjalankan perintah sebelumnya, dan dengan sudo itu akan memberikan perintah privilege root. (Itu tidak ada di halaman manual? !! Aku tidak bisa melihatnya di sana.)
sumber
man --pager='less -p "Event Designators"' bash