Komut satırları her yürütüldüğünde bash komut dosyasını çalıştırın


9

Yeni bir Ubuntu / Linux kullanıcısıyım, yukarıdaki başlığım olarak bir soru sormak istiyorum.

Örneğin, bir bash dosyam var ./script, herhangi bir komut satırı yazdığımda otomatik olarak çalışmasını istiyorum. Ben komut satırını çalıştırmak sonra pwdsonra ./scriptçalıştırılacaktır. Önümüzdeki komut satırı yazın kez ls -ladaha sonra ./scripttekrar çalıştırılacaktır.


4
sorabiliriz: yazılan her komut üzerinde ne tür bir eylemde bulunmak istiyorsunuz ? ve sadece etkileşimli yazılanlar için mi olmalı? veya bir komut dosyasındaki herhangi bir komut için mi? ve ssh üzerine yazılan komutlar ne olacak? vs. Bu bir XYProblem
— Olivier Dulac

Yanıtlar:


13

PROMPT_COMMANDDeğişken ayarlamanız gerekir . Gönderen man bash:

PROMPT_COMMAND
              If set, the value is executed as a command prior to
              issuing each primary prompt.

Örneğin, /tmp/PCher komut yürütüldüğünde geçerli tarih yazılır :

 $ PROMPT_COMMAND="date > /tmp/PC"

1
Evet, anladım .. oldukça güzel bir çözüm. (Upvoted)
— Ender Phan

1
Bu yanlış. Komut echo $(date)bildirim zamanında çalıştırılacaktır, bu nedenle her zaman aynı zamanı gösterecektir (kaydedecektir).
— heemayl

@heemayl: tabii ki haklısın, düzelttim
— Arkadiusz Drabczyk

@ lộcphan Bu yanıtlardan biri sorununuzu çözdüyse, lütfen bir dakikanızı ayırın ve soldaki onay işaretini tıklayarak kabul edin. Bu, soruyu yanıtlandığı gibi işaretler ve Stack Exchange sitelerinde teşekkürlerin ifade edilme şeklidir.
— terdon

@heemayl: Neden? ...
— Arkadiusz Drabczyk

11

PROMPT_COMMANDOrtam değişkenini arıyorsunuz , terminalde verilen her komut yürütüldükten sonra, bir sonraki istemi göstermeden önce, bu değişkenin değeri komut olarak yürütülür.

Örneğin, şu şekilde ayarlayın:

export PROMPT_COMMAND='/path/to/script'

/path/to/scriptÖnce komut dosyasını çalıştırılabilir yapın.

Şimdi komut dosyası her komuttan sonra çalıştırılacaktır.

Sadece, değişkenin dışa aktarılmasını istemiyorsanız, yani bunu ortam yerine bir kabuk değişkeni yapmak istiyorsanız, bırakın export:

PROMPT_COMMAND='/path/to/script'

Gönderen man bash:

PROMPT_COMMAND 
If set, the value is executed as a command prior to issuing each primary prompt.

Anladım, yardımın için çok teşekkür ederim :) (btw'ye yükseltildi)
— Ender Phan

Neden kullanıyorsun export?
— Arkadiusz Drabczyk

@ArkadiuszDrabczyk export, değişkeni PROMPT_COMMANDbir ortam değişkeni haline getirecektir, yani değişken, geçerli kabuğun tüm alt süreçleri (örneğin, alt kabuklar) tarafından kullanılabilecektir. Yalnızca geçerli kabuk oturumu içinde sınırlamak istiyorsanız (kabuk değişkeni), kaldırın export.
— heemayl

5
@heemayl: IMO exportburada iyi bir uygulama değil - PROMPT_COMMANDyalnızca etkileşimli bir kabuk başlangıç ​​dosyasında ayarlanmalı ve ortamda
— görünmemelidir
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.