GNU/Linux >> Belajar Linux >  >> Linux

Apa itu '/dev/null 2&1' di Linux?

/dev/null adalah file pseudo-device di Linux, yang digunakan untuk membuang keluaran yang berasal dari program, terutama yang dijalankan pada baris perintah. File ini berperilaku seperti sink, yaitu file target yang dapat ditulis, namun begitu aliran data apa pun ditulis ke file ini, file tersebut akan segera dihapus.

Hal ini berguna untuk menghilangkan output yang tidak dibutuhkan oleh pengguna. Program dan proses dapat menghasilkan log keluaran yang sangat panjang, dan terkadang menjadi berantakan untuk menganalisis log.

Misalnya, terkadang ada dua kesalahan yang dilemparkan oleh suatu program, tetapi log kesalahan hilang di antara ratusan log pesan informasi. Dalam kasus seperti itu, kami dapat membuang log pesan informasi ke /dev/null .

Dalam contoh di atas, keluaran kesalahan oleh sebuah program disebut STDERR (Kesalahan Standar ) di Linux dan diwakili oleh bilangan bulat ‘2’ , sedangkan keberhasilan dan keluaran informasi disebut STDOUT (Keluaran Standar ), dan diwakili oleh bilangan bulat ‘1’ .

Sekarang, Anda mungkin sering melihat pernyataan baris perintah berikut, yang membuang STDERR dan STDOUT ke /dev/null .

$ command_name > /dev/null 2>&1

Mari kita coba memahami apa artinya ini.

Operator '>' disebut operator pengalihan. Ini mengarahkan output ke file yang ditentukan setelahnya, yang dalam hal ini adalah /dev/null , alih-alih mencetaknya di terminal.

Apakah ini berarti SEMUA output dari perintah diarahkan ke /dev/null dengan '>' operator? Tidak. Saat digunakan seperti yang ditunjukkan di atas, operator hanya mengalihkan STDOUT .

Oleh karena itu, kami memiliki bagian terakhir dari perintah. '2>&1' berarti:mengalihkan STDERR (2) ke STDOUT (1) . Alasan kami harus menentukan ‘&1’ dan bukan hanya ‘1’ apakah itu hanya menulis ‘1’ akan mengarahkan output ke file teks dengan nama ‘1’ . Dengan ampersand (&) sistem mengenali bahwa 1 bukan nama file, tetapi deskriptor file STDOUT .

Jadi, kami mengalihkan STDOUT ke /dev/null dan STDERR ke STDOUT dan sedemikian rupa, keluaran lengkap program dibuang di /dev/null .

Misalnya, menjalankan perintah mv dengan dan tanpa ‘>/dev/null 2>&1’ .

Tanpa pengalihan:

$ mv tmp.txt test/tmp2.txt /tmp

Dengan pengalihan STDOUT:

$ mv tmp.txt test/tmp2.txt /tmp > /dev/null

Dengan pengalihan STDOUT dan STDERR:

$ mv tmp.txt test/tmp2.txt /tmp > /dev/null 2>&1
Kesimpulan

Dalam artikel ini, kami mencoba memahami apa arti dari frasa perintah yang populer digunakan di Linux:'> /dev/null 2>&1' . Jika Anda ingin mempelajari tentang ‘/dev/null ' secara lebih mendalam, Anda dapat melakukannya di sini.

Jika Anda memiliki pertanyaan atau komentar, beri tahu kami di komentar di bawah!


Linux
  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Seberapa Portabel /dev/stdin, /dev/stdout Dan /dev/stderr?

  3. Apa itu file /dev/zero dan /dev/null di Linux?

  1. Bagaimana cara menyalurkan /dev/urandom ke output suara linux?

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

  3. gema atau cetak /dev/stdin /dev/stdout /dev/stderr

  1. Linux:Perbedaan Antara /dev/console , /dev/tty Dan /dev/tty0?

  2. Kapan Menggunakan /dev/random Vs /dev/urandom?

  3. Apakah ada direktori yang setara dengan /dev/null di Linux?