Kabuk cat, komut satırındaki komutu çalıştırmadan önce yönlendirmeleri arar.
İki yönlendirme var:
>file1 Bu komutun standart çıktısına gitmesini sağlayacaktır file1.
<file2 Bu komutun standart girişinin gelmesini sağlayacaktır file2.
Bu yönlendirmelerin komut satırında çok garip bir yere yerleştirilmesi önemli değil.
$ cat <file2 >file1
aynıdır
$ <file2 cat >file1
hangisi aynı
$ <file2 >file1 cat
etc.¹
Not catBu durumlarda tüm yardımcı yürütülür herhangi bir komut satırı değişkenleri olmadan . Yönlendirmeler catkomuta işlenen değildir, komutun içine ve dışına yeniden yönlendirme ayarlamak için kabuğa talimatlardır (standart giriş ve çıkışını dosyalara bağlar). Kabuk , komutu çağırmadan önce yönlendirmeleri ayarlar .
Arasındaki fark cat fileve cat <file(, eğer olacak ya da <file cat) olup, ilk durumda, bir catkendini okuma için, komut hattı üzerinde bir işlemci olarak verilir dosyayı açıyor yardımcı olurken, ikinci durumda, kabuk olacak dosyayı açın ve catgiriş akışını ²'ye bağlayın. İkinci durumda, catdosya işleneni verilmediğini fark edecek ve otomatik olarak standart girişinden okumaya geçecektir. Bu, cattüm yardımcı programların yaptığı bir özellik değil, diğer bazı yardımcı programların bir özelliğidir .
catEğer operand verilirse standart girdilerinden de okuyacaktır -. Yine, bu sadece catve diğer bazı yardımcı programlara (yani kabuğun yaptığı hiçbir şeye ) özeldir . Kullanmak için catadı geçerli dizinde bir dosya üzerinde olduğu - gibi, dosya adına bir yolunu ekleyin ./-.
Circumstances Yönlendirmelerin sırası bazı durumlarda hala önemlidir; İle cat <file2 >file1örneğin, file1eğer fazlalıklar atılacak değil file2erişilemez (yönlendirmeler soldan sağa çözümlenir). catBununla birlikte , kelimenin göreceli yerleşimi isteğe bağlıdır ve bunu etkilemeyecektir.
² Ayrıca “ kedi mevcut olmayan bir dosyayı açarken farklı hatalar veriyor ” sorusuna bakın .
Kabuğun, komut satırında komutu bile çalıştırmadan önce yönlendirmeleri oluşturması, bunun gibi şeylerin neden başarısız olduğunu ve boş bir çıktı dosyası oluşturduğunuzu gösterir:
$ sort file >file
Burada kabuk, standart çıktısını fileçalıştırmadan sort fileve dosyaya bağlamadan önce dosyayı kesecek (boş) sort. Yardımcı sortprogram daha sonra açılacak fileve içeriğini sıralayacaktır (bu hiçbir şey değildir). Sonuç (hiçbir şey), standart çıkış akışından 'ye geçirilir file.
Bu özel durumda çözüm (bir dosyayı "yerinde" sıralamak için)
$ sort -o file file
veya
$ sort file >file.sorted && mv file.sorted file
Bu çıktı dosyası adını belirtmek için dosyayı sortkullanırken ne kadar az -omı?
Yönlendirmelerin komut satırındaki yardımcı programın asıl adından önce gelebileceği ifadesini yedeklemek için:
Bir "basit komut", isteğe bağlı olarak bir kontrol operatörü tarafından sonlandırılan kelimeler ve yönlendirmelerin takip ettiği herhangi bir sırada isteğe bağlı değişken atama ve yönlendirmelerinin bir dizisidir. [ref: POSIX Kabuk Komut Dili 2.9.1 Basit Komutlar]
Ve ayrıca yönlendirme ile ilgili olarak yardımcı programın işleçlerinin bir parçası olmamaları:
İsteğe bağlı numara, yönlendirme operatörü ve kelime, yürütülecek komuta verilen (varsa) argümanlarda görünmeyecektir. [ref: POSIX Kabuk Komut Dili 2.7 Yönlendirme]