Itu sebabnya wget menggunakan stderr untuk beberapa outputnya. Yang kedua harus bekerja.
theotherreceive
2
Kebetulan, Anda mungkin ingin menyimpan output wget itu ke file log, jadi ketika / jika unduhan Anda berhenti berfungsi, Anda bisa mencari tahu alasannya. Jika itu ada dalam skrip. Jika ini adalah jenis lari satu kali, maka ya, ke tempat sampah
Matt Simmons
1
Untuk wgetAnda dapat menggunakan -qopsi untuk membuatnya tenang.
pkhamre
Adakah cara untuk menekan output yang ditulis langsung ke / dev / tty?
d11wtq
30
Ada tiga perangkat IO yang tersedia di baris perintah.
standard in - 0
standard out - 1
standard error - 2
Untuk mengalihkan standar keluar (output default) ke file (dan menimpa file), gunakan
command > file.log
Untuk menambahkan file.log, gunakan 2> s
command >> file.log
untuk mengarahkan ulang kesalahan standar ke file.log, gunakan
command 2> file.log
dan untuk menambahkan
command 2>> file.log
Untuk menggabungkan output menjadi satu aliran dan mengirim semuanya ke satu tempat
command > file.log 2>&1
Ini mengirimkan 2 (stderr) menjadi 1 (stdout), dan mengirimkan stdout ke file.log
Perhatikan bahwa mungkin juga untuk mengarahkan ulang standar ke dalam perintah yang mengharapkan stdin
Adakah yang bisa menjelaskan cara command > file.log 2>&1kerjanya?
Cory Klein
Seberapa rendah level yang ingin Anda ketahui?
Matt Simmons
3
@nomoreink: sebenarnya 2 perintah, satu > filedan yang kedua 2>&1. Yang pertama mengarahkan standar keluar ke file. Yang kedua mengambil deskriptor file ke-2 dan mengarahkannya ke yang pertama. Anda dapat melakukan sebaliknya, mengarahkan output standar ke kesalahan standar menggunakan >&2dan kemudian mengarahkan kesalahan standar ke file dengan 2> file.
Hubert Kario
12
Menyembunyikan stdout
./command >/dev/null
Sembunyikan stdoutdanstderr
./command >/dev/null 2>&1
Sembunyikan stdoutdan stderrlepaskan terminal (jalankan perintah di latar belakang)
Ya, tentu saja, Babu. Maksud saya $ command &> / dev / null. Maafkan saya karena mengetik terlalu cepat untuk kebaikan saya sendiri.
Lucho
2
Untuk Mac OS X (10.6 "Snow Leopard"):
Jika Anda perlu menyembunyikan output tanpa membiarkan program mengetahuinya dengan memeriksa deskriptor file output / kesalahan Anda dapat mencoba menggunakan berikut ini di shell:
stty flusho; command ;stty -flusho
atau jika Anda hanya ingin menyembunyikan input dari terminal:
stty -echo; command ;stty echo
Lihat halaman manual stty (1) untuk informasi lebih lanjut
Untuk Linux yang saya tahu adalah bahwa Ubunutu (10,04 "Lucid") dan beberapa "Debian / Arch" (komentar di bawah - tnx hendry) tidak memiliki flushopengaturan (dan saya tidak dapat melihat hal lain yang sesuai di halaman manual) . The echopengaturan bekerja pada Ubuntu pula.
Jawaban:
Anda dapat mengarahkan output dari program apa pun sehingga tidak akan terlihat.
Ini akan mengarahkan output standar - Anda masih akan melihat kesalahan
Ini akan mengarahkan semua output, termasuk kesalahan.
sumber
wget
Anda dapat menggunakan-q
opsi untuk membuatnya tenang.Ada tiga perangkat IO yang tersedia di baris perintah.
Untuk mengalihkan standar keluar (output default) ke file (dan menimpa file), gunakan
Untuk menambahkan file.log, gunakan 2> s
untuk mengarahkan ulang kesalahan standar ke file.log, gunakan
dan untuk menambahkan
Untuk menggabungkan output menjadi satu aliran dan mengirim semuanya ke satu tempat
Ini mengirimkan 2 (stderr) menjadi 1 (stdout), dan mengirimkan stdout ke file.log
Perhatikan bahwa mungkin juga untuk mengarahkan ulang standar ke dalam perintah yang mengharapkan stdin
Sunting
Untuk lebih jelasnya, lihat Panduan Script Bash Lanjutan
sumber
command > file.log 2>&1
kerjanya?> file
dan yang kedua2>&1
. Yang pertama mengarahkan standar keluar ke file. Yang kedua mengambil deskriptor file ke-2 dan mengarahkannya ke yang pertama. Anda dapat melakukan sebaliknya, mengarahkan output standar ke kesalahan standar menggunakan>&2
dan kemudian mengarahkan kesalahan standar ke file dengan2> file
.Menyembunyikan
stdout
Sembunyikan
stdout
danstderr
Sembunyikan
stdout
danstderr
lepaskan terminal (jalankan perintah di latar belakang)sumber
Jika Anda hanya ingin menyembunyikan output (dan tidak menyimpannya ke file), Anda dapat menggunakan:
Diedit:
$ command &> / dev / null
sumber
Untuk Mac OS X (10.6 "Snow Leopard"):
Jika Anda perlu menyembunyikan output tanpa membiarkan program mengetahuinya dengan memeriksa deskriptor file output / kesalahan Anda dapat mencoba menggunakan berikut ini di shell:
atau jika Anda hanya ingin menyembunyikan input dari terminal:
Lihat halaman manual stty (1) untuk informasi lebih lanjut
Untuk Linux yang saya tahu adalah bahwa Ubunutu (10,04 "Lucid") dan beberapa "Debian / Arch" (komentar di bawah - tnx hendry) tidak memiliki
flusho
pengaturan (dan saya tidak dapat melihat hal lain yang sesuai di halaman manual) . Theecho
pengaturan bekerja pada Ubuntu pula.sumber