Pertama, catmenulis ke output standar, yang belum tentu terminal, bahkan jika catdiketik sebagai bagian dari perintah ke shell interaktif. Jika Anda benar-benar membutuhkan sesuatu untuk ditulis ke terminal bahkan ketika output standar dialihkan, itu tidak mudah (Anda perlu menentukan terminal mana, dan mungkin bahkan tidak ada satu jika perintah dijalankan dari skrip), meskipun satu dapat (ab) menggunakan output kesalahan standar jika perintah hanyalah bagian dari pipa. Tetapi karena Anda menunjukkan bahwa catsebenarnya melakukan pekerjaan itu, saya kira Anda tidak bertanya tentang situasi seperti itu.
Jika tujuan Anda adalah mengirimkan apa yang ditulis ke output standar ke dalam pipa, maka menggunakan catakan memenuhi syarat untuk Penggunaan Cat Award yang Tidak Berguna , karena cat file | pipeline(di mana pipelinesingkatan dari pipa apa pun) dapat dilakukan dengan lebih efisien <file pipeline. Tetapi sekali lagi, dari kata-kata Anda, saya menyimpulkan bahwa ini bukan niat Anda.
Jadi tidak begitu jelas apa yang Anda khawatirkan. Jika Anda merasa catterlalu lama untuk mengetik, Anda dapat mendefinisikan alias satu atau dua karakter (masih ada beberapa nama seperti itu yang tetap tidak digunakan dalam Unix standar). Namun jika Anda khawatir catmenghabiskan siklus yang tidak berguna, Anda seharusnya tidak melakukannya.
Jika ada program nullyang tidak menggunakan argumen dan hanya menyalin input standar ke output standar (objek netral untuk jaringan pipa), Anda dapat melakukan apa yang Anda inginkan <file null. Tidak ada program seperti itu, meskipun akan mudah untuk menulis (program C dengan mainfungsi satu-baris dapat melakukan pekerjaan itu), tetapi memanggil cattanpa argumen (atau cat -jika Anda ingin secara eksplisit) melakukan hal itu.
Jika ada nocatprogram yang mengambil tepat satu argumen nama file, mencoba untuk membuka file, mengeluh jika tidak bisa, dan sebaliknya mulai menyalin dari file ke output standar, maka itu akan menjadi apa yang Anda minta. Hanya sedikit lebih sulit untuk menulis daripada null, pekerjaan utama adalah membuka file, menguji, dan mungkin mengeluh (jika Anda teliti, Anda mungkin juga ingin memasukkan tes bahwa ada satu argumen, dan mengeluh sebaliknya). Tetapi sekali lagi cat, sekarang disediakan dengan satu argumen, tidak hanya itu, sehingga tidak perlu untuk nocatprogram apa pun .
Setelah Anda berhasil menulis nocatprogram, mengapa berhenti pada satu argumen? Membungkus kode ke dalam loop for(;*argp!=NULL;++argp)benar-benar tidak ada usaha sama sekali, menambahkan paling banyak beberapa instruksi mesin ke biner, dan menghindari keharusan mengeluh tentang sejumlah argumen yang salah (yang menyimpan lebih banyak instruksi). Merusak versi primitif dari cat, menyatukan file. (Sejujurnya Anda perlu men-tweak sedikit sehingga tanpa argumen berperilaku seperti itu null.)
Tentu saja dalam catprogram yang sebenarnya , mereka menambahkan beberapa lonceng dan peluit, karena mereka selalu melakukannya. Tetapi intinya adalah bahwa aspek "gabungan" dari catbiaya benar-benar tidak ada usaha sama sekali, baik untuk programmer maupun untuk mesin yang mengeksekusinya. Fakta yang catmerangkum nulldan nocatmenjelaskan tidak adanya program tersebut. Hindari menggunakan catdengan argumen tunggal jika hasilnya masuk ke jalur pipa, tetapi jika itu digunakan hanya untuk menampilkan konten file di terminal, bahkan halaman yang saya tautkan untuk mengakui bahwa ini adalah penggunaan yang bermanfaat cat, jadi jangan ragu.
Anda dapat menguji yang catbenar-benar diimplementasikan oleh loop sederhana di sekitar nocatfungsi hypthetical , dengan memanggil catdengan beberapa nama file yang salah satu nama tidak valid, bukan pada posisi pertama: daripada mengeluh segera bahwa file ini tidak ada, catpertama-tama dump terlebih dahulu sebelumnya file yang valid, dan kemudian mengeluh tentang file yang tidak valid (setidaknya itulah perilaku kucing saya).