bash, bir kabuk olduğundan , bu çıktı verilerini yeniden yönlendirebileceğiniz 2 akışa sahiptir : stdout ve stderr, çünkü bu çıktının bir yere yeniden yönlendirilmesi gerekir, linux / dev / null aracılığıyla erişilebilen belirli bir 'her şeyi at' düğümü vardır . Oraya gönderdiğiniz her şey boşluğun içinde kaybolacak.
(kabukların da bir giriş akışı vardır, ancak çıktının bastırılmasını istediğiniz için burada bunu göz ardı edeceğim)
Bu akışlar sayılarla temsil edilir: stdout için 1 ve stderr için 2.
Yani, sadece stdout'u yeniden yönlendirmek istiyorsanız, bunu <ve >operatörleriyle yaparsınız (temelde işaret ettiği yer, verilerin aktığı yerdir)
standart çıktıyı bastırmak istediğimizi varsayalım (/ dev / null'a yönlendirin):
psql db -f sql.sql > /dev/null
Gördüğünüz gibi standart çıktı varsayılandır, yazacağınız akış numarasını kullanmak isterseniz hiçbir akış numarası kullanılmamıştır.
psql db -f sql.sql 1> /dev/null
Şimdi, gerilimi (akış numarası 2) bastırmak istiyorsanız,
psql db -f sql.sql 2> /dev/null
Ayrıca bir akışı diğerine, örneğin stderror'dan stdout'a yeniden yönlendirebilirsiniz; bu, tüm çıktıları bir yerde, normal ve hataları kaydetmek istiyorsanız kullanışlıdır.
psql db -f sql.sql 2>&1 > log.txt
Aralarında boşluk kalmamasına dikkat et 2>&1
Son olarak ve bazen en ilginç olanı, &>'tamamen sessiz' olmasını istediğinizde, kullanarak tüm çıktıları bastırabilmenizdir.
psql db -f sql.sql &> /dev/null
PAGER="/dev/null" psql db -P pager=always -f sql.sqlher zaman çıktıyı öldürmen gerekecek .