Yanıtlar:
> Operatörü çıkışı genellikle bir dosyaya yönlendirir, ancak bir cihaza olabilir. Eklemek için >> de kullanabilirsiniz.
Bir sayı belirtmezseniz, standart çıkış akışının kabul edilir, ancak hataları da yönlendirebilirsiniz
> file
stdout'u dosyaya
1> file
yönlendirir stdout'u dosyaya
2> file
yönlendirir stderr'i dosyaya
&> file
yönlendirir stdout'u ve stderr'i dosyaya yönlendirir
/dev/null
sıfır aygıtı, istediğiniz girişi alır ve çöpe atar. Herhangi bir çıkışı bastırmak için kullanılabilir.
2>&1
eski bir sözdizimi olduğunu sanmıyorum, bu yüzden &>
yıllar önce işe yaramazdı ama ikisi de eşdeğerdir.
Kısacası, stderr
(fd 2) 'yi kara deliğe yönlendirir (komutun çıktısını atar).
Yeniden yönlendirme için bazı daha yaygın kullanım durumları:
command > /dev/null 2>&1 &
command
Arka planda çalıştırın , atın stdout
vestderr
command >> /path/to/log 2>&1 &
command
Stdout ve stderr komutunu çalıştırın ve bir günlük dosyasına ekleyin.
Bash 4+ 'de, daha kısa (ancak daha az okunabilir) bir form işlevseldir.
command &>> /path/to/log
> /dev/null 2>&1
yerine &> /dev/null
?
&>
Bash 4'te yeni, eski sadece geleneksel yol, sadece buna alışkınım (hatırlaması kolay).
&> /dev/null
bazı kabukları ama> / dev / null 2> & 1 tüm POSIX uyumlu kabukları çalışacak çalışmayabilir.
fn>target
, nerede fn
bir dosya numarası (0-2 tipik, bazı programlar daha fazla sayı tanımlamak) ve target
öneki - genellikle bir dosya adıdır ama burada başka filenumber olduğunu &
hangi "Bir dosya adı yerine dosya numarası istiyorum" için sözdizimi.
/dev/null
Linux / Unix'te karadelik olarak kabul edilir, bu yüzden buna bir şey koyabilirsin ama onu geri alamazsın /dev/null
.
Ayrıca, stderr'i (yani ) kara deliğe (yani ) 2>
yönlendirdiğiniz (yani >
) olduğunuz anlamına gelir2
/dev/null
Emriniz:
grep -i 'abc' content 2>/dev/null
Bunun gibi başka bir eğik çizgi ile bitmeye çalışmayın - 2>/dev/null/
(bu bir dizin değil).
grep -i 'abc' içeriği, herhangi bir hata dahil olmak üzere konsolunuzda görüntülenen çıktıyı üretecektir.
Belirlemek 2>/dev/null
, hataları filtrelendirecaktır, böylece konsolunuza gönderilmeyecektir.
Daha detaylı olarak: 2, hataların yazıldığı hata tanımlayıcısını temsil eder. Varsayılan olarak konsolda yazdırılırlar.
\>
çıktıyı belirtilen yere yönlendirir, bu durumda /dev/null
/dev/null
ihmal etmek istediğiniz çıktıyı gönderdiğiniz standart Linux aygıtıdır.
> /dev/null 2>&1
ve arasında bir fark var mı&> /dev/null