Apakah mungkin untuk menjalankan misalnya history -w
untuk mendasari bash shell dari skrip ruby?
Atau lebih baik mungkinkah menjalankan perintah builtin untuk bash shell hanya dengan mengetahui pidnya?
Satu-satunya cara yang saya temukan adalah untuk menjebak sinyal seperti trap "history -w" SIGUSR1
dan kemudian mengirim sinyal ke proses, tetapi saya tidak yakin itu adalah praktik yang baik dan USR1 tidak digunakan oleh bash, juga cara ini saya dapat menjalankan maks 2 perintah (USR1 dan USR2) . Dan saya harus mendefinisikan perangkap sebelum menggunakannya.
Saya di Mac jadi tidak ada SIGRTMIN..SIGRTMAX.
Mengapa saya membutuhkan ini:
Saya membuat skrip ruby shell dt
yang membuka tab baru di sebelah saat ini dengan dir berfungsi yang sama, kemudian saya menulis newTabHere.app yang dapat melakukan hal yang sama tetapi dapat melakukan ini bahkan jika tab sedang sibuk menjalankan sesuatu (saya menyebutnya menggunakan Spark ). Tetapi akan jauh lebih baik jika sejarah juga akan sama di tab duplikat dan karena dt
saya hanya dapat menggunakan alias dt='history -w; dt'
, tetapi bagaimana saya bisa melakukan ini newTabHere.app
?
Jawaban:
Tidak ada cara lain untuk membuat shell mengeksekusi perintah, selain mengetikkan pada input standarnya. Hal termudah adalah melakukan bash memeriksa beberapa file, atau menjalankan
history -w
, sebagai bagian dariPROMPT_COMMAND
(perintah yang dijalankan sebelum setiap prompt).Saya pikir apa yang Anda kejar sebenarnya adalah ekspor sejarah Real-time di antara jendela terminal Bash , dan mungkin sejarah bash yang lebih baik .
Anda mungkin juga mempertimbangkan untuk menggunakan zsh (tersedia di sebagian besar Linux / OSX / repositori paket unix lainnya) dan beserta opsi
inc_append_history
-share_history
opsinya .sumber
zsh
mungkin baik, tetapi tidak dapat menangani input utf-8 dan ini menghentikan saya segera (meskipun saya tahu itu dapat mencetak karakter)