GNU/Linux >> Belajar Linux >  >> Linux

Bekerja dengan aliran data di baris perintah Linux

Catatan penulis: Sebagian besar konten dalam artikel ini dikutip, dengan beberapa pengeditan signifikan agar sesuai dengan format artikel Opensource.com, dari Bab 3:Aliran Data, buku baru saya, Filosofi Linux untuk SysAdmins.

Segala sesuatu di Linux berkisar pada aliran data—terutama aliran teks. Aliran data adalah bahan mentah di mana Utilitas GNU, utilitas inti Linux, dan banyak alat baris perintah lainnya melakukan pekerjaan mereka.

Seperti namanya, aliran data adalah aliran data—terutama data teks—yang diteruskan dari satu file, perangkat, atau program ke yang lain menggunakan STDIO. Bab ini memperkenalkan penggunaan pipa untuk menghubungkan aliran data dari satu program utilitas ke program utilitas lainnya menggunakan STDIO. Anda akan belajar bahwa fungsi dari program ini adalah untuk mengubah data dalam beberapa cara. Anda juga akan belajar tentang penggunaan redirection untuk mengarahkan data ke file.

Terminal Linux

  • 7 emulator terminal teratas untuk Linux
  • 10 alat baris perintah untuk analisis data di Linux
  • Unduh Sekarang:lembar contekan SSH
  • Lembar contekan perintah Linux tingkat lanjut
  • Tutorial baris perintah Linux

Saya menggunakan istilah "transformasi" dalam hubungannya dengan program-program ini karena tugas utama masing-masing adalah untuk mengubah data yang masuk dari STDIO dengan cara tertentu sebagaimana dimaksud oleh sysadmin dan untuk mengirim data yang diubah ke STDOUT untuk kemungkinan digunakan oleh program transformator lain atau pengalihan ke file.

Istilah standar, "filter," menyiratkan sesuatu yang tidak saya setujui. Menurut definisi, filter adalah perangkat atau alat yang menghilangkan sesuatu, seperti filter udara menghilangkan kontaminan udara sehingga mesin pembakaran internal mobil Anda tidak menggiling sendiri sampai mati pada partikulat tersebut. Di kelas kimia sekolah menengah dan perguruan tinggi saya, kertas saring digunakan untuk menghilangkan partikulat dari cairan. Filter udara di sistem HVAC rumah saya menghilangkan partikel yang tidak ingin saya hirup.

Meskipun terkadang mereka menyaring data yang tidak diinginkan dari aliran, saya lebih suka istilah "transformator" karena utilitas ini melakukan lebih banyak hal. Mereka dapat menambahkan data ke aliran, memodifikasi data dalam beberapa cara yang menakjubkan, mengurutkannya, mengatur ulang data di setiap baris, melakukan operasi berdasarkan konten aliran data, dan banyak lagi. Jangan ragu untuk menggunakan istilah mana pun yang Anda suka, tetapi saya lebih suka transformer. Saya berharap bahwa saya sendirian dalam hal ini.

Aliran data dapat dimanipulasi dengan memasukkan transformator ke dalam aliran menggunakan pipa. Setiap program transformator digunakan oleh sysadmin untuk melakukan beberapa operasi pada data dalam aliran, sehingga mengubah isinya dalam beberapa cara. Pengalihan kemudian dapat digunakan di akhir pipa untuk mengarahkan aliran data ke file. Seperti yang disebutkan, file tersebut dapat berupa file data aktual pada hard drive, atau file perangkat seperti partisi drive, printer, terminal, terminal semu, atau perangkat lain yang terhubung ke komputer.

Kemampuan untuk memanipulasi aliran data ini menggunakan program transformator kecil namun kuat ini merupakan pusat kekuatan antarmuka baris perintah Linux. Banyak utilitas inti adalah program transformator dan menggunakan STDIO.

Di dunia Unix dan Linux, aliran adalah aliran data teks yang berasal dari beberapa sumber; aliran dapat mengalir ke satu atau lebih program yang mengubahnya dalam beberapa cara, dan kemudian dapat disimpan dalam file atau ditampilkan dalam sesi terminal. Sebagai sysadmin, pekerjaan Anda terkait erat dengan memanipulasi pembuatan dan aliran aliran data ini. Dalam postingan ini, kita akan menjelajahi aliran data—apa itu aliran data, cara membuatnya, dan sedikit tentang cara menggunakannya.

