Bagaimana saya bisa menyimpan konten saat ini kurang ke file?

91

Jika saya sudah mengirim hasil dari perintah ke lessdan kemudian memutuskan bahwa saya ingin menyimpan konten ke file, apakah ini mungkin?

Saya sudah mencoba menetapkan tanda adi akhir buffer, dan kemudian kembali ke atas dan menggunakan |aviuntuk mengirim seluruh konten vi, tetapi itu tidak berhasil.

Jonathan Day
sumber
1
Teknik asli Anda akan bekerja jika Anda menginstruksikan vi untuk memuat dari stdin, dengan melakukan |avi -.
Joe Shaw

Jawaban:

102

Di sistem saya, man lesskata

       nama file
              Simpan input ke file. Ini hanya berfungsi jika inputnya adalah a
              pipa, bukan file biasa.

Bekerja untukku!

RedGrittyBrick
sumber
4
Entah bagaimana, ini tidak berhasil untuk saya - mengetik 's' memindahkan jendela dengan satu baris. Saya menggunakan Mac.
benroth
2
@ Benroth: Anda mungkin memiliki lesskeyfile yang mengubah perintah normal. Lihatman lesskey
RedGrittyBrick
8
stidak bekerja untuk saya juga, tetapi -o filetidak.
user1338062
1
Dan mengapa ini tidak disebutkan ketika saya mengetik 'h' untuk mendapatkan bantuan interaktif? +1 jika Anda telah membaca bantuan interaktif dan karena itu tidak berpikir untuk berkonsultasi man less...
Peter V. Mørch
1
@ comfreak: Ya kurang dari 487 di Ubuntu 18.04 tetapi tidak kurang dari 481 di Debian 9 / stretch / stable
Peter V. Mørch
24

Jawaban yang diterima tidak berfungsi pada Mac - seperti yang dikatakan @benroth, menekan shanya bergerak turun garis - tetapi Anda dapat menggunakan metode yang berbeda.

Di less --help:

|Xcommand            Pipe file between current pos & mark X to shell command.

dan

A mark is any upper-case or lower-case letter.
Certain marks are predefined:
     ^  means  beginning of the file
     $  means  end of the file

Jadi jika Anda pergi ke bagian atas buffer ( <) dan kemudian:

|$cat > /tmp/foo.txt

isi dari buffer akan ditulis /tmp/foo.txt.

Joe Shaw
sumber
Metode ini bisa sangat berguna ketika Anda ingin mem-pipe buffer saat ini sedang dilihat melalui perintah lain.
Doron Behar
3

Ketika Anda lessdibuka, Anda dapat menyimpan hasil lengkap ke file. Seperti vim, kurang mendukung perintah.

Cukup ketik kunci s, lalu lessakan menanyakan nama file di mana Anda ingin menyimpan konten, cukup ketik nama file dan kemudian ketik Enter.

Tepuk tangan

Magnos Hammes
sumber
0

Gunakan >operator. Sebagai contoh: less foo.bar > output.txt.

Dror
sumber
Terima kasih @ teror, tapi saya sudah dalam aplikasi yang kurang, tidak di bash prompt lagi
Jonathan Day
Kontribusi yang berharga untuk Tanya Jawab. Daripada memulai pertanyaan yang benar-benar terpisah, orang yang membutuhkan metode untuk skrip beberapa file melalui Less Viewer bisa mendapatkan banyak manfaat. Menyelamatkan saya berjam-jam kerja (setelah banyak mencari). Terima kasih!
LD James
0

Tidak jika Anda mulai lebih sedikit, tetapi jika Anda tahu sebelumnya Anda ingin mengirimkannya lebih sedikit dan sebuah file maka Anda dapat menggunakan perintah tee

command | tee out_file | less
pengguna151019
sumber
Terima kasih Mark, tapi saya secara khusus mencari cara untuk melakukannya jika saya sudah kurang
Jonathan Day
0

Jawaban saya datang agak terlambat, saya percaya. Tapi hanya untuk referensi, sebagai tanggapan atas kekhawatiran Benroth di atas: Untuk pengguna OSX selalu ada opsi untuk membuang isi pager ke file log dengan menggunakan opsi "-l" (baca DASH ELL ) pada prompt usus besar.

Pager akan meminta file log. Masukkan dan tekan [CR]

superk
sumber