GNU/Linux >> Belajar Linux >  >> Linux

Lima cara menggunakan operator redirect di Bash

Data dimasukkan ke komputer melalui stdin (biasanya keyboard), dan output yang dihasilkan masuk ke stdout (biasanya cangkang). Jalur ini disebut aliran . Namun, dimungkinkan untuk mengubah lokasi input dan output ini, menyebabkan komputer mendapatkan informasi dari tempat lain selain stdin atau kirim hasilnya ke tempat lain selain stdout . Fungsionalitas ini disebut sebagai pengalihan .

Dalam artikel ini, Anda akan mempelajari lima operator pengalihan, termasuk satu untuk stderr . Saya telah memberikan contoh masing-masing dan menyajikan materi dengan cara yang dapat Anda duplikasi di sistem Linux Anda sendiri.

Keluaran reguler> operator

Pengalih keluaran mungkin adalah operator yang paling dikenal. Keluaran standar (stdout ) biasanya ke jendela terminal. Misalnya, ketika Anda mengetikkan date perintah, output waktu dan tanggal yang dihasilkan ditampilkan di layar.

[damon@localhost ~]$ date
Tue Dec 29 04:07:37 PM MST 2020
[damon@localhost ~]$

Namun, dimungkinkan untuk mengarahkan ulang keluaran ini dari stdout ke tempat lain. Dalam hal ini, saya akan mengarahkan hasil ke file bernama specifications.txt . Saya akan mengonfirmasi itu berfungsi dengan menggunakan cat perintah untuk melihat isi file.

[damon@localhost ~]$ date > specifications.txt
[damon@localhost ~]$ cat specifications.txt 
Tue Dec 29 04:08:44 PM MST 2020
[damon@localhost ~]$ 

Masalah dengan > redirector adalah bahwa ia menimpa semua data yang ada dalam file. Pada tahap ini, Anda sekarang memiliki date informasi di specifications.txt berkas, kan? Jika Anda mengetik hostname > specifications.txt , output akan dikirim ke file teks, tetapi akan menimpa informasi waktu dan tanggal yang ada dari langkah sebelumnya.

[damon@localhost ~]$ hostname > specifications.txt 
[damon@localhost ~]$ cat specifications.txt 
localhost.localdomain
[damon@localhost ~]$ 

Sangat mudah untuk mendapatkan masalah dengan > redirector dengan tidak sengaja menimpa informasi yang ada.

[ Pembaca juga menikmati: 10 perintah dasar Linux yang perlu Anda ketahui ]

Penambahan keluaran reguler>> operator

Tambahkan >> operator menambahkan output ke konten yang ada alih-alih menimpanya. Ini memungkinkan Anda untuk mengarahkan output dari beberapa perintah ke satu file. Misalnya, saya dapat mengarahkan ulang output date dengan menggunakan > operator dan kemudian redirect hostname dan uname -r ke specifications.txt file dengan menggunakan >> operator.

[damon@localhost ~]$ date > specifications.txt
[damon@localhost ~]$ hostname >> specifications.txt 
[damon@localhost ~]$ uname -r >> specifications.txt 
[damon@localhost ~]$ cat specifications.txt 
Tue Dec 29 04:11:51 PM MST 2020
localhost.localdomain
5.9.16-200.fc33.x86_64
[damon@localhost ~]$ 

Catatan :>> redirector bahkan bekerja pada file kosong. Itu berarti Anda bisa saja

abaikan > regular biasa redirector untuk mengurangi potensi menimpa data, dan selalu mengandalkan >> redirector sebagai gantinya. Ini bukan kebiasaan buruk untuk dilakukan.

Masukan reguler

Pengalih input menarik data dalam aliran dari sumber tertentu. Biasanya, program menerima inputnya dari keyboard. Namun, data dapat diambil dari sumber lain, seperti file.

Saatnya membuat contoh dengan menggunakan sort memerintah. Pertama, buat file teks bernama mylist.txt yang berisi baris berikut:

cat
dog
horse
cow

Perhatikan bahwa hewan bukan terdaftar dalam urutan abjad.

Bagaimana jika Anda perlu membuat daftarnya secara berurutan? Anda dapat menarik konten file ke dalam sort perintah dengan menggunakan < operator.

