Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Làm cho lịch sử Bash hữu ích hơn với các mẹo này

Một thiết bị đầu cuối Linux chạy Bash có một lịch sử tích hợp mà bạn có thể sử dụng để theo dõi những gì bạn đang làm gần đây. Để xem lịch sử phiên Bash của bạn, hãy sử dụng lệnh tích hợp sẵn history :

$ echo "foo"
foo
$ echo "bar"
bar
$ history
  1  echo "foo"
  2  echo "bar"
  3  history

history lệnh không phải là một tệp thực thi trên hệ thống tệp của bạn, giống như hầu hết các lệnh, mà là một chức năng của Bash. Bạn có thể xác minh điều này bằng cách sử dụng type lệnh:

$ type history
history is a shell builtin

Kiểm soát lịch sử

Giới hạn trên của các dòng trong lịch sử trình bao của bạn được xác định bởi HISTSIZE Biến đổi. Bạn có thể đặt biến này trong .bashrc của mình tập tin. Phần sau đặt lịch sử của bạn thành 3.000 dòng, sau đó dòng cũ nhất bị xóa để nhường chỗ cho lệnh mới nhất, được đặt ở cuối danh sách:

export HISTSIZE=3000

Ngoài ra còn có các biến khác liên quan đến lịch sử. HISTCONTROL biến kiểm soát lịch sử nào được lưu trữ. Bạn có thể buộc Bash loại trừ các lệnh bắt đầu bằng khoảng trống bằng cách đặt nó vào .bashrc của bạn tệp:

export HISTCONTROL=$HISTCONTROL:ignorespace

Bây giờ, nếu bạn nhập lệnh bắt đầu bằng dấu cách, lệnh đó sẽ không được ghi lại trong lịch sử:

$ echo "hello"
$     mysql -u bogus -h badpassword123 mydatabase
$ echo "world"
$ history
  1  echo "hello"
  2  echo "world"
  3  history

Bạn cũng có thể tránh các mục nhập trùng lặp:

export HISTCONTROL=$HISTCONTROL:ignoredups

Bây giờ, nếu bạn gõ hai lệnh, lần lượt, chỉ một lệnh xuất hiện trong lịch sử:

$ ls
$ ls
$ ls
$ history
  1  ls
  2  history

Nếu bạn thích cả hai cách bỏ qua này, bạn chỉ có thể sử dụng ignoreboth :

export HISTCONTROL=$HISTCONTROL:ignoreboth

Xóa lệnh khỏi lịch sử

Đôi khi bạn mắc lỗi và nhập một thứ gì đó nhạy cảm vào shell của mình hoặc có thể bạn chỉ muốn xóa lịch sử của mình để nó thể hiện chính xác hơn các bước bạn đã thực hiện để làm cho một thứ gì đó hoạt động chính xác. Nếu bạn muốn xóa một lệnh khỏi lịch sử của mình trong Bash, hãy sử dụng -d tùy chọn với số dòng của mục bạn muốn xóa:

$ echo "foo"
foo
$ echo "bar"
bar
$ history | tail
  535  echo "foo"
  536  echo "bar"
  537  history | tail
$ history -d 536
$ history | tail
  535  echo "foo"
  536  history | tail
  537  history -d 536
  538  history | tail

Để ngừng thêm history các mục nhập, bạn có thể đặt một space trước lệnh, miễn là bạn có ignorespace trong HISTCONTROL của bạn biến môi trường:

$  history | tail
  535  echo "foo"
  536  echo "bar"
$  history -d 536
$  history | tail
  535  echo "foo"

Bạn có thể xóa toàn bộ lịch sử phiên của mình bằng -c tùy chọn:

$ history -c
$  history
$

Các bài học lịch sử

Thao túng lịch sử thường ít nguy hiểm hơn so với âm thanh của nó, đặc biệt là khi bạn đang quản lý nó có mục đích. Ví dụ:nếu bạn đang ghi lại một vấn đề phức tạp, tốt nhất bạn nên sử dụng lịch sử phiên để ghi lại các lệnh của mình vì bằng cách đưa chúng vào lịch sử, bạn đang chạy chúng và qua đó kiểm tra quá trình. Thông thường, việc ghi chép lại mà không thực hiện dẫn đến việc bỏ sót các bước nhỏ hoặc viết sai các chi tiết nhỏ.

Sử dụng các phiên lịch sử của bạn khi cần thiết và thực hiện quyền lực của bạn đối với lịch sử một cách khôn ngoan. Chúc bạn hack lịch sử vui vẻ!