Khi chúng ta sử dụng clear
lệnh hoặc Ctrl+ Ltrong terminal, nó sẽ xóa terminal nhưng chúng ta vẫn có thể cuộn lại để xem các lệnh được sử dụng cuối cùng. Có cách nào để xóa hoàn toàn thiết bị đầu cuối?
Khi chúng ta sử dụng clear
lệnh hoặc Ctrl+ Ltrong terminal, nó sẽ xóa terminal nhưng chúng ta vẫn có thể cuộn lại để xem các lệnh được sử dụng cuối cùng. Có cách nào để xóa hoàn toàn thiết bị đầu cuối?
Câu trả lời:
Bạn có thể sử dụng tput reset
.
Bên cạnh đó reset
và tput reset
bạn có thể sử dụng kịch bản shell sau đây.
#!/bin/sh
echo -e \\033c
Điều này sẽ gửi các ký tự điều khiển Esc-C
đến bàn điều khiển đặt lại thiết bị đầu cuối.
Từ khóa Google: Trình tự điều khiển bảng điều khiển Linux
man console_codes
nói:
Trình tự ESC c gây ra thiết lập lại thiết bị đầu cuối, đó là những gì bạn muốn nếu tất cả màn hình bị cắt xén. Thông báo "echo ^ V ^ O" sẽ chỉ tạo ra dòng điện G0, nhưng không có gì đảm bảo rằng điểm G0 tại bảng a). Trong một số bản phân phối có cài đặt lại chương trình (1) chỉ thực hiện "echo ^ [c". Nếu mục terminfo của bạn cho bảng điều khiển là chính xác (và có mục nhập rs1 = \ Ec), thì "thiết lập lại thông số" cũng sẽ hoạt động.
tput reset
nhanh hơn so với reset
Ubuntu 16.04, ít nhất
Tôi biết bạn đang ở trên một thiết bị đầu cuối gnome, nhưng tôi nghĩ tôi sẽ trả lời bằng một mẹo cho những người khác có thể (như tôi) trên máy Mac:
Nếu bạn đang sử dụng Terminal.app
hoặc iTerm.app
sau đó Control+L
sẽ cuộn lên để thiết bị đầu cuối trông trống, nhưng Cmd+K
thực tế sẽ đặt lại thiết bị đầu cuối / xóa cuộn lại.
Hoặc, nếu bạn có thể đặt tùy chọn bàn phím cho thiết bị đầu cuối của mình, bạn có thể chỉ định một cái gì đó giống như Ctrl+K
nhập vào echo -e \\033c
như đã đề cập ở trên.
Cmd+K
là tất cả những gì tôi muốn ty
Câu trả lời của Anthon hoạt động trong KDE Konsole, nhưng không phải là urxvt. Trong urxvt, tôi đã sử dụng thiết lập lại trong một vài năm để xóa cuộn lại (cùng với tất cả những thứ khác nó làm) và không hài lòng rằng nó không hoạt động trong Konsole. Vì vậy, bây giờ đối với Linux, tôi có một bí danh mới:
alias allclear='clear; echo -e "\033c\e[3J"'
Nhưng nó không hoạt động trên OS X.
tput reset
không hoạt động trong bất kỳ bối cảnh nào AFAICT.
Trong KDE Konsole, ctrl- shift- kxóa cuộn ngược lại (bao gồm dấu nhắc shell hiện tại, vì vậy nó hoàn toàn trống). Trong iTerm hoặc thiết bị đầu cuối của Apple trên OS X, cmd- shift- kcũng xóa cuộn ngược lại. Để thêm tính năng này vào urxvt, hãy thêm tính năng này vào ~ / .Xresours:
urxvt*keysym.C-S-K: command:\033c
allclear(){
`echo" Xóa thiết bị đầu cuối và cuộn lại ... "` `ngủ 1.5`` xóa; echo -e "\ 033c \ e [3J" ` }
` Chỉnh sửa: Không thể định dạng để hoạt động. Nếu bất cứ ai có thể chỉnh sửa nó để có thể đọc được, tôi sẽ đánh giá cao nó.
Tôi đã ánh xạ F12để xóa màn hình trong từng lớp vỏ sau: bash , csh và vỏ cá . Lệnh của tôi khác với tất cả các lệnh trước bởi vì nó bảo toàn mọi thứ bạn đã nhập trong dòng hiện tại.
(Lưu ý: tất cả các cấu hình bên dưới đều phụ thuộc vào thiết bị đầu cuối, nhưng tôi hy vọng chúng sẽ hoạt động hầu như ở mọi nơi)
Mở tệp ~/.inputrc
và chèn dòng sau:
"\e[24~": "\C-k \C-uecho -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\n\C-y\C-?"
Để có sẵn ràng buộc khóa mới, hãy mở một thiết bị đầu cuối mới hoặc gõ Ctrl+ Xrồi Ctrl+ Rđể tải lại tệp .inputrc trong thiết bị đầu cuối hiện tại.
Giải thích
Tệp ~ / .inputrc kiểm soát các ràng buộc chính của thiết bị đầu cuối bash.
Về dòng:
"\e[24~"
, ánh xạ khóa F12.C-k
( Ctrl+ X) xóa kill-ring (bash của sao chép và qua bộ nhớ).C-u
( Ctrl+ U) sẽ gửi các dòng hiện tại để giết-ring, và xóa nó.echo -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\n
gửi hai lệnh được nhóm đến thiết bị đầu cuối. Chúng được phân tách bằng ;
và chấm dứt bởi \n
.
echo -ne '\\ec\\e[3J'
xóa màn hình.history -d $((HISTCMD-1))
tránh hai lệnh này đi vào lịch sử.C-y
( Ctrl+ Y) sẽ dán kill-ring lưu trữ bởi các C-u
lệnh.C-?
( Ctrl+ ?) tương đương với Backspacevà loại bỏ không gian lắp vào bước 3 ở trên.Người giới thiệu:
Gõ lệnh dưới đây.
bindkey -c "^[[24~" "echo -ne '\ec\e[3J'"
Nó cũng có thể được chèn vào .cshrc
tập tin của bạn để tải ràng buộc khóa cho mọi thiết bị đầu cuối mới.
(Vâng, nó đơn giản hơn nhiều so với trong bash)
Gõ lệnh dưới đây.
bind -k f12 "echo -ne '\ec\e[3J'; commandline -f repaint"
Bạn có thể chỉnh sửa và lưu chức năng fish_user_key_bindings
để tải ràng buộc chính cho mọi thiết bị đầu cuối mới.
(Vâng, nó đơn giản hơn nhiều so với trong bash)
[Ubuntu 16.04]
Tệp .bash_history được tạo trong thư mục chính của người dùng sau khi thiết bị đầu cuối được đóng
Nó rất hữu ích, nhưng bạn có thể xóa nó nếu bạn muốn .. Tuy nhiên, nó sẽ được tạo ra mỗi khi bạn sử dụng thiết bị đầu cuối.
Bạn có thể xóa thủ công từ:
trình duyệt tập tin của bạn.
thiết bị đầu cuối: hãy nhớ rằng một tệp .bash_history mới sẽ được tạo khi bạn đóng thiết bị đầu cuối (dựa trên cấu hình mặc định của nó).
Hoặc bạn có thể gọi một hàm tùy chỉnh nếu bạn lưu chức năng bạn cần vào một tệp được liên kết từ bashrc .. bạn có thể chỉnh sửa bashrc nếu bạn muốn đặt mã của mình ở đó, nhưng các ví dụ tiếp theo nằm trong một tệp riêng
Thành thật mà nói điều này không hữu ích với tôi nhưng nếu bạn muốn xóa lịch sử lệnh trước khi thoát, bạn có thể làm điều này:
.bash_custom #this là tệp tùy chỉnh của tôi
blotout() {
HISTSIZE=0
rm $HOME/.bash_history
exit
}
sau đó ở dưới cùng thêm tên và đường dẫn của tệp của tôi
.bashrc # đây là tệp cấu hình cho bash (tôi nghĩ)
# existent code
#...
#..
# import user customizations
source $HOME/.bash_custom
và đó là tất cả.
NHƯNG, để làm chính xác những gì bạn muốn, bạn chỉ cần chức năng này trong tệp tùy chỉnh của mình và liên kết nó:
refresh() {
tput reset
H=HISTSIZE
HISTSIZE=0
HISTSIZE=H
}
Hoặc chỉ cần đặt hàm vào .bashrc nếu bạn muốn nhưng theo cách đó bạn có thể cần một câu lệnh xuất sau hàm Tôi không chắc chắn và nếu tệp được cập nhật có thể bị mất chức năng của bạn .. Tôi cũng không chắc về điều đó: CƯỜI MỞ MIỆNG .
Hãy nhớ rằng bạn phải khởi động lại thiết bị đầu cuối khi chỉnh sửa .bashrc hoặc tệp 'tùy chỉnh' của bạn.
Đối với tôi, sử dụng PuTTY với CentOS 7, chỉ xóa lệnh xóa trong cuộn ngược, nhưng chạy "xóa && xóa", hai trường hợp của lệnh xóa cùng lúc, xóa hoàn toàn cuộn lại và không cho tôi cuộn thanh. Hãy thử điều đó. Đó là một giải pháp kỳ lạ nhưng không ai trong số này ở đây xóa được cuộn ngược một cách hiệu quả, và điều này cũng vậy.
Trong Fedora 30, xóa lịch sử được thực hiện bằng cách xóa tệp $ HOME / .bash_history. Cách dễ nhất để xóa tệp lịch sử thiết bị đầu cuối qua bàn phím là:
nautilus
và bấm Enterphím để mở ứng dụng Tệp (Gnome) (trước đây gọi là Nautilus)..bash_history
(sẽ xuất hiện trong thanh tìm kiếm nếu được nhập ngay sau khi cửa sổ được mở; nếu không, thanh tìm kiếm có thể được truy cập qua Ctrl+ L).cat /dev/null > ~/.bash_history && history -c && exit
history -c
đã được trình bày trong hai câu trả lời trước đó và chúng đã bị xóa vì không trả lời đúng cho câu hỏi. (2) Trong khi đóng cửa sổ terminal sẽ (có thể) xóa bộ nhớ của thiết bị đầu cuối của lệnh trước đó, đó là xa từ rõ ràng rằng các OP muốn làm điều đó. Cấm và PS Một exit
lệnh duy nhất không được đảm bảo để đóng cửa sổ đầu cuối.