Saya memiliki skrip bash yang membuat beberapa file menggunakan dd
. Masalahnya adalah dd melempar sejumlah besar output yang akan mengacaukan output dari skrip saya. Mencari-cari di sekitar saya menemukan solusi:
dd if=boot1h of="/dev/r$temp1" >& /dev/null
Apakah ada alternatif, atau mengarahkan ke /dev/null
satu-satunya cara?
/dev/null
- Anda sudoing karenadd
perlu akses tulis/dev/r$temp1
(saya berasumsi). Anda harus melakukan itu tidak masalah bagaimana Anda menekandd
output; mengalihkan keluaran ke/dev/null
tidak memerlukan rootcat
,head
atautail
sebagai gantinya.Jawaban:
Dari
dd(1)
halaman manual:demikian:
Ini masih menampilkan
sampah saat
dd
keluar, jadi mengarahkan kembali ke wastafel data adalah satu-satunya pilihan Anda.sumber
Tambahkan
status=none
:Dari dd (coreutils) 8.21 dokumen :
sumber
info page
; jawaban awal di sini memiliki kutipan yang tepat dariman page
. Saya akan menyalin / menempel langsung dariinfo
halaman jikaman
halamannya ambigu tapi sungguh, terserah Anda ... Oh, btw, terima kasih banyak atas komentar Anda yang lain atas jawaban saya terkait dengan pengurutan berdasarkan hari kerja.dd
tanpastatus=
)dd: invalid status flag: `none' Try `dd --help' for more information.
Untuk referensi di masa mendatang:
Untuk menekan output dd sepenuhnya mengarahkan stderr ke / dev / null seperti:
Ini berfungsi dengan baik jika Anda ingin, misalnya, mengatur waktu proses menggunakan perintah waktu dalam bash dan menetapkan hasilnya ke variabel, tanpa mendapatkan output apa pun yang dd hasilkan.
referensi: http://www.unix.com/shell-programming-and-scripting/131624-how-suppress-dd-output.html
sumber
Sesuatu seperti ini juga bisa digunakan untuk Anda dengan versi BASH dan ZSH terbaru:
PS Ini hanya contoh saya berlari ...
sumber
Dengan aplikasi atau perintah Unix apa pun, Anda dapat menekan semua output
cmd >/dev/null 2>&1
Bit pertama mengarahkan ulang output standar (unit nomor 1) ke / dev / null. Tetapi Anda perlu bagian kedua untuk JUGA redirect output kesalahan (unit nomor 2) ke tempat yang sama dengan nomor 1.
Dalam UNIX, STDIN = 0, STDOUT = 1 dan STDERR = 2
sumber
stderr
memiliki file deskriptor 2 . (Saya berasumsi "STDERR = 3" hanyalah salah ketik.)cmd 2>logfile.txt
tampaknya lebih disesuaikanJika saya mengerti benar apa yang Anda coba lakukan, apakah Anda memasukkan
sudo
perintah itu ke dalam skrip dan mengharapkan skrip untuk meminta kata sandi Anda ketika dijalankan di sana? Dalam hal ini Anda hanya melakukan hal-hal dengan cara yang rumit.Solusi yang lebih bersih adalah dengan menulis skrip dengan cara biasa (yaitu tanpa
sudo
) dan menjalankannya sebagai superuser . Alasan di balik ini adalah, jika skrip membutuhkan akses pengguna super, maka berikan saja aksesnya (mengapa menunggu sampai perintah tertentu?). Dalam skrip, untuk memeriksa apakah sedang dijalankan sebagai root, lakukan sesuatu seperti ini:sumber
sudo
di tempat pertama? Pengguna normal harus bisa mengarahkan hal-hal menjadi/dev/null
baik-baik saja.Anda dapat mengarahkan output ke file biasa yaitu:
sumber