GNU/Linux >> Belajar Linux >  >> Linux

Memulai dengan perintah tac Linux

The tac perintah pada dasarnya adalah kucing perintah, tetapi tujuannya adalah untuk menggabungkan file secara terbalik. Seperti kucing , ia memiliki mode mundur yang nyaman untuk mencetak ke keluaran standar (STDOUT) jika tidak ada file output yang disediakan, menjadikannya salah satu perintah yang lebih sering digunakan sebagai lazy pager—seperti kurang dan lainnya —daripada fungsi yang dinamainya.

kucing perintah sering digunakan secara berlebihan dan disalahgunakan, dan tac sering dianggap sebagai perintah lelucon seperti ddate atau cowsay . Ini sering diarak di artikel hari April Mop yang merinci trik terminal bodoh. Jadi, mungkin mengejutkan bahwa tac sebenarnya memiliki alasan yang sah untuk ada.

Ini sebenarnya perintah yang berguna.

Apa tujuan dari tac?

Taktik halaman manual melakukan pekerjaan yang agak buruk dalam menggambarkan fungsinya sendiri:

Write each FILE to standard output, last line first.

Mengambil pernyataan itu seperti yang tertulis, tac harus mencetak baris terakhir file, lalu mencetak file mulai dari baris pertama:

$ cat metasyntactic.list
foobar
foo
bar
baz

$ tac metasyntactic.list
baz
foobar
foo
bar

Bukan itu yang dilakukannya. Halaman infonya jauh lebih jelas:

copies each FILE (‘-’ means standard input), 
or standard input if none are given,
to standard output, reversing the records
(lines by default) in each separately.

Misalnya:

$ tac metasyntactic.list
baz
bar
foo
foobar

Mengabaikan fakta bahwa tac memberi Anda segalanya secara terbalik, ia memiliki beberapa opsi yang sangat berguna dan unik.

Tac dan pemisah

Seperti yang ditunjukkan halaman info, file tidak harus dibatasi oleh baris, artinya tac sama efektifnya dengan, misalnya, file CSV. Anda menentukan karakter pemisah file dengan --separator atau -s pilihan, bersama dengan pembatas yang digunakan dalam file.

Untuk file CSV, karakternya mungkin berupa koma (, ), tetapi Anda dapat menentukan karakter apa pun. Namun, jika file tidak diakhiri dengan karakter pemisah, Anda akan mendapatkan hasil yang tidak terduga:

$ tac --separator="," metasyntactic.csv
bazbar,foo,foobar

Tidak ada karakter pemisah antara dua item pertama. Catatan akhir file (string yang mengikuti pemisah akhir, dalam hal ini, koma) tidak diikuti oleh koma, sehingga diperlakukan sebagai bukan rekaman oleh tac . Untuk menjelaskan masalah ini, gunakan --sebelum atau -b opsi, yang menempatkan karakter pemisah sebelum setiap record:

$ tac --separator="," --before metasyntactic.csv
baz,bar,foo,foobar

Karakter pemisah tidak harus berupa karakter tunggal. Itu juga bisa berupa ekspresi reguler (regex).

Tac dan ekspresi reguler

Penjelasan lengkap tentang regex berada di luar cakupan artikel ini, tetapi perlu disebutkan bahwa POSIX yang diperluas didukung melalui variabel lingkungan. Regex yang diperluas sangat meningkatkan keterbacaan ekspresi reguler, dan demi kesederhanaan, itulah yang digunakan contoh ini. Asumsikan Anda memiliki file yang berisi string yang semuanya dipisahkan oleh bilangan bulat:

$ cat metasyntactic.txt
foobar123foo456bar789baz898

Lebih banyak sumber daya Linux

  • Lembar contekan perintah Linux
  • Lembar contekan perintah Linux tingkat lanjut
  • Kursus online gratis:Ikhtisar Teknis RHEL
  • Lembar contekan jaringan Linux
  • Lembar contekan SELinux
  • Lembar contekan perintah umum Linux
  • Apa itu container Linux?
  • Artikel Linux terbaru kami

Anda dapat dengan andal memprediksi bahwa string yang Anda pedulikan dipisahkan oleh bilangan bulat, tetapi Anda tidak dapat dengan andal memprediksi seperti apa bilangan bulat itu. Itulah tepatnya masalah yang ingin dipecahkan oleh regex.

