Saya memiliki perintah yang saya jalankan setiap kali terminal baru dibuka atau login baru dibuat.
Program ini menghasilkan output (berwarna) yang harus diposisikan sebelum command prompt. Butuh beberapa detik untuk menjalankan yang akan mencegah saya menggunakan terminal sampai saat itu (kecuali berlari di latar belakang).
Mengingat bahwa zsh memiliki beberapa cara canggih untuk menggambar ulang terminal tanpa mengalahkan teks yang ada, saya ingin tahu bagaimana saya bisa menjalankan perintah ini dengan cara yang saya tidak harus menunggu sampai selesai sebelum saya dapat menggunakan terminal tapi itu setelah selesai mencetak hasil cetak seolah-olah tidak di latar belakang di tempat pertama.
Dalam praktiknya saya ingin sesuatu yang bisa dilakukan:
Command output:
... (running on background)
me@computer: somecommand
me@computer: someothercommand
dan setelah perintah selesai saya akan mendapatkan:
Command output:
* Output foo
* Multiple lines bar
* and some yada
me@computer: somecommand
me@computer: someothercommand
Saya mencoba meletakkan proses di latar belakang saat mulai tetapi kemudian tidak menampilkan output dengan bersih. Saya mendapatkan sesuatu seperti:
Command output:
[2] 32207
me@computer: somecommand
me@computer: someother * Output foo
* Multiple lines bar
* and some yada
[2] + done command
me@computer: someothercommand
Jadi, apakah ini mungkin? Jika tidak dengan zsh apakah ada solusi di luar sana yang bisa melakukannya?
Setiap petunjuk atau informasi diterima.
zpty
: minta perintah dijalankan di terminal yang dibuat oleh zsh, dengan outputnya diteruskan ke terminal nyata di bawah kendali zsh.zpty
? Saya menyadari bahwa Anda tidak dapat memiliki dua program menulis ke terminal yang sama tanpa semacam persaingan atas kursor. Pertanyaan saya berasal dari fakta bahwa zsh sudah menulis ulang prompt dalam beberapa konfigurasi. Jelas program ini harus menulis ke beberapa buffer dalam memori sementara yang kemudian akan "dicetak" ke lokasi tertentu setelah perintah selesai. Semua yang terakhir di bawah kendali zsh.screen
skrip startup yang membagi layar dan menjalankan runner panjang di bagian atas dan baris perintah normal di bagian bawah.Jawaban:
Ini adalah solusi sederhana jika Anda bersedia menerima output tepat di atas garis prompt saat ini.
Ketika pekerjaan selesai, prompt saat ini dan input buffer akan dihapus dan keseluruhan dari perintah
stdout
danstderr
akan dicetak.Anda bisa mendapatkan jauh lebih mewah dari itu dengan
zsh/curses
modul, tapi saya ragu itu akan menawarkan keuntungan yang cukup signifikan untuk pantas dilakukan.sumber
[1] 27911 27912
dalam satu baris dan sebagai baris pertama pada terminal.