Bagaimana cara menyalin teks multi-halaman dari terminal ke clipboard?

13

Saya melihat halaman manual perangkat lunak pada mesin saya dan saya perlu menyalin-menempelkan beberapa teks itu tetapi teksnya lebih dari satu halaman. Saya sadar saya dapat mengarahkan output ke file dan menggunakan perangkat lunak berbasis UI seperti gedit untuk menyalin teks yang saya butuhkan. Tetapi dapatkah ini dilakukan dari terminal?

Joseph menyarankan metode baris perintah (Sedikit rumit bagi saya, saya belum cukup baik dengan ekspresi reguler di Linux). Tapi saya bertanya-tanya apakah ada cara untuk melakukannya saat saya masih di terminal, menggunakan mouse .

Saya harap saya mendapatkan jawaban umum, namun saya menggunakan Ubuntu.

Muhammad Gelbana
sumber

Jawaban:

9

Saya punya beberapa ide yang tidak sempurna, tapi mungkin berguna.

Metode 1 - mousey.

Gunakan bilah gulir terminal.

Detail (dengan asumsi xterm; penyesuaian akan diperlukan untuk terminal lain.)

  1. Aktifkan bilah gulir jika belum. (In xterm, ada di menu yang Anda dapatkan dengan Ctrl + Button2.)
  2. Pastikan lesstidak berjalan dengan -copsi (saya memiliki opsi ini diaktifkan di LESSvariabel lingkungan saya , tetapi itu mengganggu apa yang akan kita lakukan, jadi saya harus mengetik -cuntuk mematikannya.)
  3. Menggunakan lessperintah apa pun yang Anda suka, gulir ke atas atau ke bawah sehingga baris pertama yang ingin Anda salin terlihat di layar.
  4. triple-Button1 baris awal yang Anda pilih untuk memilihnya.
  5. Gulir ke bawah hingga baris terakhir yang ingin Anda salin terlihat di layar. Anda harus menggunakan hanya bilah spasi atau tombol gulir sederhana lainnya, bukan /pencarian - intinya di sini adalah lessuntuk mengirim semua baris ke terminal sehingga mereka dapat disalin.
  6. Tombol3 pada garis akhir yang Anda pilih untuk memperpanjang pilihan.

Kemungkinan kesulitan: buffer scrollback Anda mungkin tidak cukup besar. Itu bisa diubah xtermdengan opsi saveLinesresource atau -slcommand line, tapi saya tidak tahu cara mengubahnya dalam xterm yang sudah berjalan.

Metode 2 - non-mousey.

Gunakan perintah |(pipa) lessuntuk mengirim teks ke xclip.

Detail:

  1. Dengan menggunakan lessperintah apa pun yang Anda suka, gulirkan ke atas atau ke bawah untuk memposisikan baris terakhir yang ingin Anda salin di bagian atas layar. Anda dapat melewati langkah ini dan langkah berikutnya jika Anda ingin menyalin semua jalan sampai akhir.
  2. Gunakan perintah m(tanda) untuk menetapkan tanda pada posisi akhir yang Anda pilih. Tanda adalah fitur yang berguna sendiri, dan Anda harus sudah mengetahuinya vi, tetapi kalau-kalau Anda tidak: mxmenetapkan tanda, di mana xdapat berupa huruf apa saja, dan 'xmengembalikan Anda ke sana nanti.
  3. Sekarang gulir ke atas sehingga baris pertama yang ingin Anda salin ada di bagian atas layar.
  4. Gunakan perintah pipa: |xyang akan memunculkan prompt bagi Anda untuk memasukkan perintah eksternal. The xseharusnya huruf tanda yang sama yang digunakan dalam mperintah, atau $untuk "semua jalan sampai akhir". Ketik di xclipsana.

Kasus sederhana menyalin seluruh halaman manual dikurangi menjadi g|$xclipEnter.

Peringatan (yaitu hal mengerikan yang baru saja terjadi pada saya ): xclipakan semi-latar belakang, berjalan sebagai bagian dari lessgrup proses. Jika Anda mencoba menunda less, mulai pekerjaan lain di terminal yang sama, dan tempel ke dalamnya, itu tidak akan berhasil. Kemudian ketika Anda kemudian memposting man/ lesspekerjaan, tiba-tiba paste akan muncul. Saya pikir ini harus dianggap xclipbug ...