Aliran teks—antarmuka universal

Penggunaan Input/Output Standar (STDIO) untuk input dan output program adalah dasar utama cara Linux melakukan sesuatu. STDIO pertama kali dikembangkan untuk Unix dan telah menemukan jalannya ke sebagian besar sistem operasi lain sejak saat itu, termasuk DOS, Windows, dan Linux.

Ini adalah filosofi Unix:Tulis program yang melakukan satu hal dan melakukannya dengan baik. Menulis program untuk bekerja sama. Tulis program untuk menangani aliran teks, karena itu adalah antarmuka universal.”

— Doug McIlroy, Dasar-dasar Filosofi Unix

STDIO

STDIO dikembangkan oleh Ken Thompson sebagai bagian dari infrastruktur yang diperlukan untuk mengimplementasikan pipa pada versi awal Unix. Program yang menerapkan STDIO menggunakan pegangan file standar untuk input dan output daripada file yang disimpan di disk atau media perekaman lainnya. STDIO paling tepat digambarkan sebagai aliran data buffer, dan fungsi utamanya adalah mengalirkan data dari output satu program, file, atau perangkat ke input program, file, atau perangkat lain.

Ada tiga aliran data STDIO, yang masing-masing secara otomatis dibuka sebagai file saat memulai program—yah, program yang menggunakan STDIO. Setiap aliran data STDIO dikaitkan dengan pegangan file, yang hanya merupakan kumpulan metadata yang menjelaskan atribut file. Handle file 0, 1, dan 2 secara eksplisit didefinisikan oleh konvensi dan praktik panjang sebagai STDIN, STDOUT, dan STDERR, masing-masing.

STDIN, Pegangan file 0 , adalah input standar yang biasanya dimasukkan dari keyboard. STDIN dapat dialihkan dari file apa pun, termasuk file perangkat, bukan dari keyboard. Meredirect STDIN bukanlah hal yang umum, tetapi hal itu dapat dilakukan.

STDOUT, Pegangan file 1 , adalah output standar yang mengirimkan aliran data ke tampilan secara default. Adalah umum untuk mengarahkan STDOUT ke file atau menyalurkannya ke program lain untuk diproses lebih lanjut.

STDERR, Pegangan file 2 . Aliran data untuk STDERR juga biasanya dikirim ke layar.

Jika STDOUT dialihkan ke file, STDERR terus ditampilkan di layar. Ini memastikan bahwa ketika aliran data itu sendiri tidak ditampilkan di terminal, itu adalah STDERR, sehingga memastikan bahwa pengguna akan melihat kesalahan apa pun yang dihasilkan dari eksekusi program. STDERR juga dapat dialihkan ke program yang sama atau diteruskan ke program transformator berikutnya dalam saluran pipa.

STDIO diimplementasikan sebagai pustaka C, stdio.h , yang dapat dimasukkan ke dalam kode sumber program sehingga dapat dikompilasi menjadi executable yang dihasilkan.

Streaming sederhana

Anda dapat melakukan eksperimen berikut dengan aman di /tmp direktori host Linux Anda. Sebagai pengguna root, buat /tmp PWD, buat direktori pengujian, lalu buat direktori baru menjadi PWD.

# cd /tmp ; mkdir test ; cd test 

Masuk dan jalankan program baris perintah berikut untuk membuat beberapa file dengan konten di drive. Kami menggunakan dmesg perintah hanya untuk menyediakan data untuk file yang akan ditampung. Konten tidak terlalu penting karena hanya fakta bahwa setiap file memiliki beberapa konten.

# for I in 0 1 2 3 4 5 6 7 8 9 ; do dmesg > file$I.txt ; done  

Verifikasi bahwa sekarang ada setidaknya 10 file di /tmp/ dengan nama file0.txt melalui file9.txt .

