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.
Cara mengatur penerusan port dinamis SSH di Linux
7 fitur wadah/transportasi gambar Linux yang menyenangkan
Linux
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.