Ẩn thư mục làm việc hiện tại trong thiết bị đầu cuối


133

Theo mặc định, dấu nhắc thiết bị đầu cuối hiển thị một cái gì đó như:

user@system:/folder1/folder2/folder3/folder4$

bạn càng đi sâu vào hệ thống tập tin, càng ít không gian để gõ các lệnh. Tôi có thể thay đổi điều này để chỉ hiển thị một cái gì đó như:

>

Ý tôi là, tôi chỉ có thể gõ pwdđể hiển thị nơi tôi đang ở. ;)


1
Đây là một bình luận nhưng tôi không thể bình luận, xin lỗi. Ngoài việc ẩn thư mục hiện tại, giá trị PS1 sau đây sẽ phân tách trực quan các lệnh bash của bạn một cách trực quan:export PS1="\n___"
Xin chào Thế giới

đã thử nghiệm các giải pháp của Oli's. Các phông chữ màu hoạt động tốt trong thiết bị đầu cuối: export PS1 = '[\ 033 [0; 35m] \ h [\ 033 [0; 33m] \ w [\ 033 [
00m

Câu trả lời:


153
export PS1='\u@\h: '

Điều đó dẫn oli@bert:đến lời nhắc của tôi.

Nếu bạn thực sự muốn một cái gì đó tối giản như bạn yêu cầu, hãy thử điều này:

export PS1='> '

Bạn có thể đính kèm nó vào cuối ~/.bashrctệp của bạn để duy trì giữa các lần đăng nhập.

Bạn cũng có thể sáng tạo với một số màu sắc. Đây là những gì tôi sử dụng trên các máy chủ của mình:

export PS1='\[\033[0;35m\]\h\[\033[0;33m\] \w\[\033[00m\]: '

Cho (dễ nhìn hơn trên nền đen):

Thiết bị đầu cuối của tôi

Thuật ngữ của các ký tự được chấp nhận trong PS1


2
Bạn cũng có thể có các dòng mới (\ n) như một phần của lời nhắc, vì vậy bạn có thể đặt tất cả thông tin và '>' trên các dòng riêng biệt.
ak2

Lần đầu tiên tôi bắt gặp loại tùy chỉnh vỏ "cực đoan" này trong msysGit, tin hay không. Tôi ngay lập tức được chuyển đổi sang thế giới của bash. Có tất cả thông tin (thư mục hiện tại của tôi, chi nhánh hiện tại đã được kiểm tra từ repo Git, trạng thái của chỉ số Git ...) ngay tại đó thật tuyệt vời. Tôi dự định làm một cái gì đó tương tự với cài đặt Ubuntu mà gần đây tôi đã đặt trên một máy tính xách tay cũ (cùng với Windows XP).
dgw

3
định dạng được sử dụng để thiết lập màu sắc là gì?
Rakib

1
@SyedRakibAlHasan Hãy thử echo -e "\e[31mHello World\e[0m"hoặc echo -e "\033[31mHello\e[0m World"trong một thiết bị đầu cuối, điều đó sẽ cung cấp cho bạn một đầu mối. nguồn
daka

103

Chỉ cần mở rộng câu trả lời của Oli (và để tôi có một dấu trang cho những biểu tượng tay ngắn đó):

Dấu nhắc bash ( stefano@linux:~$) chỉ là dấu nhắc đầu tiên trong số một vài lời nhắc bạn có thể thấy:

  • PS1 : lời nhắc mặc định bạn thấy khi bạn mở shell

    Giá trị của nó được lưu trữ trong một biến môi trường được gọi là PS1. Để xem giá trị của nó, gõ

    echo $PS1

    Điều này sẽ cung cấp cho bạn một cái gì đó như

    \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

    Để thay đổi nó, bạn có thể đặt một giá trị mới cho biến:

    export PS1="\u > "

    Điều này sẽ dẫn đến một dấu nhắc như thế này:

    stefano > 
  • PS2 : là dấu nhắc phụ của bạn. Điều này được hiển thị khi một lệnh chưa kết thúc. Nhập echo "asdvà nhấn enter, dấu nhắc phụ sẽ cho phép bạn nhập nhiều dòng hơn cho đến khi bạn đóng dấu phẩy ngược.

  • PS3 là lời nhắc được sử dụng cho select(2)

  • PS4 là lời nhắc được sử dụng cho văn bản thay thế dấu vết ngăn xếp (mặc định +:)

Để thực hiện các thay đổi vĩnh viễn, bạn thêm chúng vào cuối .bash_profile(hoặc .bashrc, xem câu hỏi này ) trong thư mục nhà của bạn.

Dưới đây là danh sách viết tắt đầy đủ hoặc ít hơn mà bạn có thể sử dụng khi soạn các mục sau:

  • \a     Nhân vật 'chuông'
  • \A     Thời gian 24h
  • \d     Ngày (ví dụ Thứ ba ngày 21 tháng 12)
  • \e     Nhân vật 'thoát'
  • \h     Tên máy chủ (tối đa là ".")
  • \H     Tên máy chủ
  • \j     Số công việc hiện đang chạy (ps)
  • \l     Tty hiện tại
  • \n     Nguồn cấp dữ liệu
  • \t     Thời gian (hh: mm: ss)
  • \T     Thời gian (hh: mm: ss, định dạng 12h)
  • \r     Vận chuyển trở lại
  • \s     Shell (tức là bash, zsh, ksh ..)
  • \u     tên tài khoản
  • \v     Phiên bản Bash
  • \V     Chuỗi phát hành Bash đầy đủ
  • \w     Thư mục làm việc hiện tại
  • \W     Phần cuối của thư mục làm việc hiện tại
  • \!     Chỉ số hiện tại trong lịch sử
  • \#     Chỉ số lệnh
  • \$     "#" Nếu bạn đã root, khác "$"
  • \\     Dấu gạch chéo chữ
  • \@     Thời gian (định dạng 12h với sáng / chiều)

Tất nhiên bạn có thể chèn bất kỳ chuỗi ký tự và bất kỳ lệnh nào:

export PS1="\u \$(pwd) > "

Trường hợp $(pwd)đứng ở vị trí "đầu ra của" pwd.

  • Nếu thay thế lệnh được thoát, như trong \$(pwd), nó được đánh giá mỗi khi dấu nhắc được hiển thị, nếu không, như trong $(pwd), nó chỉ được đánh giá một lần khi bash được bắt đầu.

Nếu bạn muốn lời nhắc của mình làm nổi bật màu sắc, bạn có thể sử dụng mã màu của bash để làm điều đó. Mã này bao gồm ba phần:

40;33;01
  • Phần đầu tiên trước dấu chấm phẩy thể hiện phong cách văn bản.

    • 00 = không
    • 01 = đậm
    • 04 = gạch dưới
    • 05 = chớp mắt
    • 07 = đảo ngược
    • 08 = che giấu
  • Phần thứ hai và thứ ba là màu và màu nền:

    • 30 = đen
    • 31 = đỏ
    • 32 = xanh
    • 33 = vàng
    • 34 = màu xanh
    • 35 = đỏ tươi
    • 36 = lục lam
    • 37 = trắng

Mỗi phần có thể được bỏ qua, giả sử bắt đầu từ bên trái. tức là "1" có nghĩa là đậm, "1; 31" có nghĩa là đậm và đỏ. Và bạn sẽ làm cho thiết bị đầu cuối của bạn in màu bằng cách thoát khỏi hướng dẫn bằng \33[và kết thúc nó bằng một m. 33, hoặc 1B theo hệ thập lục phân, là ký hiệu ASCII "ESCAPE" (một ký tự đặc biệt trong bộ ký tự ASCII). Thí dụ:

"\33[1;31mHello World\33[m"

In "Hello World" màu đỏ tươi.


Tôi nối export PS1='\[\033[1;31m\]\w\[\033[00m\] \$> 'tới /etc/bash.bashrcnhưng không có gì vẻ đã thay đổi ... nó hoạt động trên mỗi phiên, nhưng tôi không thể có vẻ để làm cho nó vĩnh viễn.
Jared Tritsch

8

Một cách khác là rút ngắn đường dẫn thư mục làm việc khi quá dài: cắt thư mục làm việc nhắc lệnh thiết bị đầu cuối

Tạo một kịch bản python nhỏ thực hiện logic cắt tỉa mong muốn.

Ví dụ: ~ / short.pwd.py

import os
from commands import getoutput
from socket import gethostname
hostname = gethostname()
username = os.environ['USER']
pwd = os.getcwd()
homedir = os.path.expanduser('~')
pwd = pwd.replace(homedir, '~', 1)
if len(pwd) > 30:
    pwd = pwd[:10]+'...'+pwd[-20:] # first 10 chars+last 20 chars
print '[%s@%s:%s] ' % (username, hostname, pwd)

Bây giờ hãy kiểm tra nó, từ một thiết bị đầu cuối:

export PROMPT_COMMAND='PS1="$(python ~/.short.pwd.py)"'

Nếu bạn ổn với kết quả, chỉ cần nối lệnh vào ~ / .bashrc của bạn


Exa ... ~ / short.pwd.py, xuất ... ~ / .short.pwd.py Tôi nghĩ cả hai phải giống nhau. Hoặc là bạn đặt thêm một lệnh ở cả hai nơi hoặc bạn hoàn toàn không làm điều đó. Nhưng đây là một câu trả lời tuyệt vời ..
MycrofD

7

Tôi thường muốn làm điều này tạm thời. Đây là những gì tôi làm:

$ export OLD_PS1=$PS1                    # save Long Prompt to OLD_PS1
$ export PS1="\u > "export PS1="\u $ "   # change to PS1 to Short Prompt
$ export PS1=$OLD_PS1                    # restore Long Prompt to PS1

Tôi hi vọng điêu nay se giup được ai đo.


1

cho người dùng macOS:

open ~/.bash_profile

ở cuối tập tin thêm dòng sau và lưu nó

export PS1='\u:\w\$ '

kết quả tại thư mục nhà:

user: ~$

đây u cho người dùng w cho thư mục làm việc hiện tại $ là để nhắc hiển thị

bạn có thể thử các kiểu sau:

export PS1='$ '

chỉ cần có $ như lời nhắc, không có gì khác. giống như:

$ 

0

Điều giúp tôi là: xuất PS1 = '$'

Để có được điều này mỗi khi bạn mở terminal, hãy viết lệnh ở cuối .bashrc mà bạn có thể mở bằng 'cd' theo sau là 'gedit .bashrc'.

Hi vọng điêu nay co ich. Làm việc cho tôi.

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.