# ll
total 1320
-rw-r--r-- 1 root root 131402 17 Okt 15:50 file0.txt
-rw-r--r-- 1 root root 131402 17 Okt 15:50 file1.txt
-rw-r--r-- 1 root root 131402 17 Okt 15:50 file2.txt
-rw-r--r-- 1 root root 131402 17 Okt 15:50 file3.txt
-rw-r--r-- 1 root root 131402 17 Okt 15:50 file4.txt
-rw-r--r-- 1 root root 131402 17 Okt 15:50 file5.txt
-rw-r--r-- 1 root root 131402 17 Okt 15:50 file6.txt
-rw-r--r-- 1 root root 131402 17 Okt 15:50 file7.txt
-rw-r--r-- 1 root root 131402 17 Okt 15:50 file8.txt
-rw-r--r-- 1 root root 131402 17 Okt 15:50 file9.txt

Kami telah menghasilkan aliran data menggunakan dmesg perintah, yang diarahkan ke serangkaian file. Sebagian besar utilitas inti menggunakan STDIO sebagai aliran keluarannya dan utilitas yang menghasilkan aliran data, daripada bertindak untuk mengubah aliran data dalam beberapa cara, dapat digunakan untuk membuat aliran data yang akan kita gunakan untuk eksperimen kita. Aliran data dapat sesingkat satu baris atau bahkan satu karakter, dan selama diperlukan.

Menjelajahi hard drive

Sekarang saatnya untuk melakukan sedikit penjelajahan. Dalam percobaan ini, kita akan melihat beberapa struktur sistem file.

Mari kita mulai dengan sesuatu yang sederhana. Anda setidaknya harus familiar dengan dd memerintah. Secara resmi dikenal sebagai "disk dump", banyak sysadmin menyebutnya "disk destroyer" untuk alasan yang baik. Banyak dari kita secara tidak sengaja telah menghancurkan isi seluruh hard drive atau partisi menggunakan dd memerintah. Itulah sebabnya kami akan nongkrong di /tmp/test direktori untuk melakukan beberapa eksperimen ini.

Terlepas dari reputasinya, dd bisa sangat berguna dalam menjelajahi berbagai jenis media penyimpanan, hard drive, dan partisi. Kami juga akan menggunakannya sebagai alat untuk menjelajahi aspek lain dari Linux.

Masuk ke sesi terminal sebagai root jika Anda belum melakukannya. Pertama-tama kita perlu menentukan file khusus perangkat untuk hard drive Anda menggunakan lsblk perintah.

 [root @ studentvm1 test] # lsblk -i 
nama mayur mayp Ro mountpoint
SDA 8:0 0 60g 0 Disk
| -sda1 8:1 0 1g 0 bagian /boot
`-sda2                                 8:2    0   59G  0 bagian
  |-fedora_studentvm1-pool00_tmeta   253:0  > 0  `-fedora_studentvm1-pool00-tpool 253:2    0    2G  0 lvm  
  | |-fedora_studentvm1-root       253:3    0    2G  0 lvm  /
  | `-fedora_studentvm1-pool00     253:6    0    2G  0 lvm  
  |-fedora_studentvm1-pool00_tdata   253:1    0    2G  0 lvm  
  | `-fedora_studentvm1-pool00-tpool 253:2    0    2G  0 lvm  
  | |-fedora_studentvm1-root       253:3    0    2G  0 lvm  /
  | `-fedora_studentvm1-pool00     253:6    0    2G  0 lvm  
  |-fedora_studentvm1-swap         253:4    0   10G  0 lvm  >   
| -fedora_studentvm1-home 253:7 0 2g 0 lvm / home
| -fedora_studentvm1-var 253:8 0 10g 0 lvm / var
`-fedora_studentvm1-tmp 253:9 0 5G 0 lvm  /tmp
sr0                                   11:0    1 1024M  0 rom

Dari sini kita dapat melihat bahwa hanya ada satu hard drive di host ini, bahwa file khusus perangkat yang terkait dengannya adalah /dev/sda , dan memiliki dua partisi. /dev/sda1 partisi adalah partisi boot, dan /dev/sda2 partisi berisi grup volume tempat volume logis host lainnya telah dibuat.

Sebagai root di sesi terminal, gunakan dd perintah untuk melihat catatan boot hard drive, dengan asumsi itu ditetapkan ke /dev/sda perangkat. bs= argumen bukanlah apa yang mungkin Anda pikirkan; itu hanya menentukan ukuran blok, dan count= argumen menentukan jumlah blok yang akan dibuang ke STDIO. if= argumen menentukan sumber aliran data, dalam hal ini, /dev/sda perangkat. Perhatikan bahwa kita tidak melihat blok pertama dari partisi, kita melihat blok pertama dari hard drive.

