Bagaimana cara menyimpan output dari perintah ke file?
Apakah ada cara tanpa menggunakan perangkat lunak apa pun? Saya ingin tahu caranya.
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.
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
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
|& tee ~/outputfile.txt
setelah setiap commnd
.script
perintah telah menambahkan manfaat (atau Kerugian) dari reload ~/.bashrc
ketika dimulai.script
perintah menunjukkan command prompt ($PS1
diikuti dengan perintah(s) yang Anda masukkan.script
perintah mencatat semua detail dalam warna penuh.