Bagaimana cara menyimpan output dari perintah ke file?
Apakah ada cara tanpa menggunakan perangkat lunak apa pun? Saya ingin tahu caranya.
command-line
led-Zepp
sumber
sumber
someCommand 2> someFile.txt
dansomeCommand 2>> someFile.txt
juga pengalihanstterr
ke someFile.txtmake
perintah ke dalam file itu membutuhkan sintaks ini sebagai gantinya:make > someFile.txt 2>&1
(sumber: linuxquestions.org/questions/linux-newbie-8/… )Untuk menulis output dari suatu perintah ke file, pada dasarnya ada 10 cara yang umum digunakan.
Gambaran:
Daftar:
command > output.txt
Aliran output standar akan diarahkan ke file saja, itu tidak akan terlihat di terminal. Jika file sudah ada, 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 hanya akan diarahkan ke file, itu tidak akan terlihat di terminal. Jika file sudah ada, akan ditimpa.
command 2>> output.txt
Aliran kesalahan standar hanya akan diarahkan ke file, itu tidak akan terlihat di terminal. Jika file sudah ada, data baru akan ditambahkan ke akhir file.
command &> output.txt
Output standar dan stream kesalahan standar hanya akan diarahkan ke file, tidak ada yang akan terlihat di terminal. Jika file sudah ada, akan ditimpa.
command &>> output.txt
Output standar dan stream kesalahan standar hanya akan diarahkan ke file, tidak ada yang akan terlihat di terminal. Jika file sudah ada, data baru akan ditambahkan ke akhir file ..
command | tee output.txt
Aliran keluaran standar akan disalin ke file, itu masih akan terlihat di terminal. Jika file sudah ada, akan ditimpa.
command | tee -a output.txt
Aliran keluaran 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 steno yang memungkinkan pemipaan hanya StdErr ke perintah kedua, yang akan diperlukan di sini dalam kombinasi dengan
tee
lagi untuk menyelesaikan tabel. Jika Anda benar-benar membutuhkan sesuatu seperti itu, silakan lihat "Cara memasang pipa stderr, dan tidak stdout?" pada Stack Overflow untuk beberapa cara bagaimana hal ini dapat dilakukan misalnya dengan menukar stream atau menggunakan subtitusi proses.command |& tee output.txt
Output standar dan stream kesalahan standar akan disalin ke file saat masih terlihat di terminal. Jika file sudah ada, akan ditimpa.
command |& tee -a output.txt
Output standar dan stream kesalahan standar akan disalin ke file saat masih terlihat di terminal. Jika file sudah ada, data baru akan ditambahkan ke akhir file.
sumber
2>&1
pengalihan STDERR ke STDOUT,1>&2
pengalihan STDOUT ke STDERR dan3>&1
akan mengarahkan aliran 3 ke STDERR.sh: 1: Syntax error: "&" unexpected
ketika saya gunakan|& tee
dari skrip Python di server c9.io. Tampaknya shell yang berbeda sedang digunakan.echo $SHELL
menunjukkan/bin/bash
dan$SHELL --version
menunjukkan versi 4.3.11 (1) -release. Saya mencoba#!/bin/bash
skrip python saya tetapi saya masih dapatsh: 1: Syntax error
. Saya mendapatkan apa yang saya butuhkan jadi saya menyerah untuk menyortir keanehan antarash
danbash
di server saya. Terima kasih.sh
dan tidakbash
(atau mungkinbash
dalamsh
mode ...). Anda dapat memeriksa apa sebenarnya proses shell Anda saat ini digunakanps -p $$ -o cmd=
, karenaecho $SHELL
tidak dapat diandalkan dan akan menunjukkan Anda shell login Anda, mengabaikan apakah Anda mungkin telah memulai subkulit yang berbeda.Anda juga dapat menggunakan
tee
untuk mengirim output ke file:Sedikit modifikasi akan menangkap stderr juga:
atau sedikit lebih pendek dan tidak terlalu rumit:
tee
berguna jika Anda ingin dapat menangkap keluaran perintah sambil juga melihatnya langsung .sumber
2>&1
?Anda dapat mengarahkan output perintah ke file:
Untuk menambahkan output perintah ke file alih-alih menimpanya, gunakan:
sumber
Peningkatan untuk dipertimbangkan -
Berbagai skrip akan menyuntikkan kode warna ke dalam output yang Anda mungkin tidak ingin mengacaukan file log Anda.
Untuk mengatasinya, Anda dapat menggunakan program sed untuk menghapus kode-kode. Contoh:
sumber
ls
dangrep
, dukungan--color=auto
, yang hanya mengeluarkan kode warna jika keluaran standar adalah terminal.Untuk
cron
pekerjaan, dll, Anda ingin menghindari ekstensi Bash.sh
Operator pengalihan POSIX setara adalahAnda akan melihat bahwa fasilitas POSIX dalam beberapa hal lebih sederhana dan lebih mudah. The
&>
sintaks dipinjam daricsh
yang seharusnya sudah meyakinkan Anda bahwa itu adalah ide yang buruk.sumber
some_command | tee command.log
dansome_command > command.log
memiliki masalah bahwa mereka tidak menyimpan output perintah kecommand.log
file secara real-time.Untuk menghindari masalah itu dan menyimpan output perintah secara real-time, Anda dapat menambahkan
unbuffer
, yang datang denganexpect
paket.Contoh:
Dengan asumsi
log.py
mengandung:Anda dapat menjalankan
unbuffer python log.py | tee command.log
atauunbuffer python log.py > command.log
Informasi lebih lanjut: Bagaimana saya bisa menyimpan output perintah ke file secara real-time?
sumber