bash, sebagai sebuah shell , memiliki 2 aliran, Anda dapat mengarahkan ulang data keluaran itu: stdout dan stderr, karena keluaran ini perlu diarahkan ke suatu tempat, linux memiliki simpul 'buang semuanya' yang dapat dicapai melalui / dev / null . Semua yang Anda kirim ke sana akan hilang begitu saja.
(kerang juga memiliki aliran input tetapi saya akan mengabaikan ini di sini karena Anda meminta untuk menekan output)
Aliran ini diwakili oleh angka: 1 untuk stdout dan 2 untuk stderr.
Jadi, jika Anda ingin mengarahkan ulang stdout, Anda akan melakukannya dengan operator <dan >(pada dasarnya menunjuk ke tempat data mengalir)
misalkan kita ingin menekan stdout (redirect ke / dev / null):
psql db -f sql.sql > /dev/null
Seperti yang Anda lihat ini stdout adalah default, tidak ada nomor aliran yang digunakan jika Anda ingin menggunakan nomor aliran yang akan Anda tulis
psql db -f sql.sql 1> /dev/null
Sekarang jika Anda ingin menekan stderror (streaming nomor 2), Anda akan menggunakannya
psql db -f sql.sql 2> /dev/null
Anda juga dapat mengalihkan satu aliran ke aliran lain, misalnya stderror ke stdout, yang berguna jika Anda ingin menyimpan semua output di suatu tempat, reguler dan kesalahan.
psql db -f sql.sql 2>&1 > log.txt
Pikiran Anda tidak mungkin ada ruang antara 2>&1
Akhirnya dan terkadang yang paling menarik adalah fakta bahwa Anda dapat menekan semua output dengan menggunakan &>, karena ketika Anda menginginkannya 'sangat sunyi'
psql db -f sql.sql &> /dev/null
PAGER="/dev/null" psql db -P pager=always -f sql.sqlmembuatnya selalu mematikan output.