[root@studentvm1 test]# dd if=/dev/sda bs=512 count=1
�c�#�м���؎���|�#�#���!# ��8#u
                            ��#���u��#�#�#�|���t#�L#�#�|���#�����€t�� pt#���y|1��؎м ��d|<�t#��R�|1��D#@�D��D#�##f�#\|f�f�#`| f�\
                                      �D#p�B�#r�p�#�K`#�#��1��������#a`���#f��u#� ���f1�f�TCPaf�#f�#a�&Z|�#}�#�.}�4�3}�.�#��GRUB GeomHard DiskRead Error
�#��#� 1+0 record keluar
512 byte disalin, 4.3856e-05 s, 11.7 MB/dtk

Ini mencetak teks catatan boot, yang merupakan blok pertama pada disk—disk apa pun. Dalam hal ini, ada informasi tentang sistem file dan, meskipun tidak dapat dibaca karena disimpan dalam format biner, tabel partisi. Jika ini adalah perangkat yang dapat di-boot, tahap 1 GRUB atau pemuat boot lainnya akan ditempatkan di sektor ini. Tiga baris terakhir berisi data tentang jumlah record dan byte yang diproses.

Dimulai dengan awal /dev/sda1 , mari kita lihat beberapa blok data sekaligus untuk menemukan apa yang kita inginkan. Perintahnya mirip dengan yang sebelumnya, kecuali bahwa kami telah menetapkan beberapa blok data lagi untuk dilihat. Anda mungkin harus menentukan lebih sedikit blok jika terminal Anda tidak cukup besar untuk menampilkan semua data pada satu waktu, atau Anda dapat menyalurkan data melalui utilitas yang lebih sedikit dan menggunakannya untuk membuka halaman data—dengan cara apa pun. Ingat, kami melakukan semua ini sebagai pengguna root karena pengguna non-root tidak memiliki izin yang diperlukan.

Masukkan perintah yang sama seperti yang Anda lakukan pada eksperimen sebelumnya, tetapi tingkatkan jumlah blok yang akan ditampilkan menjadi 100, seperti yang ditunjukkan di bawah, untuk menampilkan lebih banyak data.

[root@studentvm1 test]# dd if=/dev/sda1 bs=512 count=100
##33��#:�##�� :o�[:o�[#�� S�###�q[#
                                  #<�#{5OZh�GJ͞#t�Ұ##boot/bootysimage/booC�dp��G'�*)�#A�##@
     #�q[
�## ##  ###�#���Kepada=###<#8���#'#�###�#�����#� '  �����#Xi  �#��`  qT���
  <���
      �  r����  ]�#�#�##�##�##� #�##�##�##�#�##�##�#��#�#�##�#�##�##�#��#�#����#       �     � #    �#    �#

�#
�#
�#
  �
   �#
     �#
       � #
         �
          �#
            �#
              �#100+0 data masuk
100+0 data keluar
51200 byte (51 kB, 51 kB ) disalin, 0,00117615 d, 43,5 MB/dtk

Sekarang coba perintah ini. Saya tidak akan mereproduksi seluruh aliran data di sini karena akan memakan banyak ruang. Gunakan Ctrl-C untuk memecahkan dan menghentikan aliran data.

[root@studentvm1 test]# dd if=/dev/sda 

Perintah ini menghasilkan aliran data yang merupakan isi lengkap dari hard drive, /dev/sda , termasuk boot record, tabel partisi, dan semua partisi dan kontennya. Data ini dapat diarahkan ke file untuk digunakan sebagai cadangan lengkap dari mana pemulihan logam telanjang dapat dilakukan. Itu juga bisa dikirim langsung ke hard drive lain untuk mengkloning yang pertama. Tapi jangan lakukan eksperimen khusus ini.

[root@studentvm1 test]# dd if=/dev/sda of=/dev/sdx 

Anda dapat melihat bahwa dd perintah bisa sangat berguna untuk menjelajahi struktur berbagai jenis sistem file, mencari data pada perangkat penyimpanan yang rusak, dan banyak lagi. Ini juga menghasilkan aliran data di mana kita dapat menggunakan utilitas transformator untuk memodifikasi atau melihat.

