Birden çok komutun iletilmesi


8

Aşağıdaki komutu ve her iki TextEdit için boru stout çalıştırmak istiyorum:

pmset -g; echo; pmset -g assertions | open -f -a TextEdit 

Bu işe yaramaz, sadece ikincisini yürütür:

Nasıl?

Yanıtlar:


11

Aahhh, bashyönlendirme: -

( pmset -g && echo && pmset -g assertions ) | open -f -a TextEdit

Bu, komutlarınızı &&bir alt kabukta tek bir bash komutu (yani etkisi ) olarak çalıştırır (bunu ()doya dolandırır) ve alt kabuğun çıktısını sizin için TextEdit'e yönlendirir. Bunun &&yerine teknik olarak kullanmak zorunda değilsiniz , ;ancak değiştirmenin etkisi, komutlardan herhangi biri başarısız olursa tüm zinciri o noktada durduracağıdır.

Not: Örneğinizde tüm komutlar çalıştırılmaktadır (yalnızca pmset -g; echo; pmset -g assertionskomut satırında çalıştırarak kanıtlayacağınız gibi ), yalnızca boruyu yalnızca sonuncusuna uygulamanızdır. Bu yüzden bir alt kabukta çalıştırılması gerekiyor.

Not: |Karakteri değiştirebilir >ve isterseniz çıktıyı bir dosyaya gönderebilirsiniz.


Bu küçük ipucu inanılmaz derecede yardımcı oldu. Yerleşik komutların / özel karakterlerin giriş ve çıkışları çok az belgelenmiştir. Tekrar teşekkürler.
njboot

4

() komutlarını tek bir işlemde birleştirerek stdout ile birleştirir:

(pmset -g; echo; pmset -g assertions) | open -f -a TextEdit
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.