sumber
2
Pengguna Mac dapat menggunakan pbcopy jika mereka tidak menginstal xclip.
Mike Hedman
3

Terminal multiplexer menyukai tmuxatau screenbiasanya memiliki fungsi seperti ini (yaitu untuk menyimpan bagian dari buffer scrollback ke file atau pipa ke beberapa perintah) dan menggunakannya biasanya merupakan ide yang baik, jadi Anda mungkin ingin melihat salah satu dari mereka .

peterph
sumber
2

Seperti yang diuraikan di Nixcraft :

  1. Dapatkan xclip:

    sudo apt-get install xclip 
    

    atau

    yum install xclip
    

    pada sistem berbasis RPM.

  2. man man | your_magic_here | xclip -selection clipboard
  3. Ctrl+ Vsesuka hati Anda. Anda dapat menghapus -selection clipboarduntuk memilih menempelkan dengan klik tengah mouse sebagai gantinya (disebut pemilihan utama).

Perhatikan bahwa your_magic_hereini adalah penampung untuk filter teks ( sed/ awk/ perl/ ...) yang memilih bagian halaman manual yang diinginkan sesuai dengan kasus penggunaan spesifik Anda, yang tidak Anda jelaskan sehingga saya khawatir saya tidak bisa lebih spesifik dengan sebuah contoh.

Joseph R.
sumber
Selain xclipada juga xsel(dan lainnya). Anda mungkin juga ingin melihat diskusi clipboard ini .
peterph
Apakah ada cara untuk melakukannya dengan menggunakan mouse? Sehingga saat mouse mencapai akhir halaman, halaman akan bergulir.
Muhammad Gelbana
0

Tergantung pada program terminal Anda, tetapi sebagian besar program terminal tidak memiliki fungsi untuk menyimpan teks yang dipilih.

LXTerminal, uxterm, Konsole, dan Terminal GNOME sepertinya tidak memiliki 'fitur' ini, tetapi mungkin ada orang lain yang memilikinya. Lihatlah struktur menu program terminal Anda dan mungkin ada sesuatu seperti "Simpan yang dipilih"

Timo
sumber
0

Dengan asumsi Anda menggunakan gnome-terminaldan lesssebagai pager untuk manAnda dapat:

  • Jalankan lessuntuk mandengan -Xkunci untuk layar alternatif menonaktifkan, misalnya:LESS=-X man less

Ini akan memungkinkan untuk menambahkan output manke buffer histori emulator terminal. Lihat jawaban ini untuk lebih jelasnya /unix//a/38638/87918 .

  • Gulir ke halaman terakhir dari teks yang ingin Anda salin. (Semua teks yang digulir akan disimpan dalam buffer sejarah saat menggulir)
  • Pilih teks dengan mouse di gnome-terminalmulai dari halaman terakhir ke pertama, seret mouse ke tepi atas jendela. Proses pemilihan teks terperinci dijelaskan di sini :

Ini tidak berfungsi di Terminal Gnome. Yang harus Anda lakukan adalah memulai seleksi dengan tombol kiri mouse dan saat membuatnya, seret kursor mouse ke tepi jendela (atau di luar jendela). GT akan menggulirkan hal-hal untuk Anda, memperluas seleksi dalam proses. Scrolling GT cukup cepat sehingga ini adalah proses yang cukup nyaman dan intuitif, bisa dibilang lebih baik daripada xterm.

  • Sekarang Anda memiliki teks yang dipilih (halaman apa pun yang Anda inginkan) yang dapat Anda salin & tempel di mana pun Anda inginkan.
ks1322
sumber
0

Gunakan | Perintah (pipe) kurang dengan tanda seperti yang telah dijawab oleh Wumpus Q. Wumbley dalam opsi keduanya , tetapi mengarahkan ulang menggunakan tee untuk menambahkan file yang sudah ada di sana dengan tujuan:

|tee >> ~/helpaggregator.txt

Saya menyarankan file yang sudah ada karena biasanya perlu berkonsultasi ketika mempelajari perintah baru dan yang suka mengkonsolidasikannya. Selain itu, penyelesaian tab berguna.

taatparya
sumber