Poin sebenarnya di sini adalah dd , seperti banyak perintah Linux, menghasilkan aliran data sebagai outputnya. Aliran data itu dapat dicari dan dimanipulasi dengan banyak cara menggunakan alat lain. Itu bahkan dapat digunakan untuk cadangan seperti hantu atau duplikasi disk.

Keacakan

Ternyata keacakan adalah hal yang diinginkan di komputer—siapa yang tahu? Ada beberapa alasan mengapa sysadmin mungkin ingin menghasilkan aliran data acak. Aliran data acak terkadang berguna untuk menimpa konten partisi yang lengkap, seperti /dev/sda1 , atau bahkan seluruh hard drive, seperti di /dev/sda .

Lakukan percobaan ini sebagai pengguna non-root. Masukkan perintah ini untuk mencetak aliran data acak tanpa akhir ke STDIO.

[student@studentvm1 ~]$ cat /dev/urandom 

Gunakan Ctrl-C untuk memecahkan dan menghentikan aliran data. Anda mungkin perlu menggunakan Ctrl-C beberapa kali.

Data acak juga digunakan sebagai benih masukan untuk program yang menghasilkan kata sandi acak dan data acak serta angka untuk digunakan dalam perhitungan ilmiah dan statistik. Saya akan membahas keacakan dan sumber data menarik lainnya secara lebih rinci di Bab 24:Semuanya adalah file.

Mimpi pipa

Pipa sangat penting bagi kemampuan kita untuk melakukan hal-hal menakjubkan di baris perintah, sedemikian rupa sehingga saya pikir penting untuk menyadari bahwa mereka ditemukan oleh Douglas McIlroy selama masa awal Unix (terima kasih, Doug!). Situs web Universitas Princeton memiliki penggalan wawancara dengan McIlroy di mana ia membahas pembuatan pipa dan awal mula filosofi Unix.

Perhatikan penggunaan pipa dalam program baris perintah sederhana yang ditunjukkan berikutnya, yang mencantumkan setiap pengguna yang masuk satu kali, tidak peduli berapa banyak login yang mereka lakukan. Lakukan percobaan ini sebagai pengguna siswa. Masukkan perintah yang ditunjukkan di bawah ini:

[mahasiswa@siswa1 ~]$ w | ekor -n +3 | awk '{cetak $1}' | urutkan | uniq
root
siswa
[siswa@studentvm1 ~]$

Hasil dari perintah ini menghasilkan dua baris data yang menunjukkan bahwa root pengguna dan siswa sama-sama login. Ini tidak menunjukkan berapa kali setiap pengguna login. Hasil Anda hampir pasti akan berbeda dengan saya.

Pipa—diwakili oleh batang vertikal ( | )—adalah perekat sintaksis, operator, yang menghubungkan utilitas baris perintah ini bersama-sama. Pipa memungkinkan Output Standar dari satu perintah untuk "dipipihkan", yaitu, dialirkan dari Output Standar satu perintah ke Input Standar dari perintah berikutnya.

Operator |&dapat digunakan untuk menyalurkan STDERR bersama dengan STDOUT ke STDIN dari perintah berikutnya. Ini tidak selalu diinginkan, tetapi menawarkan fleksibilitas dalam kemampuan untuk merekam aliran data STDERR untuk tujuan penentuan masalah.

Serangkaian program yang terhubung dengan pipa disebut pipa, dan program yang menggunakan STDIO secara resmi disebut sebagai filter, tetapi saya lebih suka istilah "transformator".

Pikirkan tentang bagaimana program ini harus bekerja jika kita tidak dapat menyalurkan aliran data dari satu perintah ke perintah berikutnya. Perintah pertama akan melakukan tugasnya pada data dan kemudian output dari perintah itu perlu disimpan dalam file. Perintah berikutnya harus membaca aliran data dari file perantara dan melakukan modifikasi aliran datanya, mengirimkan outputnya sendiri ke file data sementara yang baru. Perintah ketiga harus mengambil datanya dari file data sementara kedua dan melakukan manipulasi aliran datanya sendiri dan kemudian menyimpan aliran data yang dihasilkan dalam file sementara lainnya. Pada setiap langkah, nama file data harus ditransfer dari satu perintah ke perintah berikutnya dalam beberapa cara.

Saya bahkan tidak tahan memikirkannya karena ini sangat kompleks. Ingat:Kesederhanaan batu!

Membangun saluran pipa

