Dấu nhắc phần trăm trong một vỏ là gì?


16

Trong khi xem video, tôi thấy như sau:

% more tinyUF.txt
10
4 3
3 8
6 5

%Dấu hiệu này trước khi ra morelệnh là gì?


2
export PS1=%??
Roman Gräf

@ RomanGräf, cái gì vậy?
Maxim Koretskyi

1
Bạn có thể thay đổi bình thường $dấu hiệu sử dụng export PS1=......là sự thay thế.
Roman Gräf

@ RomanGräf, tôi hiểu rồi, cảm ơn vì lời đề nghị
Maxim Koretskyi

@Roman Gräf: Bạn thực sự có thể làm nhiều hơn với lời nhắc thay vì chỉ thay đổi nhân vật. Của tôi bao gồm tên máy (vì tôi thường có cửa sổ xterm vào các máy khác) và một vài thư mục cuối cùng trong đường dẫn hiện tại. Và nếu tôi root, nó sẽ chuyển sang màu đỏ tươi.
jamesqf

Câu trả lời:


29

Đó là dấu nhắc shell, hay chính xác hơn, đó là dấu nhắc chính của shell ( có một số ). Đó là cách nói của vỏ " hãy tiếp tục, tôi đã sẵn sàng cho đầu vào ngay bây giờ ".

Dấu %nhắc là phổ biến trong cshshell -type trong khi sh-shells (như bashksh93) thường sử dụng $dấu nhắc.

Lời nhắc thường thay đổi #cho người dùng root vì người dùng đủ mạnh nên được nhắc nhở về sức mạnh đó bằng cách có một dấu nhắc thay thế (như tiêu chuẩn POSIX đặt ra).

Dấu nhắc chính trong shshell -type được xác định bởi giá trị của biến shell PS1.


Tóm tắt các ý kiến ​​dưới đây, với các bổ sung:

#tự của dấu nhắc gốc (được sử dụng bởi cả hai shcshshell) xảy ra trùng khớp với ký tự nhận xét shell chung. Sao chép và dán một lệnh dưới dạng root sẽ khiến lệnh được dán không thể hoạt động, nếu dấu nhắc shell cũng được sao chép. Lưu ý rằng #đã được thông qua như là dấu nhắc gốc trước khi shell có quy ước nhận xét (tham khảo: email từ Doug McIlroy ).

Các shell esrcshell của Plan 9 sử dụng ;ký tự làm dấu nhắc mặc định. Hậu quả của việc này là sao chép và dán một lệnh, bao gồm cả dấu nhắc, vẫn sẽ có nghĩa là lệnh đã dán là hợp lệ (và nó sẽ được thực thi).

Một cách để cho phép một người có một tùy chỉnh, nhưng vẫn có thể sao chép, dấu nhắc shell, sẽ là sử dụng : something ;, somethingví dụ như thư mục hiện tại, tên máy chủ hoặc thời gian.


2
Cũng trong zsh(một vỏ kiểu Bourne, nhưng có rất nhiều tính năng từ tcsh). Lưu ý rằng các vỏ giống như Bourne và csh thường sử dụng #cho người dùng uid 0.
Stéphane Chazelas

1
Cũng lưu ý rằng các rcshell giống như sử dụng ;ở đó (người ta có thể sao chép-dán dòng đầy đủ và đó là mã shell hợp lệ, cùng ý tưởng với #lời nhắc của root là một nhận xét).
Stéphane Chazelas

2
Một lựa chọn rất quan trọng của # cho root là nếu bạn sao chép một lệnh bao gồm nó, bạn sẽ không gây ra thiệt hại (vì # bắt đầu một nhận xét, vì vậy sẽ nhận xét lệnh của bạn (tốt, dòng đầu tiên của nó)). Một số người sử dụng ">" và nếu bạn cũng sao chép nó, nó có thể ghi đè nhị phân (trống hoàn toàn) nếu lệnh có đường dẫn đầy đủ hoặc tương đối hoặc nếu bạn đang ở trong thư mục bên phải (và có đủ quyền, ví dụ nếu bạn đang nguồn gốc). Tôi đã thấy điều này xảy ra.
Olivier Dulac

1
@ StéphaneChazelas: Không phải quy ước # -for-root bắt nguồn từ rất lâu trước khi các thiết bị đầu cuối mà việc cắt và dán toàn bộ một dòng có thể dễ dàng trở nên phổ biến?
hmakholm còn lại trên Monica

@HenningMakholm, vâng. Nó bắt nguồn ngay cả trước khi csh giới thiệu # với tư cách là người lãnh đạo bình luận. Tuy nhiên, sự thật là #...các dòng là nhận xét khi được sao chép ngay cả khi đó không phải là ý định. Tôi không biết nếu đó là ý định đằng sau ;trong rcmột trong hai, mặc dù tôi quan sát đó là một hệ quả thuận lợi.
Stéphane Chazelas
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.