Nếu bạn muốn sử dụng đầu ra của history
lệnh từ phiên shell hoạt động trong tập lệnh, bạn có thể sử dụng bí danh để chạy lệnh trước. Sau đó, trong cùng một bí danh, bạn có thể gọi phần còn lại của tập lệnh. Với cấu hình như vậy, bạn có thể đạt được kết quả cơ bản giống như có history
lệnh trong tập lệnh thực tế.
Chẳng hạn, bạn có thể tạo một bí danh như thế này, giả sử tên của tập lệnh là script.sh:
alias hy_tmp='history | tail -100 > /tmp/history.log ; bash /patch/to/script.sh'
Và thay đổi tập lệnh này:
#!/bin/bash
cd /tmp
uuencode history.log history.txt | mail -s "History log of server" hello@hel.com
Tôi đã tìm thấy câu hỏi này trong khi viết một quy trình để kết hợp, sắp xếp và đồng bộ hóa ~/bash_history
các tệp trên hai máy tính để dễ dàng tìm kiếm các lệnh tôi đã sử dụng trước đây.
Ít gặp rắc rối hơn khi cập nhật tệp lịch sử tích lũy của tôi mà không phải đăng nhập vào trình bao mới để ~/bash_history
cập nhật. Để giám sát một máy chủ, điều này rõ ràng sẽ không hoạt động, như đã đề cập trong các câu trả lời khác.
Cách sử dụng của tôi nói riêng là:
alias hbye='history | cut -c 8- > /home/chris/.bash_history_c; bash /hby.sh
Tập lệnh hby.sh
sau đó kéo tất cả các mục duy nhất từ tất cả ~/.bash_history*
các tệp.
histtest.sh: 5: set: Illegal option -o history