Apakah ada cara standar untuk membalik urutan keluaran dari keluaran terminal, yaitu:
~/Developer $ command0
-bash: comman0: command not found
~/Developer $ command2
-bash: command2: command not found
~/Developer $ command3
-bash: command3: command not found
~/Developer $
akan ditampilkan sebagai:
~/Developer $
-bash: command3: command not found
~/Developer $ command3
-bash: command2: command not found
~/Developer $ command2
-bash: comman0: command not found
~/Developer $ comman0
Saya merasa selalu memiliki prompt Anda di bagian bawah adalah kontra intuitif cara yang lebih efektif untuk menyajikan output akan membalik urutan output. Bagaimana saya bisa menerapkan ini? Khususnya di mana bagian output dari program terminal OSX didefinisikan?
bash
).Jawaban:
Dalam bash ini akan menampilkan prompt / perintah saat ini di bagian atas, dan hasilnya di bawah ini, tetapi tanpa menggulir atau perintah sebelumnya:
Fungsi ini akan menempatkan perintah-perintah sebelumnya di bawah ini, tetapi Anda harus mem-pipe masing-masing dan setiap perintah secara terpisah. Sayangnya,
exec > >(f)
tidak dapat membantu dengan ini karena pengalihan seluruh bash, bukan perintah individu. Inilah fungsinya:Kemudian jalankan setiap perintah seperti:
Ini menyimpan output, membuat sejumlah baris kosong sama dengan panjang + 1, lalu mengembalikan output. Anda dapat menandai sebuah baris di bagian akhir yang akan menampilkan prompt palsu atau aturan horizontal jika Anda mau. Misalnya
Sebagai alternatif omong kosong tetapi otomatis untuk seluruh fungsi ini, kita dapat menambahkan perintah ke akhir $ PROMPT_COMMAND sebelumnya yang menghapus 11 baris yang agak arbitrer:
Anda juga dapat menggunakan
tput -S
untuk menghindari beberapa panggilan biner.Saya mendapat
$PROMPT_COMMAND
dari https://github.com/swirepe/alwaysontop .sumber
Sayangnya, ini akan cukup sulit. Protokol antara aplikasi dan terminal OS-X adalah varian dari protokol kontrol terminal VT100 / ANSI , khususnya protokol XTerm .
Itu termasuk banyak asumsi tentang posisi layar, dll, yang akan menantang untuk memetakan kembali ke dunia di mana tampilan dibalik.
Lebih buruk lagi, semua emulator terminal Anda mendapat adalah serangkaian "ketik karakter ini di posisi ini" perintah jenis. Tidak ada perbedaan yang dibuat antara command prompt dan output dari sebuah perintah yang dijalankan olehnya, sehingga Anda tidak dapat melakukan satu hal untuk kedua bagian - setidaknya, bukan tanpa kerja sama dari shell di bawahnya.
Shell, dan program-programnya, berasumsi bahwa layar berlanjut ke atas - data baru di bagian bawah, dan dijalankan ke bawah selamanya.
Anda bisa, setidaknya secara teoritis, emulator terminal Anda dimodifikasi sehingga menampilkan garis dalam urutan terbalik - garis "bawah" terlebih dahulu, dan seterusnya hingga garis "atas" di bagian bawah layar.
Itu akan membalik urutan baris dalam output perintah, jadi, sisa konten akan muncul mundur juga. Jika Anda ingin perintah (mis: ls, cat) menjalankan "turun" tetapi meminta untuk naik "naik" hidup lebih sulit.
Saya tidak tahu ada perangkat lunak yang mengimplementasikan ini. (... tapi lihat komentar JdeBD untuk ini untuk tautan ke satu.) :)
sumber
Meskipun ini tidak akan secara tepat membalikkan output, ini akan membuat Anda tetap di puncak:
https://github.com/swirepe/alwaysontop
Untuk menggunakannya jalankan:
Jika Anda memutuskan bahwa Anda menyukainya, cukup masukkan di .bash_profile Anda dengan sesuatu seperti:
sumber