Latest web development tutorials

Shell input / output redirection

Sebagian besar sistem UNIX untuk menerima perintah dari input terminal dan output yang dihasilkan dikirim kembali ke terminal Anda. Perintah biasanya dibaca dari input lokal yang disebut standar input, secara default, ini terjadi menjadi terminal Anda. Demikian pula, perintah biasanya menulis output ke output standar, secara default, ini adalah terminal Anda.

Redirect daftar perintah adalah sebagai berikut:

perintah penjelasan
perintah> File Mengarahkan output ke file.
perintah <file Mengarahkan input ke file.
perintah >> File output yang akan diarahkan ke file menambahkan.
n> File File descriptor untuk file n diarahkan ke file.
n >> File File descriptor n untuk mengajukan cara-cara tambahan untuk mengarahkan file.
n> & m Output file m dan n digabung.
n <& m File input m dan n digabung.
<< Tag Awal tag dan tag akhir konten tag tag antara sebagai masukan.

Perhatikan bahwa file descriptor 0 biasanya standar input (STDIN), 1 adalah output standar (STDOUT), 2 adalah standard error keluaran (stderr).


output redirection

Redirect biasanya dengan antara perintah untuk menyisipkan simbol-simbol tertentu untuk mencapai. Secara khusus, simbol-simbol ini ditampilkan dalam sintaks berikut:

command1 > file1

Perintah di atas akan menjalankan command1 dan kemudian output konten yang disimpan di file1.

File1 Perhatikan bahwa setiap konten yang sudah ada akan digantikan oleh konten baru. Jika Anda ingin menambahkan konten baru pada akhir file, gunakan >> operator.

contoh

Jalankan perintah berikut yang menyelesaikan itu akan mengarahkan output dari perintah dalam file user (pengguna):

$ who > users

Setelah eksekusi, tidak ada output di terminal, itu karena output telah dialihkan dari bawaan standar perangkat output (terminal) ke file yang ditentukan.

Anda dapat menggunakan perintah cat untuk melihat isi dari file:

$ cat users
_mbsetupuser console  Oct 31 17:35 
tianqixin    console  Oct 31 17:35 
tianqixin    ttys000  Dec  1 11:33 

Output redirection menimpa isi file, lihat contoh berikut:

$ echo "本教程:www.w3big.com" > users
$ cat users
本教程:www.w3big.com
$

Jika Anda tidak ingin isi file yang ditimpa, Anda dapat menggunakan >> menambahkan ke file, misalnya:

$ echo "本教程:www.w3big.com" >> users
$ cat users
本教程:www.w3big.com
本教程:www.w3big.com
$

input redirection

Dan sebagai output redirection, Unix perintah dapat mengambil input dari sebuah file, sintaks adalah:

command1 < file1

Dengan demikian, kebutuhan asli untuk mendapatkan input dari keyboard akan ditransfer ke file perintah untuk membaca konten.

Catatan: Output redirection lebih besar dari simbol (>), input redirection kurang dari (<).

contoh

Kemudian contoh di atas, kita perlu menghitung jumlah file baris pengguna, jalankan perintah berikut:

$ wc -l users
       2 users

Anda juga dapat mengarahkan input file ke pengguna:

$  wc -l < users
       2 

Catatan: Hasil di atas dua contoh yang berbeda: contoh pertama, nama file output akan, yang kedua akan tidak, karena yang tahu hanya membaca dari input standar.

command1 < infile > outfile

Mengganti kedua input dan output, menjalankan command1, infile membaca dari file, dan kemudian menulis output ke outfile tersebut.

Mengarahkan penjelasan mendalam

Dalam keadaan normal, setiap perintah berjalan Unix / Linux akan membuka tiga file:

  • Standar input file (stdin): stdin file descriptor ke 0, program default Unix membaca data dari stdin.
  • Standar file output (stdout): stdout ke file descriptor 1, default Program Unix untuk output data stdout.
  • Standard error (stderr): stderr deskriptor file ke 2, Program Unix menulis pesan kesalahan ke aliran stderr.

Secara default, perintah> berkas redirect stdout ke file, perintah <file akan stdin diarahkan ke file.

Jika Anda ingin mengarahkan stderr ke file, Anda dapat menulis:

$ command 2 > file

Jika Anda ingin menambahkan ke akhir dari file file yang stderr, Anda dapat menulis:

$ command 2 >> file

2 merupakan file standard error (stderr).

Jika Anda ingin menggabungkan setelah stdout dan stderr diarahkan ke file, Anda dapat menulis:

$ command > file 2>&1

或者

$ command >> file 2>&1

Jika Anda ingin mengarahkan stdin dan stdout, Anda dapat menulis:

$ command < file1 >file2

perintah perintah stdin diarahkan ke file1, mengarahkan stdout ke file2.


Dokumen sini

Berikut Dokumen Shell adalah dalam metode pengalihan khusus yang digunakan untuk mengarahkan input ke script Shell interaktif atau program.

bentuk dasar adalah sebagai berikut:

command << delimiter
    document
delimiter

Ini adalah peran konten (dokumen) ditransmisikan ke dua pembatas antara perintah sebagai masukan.

Catatan:

  • Mengakhiri pembatas harus menjadi bagian atas kotak menulis, tidak dapat memiliki salah satu karakter di depan belakang tidak bisa memiliki karakter, termasuk spasi dan tab lekukan.
  • Spasi sebelum dan setelah awal pembatas diabaikan.

contoh

Jumlah baris di baris perintah komputasi Berikut Dokumen dengan perintah -l wc:

$ wc -l << EOF
    欢迎来到
    本教程
    www.w3big.com
EOF
3          # 输出结果为 3 行
$

Kita bisa juga di sini dokumen yang digunakan dalam naskah, misalnya:

#!/bin/bash
# author:本教程
# url:www.w3big.com

cat << EOF
欢迎来到
本教程
www.w3big.com
EOF

Pelaksanaan script di atas, keluaran:

欢迎来到
本教程
www.w3big.com

/ Dev / null berkas

Jika Anda ingin menjalankan perintah, tetapi tidak ingin menampilkan output pada layar, Anda dapat mengarahkan output ke / dev / null:

$ command > /dev/null

/ Dev / null adalah file khusus, isinya ditulis untuk dibuang, jika Anda mencoba untuk membaca dari file, maka apa yang tidak bisa membaca. Namun, / dev / null file yang sangat berguna untuk mengarahkan output dari perintah untuk itu, itu akan bertindak sebagai "melarang output" efek.

Jika Anda ingin melindungi stdout dan stderr, Anda dapat menulis:

$ command > /dev/null 2>&1

Catatan: 0 adalah standar input (STDIN), 1 adalah output standar (STDOUT), 2 adalah standard error keluaran (stderr).