Aynı komutu tekrar ama root olarak çalıştır

90

Bazen bir komutu çalıştırdığımda, onu süper kullanıcı olarak çalıştırmak için yeteri kadar izin almam gerektiğini fark etmiyorum.

Aynı komutu tekrar çalıştırmanın bir yolu var mı, süper kullanıcı mı?

    
sordu Trufa 27.05.2013 22:31

10 cevap

165

En basit yol çalıştırmaktır:

sudo !!

Bu son komutu, ancak süper kullanıcı olarak çalıştıracaktır.

Kaynak .

    
verilen cevap Trufa 27.05.2013 22:31
63

Yanıtla: , daha önce iletilen ayrıcalıklarla önceki komutu tekrarlamak için sudo !! sonra girersiniz.

düzenleme: Resim reddit ile bulundu ve Randall Munroe tarafından orijinal xkcd çizgi romanının parodi.

    
verilen cevap wim 30.05.2013 00:33
17

Eski komutlarınız arasında gezinmek için yukarı-ok tuşlarını deneyebilir ve bunları yeniden yazabilir / değiştirebilir ve sudo değerini ekleyebilirsiniz. (ok tuşlarının üstündeki ana düğme konumu başlangıç ​​olarak ayarlar.)

sudo !! fikrinden hoşlanmıyorum, çünkü bazen aralarında başka bir komut ekliyor ve artık hatırlamıyorsunuz.

    
verilen cevap Xylol 27.05.2013 23:31
12

Bir alternatif ekleyeceğim: kısa olarak yazarak sudo !! ve daha esnek:

Up-arrow (once, or until you find the command you want to sudo/edit, if it's older)
ctrl+A   (place cursor at beginning of line)
"sudo "
Enter

Tam olarak aynı sayıda tuş vuruşu ("ctrl + A" değerini bir ...) olarak sayabilirim, ancak "yukarı ok" ekleyerek bunu geçmişinizde hangi komutta olursa yapabilirsiniz.

    
verilen cevap Olivier Dulac 28.05.2013 13:09
7

Bunu yapmanın birkaç yolu var

  • Komuttan hemen önce sudo komutu ekleyerek komutu tekrar girin

  • Son komutu almak için Yukarı ok 'a basıp önündeki sudo değerini koyun.

  • sudo !! değerini girin

!! , en son girilen komuta kadar genişler. Komut satırı geçmişiyle benzer şeyler yapabilirsiniz. buradan < a>

    
verilen cevap user162424 28.05.2013 11:22
6

Bu soru, " Aynı komutu çalıştır ancak bazı değişikliklerle " şeklinde genelleştirilebilirdi, çünkü Unix'teki parlak tasarım kararlarından biri, kabuğun içinde bir kez uygulanan şeyin, kabuktan çağrılan herhangi bir komut.

Başka bir deyişle, bu hile % <%> için% <%> uygulanmıyor:

  • Bir önceki komutu süper kullanıcı olarak tekrarla ( sudo )
  • Önceki komutu tekrarla ve zamanla ( sudo !! )
  • Önceki komutu farklı bir ortamla tekrarla ( time !! )
  • Önceki komutu tekrarla ( env A=b B=z !! )

Geçmiş genişletme (geçmişin yerini değiştirme olarak da bilinir), yalnızca önceki komutların daha kolay tekrarlanmasını (daha az tuşa basarak) sağlayan bir kabuk özelliğidir. Kabuk adam sayfanızı !! için kontrol edin. Örneğin tarihle yapabileceğiniz pek çok hile ve kısa yol tarif eder:

Önceki komutlara göre numaraya başvurabilirsiniz:

!55                 # repeat command number 55
!-1                 # repeat the previous command, alias for !!
!-2                 # repeat the command before the previous command

Önceki komutlarda bulunan kelimelere atıfta bulunabilirsiniz:

some-command !$     # run some-command on the last arg of previous command

Ayrıca tekrar etmeden önce de arama yapabilirsiniz:

!?awk               # repeat the last command including the string 'awk'

Geçmişi arayabilir ve bir şeyi başka bir şeyle değiştirebilirsiniz:

!?awk?:s/str1/str2/  # repeat previous command matching 'awk' replacing str1 by str2

Ve çok daha fazlası, komut seçimini arg seçimini birleştirip bağımsız olarak arayabilir ve değiştirebilirsiniz.

Kabuğunuzun man sayfası (bu durumda history expansion ) arkadaşınız.

    
verilen cevap arielf 31.05.2013 21:07
5

Bash yerine zsh kullanıyorum ve bunu ~/.zshrc dizinimde kullanıyorum, böylece Alt + S komut satırının başında sudo ekler:

insert_sudo () { zle beginning-of-line; zle -U "sudo " }
zle -N insert-sudo insert_sudo
bindkey "^[s" insert-sudo

Ne yazık ki, aynı şeyi bash'da yapmanın bir yolunu izleyemedim.

    
verilen cevap Patches 28.05.2013 01:58
1
su -c "!!"

Sudo veya sudo programı ile root olma izniniz yoksa sisteme yüklenmedi.

    
verilen cevap Achu 29.05.2013 06:37
1

Tercih ettiğim yol:

  • Ok tuşu yukarı
  • Ev
  • "sudo"
  • Enter

Ama sadece "sudo!" yapmak daha kolay olabilir, bu size bağlı.

    
verilen cevap Farid El Nasire 14.06.2013 16:22
1

Bunu bir takma adla yapmak istiyorsanız, bir nedenle alias redo='sudo $(history -p !!)' kullanmalısınız.

    
verilen cevap Aaron Franke 07.07.2016 11:55

Etiketlerdeki diğer soruları oku