Ketika saya melakukan sesuatu yang baru, memecahkan masalah baru, saya biasanya tidak hanya mengetikkan baris perintah Bash lengkap dari awal dari atas kepala saya. Saya biasanya mulai dengan hanya satu atau dua perintah dalam saluran dan membangun dari sana dengan menambahkan lebih banyak perintah untuk memproses lebih lanjut aliran data. Ini memungkinkan saya untuk melihat status aliran data setelah setiap perintah dalam pipeline dan melakukan koreksi jika diperlukan.

Dimungkinkan untuk membangun saluran pipa yang sangat kompleks yang dapat mengubah aliran data menggunakan banyak utilitas berbeda yang bekerja dengan STDIO.

Pengalihan

Pengalihan adalah kemampuan untuk mengarahkan aliran data STDOUT dari suatu program ke file alih-alih ke target default tampilan. Karakter “lebih besar dari” (> ), alias “gt”, adalah simbol sintaksis untuk pengalihan STDOUT.

Mengarahkan kembali STDOUT dari suatu perintah dapat digunakan untuk membuat file yang berisi hasil dari perintah tersebut.

[student@studentvm1 ~]$ df -h > diskusage.txt 

Tidak ada output ke terminal dari perintah ini kecuali ada kesalahan. Ini karena aliran data STDOUT dialihkan ke file dan STDERR masih diarahkan ke perangkat STDOUT, yang merupakan tampilan. Anda dapat melihat konten file yang baru saja Anda buat menggunakan perintah berikut ini:

 [Mahasiswa @ StudentVM1 Test] # kucing diskusage.txt 
Ukuran sistem file yang digunakan Tersedia Gunakan% Mounted pada
devtmpfs 2.0g 0 2.0g 0% / dev 0 2.0g 0 2.0g 0% /dev/shm
tmpfs                               2.0G  1.2M  2.0G   1% /run
tmpfs                          > root  2.0G   50M  1.8G   3% /
/dev/mapper/fedora_studentvm1-usr    15G  4.5G  9.5G  33% /usr
/dev/mapper/fedora_studentvm1-var   9.8G  1.1G  8.2G  /var
/dev/mapper/fedora_studentvm1-tmp   4.9G   21M  4.6G   1% /tmp
/dev/mapper/fedora_studentvm1-home  2.0G  7.2M  1.8G   1% /home
/ dev / sda1 976 m 221 m 689 m 25% / boot
tmpfs 395 m 0 395 m 0% / run / user / 0
tmpfs 395m 12k 395 m 1% / user / 1000 Saat menggunakan simbol> untuk mengarahkan aliran data, file yang ditentukan akan dibuat jika belum ada. Jika memang ada, konten akan ditimpa oleh aliran data dari perintah. Anda dapat menggunakan simbol lebih besar dari dua kali lipat,>>, untuk menambahkan aliran data baru ke konten yang ada dalam file.

[student@studentvm1 ~]$ df -h >> diskusage.txt 

Anda dapat menggunakan cat dan/atau less untuk melihat diskusage.txt file untuk memverifikasi bahwa data baru telah ditambahkan ke akhir file.

Simbol <(kurang dari) mengarahkan data ke STDIN program. Anda mungkin ingin menggunakan metode ini untuk memasukkan data dari file ke STDIN dari perintah yang tidak menggunakan nama file sebagai argumen tetapi menggunakan STDIN. Meskipun sumber input dapat dialihkan ke STDIN, seperti file yang digunakan sebagai input ke grep, umumnya tidak diperlukan karena grep juga menggunakan nama file sebagai argumen untuk menentukan sumber input. Sebagian besar perintah lain juga menggunakan nama file sebagai argumen untuk sumber inputnya.

Hanya melihat-lihat

grep perintah digunakan untuk memilih baris yang cocok dengan pola tertentu dari aliran data. grep adalah salah satu utilitas transformator yang paling umum digunakan dan dapat digunakan dalam beberapa cara yang sangat kreatif dan menarik. grep perintah adalah salah satu dari sedikit yang dapat dengan tepat disebut filter karena ia menyaring semua baris aliran data yang tidak Anda inginkan; hanya menyisakan baris yang Anda inginkan di aliran data yang tersisa.

