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 cat
Bu durumlarda tüm yardımcı yürütülür herhangi bir komut satırı değişkenleri olmadan . Yönlendirmeler cat
komuta 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 file
ve cat <file
(, eğer olacak ya da <file cat
) olup, ilk durumda, bir cat
kendini 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 cat
giriş akışını ²'ye bağlayın. İkinci durumda, cat
dosya işleneni verilmediğini fark edecek ve otomatik olarak standart girişinden okumaya geçecektir. Bu, cat
tüm yardımcı programların yaptığı bir özellik değil, diğer bazı yardımcı programların bir özelliğidir .
cat
Eğer operand verilirse standart girdilerinden de okuyacaktır -
. Yine, bu sadece cat
ve diğer bazı yardımcı programlara (yani kabuğun yaptığı hiçbir şeye ) özeldir . Kullanmak için cat
adı 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, file1
eğer fazlalıklar atılacak değil file2
erişilemez (yönlendirmeler soldan sağa çözümlenir). cat
Bununla 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 file
ve dosyaya bağlamadan önce dosyayı kesecek (boş) sort
. Yardımcı sort
program daha sonra açılacak file
ve 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ı sort
kullanırken ne kadar az -o
mı?
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]