Terkadang ketika saya menjalankan perintah, saya tidak melihat bahwa saya perlu menjalankannya sebagai pengguna super untuk memiliki cukup izin.
Apakah ada cara untuk menjalankan perintah yang sama lagi tetapi sebagai pengguna super?
command-line
sudo
Trufa
sumber
sumber
!!
sendiri menjalankan perintah Anda sebelumnya sesuai disimpanhistory
. Selain itu, melakukan!-1
,,!-2
dan seterusnya menjalankan perintah terakhir Anda, perintah terakhir kedua, dan seterusnya. Berguna!!<command>
akan mengeksekusi acara terakhir dari~/.bash_history
yang dimulai dengan<command>
!
yang disalin initcsh
telah mengacaukan saya lebih banyak daripada yang pernah berguna. Kutipan ganda tidak melindungi dari interpretasi!
.$ foo "!bar"
->!bar: event not found
.
jawaban : Anda
sudo !!
langsung masuk setelah itu untuk mengulangi perintah sebelumnya dengan hak yang ditingkatkan.sunting: Gambar ditemukan melalui reddit , dan itu adalah parodi dari komik xkcd asli oleh Randall Munroe.
sumber
Anda dapat mencoba tombol panah atas untuk menelusuri perintah lama Anda dan menulis ulang / mengubahnya dan menambahkan
sudo
di depannya. (tombol beranda di atas tombol panah akan mengatur posisi ke awal.)Saya tidak suka
sudo !!
ide itu, karena kadang-kadang Anda menambahkan perintah lain di antara dan tidak ingat lagi.sumber
sudo !!
, shell akan membesar!!
sehingga Anda dapat melihat perintah apa yang coba dijalankan. Jadi, itu mungkin menjengkelkan untuk menekan Ctrl-C dan menemukan perintah yang tepat, tetapi setidaknya tidak akan membawa Anda tidak sadar.!!
sudo !!<TAB>
dan autocomplet!!
untuk saya. Bash dapat memperluas riwayat denganM-^
(bagi saya, alt + shift + 6), tapi itu kurang lancar (Anda bisa mengubahnya lagi). Ada jugashopt -s histverify
, yang membuatnya sehingga ketika Anda menggunakan ekspansi histori dan tekan enter, itu malah memberi Anda baris prompt lain dengan ekspansi dilakukan untuk membiarkan Anda melihat / mengeditnya.shopt -s histverify
tidak akan membantu sedikit pun. Kebanyakan orang akan terbiasa memukulEnter
dua kali. Pada saat itu mereka masih terlambat untuk memeriksa apa yang terjadi.Saya hanya akan menambahkan alternatif: sesingkat mengetik
sudo !!
dan lebih fleksibel:Ini persis dengan jumlah penekanan tombol yang sama (saya menghitung "ctrl + A" sebagai satu ...), tetapi menambahkan "panah atas" Anda dapat melakukannya pada perintah mana pun yang ada dalam riwayat Anda.
sumber
set -o vi
). Kemudian Anda dapat Escape (masuk ke mode perintah), dan kemudian 'I' (huruf kapital 'i', masukkan di awal baris).Ada beberapa cara untuk melakukan ini
Cukup masukkan kembali perintah
sudo
sebelum menambahkan perintahTekan Up arrowuntuk mendapatkan perintah terakhir dan letakkan
sudo
di depannya.Memasukkan
sudo !!
The
!!
mengembang untuk yang terakhir memasuki perintah. Anda dapat melakukan hal serupa dengan hal lain dengan sejarah baris perintah lihat di sinisumber
Pertanyaan ini dapat digeneralisasi menjadi " Jalankan perintah yang sama tetapi dengan beberapa modifikasi ", karena salah satu keputusan desain yang brilian di Unix, adalah bahwa apa yang diimplementasikan sekali dalam shell, dapat dimanfaatkan oleh setiap perintah yang dipanggil dari shell.
Dengan kata lain, trik ini tidak hanya berlaku untuk
sudo
:sudo !!
)time !!
)env A=b B=z !!
)!!
)Ekspansi histori (juga dikenal sebagai subtitusi histori) hanyalah fitur shell untuk membuat pengulangan perintah sebelumnya lebih mudah (dengan sedikit penekanan tombol). Periksa halaman manual shell Anda
history expansion
. Ini menjelaskan banyak trik dan jalan pintas yang dapat Anda lakukan dengan histori misalnya:Anda dapat merujuk ke perintah sebelumnya dengan nomor:
Anda dapat merujuk kata-kata individual dalam perintah sebelumnya:
Anda juga dapat mencari sebelum mengulang:
Anda dapat mencari riwayat dan mengganti sesuatu dengan sesuatu yang lain:
Dan banyak lagi, karena Anda dapat menggabungkan pemilihan perintah, pemilihan arg, pencarian dan penggantian secara mandiri.
Halaman manual shell Anda (dalam hal ini
man bash
) adalah teman Anda.sumber
Saya menggunakan zsh bukan bash dan memilikinya di saya
~/.zshrc
, jadi menekan Alt+ Ssisipansudo
di awal baris perintah:Sayangnya, saya tidak dapat melacak cara untuk melakukan hal yang sama di bash.
sumber
~/.inputrc
"\es":"\C-asudo "
dan Anda akan pindah ke awal garis panjang dan sudo akan dimasukkan pada awal baris setelah menekanalt-s
. Mulai ulang terminal atau baca~/.inputrc
kembali agar berfungsi.Jika Anda ingin melakukannya dalam alias, Anda harus menggunakan
alias redo='sudo $(history -p !!)'
untuk beberapa alasan.sumber
Jika Anda tidak memiliki izin untuk melakukan root dengan program sudo atau sudo tidak diinstal pada sistem.
sumber
Cara saya lebih suka:
Tapi mungkin lebih mudah melakukan "sudo !!", terserah Anda.
sumber