Redirection output dan spasi

9

Saya paranoid tentang ini, tapi mudah-mudahan ini pertanyaan sederhana:

Apakah ada perbedaan di antara keduanya

cat file1 | egrep -oP "[Mm]y string" > /home/user/file.txt

dan

cat file1|egrep -oP "[Mm]y string">/home/user/file.txt

yaitu, apakah penting jika saya memiliki spasi yang melapisi karakter pipa (|) dan redirection (>)? Saya benar-benar paranoid bahwa memiliki spasi di sana, spasi entah bagaimana akan berakhir di file output ketika saya tidak menginginkannya. Adakah yang bisa menjelaskan? (Menggunakan Ubuntu 12 / bash jika itu penting.)

Magnus
sumber
Satu-satunya perbedaan adalah a) kosmetik dan b) kenyamanan saat mengedit baris perintah di bash - misalnya "kata" dibatasi oleh spasi, jadi tanpa spasi di sekitar |atau >kemudian mengetik Ctrl-Wuntuk menghapus "kata" sebelumnya akan menghapus lebih dari yang mungkin Anda inginkan. juga untuk penekanan kursor-gerakan seperti Esc-fdan Esc-blain
cas

Jawaban:

8

Pada baris perintah shell, kuotasi ruang hanya melayani untuk kata-kata membatasi selama perintah parsing. Mereka tidak diteruskan, baik dalam argumen perintah melihat maupun dalam aliran input standar.

jw013
sumber
Apakah Anda yakin tidak ada kerentanan keamanan dengan menggunakan spasi setelah operator? Saya mengalami kesulitan mereproduksi sekarang, tetapi ada exploit umum di mana pengguna jahat dapat mengubah operasi yang dimaksud dengan menggunakan file seperti "fileName" ketika file yang dimaksud adalah "fileName".
CrippledTable