Terminal değiştirme! ardından komutlu bir sayı


12

Ubuntu terminal oturumum hakkında çok kafam karıştı !, görünüşe göre rastgele komutlarla bir sayı izleyen komutlardaki bölümlerin yerini alıyor gibi görünüyor . O yapar ile !87ile yerine screen -lve ayrıca !88ve onu değiştirdi ls.

Bunun neden olduğu hakkında herhangi bir fikir çok takdir edilecektir.


Yanıtlar:


20

Bu bashtarihin genişlemesi, ör.

!87

Geçmiş satırından komutu yeniden yürütür 87.

Bu özelliğin açıklamasını man bash“TARİH GENİŞLETMESİ” bölümünde bulabilirsiniz :

       An  event  designator  is  a  reference  to a command line entry in the
       history list.  Unless the reference is absolute, events are relative to
       the current position in the history list.

       !      Start  a  history substitution, except when followed by a blank,
              newline, carriage return, = or ( (when the extglob shell  option
              is enabled using the shopt builtin).
       !n     Refer to command line n.
       !-n    Refer to the current command minus n.

Hızlı bir şekilde son komutu çağırmak için ve son !-1beşinci komutu yapın !-5. İçin kullanışlı bir eşanlamlı !-1olduğunu !!- Eğer örneğin çağırdıysanız apt install somethingve unuttum sudosadece yürütmek, sudo !!size olman iyi ve.

Yalnızca ters eğik çizgi ( \ ) ve tek tırnaklar, geçmiş genişletme karakterini alıntılayabilir.

Geçmiş genişlemesini önlemek için, ünlem işaretinden bir ters eğik çizgi ( \!) ile çıkmanız veya tek tırnak işareti ( '!') kullanmanız gerekir.


3
!komutlarınıza bir litre iletmek ve geçmişin genişlemesini önlemek için, tek teklif vermeniz veya bunlardan kaçmanız gerekir: foo '!87'veya foo \!87. (çift tırnaklar da içeriklerinde genişletme yapar.)
quixotic
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.