sort "$f1"
gagal untuk nilai $f1yang dimulai dengan -atau di sini untuk kasus sortbeberapa yang dimulai dengan +(dapat memiliki konsekuensi parah untuk file yang dipanggil -o/etc/passwdmisalnya).
sort -- "$f1"
(di mana -- menandakan akhir opsi) menangani sebagian besar masalah tersebut tetapi masih gagal untuk file yang dipanggil -(yang sortmenafsirkan sebagai stdin sebagai gantinya).
sort < "$f1"
Tidak memiliki masalah itu.
Di sini, itu shell yang membuka file. Ini juga berarti bahwa jika file tidak dapat dibuka, Anda juga akan mendapatkan pesan kesalahan yang berpotensi lebih berguna (misalnya, kebanyakan shell akan menunjukkan nomor baris dalam skrip), dan pesan kesalahan akan konsisten jika Anda menggunakan pengalihan sedapat mungkin untuk membuka file.
Dan masuk
sort < "$f1" > out
(bertentangan dengan sort -- "$f1" > out), jika "$f1"tidak dapat dibuka, outtidak akan dibuat / terpotong dan sortbahkan tidak dijalankan.
Untuk menghapus beberapa kebingungan yang mungkin terjadi (mengikuti komentar di bawah), itu tidak mencegah perintah mmap()untuk memasukkan file atau lseek()memasukkannya ke dalam file (tidak sortjuga melakukannya) asalkan file itu sendiri dapat dicari. Satu-satunya perbedaan adalah bahwa file dibuka sebelumnya dan pada deskriptor file 0 oleh shell sebagai lawan kemudian oleh perintah mungkin pada deskriptor file yang berbeda. Perintah masih dapat mencari / mmap fd 0 sesuka hati. Itu tidak menjadi bingung dengan di cat file | cmdmana cmdstdin kali ini adalah pipa yang tidak dapat dicari / dicari.