Saya ingin tahu cara menggunakan kembali output terakhir dari konsol, yaitu:
pv-3:method Xavier$ python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
/Library/Python/2.6/site-packages
pv-3:method Xavier$ cd **LASTOUTPUT**
shell
command-line
io-redirection
metode tindakan
sumber
sumber
/dev/tty
, tetapi harus dimungkinkan untuk menangkap apa pun yang dikirim kestdout
ataustderr
, yang mungkin memadai.Jawaban:
Dengan asumsi bash:
sumber
`backtick-commands`
!cd $(dirname $(which python))
aku datang!Belum disebutkan, gunakan variabel:
sumber
cd $dir
Semua solusi lain melibatkan memodifikasi alur kerja Anda atau menjalankan perintah dua kali, yang mungkin tidak cocok jika perlu waktu lama untuk dijalankan, atau tidak dapat diulang (misalnya menghapus file - menjalankan kembali akan menghasilkan hasil yang berbeda).
Jadi, inilah ide yang lebih rumit jika Anda membutuhkannya:
.bashrc
bash prompt
Ini memiliki beberapa masalah, jadi itu hanya dimaksudkan sebagai titik awal. Misalnya, file output (
~/<pid>.out
) mungkin tumbuh sangat besar dan mengisi disk Anda. Selain itu, seluruh kulit Anda bisa berhenti bekerja jikatee
mati.Itu bisa dimodifikasi untuk hanya menangkap output dari perintah sebelumnya menggunakan
preexec
danprecmd
kait di zsh, atau emulasi dari mereka di bash, tapi itu lebih rumit untuk dijelaskan di sini.sumber
tee
dari sinyal (coba tekanCtrl+C
dan jalankan beberapa perintah lagi). Gunakanscript
utilitas yang tidak memiliki masalah ini.Draf kerja untuk shell tradisional:
Sekarang kita bisa menampilkan layar ke file. Membutuhkan sudo.
Apropos
screendump
: program yang dinamai itu tidak bekerja lagi untuk saya. Mungkin hanya untuk kernel yang lebih tua. / dev / pts / N tidak bekerja untuk saya juga. Mungkin Anda harus ke beberapa opsional MKDEV di / dev - Saya ingat dengan keliru tentang beberapa/dev/cuaN
, tapi saya mungkin salah.Kami ingin menyalurkan output daripada menggunakan screen.dump. Tapi entah bagaimana itu tidak berhasil - kadang-kadang menunggu ENTER.
Pengambilan bukan file teks normal dengan umpan baris, tetapi dengan - misalnya - karakter 80x50 dalam satu urutan.
Untuk memilih 2 baris terakhir, 1 untuk output dari perintah, dan satu untuk baris yang meminta, saya mengembalikannya, memilih 160 karakter, kembali lagi dan pilih 80.
Kalau-kalau Anda bertanya-tanya, mengapa ada
rev
program.Kritik:
Diagram pertama dibuat dengan explan.py
sumber
alias tee2tty='tee $(readlink /proc/$$/fd/1)'
Coba ini:
sumber
Jadi, uh, inilah jawabannya:
Jika Anda menjalankan di bawah X, pilih output yang Anda inginkan dengan mouse untuk menyalinnya, lalu klik tengah untuk menempelkannya.
Jika Anda menjalankan konsol teks, Anda dapat melakukan hal serupa dengan gpm .
sumber
(Sayangnya, ini bukan jawaban yang berfungsi, tetapi masih sesuatu yang aneh. Seseorang yang tertarik bisa mencoba menyelesaikan penerapan fitur yang akan saya ceritakan.)
Di
eshell
dalam Emacs, mereka ingin memiliki fitur seperti itu tetapi tidak diimplementasikan secara lengkap (yang tercermin dalam dokumentasi ).Sebagai contoh:
Soalnya, hanya output builtin yang bisa ditangkap ke dalam
$$
variabel.Namun, beberapa pemrograman elisp (lih
eshell-mark-output
implementasi di "esh-mode.el"), dan Anda bisa mengimplementasikan fungsi yang "menandai" output terakhir dan mengembalikannya sebagai hasil fungsi; sehingga Anda dapat menggunakan fungsi itu dalam perintah eshell yang Anda minta - fungsi elisp dapat digunakan dalam perintah eshell dengan sintaks elisp yang biasa, yaitu dalam tanda kurung, seperti ini:sumber
Jika Anda sadar ingin menggunakan kembali output sebelum menekan Enter, Anda bisa menyimpannya dalam variabel: tambahkan
tmp=$(
di awal baris dan)
di akhir. (Ini menghapus setiap baris kosong di akhir output perintah, dan pada kenyataannya menghapus baris baru akhir; ini jarang penting.)Jika shell Anda adalah ksh atau zsh, inilah fungsi berguna yang dapat Anda gunakan untuk menjadikan ini lebih otomatis. (Tidak ada gunanya dalam bash karena membutuhkan perintah terakhir dalam sebuah pipa untuk dieksekusi di shell induk, yang hanya merupakan kasus di ksh (bukan pdksh) dan zsh.)
Gunakan seperti ini:
sumber
(membangun jawaban 4485 )
Itu banyak mengetik, jadi buatlah alias:
Maka cukup menelepon
cd $(python -c ... | tee2tty)
Ini tentu saja mengharuskan Anda sudah tahu apa yang ingin Anda lakukan dengan output tetapi memiliki keuntungan dari memanggil perintah hanya sekali.
sumber
akan melakukan trik.
Baca di sini untuk detail lebih lanjut: Substitusi perintah .
sumber
Ada solusi yang lebih baik:
Cukup cetak
!!
setelah perintah dieksekusi dan Anda akan mendapatkan output berulang.Misalnya
Asli:
https://askubuntu.com/questions/324423/how-to-access-the-last-return-value-in-bash
sumber
!!
tidak mengulangi hasil dari perintah terakhir, itu menjalankan kembali perintah terakhir. Jikajot -r 1 0 1000
mengembalikan nomor acak tunggal antara 0 dan 1000, maka setelah menjalankan perintah itu sekali dan mendapatkan539
, menjalankan!!
kemungkinan besar akan memberikan beberapa nomor lainnya.!!
mungkin juga tidak diinginkan jika perintah sebelumnya membutuhkan waktu yang signifikan untuk dijalankan, atau mengulangi operasi yang tidak boleh diulang (seperti mengubah file).