Nasıl alias sudo !! `yapabilirim?


50

sudo !!Bash için bir takma ad belirlemeye çalışıyorum . Denedim alias sbb='sudo !!', fakat bunu edebi olarak yorumluyor !!ve yazıyor.

sudo: !!: command not found

Çift tırnak kullanırsam, dizedeki çift çarpmanın yerini alır, bu yüzden işe yaramaz.

Bu işi yapmanın bir yolu var mı? Veya alternatif bir takma ad? '



Yanıtlar:


61

!!siz yazdığınızda bash ile genişletilir. Diğer ad değişikliği ile genişletilmez.

historyGenişletme yapmak için yerleşik kullanabilirsiniz :

alias sbb='sudo $(history -p !!)'

Komut basit bir komuttan fazlaysa (örn. Yönlendirmeler veya borular içeriyorsa), sudo altında bir kabuk çağırmanız gerekir:

alias sbb='sudo "$BASH" -c "$(history -p !!)"'

Tcsh için bir tane var mı?
— mdpc

1
@mdpc: Ben tcsh kullanmayın, ama baktı man tcshve onu keşfetti yapar takma genişleme sırasında geçmiş genişleme yapmak "orijinal komut önceki giriş hattı sanki." İlginç. Ancak, alias sbb 'sudo \!-2beklendiği gibi çalışmadı (aslında ikinci önceki girişi değiştirdi); alias sbb 'sudo \!\!'beklenen (ikame edilmiş olarak iş yaptığı sbbiçin !!); ve sonunda, istediğim şeyin alias sbb 'sudo \!-1', olmasını beklediğim gibi olduğu ortaya çıktı \!\!. (tcsh 6.17.06 (Astron) 2011-04-15) YMMV. İyi şanslar.
— rici

Teşekkürler! Bu takma ad, yönetici olarak komutunuzun önüne sudo koymayı unuttuğunuzda mükemmeldir.
— mdpc

bunun yerine, jpschorr tarafından önerilen diğer adını sbbtercih ederimprease
— rubo77

40

Deneyin:

alias sbb='sudo $(fc -ln -1)'

Aslında 'lütfen' adını vermeyi tercih ederim:

alias please='sudo $(fc -ln -1)'

Bilgi: fcbash kabuğundaki yerleşik bir komuttur. Daha önce etkileşimli bir kabuğa girilen komutları listeler, düzenler ve yeniden düzenler.


13
pleasekesinlikle gitmenin yolu!
— Anto

bash için de çalışır, bu yüzden 'for zsh' yorumunu kaldırın.
— Michael Durrant,

1
Zsh içinde iyi çalışıyor. fc kullanılacak komuttur. Teşekkürler
— Frax

pleaseTerminalin işleri halletmek için iyi davranmam gereken bir varlık olduğunu hissettiriyor . Daha iyi bir kontrol hissi veren bir şeyi tercih ederim - fuck;;)
— Przemek D


0

Bu başlangıçta bu soruya gönderildi, ancak daha sonra buraya gönderilmesini önerdi.

Burada nasıl kullanabileceğinizi olduğunu fcve historyiçin takma adla !-gibi değiştirmelerin. Diyelim ki kullanmak istiyorsanız !-n( n , kullanılan son komutun n'ini rakamdır ), öyleyse fcve historydiğer adlarını aşağıdaki gibi kullanabilirsiniz :

  1. Kullanarak history:

    alias xyz='echo $(history -p "!-<n>") ; sudo $(history -p "!-n")'

    Not: Burada veya !-nile çevrelenmiş olmalıdır .'''

  2. Kullanarak fc:

    alias xyz='echo $(fc -ln -n -n) ; sudo $(fc -ln -n -n)'

    Not: Burada 1 st ve 2 nd -n geçmiş listesinde aralığını belirlemek için kullanılır.

Burada felling için komut çalıştırmadan önce yankı kullandım !-<n>.


Önceki cevaplar zaten history -pve kapsar fc. Burada yeni bir şey var mı?
— muru

Tamam, ne olmuş?
— muru

-ln -n -nYoğun kafa karıştırıcı buluyorum ; ayrıca bit 'veya hakkında ''(ve ayrıca bit -<n>).
— Scott

Seçenek 2. bir yazım hatası olmalı, bence istediğini düşünüyorum$(fc -ln -1)
— cmcginty

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.