Dấu phần trăm (%) trước lệnh shell


9

Tôi chỉ dán một loạt mã vào vỏ của mình, nhưng quên xóa phần đầu %trước khi chạy lệnh. Nó dường như không làm gì cả. Tại sao điều này không làm gì trong shell của tôi ( zsh )?

> % echo foo

Trong bash , tôi nhận được sau đây

> % echo foo
bash: fg: %: no such job

Tôi chỉ muốn chắc chắn rằng việc chạy lệnh của tôi không có tác dụng phụ.

Câu trả lời:


9

%đề cập đến một 'jobid', được sử dụng như một phần của tính năng "kiểm soát công việc và kiểm soát quy trình" của zsh. Để trích dẫn từ hướng dẫn sử dụng:

'fg' is the default operation on jobs referred to with the '%' notation,
so just typing '%1' with no command name would have worked, too.

Thí dụ:

$> man zshall &
[1]  + 31392 suspended (tty output)  man zshall
$> jobs
[1]  + suspended (tty output)  man zshall
$> %
<manpage-opens-for-zshall>

Đọc thêm về nó ở đây: http://zsh.sourceforge.net/Guide/zshguide03.html#l39

Để trả lời câu hỏi thực sự của bạn : Nếu zsh của bạn không đưa ra cảnh báo ở đó ("fg: không có công việc hiện tại" hoặc tương tự) thì IS / WAS là một công việc. Thí dụ:

$> sleep 60 &
$> % echo foo
[1]  + 411 running    sleep 60
fg: job not found: echo

Chỉ %cần lấy lại quá trình nền và chạy nó. Sau 60 giây, nó đã nhận được "công việc" tiếp theo không tìm thấy.

Do đó: Hành vi bạn trải qua là một chút kỳ lạ. Không có zshrc đầy đủ của bạn, thật khó để biết chính xác điều gì đang xảy ra. Có vẻ như bạn đã quản lý để nói với zsh của mình rằng char '%' đang bắt đầu nhận xét. Tôi sẽ kiểm tra histcharstham số cho giá trị thứ 3 của nó:

$> echo $histchars

Rực rỡ, cảm ơn. Tôi đã có thể sao chép các bài kiểm tra của bạn và tạo tiền đề cho một công việc đang chạy %. Bắt tốt $histcharsquá, nhưng của tôi là một dấu băm ( !^#). Tôi đoán câu trả lời cho trường hợp cụ thể của tôi là có một số quy trình nền hoạt động kỳ lạ trong zsh. Cảm ơn một lần nữa cho bài học vỏ!
Dave
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.