Bagaimana cara menyimpan output terminal ke file?

Bagaimana cara menyimpan output dari perintah ke file?

Apakah ada cara tanpa menggunakan perangkat lunak apa pun? Saya ingin tahu caranya.

Ya itu mungkin, hanya mengarahkan output (alias stdout) ke file:

SomeCommand > SomeFile.txt  

Atau jika Anda ingin menambahkan data:

SomeCommand >> SomeFile.txt

Jika Anda ingin stderr serta menggunakan ini:

SomeCommand &> SomeFile.txt  

atau ini untuk ditambahkan:

SomeCommand &>> SomeFile.txt  

jika Anda ingin memiliki keduanya stderr dan output ditampilkan di konsol dan dalam sebuah berkas gunakan ini:

SomeCommand 2>&1 | tee SomeFile.txt

(Jika Anda ingin output saja, drop 2 atas)

Untuk menulis output dari perintah ke file, pada dasarnya ada 10 cara yang umum digunakan.

Gambaran umum:

Harap dicatat bahwa n.e. dalam kolom sintaks berarti"tidak ada".
Ada cara, tapi terlalu rumit untuk masuk ke dalam kolom. Anda dapat menemukan tautan bermanfaat di bagian Daftar tentang hal itu.

          || visible in terminal ||   visible in file   || existing  Syntax  ||  StdOut  |  StdErr  ||  StdOut  |  StdErr  ||   file   ==========++==========+==========++==========+==========++===========    >     ||    no    |   yes    ||   yes    |    no    || overwrite    >>    ||    no    |   yes    ||   yes    |    no    ||  append          ||          |          ||          |          ||   2>     ||   yes    |    no    ||    no    |   yes    || overwrite   2>>    ||   yes    |    no    ||    no    |   yes    ||  append          ||          |          ||          |          ||   &>     ||    no    |    no    ||   yes    |   yes    || overwrite   &>>    ||    no    |    no    ||   yes    |   yes    ||  append          ||          |          ||          |          || | tee    ||   yes    |   yes    ||   yes    |    no    || overwrite | tee -a ||   yes    |   yes    ||   yes    |    no    ||  append          ||          |          ||          |          || n.e. (*) ||   yes    |   yes    ||    no    |   yes    || overwrite n.e. (*) ||   yes    |   yes    ||    no    |   yes    ||  append          ||          |          ||          |          |||& tee    ||   yes    |   yes    ||   yes    |   yes    || overwrite|& tee -a ||   yes    |   yes    ||   yes    |   yes    ||  append

Daftar:

  • command > output.txt

    Aliran output standar akan diarahkan ke file saja, itu tidak akan terlihat di terminal. Jika file sudah ada, itu akan ditimpa.

  • command >> output.txt

    Aliran output standar akan diarahkan ke file saja, itu tidak akan terlihat di terminal. Jika file sudah ada, data baru akan ditambahkan ke akhir file.

  • command 2> output.txt

    Aliran kesalahan standar akan diarahkan ke file saja, itu tidak akan terlihat di terminal. Jika file sudah ada, itu akan ditimpa.

  • command 2>> output.txt

    Aliran kesalahan standar akan diarahkan ke file saja, itu tidak akan terlihat di terminal. Jika file sudah ada, data baru akan ditambahkan ke akhir file.

  • command &> output.txt

    Baik output standar dan aliran kesalahan standar akan diarahkan ke file saja, tidak ada yang akan terlihat di terminal. Jika file sudah ada, itu akan ditimpa.

  • command &>> output.txt

    Baik output standar dan aliran kesalahan standar akan diarahkan ke file saja, tidak ada yang akan terlihat di terminal. Jika file sudah ada, data baru akan ditambahkan ke akhir file..

  • command | tee output.txt

    Aliran output standar akan disalin ke file, itu masih akan terlihat di terminal. Jika file sudah ada, itu akan ditimpa.

  • command | tee -a output.txt

    Aliran output standar akan disalin ke file, itu masih akan terlihat di terminal. Jika file sudah ada, data baru akan ditambahkan ke akhir file.

  • (*)

    Bash tidak memiliki sintaks singkatan yang memungkinkan pemipaan hanya StdErr ke perintah kedua, yang akan diperlukan di sini dalam kombinasi dengan tee lagi untuk melengkapi tabel. Jika Anda benar-benar membutuhkan sesuatu seperti itu, silakan lihat "Bagaimana cara menyalurkan stderr, dan bukan stdout?"on Stack Overflow untuk beberapa cara bagaimana hal ini dapat dilakukan misalnya dengan menukar aliran atau menggunakan substitusi proses.

  • command |& tee output.txt

    Output standar dan aliran kesalahan standar akan disalin ke file saat masih terlihat di terminal. Jika file sudah ada, itu akan ditimpa.

  • command |& tee -a output.txt

    Output standar dan aliran kesalahan standar akan disalin ke file saat masih terlihat di terminal. Jika file sudah ada, data baru akan ditambahkan ke akhir file.

Anda juga dapat menggunakan tee untuk mengirim output ke file:

command | tee ~/outputfile.txt

Sedikit modifikasi akan menangkap stderr juga:

command 2>&1 | tee ~/outputfile.txt

atau sedikit lebih pendek dan tidak terlalu rumit:

command |& tee ~/outputfile.txt

tee berguna jika Anda ingin dapat tangkap output perintah sambil juga melihatnya secara langsung.

Anda dapat mengarahkan output perintah ke file:

your_command >/path/to/file

Untuk menambahkan output perintah ke file alih-alih menimpanya, gunakan:

your_command >>/path/to/file

Peningkatan untuk dipertimbangkan -

Berbagai script akan menyuntikkan kode warna ke dalam output yang Anda mungkin tidak ingin mengacaukan file log Anda.

Untuk memperbaikinya, Anda dapat menggunakan program ini sed untuk menghapus kode-kode itu. Contoh:

command 2>&1 | sed -r 's/'$(echo -e "\033")'\[[0-9]{1,2}(;([0-9]{1,2})?)?[mK]//g' | tee ~/outputfile.txt

Ada dua pertanyaan berbeda di sini. Yang pertama adalah dalam judul:

Bagaimana cara menyimpan output terminal ke file?

Pertanyaan kedua ada di dalam tubuh:

Bagaimana cara menyimpan output dari perintah ke file?

Semua jawaban yang diposting di sini menjawab pertanyaan kedua tetapi tidak ada yang menjawab pertanyaan pertama yang memiliki jawaban yang bagus Unix & Linux:

Jawaban ini menggunakan perintah yang sedikit diketahui yang disebut script yang menyimpan semua output shell Anda ke file teks sampai Anda mengetik exit. Output perintah masih muncul di layar Anda tetapi juga muncul dalam file teks.

Prosesnya sederhana. Gunakan:

$ script ~/outputfile.txtScript started, file is /home/rick/outputfile.txt$ command1$ command2$ command3$ exitexitScript done, file is /home/rick/outputfile.txt

Kemudian melihat output Anda direkam perintah 1, 2 & amp; 3 dengan:

cat ~/outputfile.txt

Ini mirip dengan jawaban sebelumnya dari:

command |& tee ~/outputfile.txt
  • Tapi Anda tidak harus menggunakan |& tee ~/outputfile.txt setelah setiap commnd.
  • The script perintah telah menambahkan manfaat (atau Kerugian) dari reload ~/.bashrc ketika dimulai.
  • The script perintah menunjukkan command prompt ($PS1 diikuti dengan perintah(s) yang Anda masukkan.
  • The script perintah mencatat semua detail dalam warna penuh.