Perintah Linux

Perintah Bash Tac

Perintah Bash Tac
Tac adalah salah satu perintah yang tidak Anda sadari sampai Anda telah melakukannya, menemukan kembali roda, yang tidak jarang dalam praktik pemrograman apakah Anda baru mempelajari tali atau seorang profesional dengan pengalaman bertahun-tahun untuk Banggalah, kamu luar biasa. Jika tangan Anda bersih, maka baik untuk Anda; Either way, Anda siap untuk mengobati, saya akan membongkar semua yang saya tahu tentang perintah tac dan banyak lagi. Baca terus.

Juga dikenal sebagai reverse cat, tac utilitas baris perintah sederhana yang memungkinkan Anda membalikkan baris dalam output menggunakan | operator pipa bawaan dan tac. Artinya, jika Anda memiliki perintah, sisi kiri (lhs), dan ingin membalik isi outputnya, yang akan Anda lakukan hanyalah mengetik lhs | tac. Itu dia!

Memang, ada lebih banyak hal yang harus diperhatikan daripada yang terlihat. Jangan khawatir. Kami akan membahas semuanya, dalam waktu yang tepat.

Saran tentang tac

Untuk menggunakan atau tidak menggunakan, itulah pertanyaannya. Anda tidak akan Anda tidak ingin tac ketika Anda tidak harus. Namun, jika Anda ingin mengoleskan tac sebagai perintah roti dan mentega, itu terserah Anda. Sementara itu, inilah saran saya untuk mengambil kedua belah pihak agar tetap netral.

Kapan harus menggunakan tac

Ada kalanya menggunakan tac yang membantu Anda mendapatkan lebih banyak baris perintah dengan lebih sedikit kode dan waktu yang dihabiskan untuk meneliti opsi perintah lhs.

Bila Anda tidak yakin tentang pilihan lhs

Banyak perintah seperti sort datang dengan opsi untuk membalikkan output dari suatu perintah. Namun, jika Anda tidak yakin apakah perintah di sisi kiri memiliki opsi -r untuk membalikkan keluaran, menggunakan tac adalah cara pasti untuk membalikkan jalur keluaran.

Ketika kinerja tidak penting

Meskipun tidak signifikan, sebagian besar perintah yang digunakan bersama dengan opsi bawaan untuk membalikkan output berkinerja lebih baik daripada menyalurkan output ke tac. Jadi, jika sedikit kelambatan kinerja tidak menjadi masalah, menyalurkan ke tac untuk memutar ulang output secara terbalik tidak apa-apa.

Kapan tidak menggunakan tac

Ada kalanya Anda mungkin tidak menggunakan tac karena Anda lebih tahu. Berikut adalah beberapa yang perlu diperhatikan.

Ketika Anda tahu perintah pada lhs memiliki opsi untuk membalikkan jalur output

Seperti yang saya katakan, “Sebagian besar perintah datang dengan opsi untuk membalikkan output.” Jika Anda tahu bahwa perintah lhs tertentu memiliki opsi, Anda tidak boleh menggunakan tac. Lagi pula, -r lebih pendek dari - | tac.

Ketika kinerja penting

Seperti yang saya katakan, “Menggunakan opsi lhs reverse mungkin berkinerja lebih baik daripada tac.Jika Anda ingin memeras beberapa detik dalam skrip bash atau berurusan dengan file yang lebih besar yang memerlukan waktu untuk membaca, Anda tidak boleh menggunakan tac.

Bantuan tc

Menjalankan perintah bantuan untuk tac atau man tac menunjukkan penggunaan bersama dengan opsi yang dapat digunakan. Inilah yang diharapkan.

Perintah

tc --help

Keluaran

Versi Tac

aku versi berapa?
Kamu adalah versi terbaru dari dirimu sendiri. Namun, dalam hal versi tac Anda, ada opsi untuk itu.

Perintah

tac --versi

Keluaran

Catatan

