Saya ingin dapat menjalankan perintah, gagal karena tidak memiliki izin yang tepat. Lalu aku bisa menulis "tolong" pada sudo perintah yang baru saja aku jalankan.
Inilah yang ingin saya lakukan di terminal:
$ run command
"you don't have access to do that"
$ please
"ran successfully"
Saya melihat bahwa !!
akan mengambil perintah sebelumnya, jadi saya pikir saya bisa menggunakannya, tetapi saya tidak bisa membuatnya bekerja.
skrip shell please.sh saya terlihat seperti ini, tetapi saya tidak bisa menjalankan semua ini. Itu hanya mengatakan "perintah tidak ditemukan !!" dan mencetak penggunaan sudo.
#!/bin/zsh
#sudo !!
#sudo `!!`
sudo $(!!)
command-line
zsh
jb.
sumber
sumber
sudo !!
apakah itu berjalan seperti yang diharapkan? Kupikir !! mungkin hanya bash alias, jadi mungkin tidak berfungsi di zsh!!
dan lainnya) hanya berfungsi di shell interaktif dan bukan di skrip.sudo !!
dalam mode interaktif hampir berfungsi seperti yang diharapkan. ketika saya menekan enter itu akan menggantikan!!
dengan perintah sebelumnya. maka saya harus menekan enter lagi untuk menjalankannya.Jawaban:
Anda tidak dapat menggunakan
!!
skrip shell, karena Anda tidak dapat mengakses shell induk di shell anak. Meskipun saya sarankan menggunakansudo !!
, jika Anda benar-benar ingin membuat skrip BASH, Anda harus menggunakan .bash_history, seperti:Ini jelas BUKAN solusi yang sempurna, tetapi harus melakukan trik.
Jika Anda menggunakan ZSH, ini tidak akan berfungsi, karena ZSH tidak menghasilkan .bash_history (setahu saya).UPDATE : Ini adalah versi yang dapat digunakan dengan ZSH:Semoga ini membantu!
Jika Anda tidak mengerti skrip, itu hanya menjalankan perintah terakhir yang dimasukkan dalam BASH dengan sudo.
sumber
fc
atauhistory
bawaan. Secara default, $ HISTFILE tidak diperbarui hingga Anda keluar dari bash.Tambahkan ke .zshrc Anda:
sumber
fc
singkatan dari perintah fix. Dokumentasinya ada di sini .alias lastcmd="fc -ln -1 | pbcopy"
Saya percaya ini harus bekerja pada Ubuntu (?):alias lastcmd="fc -ln -1 | xclip -selection clipboard
.