Jika PWD bukan /tmp/test direktori, membuatnya begitu. Pertama-tama mari kita buat aliran data acak untuk disimpan dalam file. Dalam hal ini, kami menginginkan data yang tidak terlalu acak yang terbatas pada karakter yang dapat dicetak. Program pembuat kata sandi yang baik dapat melakukan ini. Program berikut (Anda mungkin harus menginstal pwgen jika belum) membuat file yang berisi 50.000 kata sandi yang panjangnya 80 karakter menggunakan setiap karakter yang dapat dicetak. Cobalah tanpa mengarahkan ulang ke random.txt file terlebih dahulu untuk melihat seperti apa tampilannya, lalu lakukan setelah mengalihkan aliran data output ke file.

$ pwgen -sy 80 50000 > random.txt 

Mempertimbangkan bahwa ada begitu banyak kata sandi, sangat mungkin bahwa beberapa karakter string di dalamnya adalah sama. Pertama, cat random.txt file, lalu gunakan grep perintah untuk menemukan beberapa string pendek yang dipilih secara acak dari sepuluh kata sandi terakhir di layar. Saya melihat kata "lihat" di salah satu dari sepuluh kata sandi itu, jadi perintah saya terlihat seperti ini:grep see random.txt , dan Anda dapat mencobanya, tetapi Anda juga harus memilih beberapa string Anda sendiri untuk diperiksa. String pendek yang terdiri dari dua hingga empat karakter berfungsi paling baik.

$ grep lihat random.txt 
        R=p)'s/~0}wr~2(OqaL.S7DNyxlmO69`"12u]h@rp[D2%3}1b87+>Vk,;4a0hX]d7see;1%9|wMp6Yl.
        bSM_mt_hPy|YZ1NU@[;zV2-lihat)>(BSK~n5mmb9~h) yx{a&$_e
        cjR1QWZwEgl48[3i-(^x9D=v)seeYT2R#M:>wDh?Tn$]HZU7}j!7bIiIr^cI.DI)W0D"'vZU@
1E1 z=tXcjVv^G\nW`,y=bED]d|7%s6iYT^a^Bvsee:v\UmWT02|P|nq%A*;+Ng[$S%*s)-ls"dUfo|0P5+ n

Ringkasan

Ini adalah penggunaan pipa dan pengalihan yang memungkinkan banyak tugas luar biasa dan kuat yang dapat dilakukan dengan aliran data di baris perintah Linux. Ini adalah pipa yang mengangkut aliran data STDIO dari satu program atau file ke yang lain. Kemampuan untuk menyalurkan aliran data melalui satu atau beberapa program transformator mendukung manipulasi data yang kuat dan fleksibel dalam aliran tersebut.

Setiap program dalam pipeline yang ditunjukkan dalam eksperimen berukuran kecil, dan masing-masing melakukan satu hal dengan baik. Mereka juga transformer; yaitu, mereka mengambil Input Standar, memprosesnya dengan cara tertentu, dan kemudian mengirimkan hasilnya ke Output Standar. Implementasi program-program ini sebagai transformator untuk mengirim aliran data yang diproses dari Output Standar mereka sendiri ke Input Standar dari program lain adalah pelengkap, dan diperlukan untuk, implementasi pipa sebagai alat Linux.

STDIO tidak lebih dari aliran data. Data ini dapat berupa apa saja dari output perintah untuk membuat daftar file dalam direktori, atau aliran data tanpa akhir dari perangkat khusus seperti /dev/urandom , atau bahkan aliran yang berisi semua data mentah dari hard drive atau partisi.

Perangkat apa pun di komputer Linux dapat diperlakukan seperti aliran data. Anda dapat menggunakan alat biasa seperti dd dan cat untuk membuang data dari perangkat ke aliran data STDIO yang dapat diproses menggunakan alat Linux biasa lainnya.


Linux
  1. Menjadwalkan tugas dengan perintah cron Linux

  2. Jadwalkan tugas dengan Linux pada perintah

  3. 8 tips untuk baris perintah Linux

  1. Hasilkan kata sandi di baris perintah Linux

  2. Salin dan tempel di baris perintah Linux dengan xclip

  3. Miliki sapi di baris perintah Linux

  1. Masukkan diri Anda ke dalam baris perintah Linux

  2. Bekerja dengan pipa di baris perintah Linux

  3. Memantau level mikrofon dengan alat baris perintah di Linux