Làm cách nào tôi có thể rút ngắn lời nhắc dòng lệnh (bash)?


Câu trả lời:


241

Để thay đổi nó cho phiên bản thiết bị đầu cuối hiện tại

Chỉ cần nhập PS1='\u:\W\$ 'và nhấn enter.


Để thay đổi nó "vĩnh viễn"

Trong của bạn ~/.bashrc, tìm phần sau:

if ["$ color_prompt" = có]; sau đó
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $ '
khác
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ u @ \ h: \ w \ $'
fi

Xóa @\hvà thay thế \wbằng chữ hoa \Wđể nó trở thành:

if ["$ color_prompt" = có]; sau đó
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ [\ 033 [01; 32m \] \ u \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ W \ [\ 033 [00m \] \ $ '
khác
    PS1 = '$ {debian_chroot: + ($ debian_chroot)} \ u: \ W \ $'
fi

Lưu, thoát, đóng terminal và bắt đầu cái khác để xem kết quả.


Nhiều lựa chọn hơn!

  • Xem ở đây để biết cách mở rộng hơn, với nhiều tùy chọn hơn
  • Xem câu trả lời này để sử dụng một tập lệnh Python nhỏ để đặt lời nhắc để việc rút ngắn chỉ xảy ra khi bạn ở sâu trong cấu trúc thư mục.

1
Bạn cũng có thể có rất nhiều thông tin ... và sau đó là một chuyến xe trở về vào cuối như trong unix.stackexchange.com/q/88780/10043
Michael Durrant

Có cách nào để làm cho toàn cầu này? Nói cách khác, nếu tôi sudo cho người dùng khác, cài đặt này sẽ được thực hiện, nhưng chỉ cho bản thân tôi (nghĩa là không dành cho người dùng khi họ thường sử dụng tài khoản của họ)?
ctote

Để có .bashrc được chia sẻ hoạt động trên cả Linux và OSX, tôi đã chuyển sang unix.stackexchange.com/a/127800/10043
Michael Durrant

tức là HOST='\033[02;36m\]\h' HOST=' '$HOST parse_git_branch () { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'; } TIME='\033[01;31m\]\t \033[01;32m\]' LOCATION=' \033[01;34m\]pwd | sed "s # (/ [^ /] \ {1, \} / [^ /] \ {1, \} / [^ /] \ {1, \} /). * (/ [^ /] \ { 1, \} / [^ /] \ {1, \}) / \ {0,1 \} # \ 1_ \ 2 # g "' BRANCH=' \033[00;33m\]$(parse_git_branch)\[\033[00m\]\n\$ ' PS1=$TIME$USER$HOST$LOCATION$BRANCH PS2='\[\033[01;36m\]>'
Michael Durrant

nhưng xem câu trả lời cho mã thực tế để sử dụng.
Michael Durrant

104

Chạy mã này trong thiết bị đầu cuối hiện tại

PROMPT_DIRTRIM=3

Bây giờ dấu nhắc bash sẽ chỉ hiển thị 3 tên thư mục cuối cùng. Bạn có thể chọn 1 để chỉ hiển thị thư mục hiện tại. Thêm thông tin có sẵn trong tài liệu GNU .

Tác dụng:

/var/lib/apt/lists# PROMPT_DIRTRIM=3
/.../lib/apt/lists# 

Nếu bạn muốn làm cho nó vĩnh viễn, hãy thêm dòng sau ~/.bashrcvào đầu:

PROMPT_DIRTRIM=3

hoặc một số khác lớn hơn 0.


7
Chỉ là một sidenote: Điều này đòi hỏi Bash 4.
Stefan Lasiewski

Thật tuyệt ... Tôi đã thêm một bach_alias cho việc này (với một chức năng) promptdir() { PROMPT_DIRTRIM=$1; }chỉ để làm cho cuộc sống dễ dàng hơn ...
dgoosens

18

Đây là cài đặt nhắc nhở ưa thích của tôi:

thêm vào ~/.bashrc

PS1='[\u@\h \W]\$ '    

nó trông như thế này:

[user@hostname dirname]$

(có một khoảng trắng sau $dấu hiệu)


Làm thế nào tôi có thể thêm một khoảng trắng giữa mỗi từ? Ngoài ra, tôi có thể tô màu nó?
Daniel Springer

6

Cá nhân tôi chỉ muốn xem thư mục hiện tại trong dấu nhắc bash. Tôi có thể làm điều này với lệnh sau:

PS1='\W\$ '

Nếu bạn muốn nó có hiệu lực sau mỗi lần khởi động thì hãy thêm lệnh trên vào ~ / .bashrc của bạn.


1

Tôi nhận ra điều này là siêu cũ nhưng vì không ai đề nghị tạo bí danh nên tôi nghĩ rằng tôi đã đăng. Sử dụng Bash Prompt Escape Sequences Tôi đã tạo một bí danhshorten

~/.bash_aliasesđây bạn sẽ thấy var $ Blue để đặt màu nhắc mà bạn có thể bỏ qua hoặc thay đổi dựa trên tùy chọn Tôi cũng xóa thiết bị đầu cuối khi gọi rút ngắn.

alias c='clear'

alias shorten='PS1="$Blue$USER:\W$ "&& c'

Để đạt được chuỗi nhắc nhở mong muốn của OP:

alias shorten='PS1="$USER:\W$ "'

Tôi có các màu được xác định trong ~/.bashrcbản sao và dán từ https://wiki.archlinux.org/index.php/Color_Bash_Prompt . Một mặt lưu ý những gì với màu mã ansi? Tôi bối rối chỉ nhìn vào nó.

Blue='\e[0;34m'         # Blue

Hướng dẫn từng bước cho việc này sẽ rất hữu ích vì tôi không biết làm thế nào để truy cập .bash_aliases. Cảm ơn
Kayote 2/2/2016

2
"." tiền tố chỉ ra một thư mục hoặc tập tin ẩn. Dấu ngã "~" là dạng rút gọn của biến $ HOME. Vì vậy, "~ / .bash_aliases" chỉ là dạng viết tắt của "/home/$USER/.bash_aliases". Để mở ".bash_aliases", bạn có thể mở một thiết bị đầu cuối và nhập "gedit /home/$USER/.bash_aliases" hoặc "gedit ~ / .bash_aliases" hoặc trong thư mục chính của bạn gõ ctrl-h để hiển thị các tệp ẩn và mở tệp trực tiếp . Mong rằng sẽ giúp. Bạn có thể muốn thực hiện tìm kiếm Google cho các bí danh hữu ích.
Allie Carver

0

Tôi đã viết một chức năng bạn có thể sửa đổi cho phù hợp với nhu cầu của bạn:

function termprompt() {
    PS1="${PS1//@\\h/}"     # Remove @host
    PS1="${PS1//\\w/\\W}"   # Change from full directory to last name
}

Đặt hàm này ở hoặc gần cuối của dòng ~/.bashrcsau khi PS1dòng được tính toán đầy đủ.

Bạn sẽ gõ termpromptbất cứ khi nào bạn muốn rút ngắn lời nhắc của bạn hoặc, đã termpromptgọi từ dưới cùng của bạn ~/.bashrcđể được vĩnh viễn.

Ưu điểm của kỹ thuật này so với nhiều câu trả lời khác là .bashrccó thể thiết lập PS1theo bốn cách khác nhau (xterm + no-color, xterm + color, no-xterm + no-color, no-xterm + color). Câu trả lời này hỗ trợ tất cả bốn phương pháp hiện tại và có thể cả các phương pháp trong tương lai.

Một ưu điểm khác là phương pháp này có các mã điều khiển ít phức tạp hơn để duyệt qua để chèn các thay đổi của bạn.

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.