Jika Anda menggunakan tac di FreeBSD atau macOS, opsi panjang untuk versi mungkin tidak tersedia. Dalam hal ini, coba -v atau man tac. Jika Anda sudah mencobanya beri tahu saya. saya penasaran. Terima kasih

Pilihan Tak

Selain bantuan dan versi, tac tidak memiliki banyak opsi. Untuk apa yang dimilikinya, Anda pasti akan mengetahui bahwa tac bukan sembarang kucing terbalik tua.

Tac sebelum opsi

Opsi -b memungkinkan Anda untuk mengubah cara pemisah dipasang pada output. Secara default, pemisah baris baru dilampirkan setelah setiap baris.

Saya tahu ini membingungkan. Mari kita uraikan dengan contoh.

Pertama, mari kita lihat seperti apa output kita sebelum menggunakan tac -b.

Perintah

seq 10

Keluaran

Sekarang mari kita lihat seperti apa output kita setelah menggunakan tac tanpa -b.

Perintah

barisan 10 | tac

Keluaran

Sekarang mari kita lihat seperti apa outputnya menggunakan tac -b.

Perintah

barisan 10 | tac -b

Keluaran

Opsi pemisah tac

Opsi pemisah -s 'literal string' memungkinkan Anda menentukan karakter atau urutan karakter yang digunakan oleh tac untuk membedakan garis. Secara default, karakter baris baru ('0a' dalam hex) digunakan.

Cara menggunakan opsi pemisah tac tidak jelas pada awalnya. Namun, begitu Anda tahu itu ada, sulit untuk tidak mencoba menggunakannya.

Perhatikan contoh berikut, beroperasi pada garis yang direpresentasikan dalam hex.

Perintah

barisan 20 | xxd -ps | tac -s '0a' | xxd -ps -r

Keluaran

Catatan

(1) Ini mungkin tampak sepele seperti menggunakan seq 20 | perintah tac, namun, dalam hal ini, kami tidak menghabiskan waktu mengerjakan aliran keluaran dalam hex. Menggunakan pola ini berguna ketika pemisahan bukanlah sesuatu yang sepele seperti karakter baris baru seperti byte ke-nol.

Sekarang kurangi mencoba menggunakan tac pada sesuatu yang sedikit kurang mentah dan lebih banyak meta seperti HTML sederhana.

Perhatikan file berikut.

Mengajukan

SEBUAH
B
C

Perintah

file() echo -e " A
B
C
" ;
berkas | tac -s"
"

Keluaran

Kami berhasil mengonversi halaman HTML

SEBUAH
B
C

ke

C
B
SEBUAH

menggunakan tac.

Misalkan Anda perlu melakukan sesuatu yang sedikit lebih rumit seperti memperlakukan tag apa pun sebagai pemisah tac. Dalam hal ini, Anda tidak akan lolos hanya dengan menggunakan opsi pemisah saja. Di situlah opsi regex masuk. Dikombinasikan dengan opsi pemisah, ini memungkinkan Anda melakukan lebih banyak dengan perintah tac daripada membalikkan baris dalam file a. Begini caranya.

Opsi regex tac

Opsi regex -r -s 'regex' memungkinkan Anda menentukan bahwa string pemisah akan diperlakukan sebagai ekspresi reguler.

Cara menggunakan opsi tac regex sesederhana menambahkan opsi -r sebelum atau sesudah pemisah.

Pertimbangkan contoh sebelumnya menggunakan opsi regex bersama dengan opsi pemisah. Mari kita memperlakukan tag markup apa pun sebagai pemisah.

Mengajukan



fungsi sederhana


Fungsinya sederhana di bash. Setidaknya yang ini. Ini menempatkan string di layar.


Perintah


fungsi sederhana
()
gema
sesederhana itu fungsi sederhana

Sumber: https://temptemp3.github.io/bash-fungsi

Perintah

berkas ()

gema '



fungsi sederhana

Fungsinya sederhana di bash. Setidaknya yang ini. Ini menempatkan
tali di layar.

Perintah



fungsi sederhana

(
)

gema sesederhana itu

