Saya mendengar tentang "penggunaan kucing yang tidak berguna" dan menemukan beberapa saran, tetapi berikut ini tidak menghasilkan apa-apa di bash shell saya.
< filename
Namun, menggunakan kucing berfungsi seperti yang diharapkan.
cat filename
Saya menggunakan Fedora Core 18 dan GNU bash, versi 4.2.45 (1).
EDIT: Menggunakannya di depan pipa juga tidak berhasil.
< filename | grep pattern
Padahal menggunakan kucing berfungsi seperti yang diharapkan.
cat filename | grep pattern
EDIT2: Untuk memperjelas, saya tahu saya bisa menggunakan ini
grep pattern < filename
tapi saya baca di sini /programming/11710552/useless-use-of-cat bahwa saya juga bisa menggunakannya di depan perintah. Itu tidak bekerja di depan perintah sekalipun.
bash
shell
io-redirection
cat
bug
sumber
sumber
Jawaban:
Yang kurang dari dan simbol (
<
) adalah membuka file dan melampirkannya ke pegangan perangkat input standar dari beberapa aplikasi / program. Tetapi Anda belum memberikan aplikasi apa pun untuk dilampirkan pada shell.Contoh
2 contoh ini pada dasarnya melakukan hal yang sama tetapi mendapatkan masukan mereka dalam 2 cara yang sedikit berbeda.
membuka file
membuka STDIN
Mengintip di balik tirai
Anda dapat menggunakan
strace
untuk melihat apa yang terjadi.Ketika kami membaca dari file
Ketika kami membaca dari STDIN (diidentifikasi sebagai 0)
Dalam contoh pertama kita dapat melihat bahwa
cat
membuka file dan membaca darinyablah.txt
,. Di bagian kedua kita dapat melihat yangcat
membaca isi fileblah.txt
melalui deskriptor file STDIN, diidentifikasi sebagai deskriptor nomor 0.sumber
cat
umumnya disalahpahami dan digunakan saat itu tidak perlu.< filename command
.Penggunaan klasik yang tidak berguna
cat
adalah ketika Anda menggunakannya untuk memberikan input ke program yang mampu membuka file secara langsung. Sebagai contoh:Buruk
Baik
Juga bagus (
<file
bisa di kedua sisi perintah)sumber
cat
.cat
termasuk (1)cat file
(dengan output ke layar / terminal; meskipun, jika file lebih panjang dari layar tinggi, Anda mungkin lebih suka menggunakanmore
atauless
atau sesuatu seperti itu), (2)cat file1 file2 file3 > all_data
( persis apa yangcat
dimaksudkan untuk), (3)cat f1 f2 f3 | tr …
(atau pipa ke program lain yang Anda tidak ingin melewatkan file untuk langsung, misalnya,wc
(misalnya, jika Anda ingin melihat grand keseluruhan saja) ataugrep
(misalnya, jika Anda memiliki versi lama yang tidak mendukung-h
, yaitu,--no-filename
)), ... (Lanjutan)cat -n file | sort … -k1 | sed 's/^ *[0-9]*\t//'
, (5)sudo cat file600 | untrusted_program
(yaitu, Anda (UID Anda) tidak dapat membaca file, dan Anda tidak ingin menjalankan program sebagai root atau bahkan UID semi-privilege). Juga, ( e ) (yaitu, angka antara 2 dan 3)program_that_generates_html | cat static_html_header - static_html_footer
(yang Anda mungkin ingin redirect ke file atau pipa).UUOC ada di:
atau
Di sana,
some-cmd
membaca konten darisomefile
pipa yang diumpankan dengancat
mana ia membacanyasomefile
.some-cmd
dapat membaca langsung darisomefile
(setelah shell membukanya di stdin), tidak perlucat
:atau
(pengalihan dapat muncul di mana saja di baris perintah sederhana).
sumber