Saya ingin menjalankan perintah berikut dan meng-stout keduanya ke TextEdit:
pmset -g; echo; pmset -g assertions | open -f -a TextEdit
Ini tidak berfungsi, itu hanya mengeksekusi yang terakhir:
Bagaimana?
sumber
Saya ingin menjalankan perintah berikut dan meng-stout keduanya ke TextEdit:
pmset -g; echo; pmset -g assertions | open -f -a TextEdit
Ini tidak berfungsi, itu hanya mengeksekusi yang terakhir:
Bagaimana?
Aahhh, bash
pengalihan: -
( pmset -g && echo && pmset -g assertions ) | open -f -a TextEdit
Itu menjalankan perintah Anda sebagai perintah bash tunggal (itulah efek dari &&
) dalam sub-shell (yang merupakan pembungkusnya di ()
lakukan) dan mengarahkan output sub-shell ke TextEdit untuk Anda. Secara teknis Anda tidak harus menggunakan &&
alih-alih ;
tetapi efek dari mengubahnya adalah bahwa jika salah satu perintah gagal akan menghentikan seluruh rantai pada saat itu.
Catatan: Dalam contoh Anda semua perintah sedang dijalankan (seperti yang dapat Anda buktikan dengan hanya berjalan pmset -g; echo; pmset -g assertions
di baris perintah), hanya saja Anda menerapkan pipa hanya untuk yang terakhir. Karena itu perlu dijalankan dalam subkulit.
Catatan: Anda dapat mengganti |
karakter dengan >
dan mengirim output ke file jika Anda mau.
() menggabungkan perintah-perintah menjadi satu proses tunggal, menyatukannya menjadi stdout:
sumber