fungsi sederhana
'

berkas | tac -r -s "]*."

Keluaran

Kami berhasil mengonversi halaman HTML dengan membalikkan file menggunakan tag HTML. Jika Anda melihat detailnya, Anda akan melihat bahwa itu belum sempurna.

Perintah tac dalam bash murni

Berikut adalah versi primitif dari implementasi tac dalam bash murni yang membalikkan garis yang disalurkan oleh perintah lhs. Versi masa depan dibiarkan sebagai latihan.

#!/bin/bash
## tac
## versi 0.0.1 - inisial
#############################################################
tak()
lokal -a arr
lokal -i i
mapfile arr -
i="$#arr[@]"
sementara [ $i -ge 0 ]
melakukan
gema $arr[i]
biarkan aku-=1
selesai

#############################################################
tac
#############################################################

Sumber: https://github.com/temptemp3/ba.sh/gumpalan/master/tac.SH

Perintah tac menggunakan perintah lain

Berikut adalah beberapa versi primitif dari implementasi tac menggunakan perintah lain yang membalikkan garis yang disalurkan oleh perintah lhs. Versi masa depan dibiarkan sebagai latihan.

Sebelum kita mulai, tutup mata Anda dan pikirkan, “Apa yang bisa digunakan untuk mengimplementasikan tac versi primitif??”
Banyak perintah muncul di benak saya, tetapi saya akan fokus pada perintah yang kami punya ruang untuk.

melongo

Mirip dengan perintah Tac dalam contoh bash murni, untuk mengimplementasikan tac pertama-tama kita akan menyimpan baris baca untuk diputar ulang secara terbalik setelah semua baris dibaca. Begini tampilannya menggunakan gawk.

 melongo ' baris[++baris[0]]=$(0)  END  untuk(i=0;i

Sekarang coba gunakan pada perintah lhs seq 10.

 barisan 10 | gawk '  baris[++baris[0]]=$(0)  END  untuk(i=0;i

Seperti yang Anda harapkan hasilnya adalah

Latihan

1. Fungsi lhs() seq 10 ; daftar bilangan bulat 1 sampai 10. Tuliskan perintah rhs sedemikian rupa sehingga lhs | rhs sama dengan 10864213579 hanya menggunakan tac (Petunjuk: lihat Tac sebelum contoh opsi)
2. Membalikkan output dari rhs() find -mindepth 1 -maxdepth 1 -print0 ; menggunakan tac (Petunjuk: lihat contoh opsi pemisah Tac)
3. Perpanjang tac.sh (dalam perintah Tac dalam bash murni) untuk berperilaku persis seperti tac. Anda perlu menambahkan opsi dan pastikan untuk menguji perilaku mereka.
4. Terapkan versi primitif tac dalam bash murni sebagai fungsi rekursif.

TL;DR

Sekali lagi, saya senang menulis perintah Bash tac. Setelah membaca, saya harap Anda dapat menyetujui bahwa ada lebih banyak hal yang harus dilakukan daripada yang Anda pikirkan. Juga, setelah mencoba melakukan hal-hal dengan cara yang sulit di dekat bagian bawah, saya harap Anda tahu betapa bergunanya perintah tac. Jika ada yang berhasil menyelesaikan salah satu latihan atau membutuhkan bantuan untuk pekerjaan rumahnya, beri tahu saya me. Terima kasih,

Tutorial OpenTTD
OpenTTD adalah salah satu game simulasi bisnis paling populer di luar sana. Dalam game ini, Anda perlu membuat bisnis transportasi yang luar biasa. Na...
SuperTuxKart untuk Linux
SuperTuxKart adalah judul hebat yang dirancang untuk memberi Anda pengalaman Mario Kart gratis di sistem Linux Anda. Ini cukup menantang dan menyenang...
Pertempuran untuk Tutorial Westnoth
The Battle for Wesnoth adalah salah satu game strategi open source terpopuler yang bisa kamu mainkan saat ini. Tidak hanya game ini telah dikembangkan...