GNU/Linux >> Belajar Linux >  >> Linux

Baca dan tulis data dari mana saja dengan pengalihan di terminal Linux

Pengalihan input dan output adalah fungsi alami dari setiap bahasa pemrograman atau skrip. Secara teknis, itu terjadi secara inheren setiap kali Anda berinteraksi dengan komputer. Input dibaca dari stdin (input standar, biasanya keyboard atau mouse Anda), output masuk ke stdout (keluaran standar, teks atau aliran data), dan kesalahan dikirim ke stderr . Memahami bahwa aliran data ini ada memungkinkan Anda mengontrol ke mana informasi pergi saat Anda menggunakan shell, seperti Bash atau Zsh.

Standar masuk, keluar standar, dan kesalahan standar ada sebagai lokasi sistem file di Linux. Anda dapat melihatnya di /dev :

$ ls /dev/std*
/dev/stderr@  /dev/stdin@  /dev/stdout@

Anda tidak dapat melakukan banyak hal dengannya secara langsung, tetapi terkadang berguna untuk menganggapnya sebagai lokasi meta tempat Anda dapat mengirim data.

Dasar-dasar pengalihan sederhana:gunakan sejumlah > karakter untuk mengarahkan output, dan sejumlah < karakter untuk mengarahkan input.

Mengalihkan output

Untuk menulis output dari perintah ls ke file:

$ ls > list.txt

Anda tidak melihat keluaran ls seperti biasa, karena output ditulis ke list.txt file alih-alih layar Anda. Ini sangat serbaguna, bahkan Anda dapat menggunakannya untuk menyalin konten dari satu file ke file lainnya. Itu juga tidak harus berupa file teks. Anda dapat menggunakan pengalihan untuk data biner:

$ cat image.png > picture.png

(Jika Anda bertanya-tanya mengapa Anda ingin melakukan itu, hal itu terkadang berguna untuk memengaruhi izin file.)

Mengalihkan input

Anda juga dapat mengarahkan input "ke" perintah. Ini bisa dibilang kurang berguna daripada mengarahkan output karena banyak perintah sudah dikodekan untuk mengambil input dari argumen yang Anda berikan. Akan tetapi, ini dapat berguna, ketika sebuah perintah mengharapkan daftar argumen, dan Anda memiliki argumen tersebut dalam file dan ingin dengan cepat "menyalin dan menempel" mereka dari file ke terminal Anda (kecuali Anda sebenarnya tidak ingin menyalin dan tempel):

$ sudo dnf install $(<package.list)

Penggunaan umum dari pengalihan input adalah dokumen di sini (atau cukup di sini-dok singkatnya) dan disini-string teknik. Metode input ini mengalihkan blok teks ke aliran input standar, hingga penanda akhir file khusus (kebanyakan orang menggunakan EOF , tetapi bisa berupa string apa pun yang Anda harapkan unik). Coba ketik ini (hingga contoh kedua EOF ) ke terminal:

$ echo << EOF
> foo
> bar
> baz
> EOF

Hasil yang diharapkan:

foo
bar
baz

di sini-dok adalah trik umum yang digunakan oleh skrip Bash untuk membuang beberapa baris teks ke dalam file atau ke layar. Selama Anda tidak lupa untuk mengakhiri klausa dengan penanda akhir file Anda, ini adalah cara yang efektif untuk menghindari daftar echo yang berat. atau printf pernyataan.

string di sini mirip dengan di sini-doc , tetapi hanya terdiri dari satu string (atau beberapa string yang disamarkan sebagai string tunggal dengan tanda kutip):

$ cat <<< "foo bar baz"
foo bar baz

Mengalihkan pesan kesalahan

Pesan kesalahan masuk ke aliran yang disebut stderr , ditunjuk sebagai 2> untuk tujuan pengalihan. Perintah ini mengarahkan pesan kesalahan ke file bernama output.log :

$ ls /nope 2> output.log

Mengirim data ke /dev/null

Selengkapnya tentang Bash

  • Lembar contekan bash
  • Pengantar pemrograman dengan Bash
  • Panduan sysadmin untuk skrip Bash
  • Artikel Bash terbaru

Sama seperti ada lokasi untuk masuk standar, keluar standar, dan kesalahan, ada juga lokasi untuk tidak ada tempat pada sistem file Linux. Ini disebut null , dan terletak di /dev , sehingga sering diucapkan "devnull" oleh orang yang terlalu sering menggunakannya untuk mengatakan "slash dev slash null".

Anda dapat mengirim data ke /dev/null menggunakan pengalihan. Misalnya, find perintah cenderung bertele-tele, dan sering kali melaporkan konflik izin saat menelusuri file Anda:

$ find ~ -type f 
/home/seth/actual.file
find: `/home/seth/foggy': Permission denied
find: `/home/seth/groggy': Permission denied
find: `/home/seth/soggy': Permission denied
/home/seth/zzz.file

find perintah memproses itu sebagai kesalahan, sehingga Anda dapat mengarahkan hanya pesan kesalahan ke /dev/null :

$ find ~ -type f 2> /dev/null
/home/seth/actual.file
/home/seth/zzz.file

Menggunakan pengalihan

Pengalihan adalah cara yang efisien untuk mendapatkan data dari satu tempat ke tempat lain di Bash. Anda mungkin tidak menggunakan pengalihan sepanjang waktu, tetapi belajar menggunakannya saat Anda membutuhkannya dapat menghemat banyak file pembuka yang tidak perlu dan menyalin dan menempelkan data, yang semuanya umumnya memerlukan gerakan mouse dan banyak penekanan tombol. Jangan menggunakan cara ekstrem seperti itu. Jalani kehidupan yang baik dan gunakan pengalihan.


Linux
  1. Salin file di terminal Linux

  2. Ganti nama file di terminal Linux

  3. Pindahkan file di terminal Linux

  1. Salin dan tempel di baris perintah Linux dengan xclip

  2. Bekerja dengan Input Output dan Error Redirection di Linux

  3. Cara menangkap sesi terminal dan output dengan perintah skrip Linux

  1. Pengalihan Input/Output di Linux/Unix

  2. Baca Dan Tulis Ke File Yang Sama Di Linux Tanpa Menimpanya??

  3. Bagaimana saya bisa membuat tcpdump menulis ke file dan menghasilkan data standar yang sesuai?