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
> filestdout'u dosyaya
1> fileyönlendirir stdout'u dosyaya
2> fileyönlendirir stderr'i dosyaya
&> fileyönlendirir stdout'u ve stderr'i dosyaya yönlendirir
/dev/nullsıfır aygıtı, istediğiniz girişi alır ve çöpe atar. Herhangi bir çıkışı bastırmak için kullanılabilir.
2>&1eski 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 &
commandArka planda çalıştırın , atın stdoutvestderr
command >> /path/to/log 2>&1 &
commandStdout 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>&1yerine &> /dev/null?
&>Bash 4'te yeni, eski sadece geleneksel yol, sadece buna alışkınım (hatırlaması kolay).
&> /dev/nullbazı kabukları ama> / dev / null 2> & 1 tüm POSIX uyumlu kabukları çalışacak çalışmayabilir.
fn>target, nerede fnbir 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/nullLinux / 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>&1ve arasında bir fark var mı&> /dev/null