Shell Sins

Anda tidak akan pergi ke neraka untuk ini, tetapi Anda mungkin harus melihat halaman manual. Beberapa program hanya terbatas, tapi hei, Anda tidak dapat mengharapkan setiap program menyediakan fungsi printf, formatter tanggal dan penanganan input dari stdin.

Tidak deklaratif grep

grep adalah alat yang ampuh di Unix, tetapi dapat disalahgunakan. Berikut adalah contohnya (oleh saya 😮):

tanggal - tanggal="$ (stat" $ 4 / $ {i% . html} .md "| grep Modifikasi | potong - d ':' -f2 -

Skuzzymiglet tua yang malang kemudian tidak tahu tentang stat --printf , yang mana memiliki opsi berguna untuk waktu pencetakan:

 % w waktu kelahiran file, dapat dibaca manusia; - jika tidak diketahui % W waktu kelahiran file, detik sejak Epoch; 0 jika tidak diketahui % x kali akses terakhir, dapat dibaca manusia % X waktu akses terakhir, detik sejak Epoch % y kali modifikasi data terakhir, dapat dibaca manusia % Y kali modifikasi data terakhir, detik sejak Epoch % z kali perubahan status terakhir, dapat dibaca manusia % Z waktu perubahan status terakhir, detik sejak Epoch  

Tanggal yang dapat dibaca manusia adalah format tetap, jadi Anda hanya dapat tanggal "your_cool_format" --date="@ $ (stat - printf="% Y" apa pun yang Anda_ inginkan) "

Umumnya, opsi seperti printf berguna dalam program – ini mencegah pengikisan dan sangat mempersingkat urutan pipa. Namun sayang, sebagian besar program perlu di-grep.

Fungsi

Kedengarannya aneh tapi saya yakin fungsi adalah bau kode shell. Masalahnya adalah dengan suatu fungsi, Anda mengharapkan nama paramater (dan tipe jika Anda orang yang waras 😀). Namun, Anda akan menemukan itu seperti argumen baris perintah, dan jika Anda tidak punya waktu untuk menggunakan getopt (1) , Anda akan ditangani dengan indeks.

Atau Anda dapat menetapkan kembali variabel:

(dari ssg5 )

  render_sitemap () {     url="$ 1"     base_url="$ 2"     tanggal="$ 3"      echo ''     echo ''     echo "$ urls" |         sed -E # ^ (.  $ #  '"$ base_url"' /  1  '"$ date"'  1.0  # '     echo '' }  

Tapi siapa yang akan menggunakan ini?

  func render_sitemap (params [] string)  

Saya menganggap fungsi shell dengan lebih dari satu parameter sebagai kontributor kode hanya-tulis.

Beberapa prosesor teks

Hierarki pemroses teks berikut:

  • tujuan tunggal: potong , tr , nl , urutkan , grep
  • datar: ekspresi reguler dan sed
  • teks DSL: Awk
  • bahasa skrip: Python, Perl

Secara umum, Anda harus menggunakan satu dan hanya satu dari yang ditentukan atas. Mulailah dengan alat lower-down, lalu alih-alih menambahkan perintah ke pipa, gunakan prosesor teks tingkat yang lebih tinggi.

Dalam pipa, bahasa pemrograman menjadi tidak terkendali dengan cepat. Menempatkan semuanya dalam tanda kutip dan tanpa penyorotan sintaks itu sulit.

Daftar ini mungkin akan mendapatkan beberapa pembaruan di masa mendatang. Untuk saat ini, selamat membuat skrip!

Read More

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments