Câu trả lời:
Các history
được xây dựng trong bash
phép xác định tên tập tin khi được sử dụng với -anrw
cờ, và -a
mô tả cờ từ help history
trạng thái:
nối các dòng lịch sử từ phiên này vào tệp lịch sử
Do đó, chúng ta có thể làm:
~$ history -a this_session.history
~$ cat ./this_session.history
history mysession.history
cat mysession.history
clear
history -a this_session.history
Đối với bản ghi, -w
(lịch sử ghi vào tệp opion) ghi toàn bộ lịch sử vào tệp đã chỉ định, vì vậy -a
(chắp thêm) ở đây là lựa chọn ưu tiên.
Có những cách thủ công khác. Cụ thể là ksh
không có -a
cờ như bash
vậy, nhưng cái ksh
và mksh
phải có là HISTFILE
biến môi trường (và bash
cũng có điều đó, vì bash
bao gồm rất nhiều ksh
tính năng); bằng cách này, biến này theo mặc định không được đặt (ít nhất là mksh
trên Ubuntu không đặt nó). Vì vậy, để xuất phiên hiện tại sang tệp khác, chúng tôi gọi lệnh được đặt HISTFILE
trước để theo lệnh cú pháp shell có nghĩa là chạy lệnh với biến môi trường bổ sung mà bạn chỉ định. Thích như vậy:
bash-4.4$ HISTFILE='mykshfile.hist' ksh
$ echo 'Hello'
Hello
$ echo 'World'
World
$
bash-4.4$ cat ./mykshfile.hist
�echo 'Hello'
echo 'World'
Những gì bạn cũng có thể thấy từ điều này là ksh
lịch sử đầu ra của trình bao với các ký tự đặc biệt, thay vì văn bản đơn giản như những gì bash
nó làm. Vì vậy, bạn có thể muốn mở tập tin đó với ksh
.
Theo như trình bao POSIX /bin/sh
trên Ubuntu , đó là Debian Almquist Shell hoặc Dash, đã tồn tại tích fc
hợp sẵn . Tuy nhiên, trên Ubuntu dash được biên dịch mà không cần chỉnh sửa lib , đây là lựa chọn có ý thức của các nhà phát triển Ubuntu vì lý do hiệu suất, vì vậy fc
và các chế độ khác yêu cầu chỉnh sửa dòng không hoạt động (trừ khi dash
tự biên dịch lại và cài đặt lib-edit
).
Các cách trung lập của Shell sẽ là ghi lại phiên của bạn bằng các công cụ hiện có hoặc viết chức năng của riêng bạn để ghi lại trên cơ sở mỗi lệnh.