Saya telah melihat history | grep blah
dan history |grep blah
; dan history|grep blah
juga berfungsi, meskipun sepertinya tidak ada yang menggunakannya.
Apakah ada signifikansi dalam spasi (mis. Pemipaan ke / dari perintah yang berbeda memerlukan penggunaan spasi yang berbeda), atau apakah itu selalu arbitrer?
|
pipa atau;
titik koma digunakan oleh sebagian besar shell (bash, ksh, tcsh) sebagai pemisah perintah. ketika tidak terlampir dalam kutipan ruang putih sebelum dan sesudahnya tidak sopan.Jawaban:
bash
mendefinisikan beberapa metakarakter . Dariman bash
:Karena metakarakter memisahkan kata, tidak masalah apakah mereka dikelilingi oleh spasi. Simbol pipa
|
,, adalah metacharacter dan karenanya, seperti yang Anda perhatikan, tidak memerlukan spasi di sekitarnya.Perhatikan bahwa
[
,]
,{
,}
, dan=
yang tidak metakarakter. Makna mereka, sebaliknya, sangat bergantung pada apakah mereka dikelilingi oleh kekosongan.Contoh kapan ruang dan tidak diperlukan
Seperti yang Anda perhatikan, tidak masalah apakah
|
dikelilingi oleh ruang. Mari kita perhatikan beberapa contoh yang biasanya membingungkan pengguna bash. Mempertimbangkan:Parens di atas memaksa
date
perintah untuk dijalankan dalam subkulit. Karena(
dan)
merupakan metakarakter, tidak diperlukan spasi. Sebaliknya:Karena
{
dan}
yang tidak metakarakter, memperlakukan shell{date}
sebagai satu kata. Alih-alih mencaridate
perintah, itu mencari perintah bernama{date}
. Karena tidak menemukan satu, hasil kesalahan.Masalah umum lainnya adalah
test
perintah. Berikut ini berhasil:Hapus spasi dan terjadi kesalahan:
Karena
[
dan]
yang tidak metakarakter, shell memperlakukan[.bashrc]
sebagai satu kata dan hasilnya, seperti didate
contoh, adalah kesalahan.Pernyataan penugasan juga sensitif terhadap spasi. Tugas berikut berhasil:
Tambahkan spasi dan tugas gagal:
Di atas, shell untuk sementara
v
mengosongkan dan menjalankandate
perintah.Tambahkan spasi sebelum
=
juga menyebabkan kegagalan tetapi karena alasan yang berbeda:Di sini, shell mencoba mengeksekusi perintah
v
dengan argumen=date
. Kesalahannya adalah karena tidak ditemukan perintah bernamav
.sumber
=
. Butuh waktu beberapa saat untuk debug.Pipa memungkinkan Anda menggunakan output dari program sebagai input dari yang lain ...
Sejauh ruang, itu hanya masalah keterbacaan / preferensi personil seperti @jasonwryan disebutkan.
Satu spasi-sebelum dan sesudah "|" adalah norma ....
Anda juga dapat menggunakannya dengan kolom -t, untuk tidak hanya membuat satu liner Anda rapi, tetapi juga output Anda.
sumber
Ada satu kasus di mana berguna untuk tidak menggunakan spasi. Jika Anda tidak menggunakan tata letak AS-Amerika, Anda mungkin terpaksa menggunakan beberapa kombinasi seperti AltShiftLuntuk memasukkan pipa. Meskipun ini bukan masalah semata, satu konsekuensi adalah bahwa kadang-kadang Anda juga memasukkan karakter yang tidak dicetak sebelum atau setelah karakter itu. Sebagai contoh, pada keyboard Macbook Pro Perancis, saya harus menggunakan AltShiftLinput
|
. Ketika Anda mengetik dengan cepat, Anda dapat secara tidak sengaja mengetik ini: AltShift( L, Space)Jika Anda tidak mengetahui bahwa AltShiftSpacememasukkan spasi yang berbeda (ruang tanpa putus ( U + 00A0 )), kesalahan berikut mungkin sulit dipahami:
zsh: command not found: tail
sumber
Satu-satunya signifikansi ruang dalam hal ini adalah estetika.
Atau dengan kata lain berguna untuk membuat perintah lebih mudah dibaca oleh manusia.
sumber