Làm cách nào tôi có thể khiến Bash (hoặc Zsh) chạy một lệnh cụ thể trước mỗi lệnh đã nhập?


1

Tôi muốn cấu hình Bash để chạy một lệnh cụ thể trước khi chạy từng dòng lệnh tôi nhập tại dấu nhắc. Cụ thể, tôi muốn nói với Vim (đang chạy trong một thiết bị đầu cuối khác) viết tất cả các bộ đệm đang mở, bởi vì trong quy trình làm việc của tôi nếu có bất cứ điều gì chưa được lưu khi tôi rời Vim thì đó là một sai lầm.

Có một lựa chọn cho điều này trong Bash? Nếu không, có một tùy chọn trong Zsh?

(Có một giải pháp dựa trên đường dẫn có phần phù hợp với vấn đề này trong một câu hỏi khác, nhưng nó cảm thấy hơi khó hiểu. Nó sẽ coi đó là phương sách cuối cùng.)



Bạn có chắc chắn muốn chạy một lệnh trước khi thực hiện lệnh tiếp theo chứ không phải sau khi hoàn thành lệnh trước đó?
Daniel Beck

Có, tôi muốn chuyển từ khung Vim tmux của mình sang khung Bash của tôi, chạy một lệnh và đảm bảo rằng tất cả các tệp trong Vim đã (cố gắng) lưu trước khi lệnh chạy. Tôi đang mô phỏng hành vi soạn thảo GUI phổ biến là lưu khi mất tiêu điểm.
Peeja

Câu trả lời:


2

Bạn có thể sử dụng 'premd' trong zsh cho điều đó.

Có lẽ bạn có thể muốn định cấu hình các bản sao lưu trong Vim, bởi vì làm những thứ như vậy trong premd không phù hợp với tôi.


0

Tôi đã thực hiện những điều tương tự bằng cách sử dụng lớp vỏ giả bằng cách sử dụng nội dung dựng sẵn như sau:

#!/bin/sh
#public domain fake shell template
while read -p "$PS1" CMD; do
   case "$CMD" in
      *bad_case*|*another_bad_case*)echo bad command: user info logged etc..;;
      *)<your_command_here>
         eval "$CMD";;
   esac
done
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.