Làm cách nào để xóa lịch sử thiết bị đầu cuối Gnome?


59

Khi chúng ta sử dụng clearlệ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?


Đó là phụ thuộc thiết bị đầu cuối, và không có câu trả lời nào giải quyết điều đó.
Thomas Dickey

Câu trả lời:


69

Bạn có thể sử dụng tput reset.

Bên cạnh đó resettput resetbạ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.


1
Sự khác biệt giữa thiết lập lại và thiết lập lại thông số là gì?
Tẩy răng

tput resetnhanh hơn so với resetUbuntu 16.04, ít nhất
Iván Rodríguez Torres

5
-1, bạn vẫn có thể thấy bộ đệm nếu bạn cuộn lên
João Pimentel Ferreira

15

Bạn có thể sử dụng resetlệnh, sẽ thiết lập lại các thiết lập đầu cuối.


15

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.apphoặc iTerm.appsau đó Control+Lsẽ cuộn lên để thiết bị đầu cuối trông trống, nhưng Cmd+Kthự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+Knhập vào echo -e \\033cnhư đã đề cập ở trên.


2
Cmd+Klà tất cả những gì tôi muốn ty
Gaurav Gandhi

9

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

Câu trả lời này là câu trả lời mà bất kỳ ai sử dụng Linux Bash đều sẽ yêu thích nếu họ mong đợi kết quả tương tự như họ sẽ nhận được trên máy Mac bằng cách nhấn lệnh + K. Tôi đã tiếp tục và biến điều này thành một lệnh độc lập bằng cách thêm chức năng sau vào dưới cùng của /etc/bash.bashrc (sau đó đăng xuất khỏi máy chủ, đăng nhập lại và nó sẽ hoạt động thông qua lệnh allclear): 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ó.
KLaw

3

Tôi tìm thấy điều này trên mạng nhiều năm trước, và hoạt động tốt cho tôi. Nó hoàn toàn xóa thiết bị đầu cuối không có lịch sử cuộn.

echo -e "\e[3J"

2

Tôi đã ánh xạ F12để xóa màn hình trong từng lớp vỏ sau: bash , cshvỏ 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)

bash

Mở tệp ~/.inputrcvà 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:

  1. Phần đầu tiên của dòng "\e[24~", ánh xạ khóa F12.
  2. Các C-k( Ctrl+ X) xóa kill-ring (bash của sao chép và qua bộ nhớ).
  3. Không gian tránh tiếng bíp trong lệnh tiếp theo.
  4. Các C-u( Ctrl+ U) sẽ gửi các dòng hiện tại để giết-ring, và xóa nó.
  5. Việc echo -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\ngử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.
    • Việc echo -ne '\\ec\\e[3J'xóa màn hình.
    • Việc history -d $((HISTCMD-1))tránh hai lệnh này đi vào lịch sử.
  6. Các C-y( Ctrl+ Y) sẽ dán kill-ring lưu trữ bởi các C-ulệnh.
  7. Các 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:

csh

Gõ lệnh dưới đây.
bindkey -c "^[[24~" "echo -ne '\ec\e[3J'"
Nó cũng có thể được chèn vào .cshrctậ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)

vỏ cá

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)


2

[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.


1

Đố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.


0

Đã thêm vào để ~/.inputrcràng buộc hoàn thành thanh toán bù trừ vào F12:

"\e[24~":'!echo -ne \047\\0033\\0143\047\r'

0

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à:

  • Nhấn Alt+ F4để đóng từng cửa sổ Gnome Terminal, đạp xe qua các cửa sổ thông qua Alt+ Tabhoặc Alt+ Shift+ Tabnếu cần. (Tất cả các cửa sổ đầu cuối phải được đóng vì tệp .bash_history được tạo hoặc cập nhật khi chúng đóng.)
  • Nhấn Alt+ F2.
  • Nhập nautilusvà bấm Enterphím để mở ứng dụng Tệp (Gnome) (trước đây gọi là Nautilus).
  • Nhấn Ctrl+ Hnếu cần để hiển thị các tập tin ẩn.
  • Nhập .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).
  • Nhấn phím mũi tên xuống để chọn tệp, đây sẽ là kết quả tìm kiếm duy nhất.
  • Nhấn Shift+ Deleteđể xóa vĩnh viễn tệp. (Nếu bạn sử dụng Deletekhóa chưa sửa đổi thay vào đó, tệp .bash_history sẽ vẫn có thể truy cập được qua thư mục Thùng rác.)

-2
cat /dev/null > ~/.bash_history && history -c && exit

Ít nhất bạn có thể làm là giải thích và định dạng câu trả lời của bạn.
Nghịch lý

(1) Không rõ ràng rằng OP muốn xóa bộ nhớ vỏ (lịch sử) của các lệnh trước đó (câu hỏi là về thiết bị đầu cuối ). Bạn không thể nhìn thấy nó, nhưng 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 exitlệnh duy nhất không được đảm bảo để đóng cửa sổ đầu cuối.
G-Man
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.