Aşağıdakiler yeni kullanıcılara yardımcı olmak için biraz daha basitleştirilmiştir.
İlk önce standart girdi ve standart çıktı kavramını anlamak gerekir.
Linux ve diğer UNIX benzeri işletim sistemlerinde, her işlemin bir standart girişi ( stdin
) ve standart bir çıkışı ( stdout
) vardır. Genel durum bu stdin
sizin klavyeniz ve stdout
ekranınız veya terminal pencerenizdir.
Bu yüzden kaçtığın zaman ls
, bunun çıktısını atar stdout
. Başka bir şey yapmazsanız, ekranınıza veya terminal pencerenize gider ve siz onu görürsünüz.
Şimdi, bazı Linux komutları kullanıcıyla etkileşime giriyor ve stdin
bunu yapmak için kullanıyor ; metin editörünüz bunlardan biri. stdin
Tuş vuruşlarınızı kabul etmek, bir şeyler yapmak ve ardından bir şeyler yazmak için okur stdout
.
Ancak, etkileşimli olarak çalışmayan, ancak bir demet veri isteyen etkileşimli olmayan veya "filtre" komutları da vardır. Bu komutlar herşeye stdin
sahip olacak , ona bir şey yapacak ve sonra ona fırlatacakstdout
Diyelim başka bir komuta bakalım du
- disk kullanımı için duruyor. du /usr
örneğin, ( stdout
diğer Linux komutlarını beğenmek için), bu dizindeki her dosyanın bir listesini ve boyutunu yazdıracaktır :
# du /usr
2312 /usr/games
124 /usr/lib/tc
692 /usr/lib/rygel-1.0
400 /usr/lib/apt/methods
40 /usr/lib/apt/solvers
444 /usr/lib/apt
6772 /usr/lib/gnash
Hemen yarasadan söyleyebileceğiniz gibi, sıralanmamıştır ve büyüklük sırasına göre sıralanmasını istersiniz.
sort
ondan bir sürü şey alacak stdin
ve sıralayacak olan "filtre" komutlarından biridir .
Yani, eğer bunu yaparsak:
# du /usr | sort -nr
Bunu daha iyi anlıyoruz:
4213348 /usr
2070308 /usr/lib
1747764 /usr/share
583668 /usr/lib/vmware
501700 /usr/share/locale
366476 /usr/lib/x86_64-linux-gnu
318660 /usr/lib/libreoffice
295388 /usr/lib/vmware/modules
290376 /usr/lib/vmware/modules/binary
279056 /usr/lib/libreoffice/program
216980 /usr/share/icons
Ve şimdi "boru" nun stdout
bir komutun stdin
diğerini diğerine bağladığını görebilirsiniz . Genellikle, komutun çıktısını filtrelemek, sıralamak ya da değiştirmek istediğiniz durumlarda bu gibi durumlarda kullanırsınız. Birden fazla filtre tipi komut aracılığıyla çıktıyı işlemek istiyorsanız bunlar basamaklandırılabilir.
sort
Kendi kendine yazarsanız , yine de okumaya çalışacaktır stdin
. Yana stdin
Denetim-D tuşlarına dek yazıp süreç işler için klavyenizin bağlanır, bu bekleyecek. Gerçekten de etkileşimli olarak kullanılmadığı için size bilgi vermeyecektir.
Bir programın stdin
etkileşimli olup olmadığını söylemesi mümkündür , bu nedenle bazı programlar bunları kendi başlarına veya bir borunun sonunda yayınlarsanız farklı davranabilir.
Ayrıca, yalnızca etkileşimli olarak çalışan bir programın oluşturulması, vi
kötü zaman geçirmenize neden olur.
Borular, hiçbir yerde saklanmadan verilerin bir komuttan diğerine karıştırıldığı yönlendirme işleminden farklıdır. Yani, yukarıdaki örnekte, du
çıktısı hiçbir yerde saklanmaz. Bunu borularla istemediğiniz zamanların çoğu, çünkü boruları kullanmanın nedeni bir komutun çıktısını bir şekilde işlemektir - ama, tee
pastanızı almanızı ve yemenizi sağlayan bir komut vardır. stdin
ikisinden aldıklarını stdout
ve seçtiğiniz bir dosyayı kopyalayın . Bunu, bash
bilmediğim bir işaret ve köşeli parantez içeren bazı gizli sözdizimi ile de yapabilirsiniz.
|
bir isim kullanmamasıdır, l-el komutundan çıkan çıktı doğrudan borunun el-tarafındaki komut girişine iletilir.