[damon@localhost ~]$ sort < mylist.txt 
cat
cow
dog
horse
[damon@localhost ~]$ 

Anda bahkan bisa mendapatkan sedikit lebih bagus dan mengarahkan hasil yang diurutkan ke file baru:

[damon@localhost ~]$ sort < mylist.txt > alphabetical-file.txt
[damon@localhost ~]$ cat alphabetical-file.txt 
cat
cow
dog
horse
[damon@localhost ~]$ 

Kesalahan biasa 2> operator

stdout menampilkan hasil yang diharapkan. Jika kesalahan muncul, mereka dikelola secara berbeda. Kesalahan diberi label sebagai deskriptor file 2 (output standar adalah deskriptor file 1). Ketika sebuah program atau skrip tidak menghasilkan hasil yang diharapkan, itu menimbulkan kesalahan. Kesalahan biasanya dikirim ke stdout , tetapi dapat diarahkan ke tempat lain. stderr operatornya adalah 2> (untuk deskriptor file 2).

Berikut adalah contoh sederhana, menggunakan ping yang salah eja perintah:

[damon@localhost ~]$ png
bash: png: command not found...
[damon@localhost ~]$

Berikut adalah perintah salah eja yang sama dengan output kesalahan yang dialihkan ke /dev/null :

[damon@localhost ~]$ png 2> /dev/null
[damon@localhost ~]$ 

Pesan kesalahan yang dihasilkan dialihkan ke /dev/null bukannya stdout , jadi tidak ada hasil atau pesan kesalahan yang ditampilkan di layar.

Catatan :/dev/null , atau bit ember , digunakan sebagai tempat sampah untuk baris perintah. Output yang tidak diinginkan dapat diarahkan ke lokasi ini untuk membuatnya menghilang. Misalnya, mungkin Anda sedang menulis skrip, dan Anda ingin menguji beberapa fungsinya, tetapi Anda tahu itu akan menimbulkan kesalahan yang tidak Anda pedulikan pada tahap pengembangan ini. Anda dapat menjalankan skrip dan memintanya untuk mengarahkan kesalahan ke /dev/null untuk kenyamanan.

Pipa | operator

Ken Hess sudah memiliki artikel yang solid tentang penggunaan pipa | operator, jadi saya hanya akan menunjukkan demonstrasi yang sangat cepat di sini.

Pipa mengambil output dari perintah pertama dan menjadikannya input dari perintah kedua. Anda mungkin ingin melihat daftar semua direktori dan file di /etc direktori. Anda tahu itu akan menjadi daftar yang panjang dan sebagian besar output akan bergulir dari bagian atas layar. less perintah akan memecah output menjadi halaman, dan Anda kemudian dapat menggulir ke atas atau ke bawah melalui halaman untuk menampilkan hasilnya. Sintaksnya adalah untuk mengeluarkan ls perintah untuk membuat daftar isi /etc , lalu gunakan pipa untuk mengirim daftar itu ke less sehingga dapat dipecah menjadi beberapa halaman.

[damon@localhost ~]$ ls /etc | less

Artikel Ken memiliki banyak contoh hebat lainnya. Secara pribadi, saya menemukan diri saya menggunakan command | less dan command | grep string paling sering.

[ Unduh sekarang:Panduan sysadmin untuk skrip Bash. ] 

Menutup

Operator pengalihan sangat berguna, dan saya harap ringkasan singkat ini memberi Anda beberapa trik untuk memanipulasi input dan output. Kuncinya adalah untuk mengingat bahwa > operator akan menimpa data yang ada.


Linux
  1. Cara Menggunakan Nginx untuk Mengarahkan

  2. Gunakan $[ Ekspr ] Alih-alih $(( Ekspr ))?

  3. Gunakan Ekstensi .sh Atau .bash Untuk Skrip Bash?

  1. Shell Mana yang Harus Saya Gunakan – Tcsh Vs Bash??

  2. Apa gunanya $# di Bash

  3. Gunakan .bashrc tanpa merusak sftp

  1. Cara menggunakan perintah riwayat Bash

  2. Mengapa Saya Tidak Dapat Menggunakan Cd Dalam Skrip Bash??

  3. Cara yang Tidak Biasa untuk Menggunakan Variabel Di Dalam Skrip Bash