Saya memiliki beberapa tugas skrip shell sederhana yang ingin saya lakukan
Misalnya: Memilih file di direktori kerja dari daftar file yang cocok dengan ekspresi reguler.
Saya tahu bahwa saya dapat melakukan hal semacam ini dengan menggunakan standar bash dan grep tetapi saya akan senang dapat meretas skrip cepat yang akan bekerja di windows dan linux tanpa saya harus menghafal tumpukan program command line dan bendera dll.
Saya mencoba menjalankan ini tetapi akhirnya menjadi bingung di mana saya seharusnya mendapatkan informasi seperti referensi ke direktori saat ini
Jadi pertanyaannya adalah apa bagian dari pustaka Ruby yang perlu saya ketahui untuk menulis skrip ruby shell?
Jawaban:
Secara default, Anda sudah memiliki akses ke Dir dan File , yang cukup berguna sendiri.
Juga berguna dari stdlib adalah FileUtils
Cukup bagus
sumber
Seperti yang sudah dikatakan orang lain, baris pertama Anda seharusnya
Dan Anda juga harus membuatnya dapat dieksekusi: (di shell)
Kemudian ikuti kode ruby. Jika Anda membuka file
file dibuka di direktori saat ini Anda akan dapatkan
pwd
di shell.Jalur ke skrip Anda juga mudah didapat. Dengan
$0
Anda mendapatkan argumen pertama dari shell, yang merupakan jalur relatif ke skrip Anda. Jalan absolut dapat ditentukan seperti itu:Untuk operasi sistem file, saya hampir selalu menggunakan Pathname. Ini adalah pembungkus untuk banyak kelas terkait sistem file lainnya. Juga berguna: Dir, File ...
sumber
Berikut adalah sesuatu yang penting yang hilang dari jawaban lain: parameter baris perintah diekspos ke skrip shell Ruby Anda melalui array ARGV (global).
Jadi, jika Anda memiliki skrip bernama my_shell_script:
... membuatnya dapat dieksekusi (seperti yang telah disebutkan orang lain):
Dan menyebutnya seperti ini:
Anda akan mendapatkan ini:
Argumen bekerja dengan baik dengan ekspansi nama file:
Sebagian besar ini hanya bekerja pada UNIX (Linux, Mac OS X), tetapi Anda dapat melakukan hal-hal serupa (meskipun kurang nyaman) di Windows.
sumber
Ada banyak saran bagus di sini, jadi saya ingin menambahkan sedikit lebih banyak.
Backticks (atau back-ticks) memungkinkan Anda melakukan beberapa hal penulisan skrip dengan lebih mudah. Mempertimbangkan
Jika Anda mengalami masalah dengan mendapatkan output dari backticks, barang-barang akan menjadi standar err bukannya standar keluar. Gunakan saran ini
Backticks melakukan interpolasi string:
Anda dapat memasang pipa di dalam Ruby juga . Ini tautan ke blog saya, tetapi tautannya kembali ke sini jadi tidak apa-apa :) Mungkin ada hal-hal yang lebih maju di luar sana tentang topik ini.
Seperti yang dicatat orang lain, jika Anda ingin serius ada Rush: tidak hanya sebagai pengganti shell (yang agak terlalu lucu bagi saya) tetapi juga sebagai perpustakaan untuk digunakan dalam skrip dan program shell.
Di Mac, Gunakan Applescript di dalam Ruby untuk kekuatan yang lebih besar. Ini
shell_here
skrip saya :sumber
Ambil sendiri salinan Everyday Scripting dengan Ruby . Ini memiliki banyak tips berguna tentang cara melakukan jenis hal yang ingin Anda lakukan.
sumber
Ini mungkin juga membantu: http://rush.heroku.com/
Saya belum sering menggunakannya, tetapi terlihat sangat keren
Dari situs:
sumber
katakanlah Anda menulis
script.rb
skrip Anda . taruh:sebagai baris pertama dan lakukan a
chmod +x script.rb
sumber
Saat Anda ingin menulis skrip ruby yang lebih rumit, alat ini dapat membantu:
Sebagai contoh:
thor (kerangka kerja scripting)
gli (git like interface)
metadon (untuk membuat alat sederhana)
Mereka memberi Anda awal yang cepat untuk menulis skrip Anda sendiri, terutama 'aplikasi command line'.
sumber
Jawaban di atas menarik dan sangat membantu saat menggunakan Ruby sebagai skrip shell. Bagi saya, saya tidak menggunakan Ruby sebagai bahasa harian saya dan saya lebih suka menggunakan ruby sebagai kontrol aliran saja dan masih menggunakan bash untuk melakukan tugas.
Beberapa fungsi pembantu dapat digunakan untuk menguji hasil eksekusi
Dengan helper, skrip ruby bisa mirip:
sumber
"Bagaimana cara menulis ruby" sedikit di luar cakupan SO.
Tetapi untuk mengubah skrip ruby ini menjadi skrip yang dapat dieksekusi, cantumkan ini sebagai baris pertama skrip ruby Anda:
Kemudian buat file tersebut dapat dieksekusi:
dan pergilah.
sumber
Tempatkan ini di awal skrip Anda.rb
Kemudian tandai sebagai executable:
sumber
Jawaban oleh webmat sempurna. Saya hanya ingin menunjukkan Anda tambahan. Jika Anda harus banyak berurusan dengan parameter baris perintah untuk skrip Anda, Anda harus menggunakan optparse . Ini sederhana dan sangat membantu Anda.
sumber
Dalam ruby, konstanta
__FILE__
akan selalu memberi Anda jalan naskah yang Anda jalankan.Di Linux,
/usr/bin/env
adalah teman Anda:Pada Windows, tergantung apakah file .rb dikaitkan dengan ruby atau tidak. Jika mereka adalah:
Jika tidak, Anda harus secara eksplisit memanggil ruby, saya menggunakan file .cmd perantara:
my_script.cmd:
my_script.rb:
sumber