Untuk menggunakan regex di tac . Anda perintah, gunakan --regex atau -r opsi sebelum --pemisah . Anda definisi. Selain itu, kecuali jika sudah disetel di lingkungan Anda, Anda harus mengaktifkan REG_EXTENDED variabel lingkungan. Anda dapat menyetel variabel ini ke apa pun kecuali nol untuk mengaktifkannya, dan Anda dapat melakukannya dengan semua cara biasa:

  • Ekspor variabel untuk sesi shell yang Anda gunakan.
  • Setel variabel lingkungan di file konfigurasi shell Anda (seperti ~/.bashrc ).
  • Tambahkan variabel lingkungan ke tac perintah (dalam Bash, Zsh, dan sejenisnya), seperti yang ditunjukkan pada contoh di bawah ini:
$ REG_EXTENDED=1 tac --regex \
--separator='[0-9]+' metasyntactic.txt
89baz898bar765foo432foobar1

Opsi regex tidak menangani rekaman yang tidak dihentikan dengan baik, meskipun menggunakan --before pilihan. Anda mungkin harus menyesuaikan file sumber jika fitur tersebut penting bagi Anda.

Kapan harus menggunakan tac

Opsi penguraian yang sederhana namun berguna ini membuat tac layak digunakan sebagai perintah parsing minimalis yang tidak rumit. Untuk pekerjaan sederhana yang tidak cukup layak untuk menulis ekspresi AWK atau Perl, tac mungkin itu solusi yang masuk akal.

taktik perintah terbatas, tentu saja, karena tidak memanipulasi catatan dengan cara apa pun selain membalikkannya. Namun terkadang itulah satu-satunya manipulasi daftar yang Anda butuhkan.

Misalnya, jika Anda mengemas perangkat lunak untuk distribusi, bukan hal yang aneh jika Anda memiliki daftar dependensi yang diperlukan untuk penginstalan. Bergantung pada bagaimana Anda mengumpulkan daftar ini, Anda mungkin memilikinya dalam urutan yang Anda buat tentang dependensi yang diperlukan alih-alih urutan di mana mereka harus diinstal.

Praktik ini relatif umum karena kesalahan kompiler mengenai dependensi tingkat tinggi terlebih dahulu. Yaitu, jika sistem Anda tidak memiliki libavcodec kemudian GCC berhenti dan memberi tahu Anda; tetapi karena GCC belum mendapat kesempatan untuk menyelidiki libvorbis di sistem Anda dan libvpx , misalnya, ia tidak dapat memberi tahu Anda bahwa dependensi tersebut juga hilang (dan, seringkali, harus ada di sistem Anda sebelum mengompilasi libavcodec ).

Jadi, daftar ketergantungan Anda bertambah dalam bentuk top-down saat Anda menemukan perpustakaan apa yang dibutuhkan sistem Anda untuk membangun perpustakaan yang dibutuhkan perpustakaan (dan seterusnya). Di akhir proses seperti itu, tac adalah cara cepat dan mudah untuk membalikkan daftar itu.

Gangguan umum lainnya adalah file log. Entri biasanya ditambahkan ke file log, jadi admin menggunakan tail untuk melihat kesalahan terbaru. Itu bekerja dengan baik, tetapi ada kalanya Anda ingin melihat "sepotong" entri tanpa mengetahui seberapa jauh Anda harus pergi. Taktik perintah disalurkan ke kurang atau lainnya menempatkan entri terbaru di bagian atas layar Anda.

Terakhir, banyak file konfigurasi tidak memiliki penanda terminasi yang jelas untuk bagian tertentu. Anda dapat mencari awk dan sed perintah untuk menemukan cara untuk menentukan kapan blok dalam file konfigurasi berakhir, atau Anda dapat menggunakan tac untuk membalikkan urutan sehingga setelah parser Anda menemukan entri pertama yang relevan di blok itu, ia juga tahu kapan harus berhenti membaca, karena yang dulunya header sekarang menjadi footer.

Tac aktif

Ada banyak kegunaan hebat lainnya untuk tac , dan mungkin banyak alasan yang tac terlalu sederhana untuk menjadi solusi. Namun, sistem Anda mungkin telah menginstalnya, jadi ingatlah perintah ini saat berikutnya Anda menemukan kasus tepi dalam alur kerja Anda yang benar-benar perlu ditac terbalik.


Linux
  1. Periksa status file di Linux dengan perintah stat

  2. Memulai dengan ls

  3. Memulai PostgreSQL di Linux

  1. Temukan file dan direktori di Linux dengan perintah find

  2. Memulai dengan perintah cat Linux

  3. Memulai SSH di Linux

  1. Memulai dengan desktop GNOME Linux

  2. Urutkan Perintah di Linux dengan Contoh

  3. Contoh Penting dari Perintah File di Linux