Làm cách nào để rút ngắn đường dẫn thư mục hiện tại được hiển thị trên thiết bị đầu cuối?


17

Nếu tôi đang ở trong một thư mục sâu, hãy nói:

~/Desktop/Dropbox/School/2017/C/A3/

sau đó khi tôi mở terminal, nó báo

bob@bob-ubuntu:~/Desktop/Dropbox/School/2017/C/A3/$

và sau đó tôi viết lệnh của tôi. Đó là rất dài, và mỗi dòng tôi viết trong thiết bị đầu cuối đi đến dòng tiếp theo. Tôi muốn biết nếu có một cách để nó chỉ hiển thị thư mục hiện tại của tôi. Tôi muốn nó hiển thị:

bob@bob-ubuntu: A3/$

Bằng cách này, nó rất rõ ràng và tôi luôn có thể làm pwdđể xem toàn bộ thư mục của mình. Tôi chỉ không muốn toàn bộ thư mục hiển thị trong thiết bị đầu cuối vì nó chiếm quá nhiều không gian.

Câu trả lời:


12

Bạn cần sửa đổi PS1trong tập tin khởi động shell của bạn (có thể .bashrc).

Nếu đã có, cài đặt của nó sẽ chứa \w, đó là những gì mang lại cho thư mục làm việc của bạn. Thay đổi nó thành \W(chữ hoa). Đăng xuất và đăng nhập lại hoặc làm:

. .bashrc

(hoặc bất cứ tập tin nào của bạn).

Nếu nó không có ở đó, hãy thêm một cái gì đó như:

PS1='\u@\h: \W:\$'

đến .bashrchoặc bất cứ điều gì. Tra cứu PS1trong bashtrang hướng dẫn để có thêm ý tưởng.

Hãy cẩn thận; bashcó thể sử dụng nhiều hơn một tệp khởi tạo, ví dụ .bashrc.bash_profile; nó có thể được PS1đặt trong một hệ thống toàn hệ thống. Nhưng bạn có thể ghi đè lên một trong các tệp của riêng bạn.


23

Kể từ bash 4, cách đơn giản để rút ngắn độ sâu của thư mục trong dòng lệnh là sử dụng lệnh dưới đây trong tệp bashrc của bạn. Chỉ cần nhớ mở lại thiết bị đầu cuối của bạn và số (tức là 1) chỉ định độ sâu của thư mục sẽ hiển thị.

PROMPT_DIRTRIM = 1


4
Điều này thật đúng với gì mà tôi đã tìm kiếm. Đặt một cái gì đó giống như export PROMPT_DIRTRIM=3trong của bạn .bashrclà nền tảng hoàn hảo giữa \W\w. Xem: gnu.org/software/bash/manual/html_node/Bash-Variabled.html
spkane

3

Giả sử bạn đang sử dụng bash, hãy thay đổi chuỗi dấu nhắc (biến PS1) để nó \Wthay thế \w.

ví dụ: nếu PS1 của bạn hiện tại \u@\h:\w\$, hãy đặt nó thành\u@\h:\W\$

Để thực hiện điều này vĩnh viễn, bạn sẽ phải thay đổi nó trong các tệp khởi động bash của mình - ví dụ ~/.bash_profilehoặc ~/.bashrc.

xem man bashvà tìm kiếm để PROMPTINGbiết chi tiết đầy đủ và một danh sách các ký tự đặc biệt thoát được dấu gạch chéo ngược.


Tôi có 4 đề cập đến PS1 Tôi có thay đổi cả 4 không?
K Split X

4 đề cập ở đâu? trong ~ / .bash_profile? Sẽ không có hại khi thay đổi tất cả các phiên bản \wtrong PS1 thành \W. hoặc bạn chỉ có thể đặt lời nhắc thành bất cứ điều gì bạn thích ở dưới cùng của tập lệnh.
cas

1

trong trường hợp này, bạn sẽ phải chỉnh sửa PS1 ,

Ngay lập tức \w, bạn sẽ có một lệnh hoặc một biến hiển thị đường dẫn rút gọn:

PS1 gốc

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$'

thay đổi nó thành

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]${PWD##*/}\[\033[00m\]\$'

Lưu ý điều này sẽ đặt tên người dùng ngay lập tức ~ nếu bạn đang ở trong nhà của bạn!

để tránh điều đó, bạn sẽ cần một vài lệnh ngay lập tức $ {PWD ## * /}, vd

if [[ "${PWD}" == "${HOME}" ]] ; then printf \~; else echo -n ${PWD##*/}; fi

PS1 mới sẽ trông như sau

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]`if [[ "${PWD}" == "${HOME}" ]] ; then printf \~; else echo -n ${PWD##*/}; fi`\[\033[00m\]\$'

Rất tiếc khi tôi đang cố gắng để cứu thế giới tôi đã noIdea | forgoten các \ W


1

Đây là di động cho tất cả các shvỏ.

Gán PS1vào một trong các tệp khởi động shell của bạn:

PS1='${PWD##*/} $ '

Lời nhắc sẽ giống như

dir $

Trong trường hợp dirlà tên cơ sở của thư mục hiện hành.

Các $PWDbiến có chứa đường dẫn thư mục hiện tại, và ${PWD##*/}sẽ tước mọi thứ lên đến và bao gồm cả người cuối cùng /trong con đường đó.

Các dấu ngoặc đơn ngăn chặn biểu mẫu vỏ đánh giá thay thế biến tại thời điểm gán (giá trị của $PS1sẽ được đánh giá mỗi khi dấu nhắc được hiển thị).

Các PS1biến không nên xuất khẩu như nó chỉ được sử dụng bởi các vỏ hiện hành.


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.