GNU/Linux >> Belajar Linux >  >> Linux

Perbedaan Antara 2>&-, 2>/dev/null, |&, &>/dev/null Dan>/dev/null 2>&1?

Hanya mencari perbedaan antara

  • 2>&-
  • 2>/dev/null
  • |&
  • &>/dev/null
  • >/dev/null 2>&1

dan portabilitasnya dengan shell non-Bourne seperti tcsh , mksh , dll.

Jawaban yang Diterima:

Untuk latar belakang:

  • sebuah nomor 1 =keluaran standar (yaitu STDOUT)
  • sebuah nomor 2 =kesalahan standar (yaitu STDERR)
  • jika suatu angka tidak diberikan secara eksplisit, maka angka 1 diasumsikan oleh shell (bash)

Pertama mari kita bahas fungsi dari ini. Untuk referensi, lihat Panduan Pembuatan Skrip Bash Tingkat Lanjut.

Fungsi

2>&-

Bentuk umum dari yang satu ini adalah M>&- , di mana “M” adalah nomor deskriptor file. Ini akan menutup output untuk deskriptor file mana pun yang dirujuk, yaitu “M” .

2>/dev/null

Bentuk umum dari yang satu ini adalah M>/dev/null , di mana “M” adalah nomor deskriptor file. Ini akan mengalihkan deskriptor file, “M” , ke /dev/null .

2>&1

Bentuk umum dari yang satu ini adalah M>&N , di mana “M” &“T” adalah nomor deskriptor file. Ini menggabungkan output dari deskriptor file “M” dan “N” menjadi satu aliran.

|&

Ini hanya singkatan dari 2>&1 | . Itu ditambahkan di Bash 4.

&>/dev/null

Ini hanya singkatan dari >/dev/null 2>&1 . Ini mengarahkan deskriptor file 2 (STDERR) dan deskriptor 1 (STDOUT) ke /dev/null .

>/dev/null

Ini hanya singkatan dari 1>/dev/null . Ini mengarahkan deskriptor file 1 (STDOUT) ke /dev/null .

Portabilitas ke non-bash, tcsh, mksh, dll.

Saya tidak banyak berurusan dengan shell lain di luar csh dan tcsh . Pengalaman saya dengan 2 itu dibandingkan dengan operator pengalihan bash, adalah bahwa bash lebih unggul dalam hal itu. Lihat halaman manual tcsh untuk detail lebih lanjut.

Dari perintah yang Anda tanyakan tidak ada yang secara langsung didukung oleh csh/tcsh. Anda harus menggunakan sintaks yang berbeda untuk membuat fungsi serupa.


Linux
  1. Perbedaan Antara [[ $a ==Z* ]] Dan [ $a ==Z* ]?

  2. Apa Perbedaan Antara /sbin/nologin Dan /bin/false?

  3. Perbedaan Antara /opt Dan /usr/local?

  1. Perbedaan Antara '$ . Foo' Dan '$ ./foo'??

  2. Perbedaan antara /etc/crontab dan crontab -e

  3. DD dari /dev/zero ke /dev/null...apa yang sebenarnya terjadi

  1. Perbedaan antara /bin dan /usr/bin

  2. kernel:menonaktifkan /dev/kmem dan /dev/mem

  3. Apa perbedaan antara /tmp dan /run?