Tiếng AnhTiếng PhápTiếng Tây Ban Nha

Ad


Biểu tượng yêu thích OnWorks

mksh - Trực tuyến trên đám mây

Chạy mksh trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks trên Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS

Đây là lệnh mksh có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS

CHƯƠNG TRÌNH:

TÊN


Cảm ơn, sh - Vỏ MirBSD Korn

SYNOPSIS


Cảm ơn [- + abCefhiklmnprUuvXx] [-T [!]tty | -] [- + o tùy chọn] [-c chuỗi | -s | hồ sơ
[đối số hữu ích. Cảm ơn !]]
tên nội trang [đối số hữu ích. Cảm ơn !]

MÔ TẢ


Cảm ơn là một trình thông dịch lệnh dành cho cả việc sử dụng tương tác và kịch bản shell. Của nó
ngôn ngữ lệnh là một tập hợp siêu của ngôn ngữ shell sh (C) và phần lớn tương thích với
vỏ Korn nguyên bản. Đôi khi, trang hướng dẫn này có thể đưa ra lời khuyên về kịch bản; Trong khi đó
đôi khi tính đến tất cả các kịch bản shell di động hoặc các tiêu chuẩn khác nhau
thông tin đầu tiên và quan trọng nhất được trình bày với Cảm ơn trong tâm trí và nên được coi như vậy.

Tôi là an Android người dùng, so cái gì mksh?
Cảm ơn là một trình thông dịch lệnh / shell UNIX, tương tự như COMMAND.COM or CMD.EXE, trong đó có
đã được đưa vào Dự án nguồn mở Android một thời gian. Về cơ bản, nó là một chương trình
chạy trong một thiết bị đầu cuối (cửa sổ bảng điều khiển), nhận đầu vào của người dùng và chạy các lệnh hoặc tập lệnh,
mà nó cũng có thể được yêu cầu thực hiện bởi các chương trình khác, ngay cả trong nền. Bất kỳ đặc quyền
cửa sổ bật lên bạn có thể gặp phải do đó không Cảm ơn vấn đề nhưng câu hỏi của một số khác
chương trình sử dụng nó.

sự thỉnh nguyện
Hầu hết các nội trang có thể được gọi trực tiếp, ví dụ: nếu một liên kết trỏ từ tên của nó đến
vỏ bọc; không phải tất cả đều có ý nghĩa, mặc dù đã được thử nghiệm hoặc hoạt động.

Các tùy chọn như sau:

-c chuỗi Cảm ơn sẽ thực thi (các) lệnh có trong chuỗi.

-i Vỏ tương tác. Một trình bao đọc lệnh từ đầu vào tiêu chuẩn là
"Tương tác" nếu tùy chọn này được sử dụng hoặc nếu cả đầu vào tiêu chuẩn và lỗi tiêu chuẩn
được gắn với một tty(4). Một trình bao tương tác đã bật kiểm soát công việc, bỏ qua
các tín hiệu SIGINT, SIGQUIT và SIGTERM và in lời nhắc trước khi đọc đầu vào
(xem thông số PS1 và PS2). Nó cũng xử lý tham số ENV hoặc
mkshrc tập tin (xem bên dưới). Đối với các trình bao không tương tác, theo dõi tất cả tùy chọn đang bật
theo mặc định (xem định lệnh dưới đây).

-l Vỏ đăng nhập. Nếu tên cơ sở, trình bao được gọi với (ví dụ: argv [0]) bắt đầu bằng
'-' hoặc nếu tùy chọn này được sử dụng, trình bao được giả định là trình bao đăng nhập; Thấy chưa
Khởi động các tập tin phía dưới.

-p Vỏ đặc quyền. Một shell là "đặc quyền" nếu ID người dùng thực hoặc ID nhóm
không khớp với ID người dùng hoặc ID nhóm hiệu quả (xem giúp đỡ(2) người ngoan cố(2)).
Xóa tùy chọn đặc quyền khiến trình bao đặt ID người dùng hiệu quả của nó
(ID nhóm) thành ID người dùng thực của nó (ID nhóm). Để biết thêm ý nghĩa, hãy xem Khởi động
các tập tin. Nếu trình bao được đặc quyền và cờ này không được đặt rõ ràng,
Tùy chọn "đặc quyền" sẽ tự động bị xóa sau khi xử lý các tệp khởi động.

-r Vỏ hạn chế. Một trình bao bị "hạn chế" nếu tùy chọn này được sử dụng. Sau
các hạn chế có hiệu lực sau khi shell xử lý bất kỳ hồ sơ nào và ENV
các tập tin:

· Sản phẩm cd (Và chdir) lệnh bị tắt.
· Không thể thay đổi các thông số SHELL, ENV và PATH.
· Không thể chỉ định tên lệnh bằng các đường dẫn tuyệt đối hoặc tương đối.
· Sản phẩm -p tùy chọn của lệnh tích hợp lệnh không sử dụng được.
· Không thể sử dụng chuyển hướng tạo tệp (ví dụ: '>', '> |', '>>', '<>').

-s Vỏ đọc lệnh từ đầu vào tiêu chuẩn; tất cả các đối số không phải là tùy chọn
các tham số vị trí.

-T tên Đẻ trứng Cảm ơn trên tty(4) thiết bị đã cho. Những con đường tên, / dev / ttyCname
/ dev / ttyname đang cố gắng theo thứ tự. Trừ phi tên bắt đầu bằng dấu chấm than
('!'), điều này được thực hiện trong một vỏ con và trả về ngay lập tức. Nếu như tên là một dấu gạch ngang
('-'), tách khỏi thiết bị đầu cuối điều khiển (daemonise).

Ngoài các tùy chọn trên, các tùy chọn được mô tả trong định lệnh tích hợp cũng có thể được sử dụng
trên dòng lệnh: cả [- + abCefhkmnuvXx] Và [- + o tùy chọn] có thể được sử dụng cho một chữ cái
hoặc tùy chọn dài, tương ứng.

Nếu không -c cũng không phải -s tùy chọn được chỉ định, đối số không phải tùy chọn đầu tiên chỉ định
tên của một tệp mà trình bao đọc lệnh từ đó. Nếu không có đối số không phải tùy chọn,
shell đọc lệnh từ đầu vào chuẩn. Tên của trình bao (tức là nội dung của
$ 0) được xác định như sau: nếu -c tùy chọn được sử dụng và có một đối số không phải tùy chọn,
nó được dùng làm tên; nếu các lệnh đang được đọc từ một tệp, tệp được sử dụng làm
Tên; nếu không, tên cơ sở mà shell được gọi với (tức là argv [0]) được sử dụng.

Trạng thái thoát của trình bao là 127 nếu tệp lệnh được chỉ định trên dòng lệnh có thể
không được mở hoặc khác XNUMX nếu xảy ra lỗi cú pháp nghiêm trọng trong quá trình thực thi
script. Trong trường hợp không có lỗi nghiêm trọng, trạng thái thoát là trạng thái của lệnh cuối cùng
được thực thi, hoặc bằng không, nếu không có lệnh nào được thực thi.

Khởi động các tập tin
Để biết vị trí thực tế của các tệp này, hãy xem CÁC TẬP TIN. Một trình bao đăng nhập xử lý hệ thống
hồ sơ đầu tiên. Sau đó, một trình bao đặc quyền sẽ xử lý hồ sơ suid. Đăng nhập không đặc quyền
shell xử lý hồ sơ người dùng tiếp theo. Một trình bao tương tác không đặc quyền kiểm tra giá trị
của tham số ENV sau khi đưa nó vào tham số, lệnh, số học và dấu ngã ('~')
thay thế; nếu không được đặt hoặc trống, hồ sơ mkshrc của người dùng sẽ được xử lý; ngược lại, nếu một tập tin
tên của ai là kết quả thay thế tồn tại, nó được xử lý; sự không tồn tại là âm thầm
làm ngơ. Sau đó, một shell đặc quyền sẽ loại bỏ các đặc quyền nếu -p tùy chọn được đưa ra trên
dòng lệnh cũng như được đặt trong quá trình thực thi các tệp khởi động.

Lệnh cú pháp
Trình bao bắt đầu phân tích cú pháp đầu vào của nó bằng cách loại bỏ mọi kết hợp dấu gạch chéo ngược-dòng mới, sau đó
phá vỡ nó thành từ. Các từ (là chuỗi các ký tự) được phân tách bằng cách không được trích dẫn
ký tự khoảng trắng (dấu cách, tab và dòng mới) hoặc ký tự meta ('<', '>', '|', ';', '(',
')', và '&'). Ngoài việc phân tách các từ, dấu cách và tab bị bỏ qua, trong khi các dòng mới
thường là các lệnh phân cách. Các ký tự meta được sử dụng để xây dựng những thứ sau thẻ:
'<', '<&', '<<', '<<<', '>', '> &', '>>', '&>', v.v. được sử dụng để chỉ định chuyển hướng (xem
Đầu ra đầu vào chuyển hướng phía dưới); '|' được sử dụng để tạo đường ống dẫn; '| &' được sử dụng để tạo co-
quy trình (xem Đồng quy trình phía dưới); ';' được sử dụng để tách các lệnh; '&' được sử dụng để tạo
đường ống không đồng bộ; '&&' và '||' được sử dụng để chỉ định thực thi có điều kiện; ';;', '; &'
và '; |' được sử dụng trong trường hợp các câu lệnh; '((..))' được sử dụng trong biểu thức số học; và
cuối cùng, '(..)' được sử dụng để tạo các trang con.

Khoảng trắng và ký tự meta có thể được trích dẫn riêng lẻ bằng cách sử dụng dấu gạch chéo ngược ('\') hoặc trong
nhóm sử dụng dấu ngoặc kép ('"') hoặc dấu nháy đơn (“ '”). Lưu ý rằng các ký tự sau là
cũng được xử lý đặc biệt bởi vỏ và phải được trích dẫn nếu chúng đại diện cho chính mình:
'\', '"', '' ',' # ',' $ ',' '', '~', '{', '}', '*', '?', và '['. Cái ba đầu tiên trong số này
là các ký tự trích dẫn được đề cập ở trên (xem Trích dẫn phía dưới); '#', nếu được sử dụng ở
bắt đầu từ, giới thiệu nhận xét - mọi thứ sau dấu '#' cho đến gần nhất
dòng mới bị bỏ qua; '$' được sử dụng để giới thiệu tham số, lệnh và số học
sự thay thế (xem Thay thế phía dưới); '' giới thiệu một lệnh thay thế kiểu cũ
(xem Thay thế phía dưới); '~' bắt đầu mở rộng thư mục (xem dấu ngã mở rộng phía dưới); '{'
và dấu phân cách '}' csh(1) kiểu thay thế (xem Cú đúp mở rộng phía dưới); và cuối cùng, '*',
'?' và '[' được sử dụng trong việc tạo tên tệp (xem Tập tin tên mô hình dưới đây).

Khi các từ và mã thông báo được phân tích cú pháp, trình bao sẽ xây dựng các lệnh, trong đó có hai lệnh cơ bản
các loại: lệnh đơn giản, thường là các chương trình được thực thi, và lệnh ghép, như là
as choif câu lệnh, cấu trúc nhóm và định nghĩa hàm.

Một lệnh đơn giản bao gồm một số kết hợp của các phép gán tham số (xem Thông số
bên dưới), chuyển hướng đầu vào / đầu ra (xem Đầu ra đầu vào ← liên kết dưới đây), và các từ lệnh;
hạn chế duy nhất là việc gán tham số đến trước bất kỳ từ lệnh nào. Các
các từ lệnh, nếu có, xác định lệnh sẽ được thực thi và các đối số của nó. Các
lệnh có thể là một lệnh tích hợp bên trong shell, một hàm hoặc một lệnh bên ngoài (tức là một lệnh riêng biệt
tệp thực thi được đặt bằng tham số PATH; Thấy chưa Lệnh thực hiện dưới đây).
Lưu ý rằng tất cả các cấu trúc lệnh đều có trạng thái thoát: đối với các lệnh bên ngoài, điều này có liên quan
đến trạng thái được trả lại bởi chờ đợi(2) (nếu không thể tìm thấy lệnh, trạng thái thoát là
127; nếu nó không thể được thực hiện, trạng thái thoát là 126); trạng thái thoát của lệnh khác
các cấu trúc (lệnh tích hợp, hàm, lệnh ghép, đường ống, danh sách, v.v.) đều là
được xác định rõ và được mô tả khi cấu trúc được mô tả. Trạng thái thoát của một
lệnh chỉ bao gồm các phép gán tham số là lệnh thay thế lệnh cuối cùng
được thực hiện trong quá trình gán tham số hoặc 0 nếu không có lệnh thay thế.

Các lệnh có thể được xâu chuỗi với nhau bằng cách sử dụng '|' mã thông báo để tạo thành đường ống, trong đó
đầu ra tiêu chuẩn của mỗi lệnh nhưng cuối cùng là đường ống (xem đường ống(2)) cho đầu vào tiêu chuẩn của
lệnh sau. Trạng thái thoát của một đường ống là trạng thái của lệnh cuối cùng của nó, trừ khi
các cái ống nước tùy chọn được thiết lập (xem ở đó). Tất cả các lệnh của một đường ống được thực hiện riêng biệt
vỏ con; điều này được POSIX cho phép nhưng khác với cả hai biến thể của AT&T UNIX ksh, Nơi
tất cả trừ lệnh cuối cùng được thực hiện trong các trang con; xem đọc mô tả của nội trang cho
hàm ý và cách giải quyết. Một đường ống có thể được bắt đầu bằng dấu '!' từ dành riêng mà
khiến trạng thái thoát của đường ống được bổ sung một cách hợp lý: nếu trạng thái ban đầu
là 0, trạng thái bổ sung sẽ là 1; nếu trạng thái ban đầu không phải là 0,
trạng thái sẽ là 0.

Chức năng lệnh có thể được tạo bằng cách tách các đường ống bằng bất kỳ mã thông báo nào sau đây:
'&&', '||', '&', '| &', và ';'. Hai cách đầu tiên dành cho việc thực thi có điều kiện: “cmd1 && cmd2"
thi hành cmd2 chỉ khi trạng thái thoát của cmd1 là số không; '||' Là ngược lại - cmd2 is
chỉ được thực thi nếu trạng thái thoát của cmd1 là khác XNUMX. '&&' và '||' có quyền ưu tiên bình đẳng
cao hơn so với '&', '| &', và ';', cũng có quyền ưu tiên như nhau. Ghi chú
rằng '&&' và '||' toán tử là "kết hợp trái". Ví dụ, cả hai
lệnh sẽ chỉ in "bar":

$ false && echo foo || thanh tiếng vang
$ true || echo foo && thanh echo

Mã thông báo '&' khiến lệnh trước đó được thực thi không đồng bộ; đó là, cái vỏ
bắt đầu lệnh nhưng không đợi nó hoàn thành (trình bao theo dõi
trạng thái của các lệnh không đồng bộ; Thấy chưa Việc làm điều khiển phía dưới). Khi một lệnh không đồng bộ là
bắt đầu khi kiểm soát công việc bị vô hiệu hóa (nghĩa là trong hầu hết các tập lệnh), lệnh được bắt đầu bằng
tín hiệu SIGINT và SIGQUIT bị bỏ qua và với đầu vào được chuyển hướng từ / dev / null (Tuy nhiên,
các chuyển hướng được chỉ định trong lệnh không đồng bộ được ưu tiên). Toán tử '| &'
bắt đầu một quy trình đồng là một loại quy trình không đồng bộ đặc biệt (xem Đồng quy trình
phía dưới). Lưu ý rằng lệnh phải theo sau '&&' và '||' toán tử, trong khi nó không cần
theo '&', '| &', hoặc ';'. Trạng thái thoát của danh sách là trạng thái của lệnh cuối cùng được thực thi,
ngoại trừ danh sách không đồng bộ, mà trạng thái thoát là 0.

Các lệnh ghép được tạo bằng cách sử dụng các từ dành riêng sau đây. Những từ này chỉ
được công nhận nếu chúng không được trích dẫn và nếu chúng được sử dụng như từ đầu tiên của lệnh (tức là
chúng không thể được đặt trước bởi các phép gán hoặc chuyển hướng tham số):

trường hợp khác chức năng sau đó! (
làm esac nếu thời gian [[((
hoàn thành fi trong cho đến khi {
elif để chọn trong khi}

Trong các mô tả lệnh ghép sau, danh sách lệnh (được biểu thị là ) đó là
theo sau là các từ dành riêng phải kết thúc bằng dấu chấm phẩy, dòng mới hoặc (về mặt cú pháp
đúng) từ dành riêng. Ví dụ: tất cả những điều sau đây đều hợp lệ:

$ {echo foo; thanh vang; }
$ {echo foo; thanh tiếng vang }
$ {{echo foo; thanh vang; }}

Điều này không hợp lệ:

$ {echo foo; thanh echo}

( )
Thực hiện tóm lại. Không có cách ẩn nào để chuyển các thay đổi môi trường từ
một vỏ con trở lại cha mẹ của nó.

{ ; }
Cấu tạo hợp chất; được thực thi, nhưng không phải trong một vỏ con. Lưu ý rằng '{' và '}'
là các từ dành riêng, không phải ký tự meta.

trường hợp lời trong [[(] Belt Hold [| Belt Hold]...) terminator] ... thoát
Sản phẩm trường hợp tuyên bố cố gắng khớp lời chống lại một quy định Belt Hold; Các
được liên kết với mẫu được so khớp thành công đầu tiên được thực thi. Các mẫu được sử dụng trong
trường hợp các câu lệnh giống như các câu lệnh được sử dụng cho các mẫu tên tệp ngoại trừ
các hạn chế liên quan đến '.' và '/' bị bỏ. Lưu ý rằng mọi không gian chưa được trích dẫn trước
và sau khi một mẫu bị tước bỏ; bất kỳ khoảng trống nào trong một mẫu phải được trích dẫn. Cả hai
word và các mẫu có thể thay thế tham số, lệnh và số học,
cũng như thay thế dấu ngã.

Vì lý do lịch sử, các dấu ngoặc nhọn đóng và mở có thể được sử dụng thay vì innó C ví dụ
trường hợp $ foo { *) bỏ lỡ thanh ;; }.

Danh sách terminators là:

';;' Chấm dứt sau danh sách.

'; &' Chuyển sang danh sách tiếp theo.

'; |' Đánh giá các bộ danh sách mẫu còn lại.

Trạng thái thoát của một trường hợp câu lệnh là của câu lệnh được thực thi ; nếu không is
được thực thi, trạng thái thoát là không.

cho tên [trong lời ...]; làm ; xong
Cho mỗi lời trong danh sách từ được chỉ định, tham số tên được đặt thành từ và
được thực thi. Nếu in không được sử dụng để chỉ định một danh sách từ, các tham số vị trí
($ 1, $ 2, v.v.) được sử dụng thay thế. Vì lý do lịch sử, các dấu ngoặc nhọn mở và đóng có thể
được sử dụng thay vì dothực hiện ví dụ cho i; { bỏ lỡ $ i; }. Trạng thái thoát của một cho
câu lệnh là trạng thái thoát cuối cùng của ; nếu không bao giờ được thực thi, trạng thái thoát
là số không.

if ; sau đó ; [ yêu tinh ; sau đó ;] ... [khác ;] fi
Nếu trạng thái thoát của đầu tiên là số không, thứ hai được thực hiện; nếu không thì,
các sau elif, nếu có, được thực thi với các hậu quả tương tự. Tôi ngã
danh sách theo sau ifelifkhông thành công (tức là thoát với trạng thái khác XNUMX),
sau khác được thực thi. Trạng thái thoát của một if tuyên bố đó là không
có điều kiện điều đó được thực hiện; nếu không có điều kiện được thực thi, lối ra
trạng thái bằng không.

chọn tên [trong lời ...]; làm ; xong
Sản phẩm chọn câu lệnh cung cấp một phương pháp tự động trình bày cho người dùng một menu
và chọn từ nó. Một danh sách liệt kê các lời(s) được in trên
lỗi tiêu chuẩn, theo sau là một dấu nhắc (PS3: thường là '#?'). Một số tương ứng với
một trong những từ được liệt kê sau đó sẽ được đọc từ đầu vào chuẩn, tên được đặt thành
từ đã chọn (hoặc bỏ đặt nếu lựa chọn không hợp lệ), REPLY được đặt thành nội dung đã đọc
(khoảng trắng đầu / cuối bị loại bỏ) và được thực thi. Nếu một dòng trống (tức là
không hoặc nhiều bộ tám IFS) được nhập, menu được in lại mà không thực thi .

Thời Gian hoàn thành, danh sách liệt kê được in nếu REPLY là NULL, lời nhắc là
in, và như vậy. Quá trình này tiếp tục cho đến khi phần cuối của tệp được đọc, một ngắt
được nhận, hoặc phá vỡ câu lệnh được thực hiện bên trong vòng lặp. Nếu "trong từ ..." là
bỏ qua, các tham số vị trí được sử dụng (ví dụ: $ 1, $ 2, v.v.). Đối với lịch sử
lý do, niềng răng mở và đóng có thể được sử dụng thay vì dothực hiện ví dụ chọn i; {
bỏ lỡ $ i; }. Trạng thái thoát của một chọn câu lệnh bằng XNUMX nếu a phá vỡ tuyên bố là
được sử dụng để thoát khỏi vòng lặp, khác XNUMX.

cho đến khi ; làm ; xong
Điều này hoạt động như trong khi, ngoại trừ việc phần thân chỉ được thực thi trong khi trạng thái thoát của
đầu tiên là khác XNUMX.

trong khi ; làm ; xong
A trong khi là một vòng lặp được kiểm tra trước. Phần thân của nó được thực thi thường xuyên như trạng thái thoát của
đầu tiên là số không. Trạng thái thoát của một trong khi tuyên bố là trạng thái thoát cuối cùng
của trong phần thân của vòng lặp; nếu phần thân không được thực thi, trạng thái thoát là
số không.

chức năng tên { ; }
Xác định chức năng tên (xem Chức năng phía dưới). Lưu ý rằng chuyển hướng đã chỉ định
sau khi định nghĩa hàm được thực hiện bất cứ khi nào hàm được thực thi, không phải khi
định nghĩa hàm được thực thi.

tên() lệnh
Hầu hết giống với chức năng (xem Chức năng phía dưới). Khoảng trắng (dấu cách hoặc tab) sau
tên sẽ bị bỏ qua hầu hết thời gian.

chức năng tên() { ; }
Giống như tên() (bashchủ nghĩa). Các chức năng từ khóa bị bỏ qua.

thời gian [-p] [đường ống dẫn]
Sản phẩm Lệnh thực hiện phần mô tả thời gian từ dành riêng.

(( biểu hiện ))
Biểu thức số học biểu hiện được đánh giá; tương đương với “let biểu thức” (xem
toán học biểu thứccho phép lệnh, bên dưới) trong một cấu trúc ghép.

[[ biểu hiện ]]
Tương tự như thử nghiệm[ hữu ích. Cảm ơn ! ] lệnh (được mô tả sau), với những điều sau
ngoại lệ:

· Việc tách trường và tạo tên tệp không được thực hiện trên các đối số.

· Sản phẩm -a (Và và -o Các toán tử (HOẶC) lần lượt được thay thế bằng '&&' và '||'.

· Các nhà khai thác (ví dụ: '-f',' = ','! ') phải không được trích dẫn.

· Các phép thay thế tham số, lệnh và số học được thực hiện như các biểu thức
đã đánh giá và đánh giá biểu thức lười biếng được sử dụng cho '&&' và '||' các toán tử.
Điều này có nghĩa là trong câu lệnh sau, $ ( được đánh giá nếu và chỉ khi
các tập tin foo tồn tại và có thể đọc được:

$ [[-r foo && $ (

· Toán hạng thứ hai của biểu thức '! =' Và '=' là một tập con của các mẫu (ví dụ:
sự so sánh [[ foobar = f * r ]] thành công). Điều này thậm chí còn hoạt động gián tiếp:

$ bar = foobar; baz = 'f * r'
$ [[$ bar = $ baz]]; echo $?
$ [[$ bar = "$ baz"]]; echo $?

Có lẽ đáng ngạc nhiên là so sánh đầu tiên thành công, trong khi so sánh thứ hai thì không.
Hiện tại, điều này không áp dụng cho tất cả các siêu ký tự ngoại vi.

Trích dẫn
Trích dẫn được sử dụng để ngăn trình bao xử lý các ký tự hoặc từ một cách đặc biệt. Có
ba phương pháp trích dẫn. Đầu tiên, '\' trích dẫn ký tự sau, trừ khi nó ở
cuối dòng, trong trường hợp đó, cả '\' và dòng mới đều bị loại bỏ. Thứ hai, một
quote (“'”) trích dẫn mọi thứ cho đến trích dẫn đơn tiếp theo (điều này có thể kéo dài hàng dòng). Thứ ba, một
dấu ngoặc kép ('"') trích dẫn tất cả các ký tự, ngoại trừ '$', '' 'và' \ ', cho đến ký tự tiếp theo không thoát
dấu ngoặc kép. '$' và '' 'bên trong dấu ngoặc kép có ý nghĩa thông thường (tức là tham số,
số học, hoặc thay thế lệnh) ngoại trừ việc tách trường không được thực hiện trên các kết quả
thay thế được trích dẫn kép và hình thức thay thế lệnh kiểu cũ có
dấu gạch chéo ngược cho dấu ngoặc kép được bật. Nếu một '\' bên trong một chuỗi được trích dẫn kép là
theo sau là '\', '$', '' 'hoặc' "', nó được thay thế bằng ký tự thứ hai; nếu nó được theo sau
bởi một dòng mới, cả '\' và dòng mới đều bị loại bỏ; nếu không, cả '\' và
ký tự sau không thay đổi.

Nếu một chuỗi được trích dẫn đơn đứng trước một ký tự '$' không được trích dẫn, thì mở rộng dấu gạch chéo ngược kiểu C (xem
dưới đây) được áp dụng (ngay cả các ký tự trích dẫn đơn bên trong có thể được thoát ra và không kết thúc
chuỗi then); kết quả mở rộng được coi như bất kỳ chuỗi được trích dẫn đơn nào khác. Nếu một
chuỗi được trích dẫn kép được đặt trước bởi một '$' không được trích dẫn, '$' chỉ đơn giản là bỏ qua.

Dấu gạch chéo ngược mở rộng
Ở những nơi mà dấu gạch chéo ngược được mở rộng, một số C và AT&T UNIX ksh hoặc GNU bash phong cách
thoát được dịch. Chúng bao gồm '\ a', '\ b', '\ f', '\ n', '\ r', '\ t', '\ U ########',
'\ u ####' và '\ v'. Đối với '\ U ########' và '\ u ####', “#” có nghĩa là một chữ số thập lục phân, của thich
có thể không có tối đa bốn hoặc tám; những lối thoát này sẽ dịch một mã Unicode sang UTF-8.
Hơn nữa, '\ E' và '\ e' mở rộng thành ký tự thoát.

Trong tạp chí in chế độ nội trang, '\ "', '\' 'và' \? ' bị loại trừ rõ ràng; chuỗi bát phân
phải có không có tối đa ba chữ số bát phân “#” được bắt đầu bằng chữ số 0 ('\ XNUMX ###');
chuỗi thập lục phân '\ x ##' được giới hạn không có tối đa hai chữ số thập lục phân “#”; cả hai
chuỗi bát phân và thập lục phân chuyển đổi thành bộ tám thô; '\ #', trong đó # không phải là lựa chọn nào ở trên,
dịch sang \ # (dấu gạch chéo ngược được giữ lại).

Mở rộng dấu gạch chéo ngược trong chế độ kiểu C hơi khác một chút: chuỗi bát phân '\ ###' phải có
không có chữ số XNUMX nào đứng trước một có tối đa ba chữ số bát phân “#” và mang lại các bộ bát phân thô;
chuỗi thập lục phân '\ x # *' tham lam ăn càng nhiều chữ số thập lục phân “#” càng tốt và
kết thúc bằng chữ số không phải hệ thập lục phân đầu tiên; chúng dịch một mã Unicode sang
UTF-8. Dãy '\ c #', trong đó "#" là bất kỳ bộ tám nào, được dịch thành Ctrl- # (về cơ bản
có nghĩa là, '\ c?' trở thành DEL, mọi thứ khác đều được AND theo bit với 0x1F). Cuối cùng, '\ #', ở đâu
# không phải là lựa chọn nào ở trên, được dịch thành # (đã cắt bớt dấu gạch chéo ngược), ngay cả khi nó là
dòng mới.

bí danh
Có hai loại bí danh: bí danh lệnh thông thường và bí danh theo dõi. Bí danh lệnh
thường được sử dụng như một tay ngắn cho một lệnh dài hoặc thường được sử dụng. Vỏ nở ra
bí danh lệnh (tức là thay thế tên bí danh cho giá trị của nó) khi nó đọc từ đầu tiên
của một lệnh. Bí danh mở rộng được xử lý lại để kiểm tra thêm bí danh. Nếu một lệnh
bí danh kết thúc bằng dấu cách hoặc tab, từ sau đây cũng được kiểm tra để mở rộng bí danh. Các
quá trình mở rộng bí danh dừng lại khi tìm thấy một từ không phải là bí danh, khi một từ được trích dẫn
được tìm thấy hoặc khi một từ bí danh hiện đang được mở rộng được tìm thấy. Bí danh là
cụ thể là một tính năng tương tác: mặc dù chúng vẫn hoạt động trong các tập lệnh và trên
dòng lệnh trong một số trường hợp, các bí danh được mở rộng trong quá trình ghép nối, vì vậy việc sử dụng chúng phải được
tách cây lệnh khỏi định nghĩa của chúng; nếu không, bí danh sẽ không được tìm thấy.
Đáng chú ý, danh sách lệnh (được phân tách bằng dấu chấm phẩy, trong các lệnh thay thế cũng bằng dòng mới)
có thể là một cây phân tích cú pháp giống nhau.

Các bí danh lệnh sau được xác định tự động bởi shell:

autoload = '\ styleset -fu'
functions = '\ styleset -f'
hash = '\ builtin alias -t'
history = '\ builtin fc -l'
số nguyên = '\ styleset -i'
local = '\ styleset'
login = '\ thi đăng nhập'
nameref = '\ styleset -n'
nohup = 'nohup'
r = '\ builtin fc -e -'
type = '\ builtin whence -v'

Các bí danh được theo dõi cho phép trình bao nhớ nơi nó tìm thấy một lệnh cụ thể. Người đầu tiên
thời gian trình bao thực hiện tìm kiếm đường dẫn cho một lệnh được đánh dấu là bí danh được theo dõi, nó sẽ lưu
đường dẫn đầy đủ của lệnh. Lần tiếp theo lệnh được thực thi, trình bao sẽ kiểm tra
đã lưu đường dẫn để thấy rằng nó vẫn hợp lệ và nếu có, hãy tránh lặp lại tìm kiếm đường dẫn.
Các bí danh được theo dõi có thể được liệt kê và tạo bằng cách sử dụng bí danh -t. Lưu ý rằng thay đổi PATH
tham số xóa các đường dẫn đã lưu cho tất cả các bí danh được theo dõi. Nếu theo dõi tất cả tùy chọn được thiết lập
(I E định -o theo dõi tất cả or định -h), shell theo dõi tất cả các lệnh. Tùy chọn này đã được thiết lập
tự động cho các trình bao không tương tác. Đối với các trình bao tương tác, chỉ những điều sau
các lệnh được tự động theo dõi: làm sao(1) cc(1) chmod(1) cp(1) ngày(1) ed(1)
emacs(1) grep(1) ls(1) làm cho(1) mv(1) pr(1) rm(1) khát(1) sh(1) vi(1), và ai(1).

Thay thế
Bước đầu tiên mà shell thực hiện trong việc thực hiện một lệnh đơn giản là thực hiện các thay thế trên
các từ của lệnh. Có ba loại thay thế: tham số, lệnh và
Môn số học. Thay thế tham số, được mô tả chi tiết trong phần tiếp theo,
có dạng $tên hoặc $ {hữu ích. Cảm ơn !}; thay thế lệnh có dạng $ (lệnh) hoặc
(không dùng nữa)lệnh`hoặc (được thực thi trong môi trường hiện tại) $ { lệnh;} và dải
các dòng mới theo sau; và các phép thay thế số học có dạng $ ((biểu hiện)). Phân tích cú pháp
Thay thế lệnh hiện tại môi trường yêu cầu một dấu cách, tab hoặc dòng mới sau phần mở đầu
dấu ngoặc nhọn và dấu ngoặc nhọn đóng được nhận dạng là một từ khóa (nghĩa là đứng trước một dòng mới
hoặc dấu chấm phẩy). Chúng còn được gọi là funsub (thay thế chức năng) và hoạt động như
chức năng trong đó địa phươngtrở lại làm việc, và trong đó ra kết thúc vỏ mẹ; vỏ bọc
các tùy chọn được chia sẻ.

Một biến thể khác của thay thế là valsub (thay thế giá trị) $ {|lệnh;} là
cũng được thực thi trong môi trường hiện tại, như funsubs, nhưng chia sẻ I / O của chúng với cha mẹ;
thay vào đó, họ đánh giá bất kỳ biến REPLY cục bộ nào, trống ban đầu, là
đặt trong lệnhs.

Nếu sự thay thế xuất hiện bên ngoài dấu ngoặc kép, kết quả của sự thay thế là
thường phải phân tách từ hoặc trường theo giá trị hiện tại của IFS
tham số. Tham số IFS chỉ định danh sách các bộ tám được sử dụng để ngắt một chuỗi
thành một số từ; bất kỳ octet nào từ không gian đã đặt, tab và dòng mới xuất hiện trong IFS
các bộ tám được gọi là “khoảng trắng IFS”. Chuỗi của một hoặc nhiều bộ tám khoảng trắng IFS, trong
kết hợp với XNUMX hoặc một bộ tám khoảng trắng không phải IFS, phân tách một trường. Như một trường hợp đặc biệt,
khoảng trắng IFS đầu và cuối bị loại bỏ (nghĩa là không có trường trống ở đầu hoặc cuối là
do nó tạo ra); khoảng trắng đầu hoặc cuối không phải IFS tạo ra một trường trống.

Ví dụ: Nếu IFS được đặt thành “ : ”Và VAR được đặt thành
“ MỘT : B :: D ”, sự thay thế cho $ VAR dẫn đến bốn trường: 'A',
'B', '' (trường trống) và 'D'. Lưu ý rằng nếu tham số IFS được đặt thành trống
chuỗi, không có tách trường được thực hiện; nếu nó không được đặt, giá trị mặc định của khoảng trắng, tab và
dòng mới được sử dụng.

Ngoài ra, lưu ý rằng việc tách trường chỉ áp dụng cho kết quả tức thì của
thay thế. Sử dụng ví dụ trước, thay thế cho $ VAR: E dẫn đến kết quả
các trường: 'A', 'B', '' và 'D: E', không phải 'A', 'B', '', 'D' và 'E'. Hành vi này là POSIX
tuân thủ, nhưng không tương thích với một số triển khai shell khác có chức năng tách trường
trên từ chứa sự thay thế hoặc sử dụng IFS làm dấu phân cách khoảng trắng chung.

Kết quả của sự thay thế, trừ khi có quy định khác, cũng phải mở rộng dấu ngoặc nhọn
và mở rộng tên tệp (xem các phần có liên quan bên dưới).

Việc thay thế lệnh được thay thế bằng kết quả đầu ra được tạo bởi lệnh được chỉ định là
chạy trong một vỏ con. Với giá $ (lệnh) và $ {|lệnh;} và $ { lệnh;} thay thế, bình thường
quy tắc trích dẫn được sử dụng khi lệnh được phân tích cú pháp; tuy nhiên, đối với `lệnh`hình thức, một
'\' được theo sau bởi bất kỳ '$', '' 'hoặc' \ 'bị loại bỏ (như là' '' khi thay thế là một phần
của một chuỗi được trích dẫn kép); dấu gạch chéo ngược '\' theo sau bởi bất kỳ ký tự nào khác là không thay đổi.
Là một trường hợp đặc biệt trong thay thế lệnh, một lệnh có dạnghồ sơ được hiểu là
có nghĩa là thay thế nội dung của hồ sơ. Lưu ý rằng $ ( có tác dụng tương tự như $ (con mèo foo).

Lưu ý rằng một số trình bao không sử dụng trình phân tích cú pháp đệ quy để thay thế lệnh, dẫn đến
thất bại đối với các cấu trúc nhất định; để có thể di động, hãy sử dụng làm giải pháp thay thế 'x = $ (cat) << "EOF"' (hoặc
newline-keep 'x = << "EOF"' extension) thay vì chỉ để slurp chuỗi. IEEE Std 1003.1
(“POSIX.1”) khuyến nghị sử dụng các câu lệnh trường hợp có dạng 'x = $ (case $ foo in (bar) echo $ bar
;; (*) echo $ baz ;; esac) 'thay vào đó, sẽ hoạt động nhưng không dùng làm ví dụ cho điều này
vấn đề về tính di động.

x = $ (case $ foo in bar) echo $ bar ;; *) echo $ baz ;; esac)
# ở trên không thể phân tích cú pháp trên các shell cũ; dưới đây là cách giải quyết
x = $ (eval $ (cat)) << "EOF"
case $ foo in bar) echo $ bar ;; *) echo $ baz ;; esac
EOF

Các phép thay thế số học được thay thế bằng giá trị của biểu thức được chỉ định. Vì
ví dụ, lệnh in $ ((2 + 3 * 4)) hiển thị 14. Xem toán học biểu thức cho một
mô tả của một biểu thức.

Thông số
Tham số là các biến shell; chúng có thể được chỉ định giá trị và giá trị của chúng có thể được truy cập
sử dụng thay thế tham số. Tên tham số là một trong những tên đơn đặc biệt
các tham số ký tự dấu câu hoặc ký tự chữ số được mô tả bên dưới hoặc một chữ cái theo sau là số XNUMX hoặc
nhiều chữ cái hoặc chữ số hơn ('_' được tính là một chữ cái). Dạng sau có thể được coi là mảng
bằng cách thêm một chỉ mục mảng của biểu mẫu [thể hiện] Ở đâu thể hiện là một biểu thức số học.
Chỉ số mảng trong Cảm ơn được giới hạn trong phạm vi từ 0 đến 4294967295, bao gồm cả. Đó là,
chúng là một số nguyên không dấu 32 bit.

Các thay thế tham số có dạng $tên, $ {tên} hoặc $ {tên[thể hiện]} ở đâu tên là một
tên tham số. Thay thế tất cả các phần tử mảng bằng $ {tên[*]} và $ {tên[@]} làm
tương đương với $ * và $ @ cho các tham số vị trí. Nếu thay thế được thực hiện trên
tham số (hoặc một phần tử tham số mảng) không được đặt, một chuỗi rỗng được thay thế
trừ khi danh từ Lựa chọn (định -o danh từ or định -u) được đặt, trong trường hợp đó sẽ xảy ra lỗi.

Các tham số có thể được gán giá trị theo một số cách. Đầu tiên, shell đặt ngầm định
một số tham số như '#', 'PWD' và '$'; đây là cách duy nhất cho ký tự đơn đặc biệt
các tham số được thiết lập. Thứ hai, các thông số được nhập từ môi trường của shell tại
khởi động. Thứ ba, các tham số có thể được gán giá trị trên dòng lệnh: ví dụ: FOO = thanh
đặt tham số “FOO” thành “bar”; nhiều phép gán tham số có thể được đưa ra trên một
dòng lệnh và chúng có thể được theo sau bởi một lệnh đơn giản, trong trường hợp đó, các nhiệm vụ được
chỉ có hiệu lực trong khoảng thời gian của lệnh (các nhiệm vụ đó cũng được xuất; xem
dưới đây để biết ý nghĩa của điều này). Lưu ý rằng cả tên tham số và '=' phải là
không được trích dẫn để trình bao nhận ra một phép gán tham số. Xay dung FOO + = baz cũng là
được công nhận; các giá trị cũ và mới được nối ngay lập tức. Cách thiết lập thứ tư
một tham số là với xuất khẩu, toàn cầu, chỉ đọcbộ sắp chữ các lệnh; nhìn thấy họ
mô tả trong Lệnh thực hiện tiết diện. Thứ năm, chochọn vòng lặp đặt thông số
cũng như các getopt, đọcđịnh -A các lệnh. Cuối cùng, các tham số có thể được chỉ định
giá trị sử dụng toán tử gán bên trong biểu thức số học (xem toán học biểu thức
bên dưới) hoặc sử dụng $ {tên=giá trị} dạng thay thế tham số (xem bên dưới).

Các thông số có thuộc tính export (đặt bằng cách sử dụng xuất khẩu or bộ sắp chữ -x lệnh, hoặc bởi
các phép gán tham số theo sau bởi các lệnh đơn giản) được đưa vào môi trường (xem
về(7)) của các lệnh được chạy bởi shell dưới dạng tên=giá trị cặp. Thứ tự các tham số
xuất hiện trong môi trường của một lệnh là không xác định. Khi vỏ khởi động, nó
trích xuất các tham số và giá trị của chúng từ môi trường của nó và tự động đặt xuất
thuộc tính cho các tham số đó.

Công cụ sửa đổi có thể được áp dụng cho $ {tên} dạng thay thế tham số:

${tên:-lời}
If tên được đặt và không phải NULL, nó được thay thế; nếu không thì, lời được thay thế.

${tên:+lời}
If tên được đặt và không phải NULL, lời được thay thế; nếu không, không có gì được thay thế.

${tên:=lời}
If tên được đặt và không phải NULL, nó được thay thế; nếu không, nó được chỉ định lời
giá trị kết quả của tên được thay thế.

${tên:?lời}
If tên được đặt và không phải NULL, nó được thay thế; nếu không thì, lời được in trên
lỗi tiêu chuẩn (trước tên:) và một lỗi xảy ra (thường gây ra kết thúc
của một tập lệnh shell, chức năng hoặc tập lệnh có nguồn gốc bằng cách sử dụng '.' được xây dựng trong). Nếu như lời is
bị bỏ qua, chuỗi "tham số null hoặc không được đặt" được sử dụng thay thế. Hiện tại là một lỗi,
if lời là một biến mở rộng thành chuỗi null, thông báo lỗi cũng là
đã in.

Lưu ý rằng, đối với tất cả những điều trên, lời thực sự được coi là trích dẫn và phân tích cú pháp đặc biệt
các quy tắc áp dụng. Các quy tắc phân tích cú pháp cũng khác nhau về việc liệu biểu thức có được trích dẫn kép hay không: lời
sau đó sử dụng các quy tắc trích dẫn kép, ngoại trừ chính dấu ngoặc kép ('"') và dấu đóng
dấu ngoặc nhọn, nếu thoát dấu gạch chéo ngược, sẽ được áp dụng loại bỏ dấu ngoặc kép.

Trong các bổ ngữ ở trên, dấu ':' có thể bị bỏ qua, trong trường hợp đó, các điều kiện chỉ phụ thuộc vào
tên đang được đặt (trái ngược với đặt và không phải NULL). Nếu như lời là cần thiết, tham số, lệnh,
phép thay thế số học và dấu ngã được thực hiện trên nó; nếu như lời không cần thiết, nó không phải là
đã đánh giá.

Các dạng thay thế tham số sau cũng có thể được sử dụng (nếu tên là một mảng,
phần tử có khóa “0” sẽ được thay thế trong ngữ cảnh vô hướng):

$ {#tên}
Số lượng tham số vị trí nếu tên là '*', '@', hoặc không được chỉ định; nếu không thì
độ dài (tính bằng ký tự) của chuỗi giá trị của tham số tên.

$ {#tên[*]}
$ {#tên[@]}
Số phần tử trong mảng tên.

$ {%tên}
Chiều rộng (trong các cột màn hình) của giá trị chuỗi của tham số tên, hoặc -1 nếu
${tên} chứa một ký tự điều khiển.

$ {!tên}
Tên của biến được tham chiếu bởi tên. Cái này sẽ tên ngoại trừ khi tên is
một tham chiếu tên (biến bị ràng buộc), được tạo bởi tên giới thiệu lệnh (là một bí danh
cho bộ sắp chữ -n).

$ {!tên[*]}
$ {!tên[@]}
Tên của các chỉ số (khóa) trong mảng tên.

${tên#Belt Hold}
${tên##Belt Hold}
If Belt Hold khớp với đầu giá trị của tham số tên, văn bản phù hợp là
bị xóa khỏi kết quả thay thế. Một dấu '#' cho kết quả ngắn nhất
và hai trong số đó dẫn đến trận đấu dài nhất. Không thể áp dụng cho một vectơ
($ {*} hoặc $ {@} hoặc $ {array [*]} hoặc $ {array [@]}).

${tên%Belt Hold}
${tên%%Belt Hold}
Giống như thay thế $ {.. # ..}, nhưng nó sẽ xóa khỏi phần cuối của giá trị. Không thể
áp dụng cho một vectơ.

${tên/mẫu / chuỗi}
${tên/#mẫu / chuỗi}
${tên/%mẫu / chuỗi}
${tên//mẫu / chuỗi}
Trận đấu dài nhất của Belt Hold trong giá trị của tham số tên được thay thế bằng chuỗi
(đã xóa nếu chuỗi trống rỗng; dấu gạch chéo ('/') có thể được bỏ qua trong trường hợp đó).
Dấu gạch chéo đầu tiên được theo sau bởi '#' hoặc '%' làm cho mẫu được cố định tại
đầu hoặc cuối của giá trị, tương ứng; trống không có tài chính Belt Holdkhông vì không
sự thay thế; một dấu gạch chéo ở đầu duy nhất hoặc sử dụng một Belt Hold phù hợp với trống
chuỗi làm cho việc thay thế chỉ xảy ra một lần; hai dấu gạch chéo hàng đầu gây ra tất cả
số lần xuất hiện của các kết quả phù hợp trong giá trị được thay thế. Không thể áp dụng cho một vectơ.
Triển khai không hiệu quả, có thể bị chậm.

${tên:gửi:len}
Việc đầu tiên len nhân vật của tên, bắt đầu từ vị trí gửi, được thay thế. Cả hai
gửi và:len là tùy chọn. Nếu như gửi là số âm, đếm bắt đầu ở cuối
chuỗi; nếu nó bị bỏ qua, nó mặc định là 0. Nếu len bị bỏ qua hoặc lớn hơn
độ dài của chuỗi còn lại, tất cả đều được thay thế. Cả hai gửilen đang
được đánh giá là biểu thức số học. Hiện tại, gửi phải bắt đầu bằng dấu cách,
mở ngoặc đơn hoặc chữ số được nhận dạng. Không thể áp dụng cho một vectơ.

${tên@ #}
Hàm băm (sử dụng thuật toán BAFH) của việc mở rộng tên. Cái này cũng được sử dụng
nội bộ cho các thẻ bắt đầu bằng # của shell.

${tên@Q}
Một biểu thức được trích dẫn an toàn để nhập lại, có giá trị là giá trị của tên
tham số, được thay thế.

Lưu ý rằng Belt Hold có thể cần mẫu hình cầu mở rộng (@ (...)), đơn ('...') hoặc kép
("...") trích dẫn thoát trừ khi -o sh được thiết lập.

Các tham số đặc biệt sau được đặt ngầm bởi shell và không thể đặt trực tiếp
sử dụng các bài tập:

! ID quy trình của quy trình nền cuối cùng đã bắt đầu. Nếu không có quy trình nền nào thì có
đã được bắt đầu, tham số không được đặt.

# Số lượng tham số vị trí ($ 1, $ 2, v.v.).

$ PID của shell hoặc PID của shell ban đầu nếu nó là một shell con. Làm KHÔNG
sử dụng cơ chế này để tạo tên tệp tạm thời; Thấy chưa mktemp(1) thay vào đó.

- Sự kết hợp của các tùy chọn ký tự đơn hiện tại (xem định lệnh dưới đây
để biết danh sách các tùy chọn).

? Trạng thái thoát của lệnh không đồng bộ cuối cùng được thực thi. Nếu lệnh cuối cùng
đã bị giết bởi một tín hiệu, $? được đặt thành 128 cộng với số tín hiệu, nhưng nhiều nhất là 255.

0 Tên của trình bao, được xác định như sau: đối số đầu tiên cho Cảm ơn nếu nó là
được gọi với -c tùy chọn và các đối số đã được đưa ra; nếu không hồ sơ tranh luận, nếu
nó đã được cung cấp; hoặc tên cơ sở khác mà shell được gọi với (ví dụ như argv [0]). $ 0
cũng được đặt thành tên của tập lệnh hiện tại hoặc tên của hàm hiện tại,
nếu nó được định nghĩa với chức năng từ khóa (tức là một hàm kiểu shell Korn).

1 .. 9 Chín tham số vị trí đầu tiên được cung cấp cho shell, chức năng hoặc
script có nguồn gốc bằng cách sử dụng '.' được xây dựng trong. Các thông số vị trí khác có thể là
được truy cập bằng $ {con số}.

* Tất cả các tham số vị trí (ngoại trừ 0), tức là $ 1, $ 2, $ 3, ...
Nếu được sử dụng bên ngoài dấu ngoặc kép, các tham số là các từ riêng biệt (được
để tách từ); nếu được sử dụng trong dấu ngoặc kép, các tham số được phân tách bằng dấu
ký tự đầu tiên của tham số IFS (hoặc chuỗi trống nếu IFS là NULL).

@ Giống như $*, trừ khi nó được sử dụng bên trong dấu ngoặc kép, trong trường hợp đó, một từ riêng biệt là
được tạo cho mỗi tham số vị trí. Nếu không có tham số vị trí, không
từ được tạo ra. $@ có thể được sử dụng để truy cập các lập luận, nguyên văn, mà không bị mất
NULL đối số hoặc tách đối số bằng dấu cách.

Các tham số sau được thiết lập và / hoặc được sử dụng bởi shell:

_ (gạch dưới) Khi một lệnh bên ngoài được thực thi bởi trình bao, tham số này
được đặt trong môi trường của tiến trình mới thành đường dẫn của quá trình được thực thi
yêu cầu. Khi sử dụng tương tác, tham số này cũng được đặt trong shell cha thành
từ cuối cùng của lệnh trước đó.

BASHPID PID của shell hoặc subshell.

CDPATH Giống như PATH, nhưng được sử dụng để giải quyết đối số cho cd lệnh cài sẵn. Ghi chú
rằng nếu CDPATH được đặt và không chứa '.' hoặc một phần tử chuỗi rỗng,
thư mục hiện tại không được tìm kiếm. Ngoài ra, cd lệnh tích hợp sẽ hiển thị
thư mục kết quả khi tìm thấy kết quả phù hợp trong bất kỳ đường dẫn tìm kiếm nào ngoài
con đường trống.

COLUMNS Đặt thành số cột trên thiết bị đầu cuối hoặc cửa sổ. Luôn đặt, mặc định
đến 80, trừ khi giá trị được báo cáo bởi tại biển(1) là khác XNUMX và đủ lành mạnh
(tối thiểu là 12x3); tương tự cho LINES. Tham số này được sử dụng bởi
các chế độ chỉnh sửa dòng tương tác và bằng cách chọn, định -ogiết -l lệnh
để định dạng các cột thông tin. Nhập từ môi trường hoặc bỏ thiết lập
tham số này loại bỏ ràng buộc với kích thước thiết bị đầu cuối thực tế có lợi cho
giá trị được cung cấp.

ENV Nếu tham số này được tìm thấy được đặt sau khi bất kỳ tệp hồ sơ nào được thực thi,
giá trị mở rộng được sử dụng như một tệp khởi động trình bao. Nó thường chứa hàm
và định nghĩa bí danh.

ERRNO Giá trị nguyên của trình bao sai Biến đổi. Nó chỉ ra lý do cuối cùng
cuộc gọi hệ thống không thành công. Chưa được thực hiện.

EXECSHELL Nếu được đặt, tham số này được giả định là chứa trình bao được sử dụng để
thực hiện các lệnh mà thi hành(2) không thực thi và không bắt đầu bằng
“#!shell" sự nối tiếp.

FCEDIT Trình soạn thảo được sử dụng bởi fc lệnh (xem bên dưới).

FPATH Giống như PATH, nhưng được sử dụng khi một hàm không xác định được thực thi để định vị tệp
xác định chức năng. Nó cũng được tìm kiếm khi không tìm thấy lệnh bằng cách sử dụng
ĐƯỜNG DẪN. Nhìn thấy Chức năng dưới đây để biết thêm thông tin.

HISTFILE Tên của tệp được sử dụng để lưu trữ lịch sử lệnh. Khi được gán hoặc bỏ đặt,
tệp được mở, lịch sử được cắt ngắn sau đó được tải từ tệp; tiếp theo
các lệnh mới (có thể bao gồm một số dòng) được thêm vào khi chúng
biên dịch thành công. Ngoài ra, một số lệnh gọi của shell sẽ chia sẻ
lịch sử nếu các tham số HISTFILE của chúng đều trỏ đến cùng một tệp.

Chú thích: Nếu HISTFILE không được đặt hoặc trống, không có tệp lịch sử nào được sử dụng. Đây là
khác với AT&T UNIX ksh.

HISTSIZE Số lượng lệnh thường được lưu trữ cho lịch sử. Giá trị mặc định là 2047. Do
không đặt giá trị này thành các giá trị cực kỳ cao như 1000000000 vì Cảm ơn có thể
sau đó không phân bổ đủ bộ nhớ cho lịch sử và sẽ không bắt đầu.

TRANG CHỦ Thư mục mặc định cho cd lệnh và giá trị được thay thế cho một
không đủ tiêu chuẩn ~ (xem dấu ngã mở rộng dưới đây).

IFS Dấu phân tách trường nội bộ, được sử dụng trong quá trình thay thế và bởi đọc lệnh, để
chia các giá trị thành các đối số riêng biệt; thường được đặt thành dấu cách, tab và dòng mới.
Xem Thay thế ở trên để biết chi tiết.

Chú thích: Tham số này không được nhập từ môi trường khi trình bao
bắt đầu

KSHEGID Id nhóm hiệu quả của shell.

KSHGID Id nhóm thực của shell.

KSHUID Id người dùng thực của shell.

KSH_VERSION Tên và phiên bản của trình bao (chỉ đọc). Xem thêm các lệnh phiên bản
in Emacs chỉnh sửa chế độVi chỉnh sửa chế độ phần bên dưới.

LINENO Số dòng của hàm hoặc tập lệnh shell hiện đang được
Thực thi.

LINES Đặt thành số dòng trên thiết bị đầu cuối hoặc cửa sổ. Luôn đặt, mặc định là
24. Xem CỘT.

EPOCHTHỜI THỰC
Thời gian kể từ kỷ nguyên, được trả lại bởi gettimeofday(2), được định dạng dưới dạng số thập phân
tv_sec theo sau là dấu chấm ('.') và tv_usec được đệm đến chính xác sáu số thập phân
các chữ số.

OLDPWD Thư mục làm việc trước đó. Bỏ đặt nếu cd đã không thay đổi thành công
các thư mục kể từ khi shell bắt đầu, hoặc nếu shell không biết nó ở đâu.

TỐI ƯU Khi sử dụng getopt, nó chứa đối số cho một tùy chọn được phân tích cú pháp, nếu nó
yêu cầu một.

OPTIND Chỉ mục của đối số tiếp theo sẽ được xử lý khi sử dụng getopt. Chỉ định 1
tham số này gây ra getopt để xử lý các đối số từ đầu
lần sau nó được gọi.

PATH Dấu hai chấm (dấu chấm phẩy trên OS / 2) được phân tách danh sách các thư mục được tìm kiếm
khi tìm kiếm các lệnh và tệp có nguồn gốc bằng cách sử dụng '.' lệnh (xem bên dưới).
Một chuỗi trống tạo ra từ dấu hai chấm ở đầu hoặc cuối hoặc hai dấu liền kề
dấu hai chấm, được coi là dấu '.' (thư mục hiện tại).

PGRP ID quy trình của trưởng nhóm quy trình của trình bao.

PIPESTATUS Một mảng chứa các mã mức lỗi (trạng thái thoát), từng cái một, trong số những mã cuối cùng
đường ống chạy ở phía trước.

PPID ID tiến trình của cha của shell.

PS1 Lời nhắc chính cho các trình bao tương tác. Tham số, lệnh và số học
thay thế được thực hiện, và '!' được thay thế bằng lệnh hiện tại
số (xem fc lệnh dưới đây). Một chữ '!' có thể được đưa vào lời nhắc bởi
đặt '!!' trong PS1.

Lời nhắc mặc định là "$" cho người dùng không phải root, "#" cho root. Nếu như Cảm ơn is
được gọi bởi root và PS1 không chứa ký tự '#', giá trị mặc định
sẽ được sử dụng ngay cả khi PS1 đã tồn tại trong môi trường.

Sản phẩm Cảm ơn phân phối đi kèm với một mẫu dot.mkshrc có chứa một tinh vi
nhưng bạn có thể thích ví dụ sau (lưu ý rằng
$ {HOSTNAME: = $ (tên máy chủ)} và mệnh đề phân biệt root-vs-user là (trong
ví dụ này) được thực thi tại thời điểm gán PS1, trong khi $ USER và $ PWD
đã thoát và do đó sẽ được đánh giá mỗi khi một lời nhắc được hiển thị):

PS1 = '$ {USER: = $ (id -un)}' "@ $ {HOSTNAME: = $ (tên máy chủ)}: \ $ PWD $ (
if ((USER_ID)); sau đó in \ $; khác in \ #; fi) "

Lưu ý rằng vì trình soạn thảo dòng lệnh cố gắng tìm ra thời gian lời nhắc
là (để họ biết nó còn bao xa so với mép của màn hình), mã thoát trong
nhắc nhở có xu hướng làm rối tung mọi thứ. Bạn có thể nói với vỏ không đếm nhất định
chuỗi (chẳng hạn như mã thoát) bằng cách đặt trước lời nhắc của bạn bằng một ký tự
(chẳng hạn như Ctrl-A) theo sau bởi một dấu xuống dòng và sau đó phân định cách thoát
mã có ký tự này. Mọi sự xuất hiện của ký tự đó trong lời nhắc là
không được in. Nhân tiện, đừng đổ lỗi cho tôi về vụ hack này; nó bắt nguồn từ
nguyên ksh88(1), đã in ký tự phân tách nên bạn đã hết
may mắn nếu bạn không có bất kỳ ký tự không in.

Vì Dấu gạch chéo ngược và các ký tự đặc biệt khác có thể được giải thích bởi shell,
để đặt PS1 thoát khỏi dấu gạch chéo ngược hoặc sử dụng dấu ngoặc kép. Các
sau này là thực tế hơn. Đây là một ví dụ phức tạp hơn, tránh trực tiếp
nhập các ký tự đặc biệt (ví dụ với ^V trong chế độ chỉnh sửa emacs),
nhúng thư mục làm việc hiện tại, trong video ngược lại (màu sẽ hoạt động,
quá), trong chuỗi lời nhắc:

x = $ (print \\ 001)
PS1 = "$ x $ (print \\ r) $ x $ (nhập như vậy) $ x \ $ PWD $ x $ (tput se) $ x>"

Do một gợi ý mạnh mẽ từ David G. Korn, Cảm ơn bây giờ cũng hỗ trợ
mẫu sau:

PS1=$'\1\r\1\e[7m\1$PWD\1\e[0m\1> '

PS2 Chuỗi lời nhắc phụ, theo mặc định là '>', được sử dụng khi cần thêm đầu vào để
hoàn thành một lệnh.

PS3 Prompt được sử dụng bởi chọn khi đọc lựa chọn menu. Mặc định
Là '#? '.

PS4 Được sử dụng để đặt tiền tố các lệnh được in trong quá trình theo dõi thực thi (xem định
-x lệnh dưới đây). Các thay thế tham số, lệnh và số học là
thực hiện trước khi nó được in. Giá trị mặc định là '+'. Bạn có thể muốn đặt nó
thành '[$ EPOCHREALTIME]' để bao gồm dấu thời gian.

PWD Thư mục làm việc hiện tại. Có thể không được đặt hoặc NULL nếu shell không biết
Nó ở đâu vậy.

RANDOM Mỗi lần RANDOM được tham chiếu, nó được gán một số từ 0 đến 32767
từ PRNG tuyến tính công suất đầu tiên.

REPLY Tham số mặc định cho đọc lệnh nếu không có tên nào được đưa ra. Cũng được sử dụng trong
chọn vòng lặp để lưu trữ giá trị được đọc từ đầu vào chuẩn.

SECONDS Số giây kể từ khi trình bao bắt đầu hoặc, nếu tham số là
đã gán một giá trị nguyên, số giây kể từ khi gán cộng với
giá trị đã được chỉ định.

TMOUT Nếu được đặt thành một số nguyên dương trong một trình bao tương tác, nó sẽ chỉ định giá trị tối đa
số giây mà trình bao sẽ đợi đầu vào sau khi in chính
dấu nhắc (PS1). Nếu vượt quá thời gian, shell sẽ thoát ra.

TMPDIR Các tệp shell tạm thời của thư mục được tạo trong. Nếu tham số này không
đặt hoặc không chứa đường dẫn tuyệt đối của một thư mục có thể ghi, tạm thời
các tệp được tạo trong / Tmp.

USER_ID Id người dùng hiệu quả của shell.

dấu ngã mở rộng
Mở rộng dấu nghiêng được thực hiện song song với thay thế tham số, được thực hiện trên các từ
bắt đầu bằng dấu '~' không được trích dẫn. Các ký tự sau dấu ngã, cho đến đầu tiên '/', nếu
bất kỳ, được giả định là một tên đăng nhập. Nếu tên đăng nhập trống, '+' hoặc '-', giá trị của
tham số HOME, PWD hoặc OLDPWD lần lượt được thay thế. Nếu không, mật khẩu
tệp được tìm kiếm cho tên đăng nhập và biểu thức dấu ngã được thay thế bằng
thư mục chính. Nếu tên đăng nhập không được tìm thấy trong tệp mật khẩu hoặc nếu có bất kỳ trích dẫn nào hoặc
thay thế tham số xảy ra trong tên đăng nhập, không có thay thế nào được thực hiện.

Trong các phép gán tham số (chẳng hạn như những lần gán trước một lệnh đơn giản hoặc những lần xuất hiện trong
đối số của bí danh, xuất khẩu, toàn cầu, chỉ đọcbộ sắp chữ), mở rộng dấu ngã được thực hiện sau
bất kỳ phép gán nào (tức là sau dấu bằng) hoặc sau dấu hai chấm không có dấu ngoặc kép (':'); tên đăng nhập
cũng được phân cách bằng dấu hai chấm.

Thư mục chính của các tên đăng nhập đã mở rộng trước đó được lưu vào bộ nhớ đệm và sử dụng lại. Các bí danh -d
lệnh có thể được sử dụng để liệt kê, thay đổi và thêm vào bộ đệm này (ví dụ: bí danh -d
fac = / usr / local / cơ sở vật chất; cd ~ fac / bin).

Cú đúp mở rộng (luân phiên)
Biểu thức dấu ngoặc nhọn có dạng sau:

tiếp đầu ngữ{str1, ...,strN}hậu tố

Các biểu thức được mở rộng thành N các từ, mỗi từ là nối của tiếp đầu ngữ, stri,
hậu tố (ví dụ: “a {c, b {X, Y}, d} e” mở rộng thành bốn từ: “ace”, “abXe”, “abYe” và “ade”).
Như đã lưu ý trong ví dụ, các biểu thức dấu ngoặc nhọn có thể được lồng vào nhau và các từ kết quả thì không
đã sắp xếp. Biểu thức dấu ngoặc nhọn phải chứa dấu phẩy không được trích dẫn (',') để mở rộng xảy ra (ví dụ:
{}{foo} không được mở rộng). Mở rộng dấu ngoặc nhọn được thực hiện sau khi thay thế tham số
và trước khi tạo tên tệp.

Tập tin tên mô hình
Mẫu tên tệp là một từ chứa một hoặc nhiều '?', '*', '+', '@' Hoặc '!'
ký tự hoặc chuỗi “[..]”. Sau khi mở rộng dấu ngoặc nhọn đã được thực hiện, trình bao sẽ thay thế
các mẫu tên tệp với tên được sắp xếp của tất cả các tệp phù hợp với mẫu (nếu không
các tệp khớp nhau, từ được giữ nguyên). Các yếu tố mẫu có ý nghĩa sau:

? Khớp với bất kỳ ký tự đơn nào.

* Đối sánh bất kỳ chuỗi octet nào.

[..] So khớp bất kỳ octet nào bên trong dấu ngoặc. Phạm vi của các octet có thể được chỉ định bởi
phân tách hai octet bằng dấu '-' (ví dụ: “[a0-9]” khớp với chữ cái 'a' hoặc bất kỳ chữ số nào).
Để đại diện cho chính nó, dấu '-' phải được trích dẫn hoặc là octet đầu tiên hoặc cuối cùng
trong danh sách octet. Tương tự, một ']' phải được trích dẫn hoặc bộ tám đầu tiên trong danh sách
nếu nó là đại diện cho chính nó thay vì cuối danh sách. Vừa là '!' xuất hiện
ở đầu danh sách có ý nghĩa đặc biệt (xem bên dưới), vì vậy để thể hiện chính nó
phải được trích dẫn hoặc xuất hiện sau trong danh sách.

[! ..] Giống như [..], ngoại trừ nó khớp với bất kỳ octet nào không nằm trong dấu ngoặc.

*(Belt Hold| ... |Belt Hold)
Khớp với bất kỳ chuỗi octet nào khớp với XNUMX hoặc nhiều lần xuất hiện của chuỗi được chỉ định
các mẫu. Ví dụ: Mẫu * (foo|quán ba) khớp với các chuỗi “”, “foo”, “bar”,
“Foobarfoo”, v.v.

+(Belt Hold| ... |Belt Hold)
Đối sánh bất kỳ chuỗi octet nào khớp với một hoặc nhiều lần xuất hiện của chuỗi được chỉ định
các mẫu. Ví dụ: Mẫu + (foo|quán ba) khớp với các chuỗi “foo”, “bar”,
"Foobar", v.v.

?(Belt Hold| ... |Belt Hold)
Khớp với chuỗi trống hoặc chuỗi khớp với một trong các mẫu được chỉ định.
Ví dụ: Mẫu ? (foo|quán ba) chỉ khớp với các chuỗi “”, “foo” và “bar”.

@(Belt Hold| ... |Belt Hold)
Khớp một chuỗi khớp với một trong các mẫu được chỉ định. Ví dụ: Mẫu
@ (foo|quán ba) chỉ khớp với các chuỗi "foo" và "bar".

!(Belt Hold| ... |Belt Hold)
Khớp bất kỳ chuỗi nào không khớp với một trong các mẫu được chỉ định. Ví dụ:
Belt Hold ! (foo|quán ba) khớp với tất cả các chuỗi ngoại trừ “foo” và “bar”; mô hình ! (*)
phù hợp với không có chuỗi; mô hình ! (?) * khớp với tất cả các chuỗi (hãy nghĩ về nó).

Lưu ý rằng hiện tượng cầu vồng phức tạp, đặc biệt là với các lựa chọn thay thế, diễn ra chậm; sử dụng riêng biệt
so sánh có thể (hoặc không) nhanh hơn.

Lưu ý rằng Cảm ơn (Và Ví dụ) không bao giờ khớp với '.' và '..', nhưng AT&T UNIX ksh, Bourne shvà GNU
bash làm.

Lưu ý rằng không có phần tử mẫu nào ở trên khớp với dấu chấm ('.') Ở đầu dấu
tên tệp hoặc dấu gạch chéo ('/'), ngay cả khi chúng được sử dụng rõ ràng trong chuỗi [..]; ngoài ra,
tên '.' và '..' không bao giờ khớp nhau, ngay cả theo mẫu '. *'.

Nếu người đánh dấu tùy chọn được đặt, bất kỳ thư mục nào là kết quả của việc tạo tên tệp là
được đánh dấu bằng dấu '/'.

Đầu ra đầu vào chuyển hướng
Khi một lệnh được thực thi, đầu vào tiêu chuẩn, đầu ra tiêu chuẩn và lỗi tiêu chuẩn của nó (tệp
các bộ mô tả 0, 1 và 2, tương ứng) thường được kế thừa từ shell. Ba
ngoại lệ cho điều này là các lệnh trong đường ống, cho đầu vào tiêu chuẩn và / hoặc tiêu chuẩn
đầu ra là những thứ được thiết lập bởi đường ống, các lệnh không đồng bộ được tạo khi kiểm soát công việc
bị vô hiệu hóa, mà đầu vào tiêu chuẩn ban đầu được đặt là từ / dev / nullvà các lệnh cho
mà bất kỳ chuyển hướng nào sau đây đã được chỉ định:

>hồ sơ Đầu ra tiêu chuẩn được chuyển hướng đến hồ sơ. Nếu hồ sơ không tồn tại, nó được tạo ra;
nếu nó tồn tại, là một tệp thông thường và người ăn bám tùy chọn được thiết lập, một lỗi
xảy ra; nếu không, tệp sẽ bị cắt ngắn. Lưu ý rằng điều này có nghĩa là lệnh cmd
<foo > foo sẽ mở foo để đọc và sau đó cắt ngắn nó khi nó mở ra cho
viết, trước đây cmd có cơ hội thực sự đọc foo.

>|hồ sơ Giống như >, ngoại trừ tệp bị cắt ngắn, ngay cả khi người ăn bám tùy chọn được thiết lập.

>>hồ sơ Giống như >, ngoại trừ nếu hồ sơ tồn tại nó được nối vào thay vì bị cắt bớt.
Ngoài ra, tệp được mở ở chế độ nối thêm, vì vậy việc ghi luôn đi đến cuối tệp
tập tin (xem mở(2)).

<hồ sơ Đầu vào tiêu chuẩn được chuyển hướng từ hồ sơ, được mở để đọc.

<>hồ sơ Giống như <, ngoại trừ tệp được mở để đọc và ghi.

<<đánh dấu Sau khi đọc dòng lệnh có chứa loại chuyển hướng này (được gọi là
“Here document”), shell sao chép các dòng từ nguồn lệnh vào một
tệp tạm thời cho đến khi khớp với dòng đánh dấu được đọc. Khi lệnh được
được thực thi, đầu vào tiêu chuẩn được chuyển hướng từ tệp tạm thời. Nếu như đánh dấu
không chứa ký tự được trích dẫn, nội dung của tệp tạm thời được xử lý
như thể được đặt trong dấu ngoặc kép mỗi khi lệnh được thực thi, vì vậy tham số,
lệnh và thay thế số học được thực hiện, cùng với dấu gạch chéo ngược ('\')
thoát cho '$', '' ',' \ 'và' \ newline ', nhưng không thoát cho' "'. Nếu nhiều ở đây
các tài liệu được sử dụng trên cùng một dòng lệnh, chúng được lưu theo thứ tự.

Nếu không đánh dấu được đưa ra, tài liệu ở đây kết thúc ở phần tiếp theo << và thay thế
sẽ được thực hiện. Nếu như đánh dấu chỉ là một tập hợp đơn lẻ “'' hoặc kép '' ''
dấu ngoặc kép không có gì ở giữa, tài liệu ở đây kết thúc ở dòng trống tiếp theo
và thay thế sẽ không được thực hiện.

<< -đánh dấu Giống như <<, ngoại trừ các tab đầu bị loại bỏ khỏi các dòng trong tài liệu tại đây.

<<lời Giống như <<, ngoại trừ việc lời is tài liệu ở đây. Đây được gọi là một ở đây
chuỗi.

<&fd Đầu vào chuẩn được sao chép từ trình mô tả tệp fd. fd có thể là một số,
cho biết số bộ mô tả tệp hiện có; chữ cái 'p', chỉ ra
bộ mô tả tệp được liên kết với đầu ra của quá trình đồng hiện tại; hoặc là
ký tự '-', cho biết đầu vào chuẩn sẽ được đóng. Lưu ý rằng fd is
giới hạn ở một chữ số duy nhất trong hầu hết các triển khai shell.

>&fd Giống như <&, ngoại trừ hoạt động được thực hiện trên đầu ra tiêu chuẩn.

&>hồ sơ Giống như >hồ sơ 2> & 1. Đây là GNU (cũ) không dùng nữa bash phần mở rộng được hỗ trợ
by Cảm ơn mà cũng hỗ trợ số fd rõ ràng trước đó, ví dụ:
3 &>hồ sơ giống như 3>hồ sơ 2> & 3 in Cảm ơn nhưng một lỗi cú pháp trong GNU bash.

&> |hồ sơ& >>hồ sơ&> &fd
Giống như >|hồ sơ, >>hồ sơ, hoặc là >&fd, theo dõi bởi 2> & 1, như trên. đó là Cảm ơn
phần mở rộng.

Trong bất kỳ chuyển hướng nào ở trên, bộ mô tả tệp được chuyển hướng (tức là
đầu vào hoặc đầu ra tiêu chuẩn) có thể được đưa ra rõ ràng bằng cách đặt trước chuyển hướng bằng một số
(có thể là một chữ số duy nhất). Các thay thế tham số, lệnh và số học, dấu ngã
thay thế và (nếu trình bao tương tác) tạo tên tệp đều được thực hiện trên
các hồ sơ, đánh dấufd đối số của chuyển hướng. Tuy nhiên, lưu ý rằng kết quả của bất kỳ
tạo tên tệp chỉ được sử dụng nếu một tệp duy nhất được khớp; nếu nhiều tệp trùng khớp,
từ với các ký tự tạo tên tệp mở rộng được sử dụng. Lưu ý rằng trong giới hạn
shell, redirections có thể tạo tệp không thể được sử dụng.

Đối với các lệnh đơn giản, chuyển hướng có thể xuất hiện ở bất kỳ đâu trong lệnh; cho các lệnh ghép
(if các câu lệnh, v.v.), mọi chuyển hướng phải xuất hiện ở cuối. Chuyển hướng được xử lý
sau khi các đường ống được tạo và theo thứ tự chúng được đưa ra, vì vậy phần sau sẽ in
lỗi với một số dòng được thêm vào trước:

$ cat / foo / bar 2> & 1> / dev / null | pr -n -t

Các bộ mô tả tệp được tạo bởi chuyển hướng I / O là riêng tư đối với trình bao.

toán học biểu thức
Biểu thức số học nguyên có thể được sử dụng với cho phép lệnh, bên trong biểu thức $ ((..)),
bên trong tham chiếu mảng (ví dụ: tên[thể hiện]), dưới dạng các đối số số cho thử nghiệm lệnh, và như
giá trị của một phép gán cho một tham số nguyên. Cảnh báo: Điều này cũng ảnh hưởng đến
chuyển đổi thành số nguyên, ví dụ như được thực hiện bởi cho phép chỉ huy. Không bao giờ sử dụng người dùng không được kiểm tra
đầu vào, ví dụ từ môi trường, trong số học!

Các biểu thức được tính toán bằng cách sử dụng số học có dấu và mksh_ari_t loại (ký hiệu 32 bit
số nguyên), trừ khi chúng bắt đầu bằng một ký tự '#' duy nhất, trong trường hợp đó chúng sử dụng mksh_uari_t (a
Số nguyên không dấu 32-bit).

Biểu thức có thể chứa mã định danh tham số chữ-số, tham chiếu mảng và số nguyên
hằng số và có thể được kết hợp với các toán tử C sau (được liệt kê và nhóm trong
thứ tự ưu tiên tăng dần):

Toán tử đơn nguyên:

+ -! ~ ++ -

Toán tử nhị phân:

,
= + = - = * = / =% = <<< = >>> = << = >> = & = ^ = | =
||
&&
|
^
&
==! =
<<=>> =
<<< >>> << >>
+ -
* /%

Toán tử bậc ba:

?: (mức độ ưu tiên cao hơn ngay lập tức so với chuyển nhượng)

Nhóm các toán tử:

()

Hằng số nguyên và biểu thức được tính toán bằng cách sử dụng chính xác 32 bit rộng, có dấu hoặc
không dấu, nhập với bao quanh im lặng khi tràn số nguyên. Hằng số nguyên có thể là
được chỉ định với các cơ sở tùy ý bằng cách sử dụng ký hiệu cơ sở#con số, Nơi cơ sở là một số thập phân
số nguyên xác định cơ sở và con số là một số trong cơ số được chỉ định. Ngoài ra,
số nguyên base-16 có thể được chỉ định bằng cách thêm tiền tố '0x' (không phân biệt chữ hoa chữ thường)
các dạng biểu thức số học, ngoại trừ dưới dạng các đối số số cho thử nghiệm lệnh cài sẵn.
Tiền tố các số có một chữ số duy nhất là 0 ('XNUMX') không giải thích là số bát phân, như
điều đó không an toàn để làm.

Như một người đặc biệt Cảm ơn phần mở rộng, các số đến cơ sở của một được coi là một trong hai (8-bit
trong suốt) Mã điểm mã ASCII hoặc Unicode, tùy thuộc vào trình bao chế độ utf8 cờ (hiện tại
thiết lập). AT&T UNIX ksh93 cú pháp “'x'” thay vì “1 # x” cũng được hỗ trợ. Ghi chú
không thể sử dụng các byte NUL (giá trị tích phân của XNUMX). Một tham số chưa được đặt hoặc trống
đánh giá thành 0 trong ngữ cảnh số nguyên. Trong chế độ Unicode, các octet thô được ánh xạ vào phạm vi
EF80..EFFF như trong OPTU-8, nằm trong PUA và đã được CSUR chỉ định cho việc sử dụng này. Nếu như
nhiều hơn một octet trong chế độ ASCII hoặc một chuỗi nhiều hơn một octet không tạo thành giá trị hợp lệ
và chuỗi CESU-8 tối thiểu được thông qua, hành vi không được xác định (thông thường, trình bao hủy bỏ
với một lỗi phân tích cú pháp, nhưng hiếm khi, nó thành công, ví dụ: trên chuỗi C2 20). Đó là lý do tại sao bạn
nên luôn sử dụng chế độ ASCII trừ khi bạn biết rằng đầu vào được định dạng tốt UTF-8 trong
phạm vi 0000..FFFD nếu bạn sử dụng tính năng này, trái ngược với đọc -a.

Các toán tử được đánh giá như sau:

đơn nguyên +
Kết quả là đối số (bao gồm cả tính đầy đủ).

một ngôi -
Sự phủ định.

! Không logic; kết quả là 1 nếu đối số là 0, XNUMX nếu không.

~ Số học (khôn ngoan) KHÔNG.

++ Tăng dần; phải được áp dụng cho một tham số (không phải là chữ hoặc biểu thức khác).
Tham số được tăng thêm 1. Khi được sử dụng như một toán tử tiền tố, kết quả
là giá trị tăng dần của tham số; khi được sử dụng như một toán tử hậu tố,
kết quả là giá trị ban đầu của tham số.

- Tương tự với ++, ngoại trừ tham số được giảm đi 1.

, Phân cách hai biểu thức số học; phía bên trái được đánh giá đầu tiên,
sau đó là bên phải. Kết quả là giá trị của biểu thức bên tay phải
bên.

= Sự phân công; biến ở bên trái được đặt thành giá trị ở bên phải.

+ = - = * = / =% = <<< = >>> = << = >> = & = ^ = | =
Các toán tử gán.><op> =thể hiện> giống như> =><op><thể hiện>,
với bất kỳ ưu tiên toán tử nào trongthể hiện> được bảo toàn. Ví dụ: “var1 * = 5 +
3 ”giống như chỉ định“ var1 = var1 * (5 + 3) ”.

|| Logic HOẶC; kết quả là 1 nếu một trong hai đối số khác 0, XNUMX nếu không. Các
đối số bên phải chỉ được đánh giá nếu đối số bên trái bằng XNUMX.

&& Logic AND; kết quả là 1 nếu cả hai đối số đều khác 0, XNUMX nếu không. Các
đối số bên phải chỉ được đánh giá nếu đối số bên trái khác XNUMX.

| Số học (khôn ngoan) HOẶC.

^ Arithmetic (bit-khôn ngoan) XOR (độc quyền-HOẶC).

& Số học (khôn ngoan) VÀ.

== Bằng nhau; kết quả là 1 nếu cả hai đối số bằng nhau, 0 nếu không.

! = Không bằng nhau; kết quả là 0 nếu cả hai đối số bằng nhau, 1 nếu không.

<Nhỏ hơn; kết quả là 1 nếu đối số bên trái nhỏ hơn bên phải, 0 nếu
không phải.

<=>> =
Nhỏ hơn hoặc bằng, lớn hơn, lớn hơn hoặc bằng. Nhìn thấy <.

<<< >>>
Xoay trái (phải); kết quả tương tự như shift (xem <<) ngoại trừ việc
các bit được dịch chuyển ra ở một đầu được chuyển vào ở đầu kia, thay vì số không
hoặc ký hiệu các bit.

<< >> Shift left (phải); kết quả là đối số bên trái với các bit của nó được dịch chuyển sang trái
(phải) bằng số lượng đã cho trong đối số đúng.

+ - */
Phép cộng, phép trừ, phép nhân và phép chia.

% Còn lại; kết quả là phần còn lại đối xứng của phép chia bên trái
lập luận của bên phải. Để có được môđun toán học của “a mod b ”, sử dụng
công thức “(a% b + b)% b”.

<arg1>?arg2>:arg3>
Nếuarg1> khác XNUMX, kết quả làarg2>; nếu không thì kết quả làarg3>.
Đối số không phải là kết quả không được đánh giá.

Đồng quy trình
Một quá trình đồng bộ (là một đường dẫn được tạo bằng toán tử '| &') là một quá trình không đồng bộ
mà shell đều có thể ghi vào (sử dụng in -p) và đọc từ (sử dụng đọc -p). Đầu vào
và đầu ra của đồng quy trình cũng có thể được điều khiển bằng cách sử dụng > & p<& p chuyển hướng,
tương ứng. Khi một quá trình đồng đã được bắt đầu, không thể bắt đầu một quá trình khác cho đến khi đồng
quy trình thoát hoặc cho đến khi đầu vào của đồng quy trình được chuyển hướng bằng cách sử dụng giám đốc điều hành n> & p
chuyển hướng. Nếu đầu vào của đồng quá trình được chuyển hướng theo cách này, thì quá trình đồng tiếp theo sẽ
đã bắt đầu sẽ chia sẻ đầu ra với quy trình đồng đầu tiên, trừ khi đầu ra của
quy trình đồng đã được chuyển hướng bằng cách sử dụng giám đốc điều hành n<& p chuyển hướng.

Một số lưu ý liên quan đến đồng quy trình:

· Cách duy nhất để đóng đầu vào của đồng quy trình (để quy trình đồng xử lý đọc phần cuối của tệp) là
để chuyển hướng đầu vào đến bộ mô tả tệp được đánh số và sau đó đóng bộ mô tả tệp đó:
giám đốc điều hành 3> & p; giám đốc điều hành 3> & -

· Để các đồng quy trình chia sẻ một đầu ra chung, trình bao phải ghi
phần của đường ống đầu ra mở. Điều này có nghĩa là phần cuối của tệp sẽ không được phát hiện cho đến khi
tất cả các quy trình đồng chia sẻ kết quả đầu ra của đồng quy trình đã thoát (khi tất cả chúng đều thoát,
shell đóng bản sao của nó của đường ống). Điều này có thể tránh được bằng cách chuyển hướng đầu ra đến
bộ mô tả tệp được đánh số (vì điều này cũng khiến trình bao đóng bản sao của nó). Lưu ý rằng
hành vi này hơi khác so với trình bao Korn ban đầu đóng bản sao của nó
phần ghi của đầu ra đồng xử lý khi đồng xử lý bắt đầu gần đây nhất
(thay vì khi tất cả đồng quy trình chia sẻ) thoát.

· in -p sẽ bỏ qua các tín hiệu SIGPIPE trong khi ghi nếu tín hiệu không bị mắc kẹt hoặc
làm ngơ; điều này cũng đúng nếu đầu vào đồng xử lý đã được sao chép sang một tệp khác
bộ mô tả và in -un Được sử dụng.

Chức năng
Các hàm được xác định bằng cách sử dụng Korn shell chức năng Tên chức năng cú pháp hoặc
Vỏ Bourne / POSIX Tên chức năng() cú pháp (xem bên dưới để biết sự khác biệt giữa hai
các hình thức). Các chức năng giống như các tập lệnh. ‐ (Tức là các tập lệnh có nguồn gốc bằng cách sử dụng "." Được tích hợp sẵn) trong đó
chúng được thực thi trong môi trường hiện tại. Tuy nhiên, không giống như. ‐ Script, đối số shell
(tức là các tham số vị trí $ 1, $ 2, v.v.) không bao giờ hiển thị bên trong chúng. Khi vỏ
xác định vị trí của một lệnh, các chức năng được tìm kiếm sau khi tích hợp sẵn đặc biệt
trước khi nội trang và PATH được tìm kiếm.

Một chức năng hiện có có thể bị xóa bằng cách sử dụng không đặt -f Tên chức năng. Một danh sách các chức năng có thể
có được bằng cách sử dụng bộ sắp chữ +f và các định nghĩa hàm có thể được liệt kê bằng cách sử dụng bộ sắp chữ -f.
Sản phẩm tự động tải lệnh (là một bí danh cho bộ sắp chữ -fu) có thể được sử dụng để tạo không xác định
các hàm: khi một hàm không xác định được thực thi, trình bao sẽ tìm kiếm đường dẫn được chỉ định trong
tham số FPATH cho một tệp có cùng tên với hàm, nếu được tìm thấy, sẽ được đọc
và thực hiện. Nếu sau khi thực thi tệp, hàm được đặt tên được tìm thấy được xác định,
chức năng được thực thi; nếu không, tìm kiếm lệnh bình thường được tiếp tục (tức là trình bao
tìm kiếm bảng lệnh tích hợp sẵn thông thường và PATH). Lưu ý rằng nếu không tìm thấy lệnh
bằng cách sử dụng PATH, một nỗ lực được thực hiện để tự động tải một hàm bằng FPATH (đây là một
tính năng của vỏ Korn ban đầu).

Các hàm có thể có hai thuộc tính, "theo dõi" và "xuất", có thể được đặt bằng bộ sắp chữ -ft
bộ sắp chữ -fx, tương ứng. Khi một hàm theo dõi được thực thi, trình bao xtrace
tùy chọn được bật trong khoảng thời gian của chức năng. Thuộc tính "export" của các hàm là
hiện không được sử dụng. Trong shell Korn ban đầu, các hàm đã xuất sẽ hiển thị với shell
các tập lệnh được thực thi.

Vì các hàm được thực thi trong môi trường shell hiện tại, các phép gán tham số được thực hiện
các chức năng bên trong có thể nhìn thấy sau khi chức năng hoàn thành. Nếu đây không phải là mong muốn
hiệu ứng, bộ sắp chữ lệnh có thể được sử dụng bên trong một hàm để tạo một tham số cục bộ. Ghi chú
AT&T UNIX đó ksh93 sử dụng phạm vi tĩnh (một phạm vi toàn cục, một phạm vi cục bộ cho mỗi chức năng)
và chỉ cho phép các biến cục bộ trên các hàm kiểu Korn, trong khi Cảm ơn sử dụng phạm vi động
(phạm vi lồng nhau của các địa phương khác nhau). Lưu ý rằng các thông số đặc biệt (ví dụ: $$, $!) không được
phạm vi theo cách này.

Trạng thái thoát của một hàm là trạng thái của lệnh cuối cùng được thực thi trong hàm. MỘT
có thể được thực hiện để kết thúc ngay lập tức bằng cách sử dụng trở lại yêu cầu; cái này cũng có thể được sử dụng
để chỉ định rõ ràng trạng thái thoát.

Các chức năng được xác định với chức năng từ dành riêng được xử lý khác nhau trong những điều sau
các cách từ các chức năng được xác định với () ký hiệu:

· Tham số $ 0 được đặt thành tên của hàm (Các hàm kiểu Bourne để lại $ 0
không đụng chạm).

· Các phép gán tham số trước các lệnh gọi hàm không được giữ trong môi trường shell
(thực thi các chức năng kiểu Bourne sẽ giữ nguyên các phép gán).

· OPTIND được lưu / đặt lại và khôi phục khi nhập và thoát khỏi chức năng vì vậy getopt có thể
được sử dụng đúng cách cả bên trong và bên ngoài chức năng (Các chức năng kiểu Bourne để lại OPTIND
không đụng chạm, vì vậy đang sử dụng getopt bên trong một chức năng can thiệp vào việc sử dụng getopt bên ngoài
chức năng).

· Tùy chọn vỏ (định -o) có phạm vi cục bộ, tức là các thay đổi bên trong một hàm được đặt lại khi
lối ra của nó.

Trong tương lai, những khác biệt sau cũng có thể được thêm vào:

· Một môi trường bẫy / tín hiệu riêng biệt sẽ được sử dụng trong quá trình thực thi các chức năng. Điều này
nghĩa là các bẫy được đặt bên trong một chức năng sẽ không ảnh hưởng đến các bẫy và tín hiệu của vỏ
không bị bỏ qua trong shell (nhưng có thể bị mắc kẹt) sẽ có tác dụng mặc định của chúng trong
một chức năng.

· Bẫy EXIT, nếu được đặt trong một hàm, sẽ được thực thi sau khi hàm trả về.

Lệnh thực hiện
Sau khi đánh giá các đối số dòng lệnh, chuyển hướng và gán tham số,
loại lệnh được xác định: một lệnh tích hợp đặc biệt, một hàm, một nội trang bình thường hoặc
tên của một tệp để thực thi được tìm thấy bằng cách sử dụng tham số PATH. Kiểm tra được thực hiện trong
đơn hàng trên. Các lệnh tích hợp đặc biệt khác với các lệnh khác ở chỗ PATH
tham số không được sử dụng để tìm chúng, một lỗi trong quá trình thực thi của chúng có thể gây ra
shell tương tác để thoát và các phép gán tham số được chỉ định trước lệnh
được giữ lại sau khi lệnh hoàn thành. Các lệnh tích hợp thông thường chỉ khác ở chỗ
tham số PATH không được sử dụng để tìm chúng.

Bản gốc ksh và POSIX hơi khác nhau ở chỗ các lệnh được coi là đặc biệt hoặc
đều đặn.

Các tiện ích tích hợp đặc biệt của POSIX:

., :, phá vỡ, tiếp tục, đánh giá, giám đốc điều hành, ra, xuất khẩu, chỉ đọc, trở lại, định, thay đổi, thời gian, bẫy,
không đặt

thêm vào Cảm ơn lệnh giữ các bài tập:

được xây dựng trong, toàn cầu, nguồn, bộ sắp chữ, chờ đợi

Nội trang không đặc biệt:

[, bí danh, bg, ràng buộc, làm sao, cd, lệnh, bỏ lỡ, sai, fc, fg, getopt, việc làm, giết, cho phép, in,
pwd, đọc, đường dẫn thực, đổi tên, ngủ, Đình chỉ, thử nghiệm, đúng, giới hạn, cái ô, Unalias, thời gian

Khi loại lệnh đã được xác định, mọi phép gán tham số dòng lệnh sẽ
được thực hiện và xuất trong thời gian của lệnh.

Phần sau mô tả các lệnh tích hợp sẵn đặc biệt và thông thường và dành riêng giống như nội trang
từ ngữ:

. hồ sơ [arg hữu ích. Cảm ơn !]
Đây được gọi là lệnh “dot”. Thực hiện các lệnh trong hồ sơ bây giờ
môi trường. Tệp được tìm kiếm trong các thư mục của PATH. Nếu đối số là
đã cho, các tham số vị trí có thể được sử dụng để truy cập chúng trong khi hồ sơ đang được
Thực thi. Nếu không có đối số nào được đưa ra, các tham số vị trí là tham số của
môi trường mà lệnh được sử dụng.

: [hữu ích. Cảm ơn !]
Lệnh null. Trạng thái thoát được đặt thành không.

[ biểu hiện ]
Xem thử nghiệm.

bí danh [-d | -t [-r|] | + -x] [-p] [+] [tên [=giá trị] hữu ích. Cảm ơn !]
Không cần đối số, bí danh liệt kê tất cả các bí danh. Đối với bất kỳ tên nào không có giá trị,
bí danh hiện có được liệt kê. Bất kỳ tên nào có giá trị đều xác định bí danh (xem bí danh
ở trên).

Khi liệt kê bí danh, một trong hai định dạng được sử dụng. Thông thường, bí danh được liệt kê là
tên=giá trị, Nơi giá trị được trích dẫn. Nếu các tùy chọn đứng trước dấu '+' hoặc dấu '+' đơn lẻ
được đưa ra trên dòng lệnh, chỉ tên được in.

Sản phẩm -d tùy chọn khiến bí danh thư mục được sử dụng trong mở rộng dấu ngã được liệt kê
hoặc thiết lập (xem dấu ngã mở rộng ở trên).

Nếu -p tùy chọn được sử dụng, mỗi bí danh được bắt đầu bằng chuỗi “bí danh”.

Sản phẩm -t tùy chọn cho biết rằng các bí danh được theo dõi sẽ được liệt kê / đặt (các giá trị được chỉ định
trên dòng lệnh được bỏ qua cho các bí danh được theo dõi). Các -r tùy chọn chỉ ra rằng
tất cả các bí danh được theo dõi sẽ được đặt lại.

Sản phẩm -x bộ tùy chọn (+x xóa) thuộc tính xuất của một bí danh hoặc, nếu không có tên
đã cho, liệt kê các bí danh có thuộc tính export (xuất một bí danh không có
hiệu ứng).

bg [việc làm hữu ích. Cảm ơn !]
Tiếp tục (các) công việc đã dừng được chỉ định trong nền. Nếu không có công việc nào được chỉ định, %+
được giả định. Nhìn thấy Việc làm điều khiển dưới đây để biết thêm thông tin.

ràng buộc [-l]
Các ràng buộc hiện tại được liệt kê. Nếu -l cờ được đưa ra, ràng buộc thay vào đó liệt kê
tên của các chức năng mà các phím có thể bị ràng buộc. Nhìn thấy Emacs chỉnh sửa chế độ để biết thêm
thông tin.

ràng buộc [-m] chuỗi=[Thay thế] hữu ích. Cảm ơn !
ràng buộc chuỗi=[lệnh chỉnh sửa] hữu ích. Cảm ơn !
Lệnh chỉnh sửa đã chỉ định được liên kết với chuỗi, nên bao gồm một
ký tự điều khiển tùy chọn đứng trước một trong hai ký tự tiền tố và
thành công tùy chọn bởi một ký tự dấu ngã. Đầu vào trong tương lai của chuỗi sẽ gây ra các
lệnh chỉnh sửa sẽ được gọi ngay lập tức. Nếu -m cờ được đưa ra, được chỉ định
đầu vào chuỗi sau đó sẽ được thay thế ngay lập tức bởi Thay thế chuỗi
có thể chứa các lệnh chỉnh sửa nhưng không chứa các macro khác. Nếu một hậu tố dấu ngã là
đã cho, dấu ngã ở sau một hoặc hai tiền truyện và ký tự điều khiển bị bỏ qua,
bất kỳ ký tự dấu nào khác sẽ được xử lý sau đó.

Các ký tự điều khiển có thể được viết bằng ký hiệu dấu mũ, tức là ^ X đại diện cho Ctrl-X.
Lưu ý rằng mặc dù chỉ hỗ trợ hai ký tự tiền tố (thường là ESC và ^ X),
một số chuỗi nhiều ký tự có thể được hỗ trợ.

Các ràng buộc mặc định sau đây hiển thị cách các phím mũi tên, phím home, end và delete
trên thiết bị đầu cuối màn hình BSD wsvt25, xterm-xfree86 hoặc GNU bị ràng buộc (tất nhiên một số
trình tự thoát sẽ không hoạt động khá tốt như thế này):

ràng buộc '^ X' = prefix-2
ràng buộc '^ [[' = prefix-2
ràng buộc '^ XA' = up-history
bind '^ XB' = down-history
ràng buộc '^ XC' = forward-char
ràng buộc '^ XD' = back-char
ràng buộc '^ X1 ~' = đầu dòng
ràng buộc '^ X7 ~' = đầu dòng
ràng buộc '^ XH' = đầu dòng
ràng buộc '^ X4 ~' = end-of-line
ràng buộc '^ X8 ~' = end-of-line
ràng buộc '^ XF' = end-of-line
ràng buộc '^ X3 ~' = delete-char-forward

phá vỡ [cấp]
Thoát khỏi cấpthứ bên trong nhất cho, chọn, cho đến khi, hoặc là trong khi Vòng lặp. cấp mặc định là 1.

được xây dựng trong [--] lệnh [arg hữu ích. Cảm ơn !]
Thực thi lệnh tích hợp sẵn lệnh.

làm sao [-u] [hồ sơ hữu ích. Cảm ơn !]
Đọc các tệp tuần tự, theo thứ tự dòng lệnh và ghi chúng vào đầu ra tiêu chuẩn.
Nếu một hồ sơ là một dấu gạch ngang ('-') hoặc không có, được đọc từ đầu vào chuẩn. Trực tiếp
cuộc gọi nội trang, POSIX -u tùy chọn được hỗ trợ dưới dạng không chọn. Đối với các cuộc gọi từ shell, nếu
bất kỳ tùy chọn nào được đưa ra, một bên ngoài làm sao(1) tiện ích được ưu tiên hơn bản nội trang.

cd [-L] [dir]
cd -P [-e] [dir]
chdir [-eLP] [dir]
Đặt thư mục làm việc thành dir. Nếu tham số CDPATH được đặt, nó sẽ liệt kê
đường dẫn tìm kiếm cho thư mục chứa dir. Đường dẫn NULL có nghĩa là hiện tại
danh mục. Nếu như dir được tìm thấy trong bất kỳ thành phần nào của đường dẫn tìm kiếm CDPATH ngoài
Đường dẫn NULL, tên của thư mục làm việc mới sẽ được ghi vào đầu ra chuẩn.
If dir bị thiếu, thư mục chính HOME được sử dụng. Nếu như dir là '-', trước đó
thư mục làm việc được sử dụng (xem tham số OLDPWD).

Nếu -L tùy chọn (đường dẫn logic) được sử dụng hoặc nếu vật lý tùy chọn chưa được đặt (xem
định lệnh bên dưới), tham chiếu đến '..' trong dir có liên quan đến con đường được sử dụng để đến
cac thu mục. Nếu -P tùy chọn (đường dẫn vật lý) được sử dụng hoặc nếu vật lý Tùy chọn là
set, '..' có liên quan đến cây thư mục hệ thống tập tin. NKT và OLDPWD
các tham số được cập nhật để phản ánh thư mục làm việc hiện tại và cũ,
tương ứng. Nếu -e tùy chọn được đặt cho truyền tải hệ thống tệp vật lý và PWD
không thể đặt, mã thoát là 1; lớn hơn 1 nếu xảy ra lỗi, 0
nếu không thì.

cd [-eLP] xưa mới
chdir [-eLP] xưa mới
Chuỗi mới được thay thế cho xưa trong thư mục hiện tại và shell
cố gắng thay đổi thư mục mới.

lệnh [-pVv] cmd [arg hữu ích. Cảm ơn !]
Nếu không -v cũng không -V tùy chọn được đưa ra, cmd được thực thi chính xác như thể lệnh
không được chỉ định, với hai ngoại lệ: thứ nhất, cmd không thể là một hàm shell; và
thứ hai, các lệnh tích hợp đặc biệt mất đi tính đặc biệt của chúng (tức là chuyển hướng và
các lỗi tiện ích không làm cho trình bao thoát và các lệnh gán không
dài hạn).

Nếu -p tùy chọn được đưa ra, đường dẫn tìm kiếm mặc định được sử dụng thay vì giá trị hiện tại
của PATH, giá trị thực của nó phụ thuộc vào hệ thống.

Nếu -v tùy chọn được đưa ra, thay vì thực thi cmd, thông tin về những gì sẽ là
được thực thi được đưa ra (và điều tương tự cũng được thực hiện đối với arg hữu ích. Cảm ơn !). Đối với nội trang, chức năng và
từ khóa, tên của chúng được in đơn giản; đối với bí danh, một lệnh xác định chúng là
đã in; cho các tiện ích được tìm thấy bằng cách tìm kiếm tham số PATH, đường dẫn đầy đủ của
lệnh được in. Nếu không tìm thấy lệnh nào (tức là tìm kiếm đường dẫn không thành công), không có gì là
in và lệnh thoát với trạng thái khác không. Các -V tùy chọn giống như -v
tùy chọn, ngoại trừ nó dài dòng hơn.

tiếp tục [cấp]
Chuyển đến đầu của cấpthứ bên trong nhất cho, chọn, cho đến khi, hoặc là trong khi Vòng lặp.
cấp mặc định là 1.

bỏ lỡ [-MỘT] [arg hữu ích. Cảm ơn !]
Cảnh báo: tiện ích này không phải là di động; sử dụng nội trang shell Korn in thay thế.

In các đối số của nó (được phân tách bằng dấu cách) theo sau bởi một dòng mới, theo tiêu chuẩn
đầu ra. Dòng mới bị chặn nếu bất kỳ đối số nào chứa dấu gạch chéo ngược
dãy '\ c'. Xem in lệnh bên dưới để biết danh sách các chuỗi dấu gạch chéo ngược khác
được công nhận.

Các tùy chọn được cung cấp để tương thích với các tập lệnh trình bao BSD. Các -n tùy chọn
ngăn chặn dòng mới ở cuối, -e cho phép giải thích dấu gạch chéo ngược (không cần chọn, vì
điều này thường được thực hiện), và -E ngăn chặn diễn giải dấu gạch chéo ngược.

Nếu posix or sh tùy chọn được đặt hoặc đây là lệnh gọi nội trang trực tiếp, chỉ là lệnh đầu tiên
đối số được coi là một tùy chọn và chỉ khi nó chính xác là “-n”. Gạch chéo ngược
tính năng giải thích bị vô hiệu hóa.

đánh giá lệnh hữu ích. Cảm ơn !
Các đối số được nối (có khoảng trắng giữa chúng) để tạo thành một chuỗi đơn
mà shell sau đó sẽ phân tích cú pháp và thực thi trong môi trường hiện tại.

giám đốc điều hành [-a argv0] [-c] [lệnh [arg hữu ích. Cảm ơn !]]
Lệnh được thực hiện mà không cần chia nhánh, thay thế quá trình trình bao. Đây là
hiện tại là tuyệt đối, tức là giám đốc điều hành không bao giờ trở lại, ngay cả khi lệnh không được tìm thấy. Các
-a tùy chọn cho phép đặt một giá trị argv [0] khác và -c làm sạch môi trường
trước khi thực hiện tiến trình con, ngoại trừ biến _ và các phép gán trực tiếp.

Nếu không có lệnh nào được đưa ra ngoại trừ chuyển hướng I / O, chuyển hướng I / O là vĩnh viễn
và vỏ chưa được thay thế. Bất kỳ bộ mô tả tệp nào lớn hơn 2 được mở
or dup(2) 'd theo cách này không có sẵn cho các lệnh được thực thi khác (tức là
các lệnh không được tích hợp sẵn trong shell). Lưu ý rằng vỏ Bourne khác
nơi đây; nó chuyển các bộ mô tả tệp này vào.

ra [tình trạng]
Vỏ thoát ra với trạng thái thoát được chỉ định. Nếu như tình trạng không được chỉ định, lối ra
trạng thái là giá trị hiện tại của $? tham số.

xuất khẩu [-p] [tham số[=giá trị]]
Đặt thuộc tính xuất của các tham số được đặt tên. Các thông số đã xuất được chuyển vào
môi trường để thực hiện các lệnh. Nếu các giá trị được chỉ định, các tham số được đặt tên
cũng được chỉ định.

Nếu không có tham số nào được chỉ định, tất cả các tham số có thuộc tính xuất được đặt là
được in một trên mỗi dòng; hoặc tên của họ hoặc, nếu một '-' không có chữ cái tùy chọn là
được chỉ định, cặp tên = giá trị hoặc, với -p, xuất khẩu các lệnh thích hợp để nhập lại.

sai Lệnh thoát với trạng thái khác XNUMX.

fc [-e biên tập viên | -l [-n]] [-r] [Thành phố điện khí hóa phía tây dãy núi Rocky đầu tiên [cuối cùng]]
Thành phố điện khí hóa phía tây dãy núi Rocky đầu tiêncuối cùng chọn lệnh từ lịch sử. Các lệnh có thể được chọn theo lịch sử
số (số âm đi ngược lại dòng hiện tại, gần đây nhất) hoặc
chuỗi chỉ định lệnh gần đây nhất bắt đầu bằng chuỗi đó. Các -l tùy chọn
liệt kê lệnh trên đầu ra tiêu chuẩn và -n ngăn chặn các số lệnh mặc định.
Sản phẩm -r tùy chọn đảo ngược thứ tự của danh sách. Không có -l, các lệnh đã chọn là
được chỉnh sửa bởi trình biên tập được chỉ định với -e tùy chọn, hoặc nếu không -e được chỉ định,
trình soạn thảo được chỉ định bởi tham số FCEDIT (nếu tham số này không được đặt, / bin / ed is
được sử dụng), và sau đó được thực thi bởi trình bao.

fc -e - | -s [-g] [xưa=mới] [tiếp đầu ngữ]
Thực hiện lại lệnh đã chọn (lệnh trước đó theo mặc định) sau khi thực hiện
sự thay thế tùy chọn của xưa với mới. Nếu -g được chỉ định, tất cả các lần xuất hiện của
xưa được thay thế bằng mới. Nghĩa của -e --s giống hệt nhau: thực hiện lại
lệnh đã chọn mà không cần gọi một trình soạn thảo. Lệnh này thường được truy cập bằng
xác định trước: bí danh r = 'fc -e -'

fg [việc làm hữu ích. Cảm ơn !]
Tiếp tục (các) công việc đã chỉ định ở phía trước. Nếu không có công việc nào được chỉ định, %+ is
giả định. Nhìn thấy Việc làm điều khiển dưới đây để biết thêm thông tin.

getopt dây quang tên [arg hữu ích. Cảm ơn !]
Được sử dụng bởi các thủ tục shell để phân tích cú pháp các đối số được chỉ định (hoặc các tham số vị trí,
nếu không có lập luận nào được đưa ra) và để kiểm tra các lựa chọn hợp pháp. dây quang chứa
các chữ cái tùy chọn mà getopt là nhận ra. Nếu một chữ cái được theo sau bởi dấu hai chấm, thì
tùy chọn dự kiến ​​sẽ có một đối số. Các tùy chọn không sử dụng đối số có thể là
được nhóm trong một đối số duy nhất. Nếu một tùy chọn có một đối số và tùy chọn
ký tự không phải là ký tự cuối cùng của đối số mà nó được tìm thấy, phần còn lại của
đối số được coi là đối số của tùy chọn; nếu không, đối số tiếp theo là
đối số của tùy chọn.

Mỗi lần getopt được gọi, nó đặt tùy chọn tiếp theo trong tham số shell tên
và chỉ mục của đối số sẽ được xử lý bởi lệnh gọi tiếp theo tới getopt trong
tham số shell OPTIND. Nếu tùy chọn được giới thiệu với dấu '+', tùy chọn được đặt
in tên có tiền tố là dấu '+'. Khi một tùy chọn yêu cầu một đối số, getopt nơi
nó trong tham số shell OPTARG.

Khi gặp phải một tùy chọn bất hợp pháp hoặc một đối số tùy chọn bị thiếu, một dấu chấm hỏi
hoặc dấu hai chấm được đặt trong tên (chỉ ra một tùy chọn bất hợp pháp hoặc thiếu đối số,
tương ứng) và OPTARG được đặt thành ký tự tùy chọn đã gây ra sự cố.
Hơn nữa, nếu dây quang không bắt đầu bằng dấu hai chấm, dấu chấm hỏi được đặt trong
tên, OPTARG chưa được đặt và thông báo lỗi được in thành lỗi chuẩn.

Khi kết thúc các tùy chọn gặp phải, getopt lối ra với lối ra khác không
trạng thái. Tùy chọn kết thúc ở đối số đầu tiên (đối số không phải tùy chọn) không bắt đầu
với '-' hoặc khi gặp phải đối số '-'.

Phân tích cú pháp tùy chọn có thể được đặt lại bằng cách đặt OPTIND thành 1 (điều này được thực hiện tự động
bất cứ khi nào shell hoặc một thủ tục shell được gọi).

Cảnh báo: Thay đổi giá trị của tham số shell OPTIND thành giá trị khác 1, hoặc
phân tích cú pháp các nhóm đối số khác nhau mà không đặt lại OPTIND, có thể dẫn đến
kết quả.

toàn cầu hữu ích. Cảm ơn !
Xem bộ sắp chữ.

băm [-r] [tên hữu ích. Cảm ơn !]
Không có đối số, bất kỳ tên đường dẫn lệnh thực thi được băm nào cũng được liệt kê. Các -r tùy chọn
khiến tất cả các lệnh băm bị xóa khỏi bảng băm. Mỗi tên được tìm kiếm
như thể nó là một tên lệnh và được thêm vào bảng băm nếu nó là một tệp thực thi
chỉ huy.

việc làm [-lnp] [việc làm hữu ích. Cảm ơn !]
Hiển thị thông tin về (các) công việc được chỉ định; nếu không có công việc nào được chỉ định, tất cả các công việc
Được hiển thị. Các -n tùy chọn khiến thông tin chỉ được hiển thị cho các công việc
đã thay đổi trạng thái kể từ lần thông báo cuối cùng. Nếu -l tùy chọn được sử dụng,
ID quy trình của mỗi quy trình trong một công việc cũng được liệt kê. Các -p tùy chọn chỉ gây ra
nhóm quy trình của từng công việc sẽ được in. Nhìn thấy Việc làm điều khiển bên dưới cho định dạng của việc làm
và công việc được hiển thị.

giết [-s ký tên | -dấu hiệu | -ký tên] { việc làm | pid | pgrp } hữu ích. Cảm ơn !
Gửi tín hiệu được chỉ định đến các công việc, ID quy trình hoặc nhóm quy trình được chỉ định. Nếu như
không có tín hiệu được chỉ định, tín hiệu TERM được gửi. Nếu một công việc được chỉ định, tín hiệu
được gửi đến nhóm quy trình của công việc. Nhìn thấy Việc làm điều khiển bên dưới cho định dạng của việc làm.

giết -l [trạng thái thoát hữu ích. Cảm ơn !]
In tên tín hiệu tương ứng với trạng thái thoát. Nếu không có đối số nào được chỉ định,
danh sách tất cả các tín hiệu, số của chúng và mô tả ngắn gọn về chúng được in ra.

cho phép [biểu hiện hữu ích. Cảm ơn !]
Mỗi biểu thức được đánh giá (xem toán học biểu thức bên trên). Nếu tất cả các biểu thức
được đánh giá thành công, trạng thái thoát là 0 (1) nếu biểu thức cuối cùng được đánh giá
đến khác không (không). Nếu một lỗi xảy ra trong quá trình phân tích cú pháp hoặc đánh giá một
biểu thức, trạng thái thoát lớn hơn 1. Vì các biểu thức có thể cần
trích dẫn, (( thể hiện )) là đường cú pháp cho {let 'thể hiện'; }.

cho phép] Bí danh được sử dụng nội bộ cho cho phép.

mknod [-m chế độ] tên b|c chính nhỏ
mknod [-m chế độ] tên p
Tạo một tập tin đặc biệt cho thiết bị. Loại tệp có thể là b (thiết bị loại khối), c
(thiết bị loại ký tự), hoặc p (đường ống được đặt tên, FIFO). Tệp đã tạo có thể được sửa đổi
theo nó chế độ (thông qua -m Lựa chọn), chính (số thiết bị chính), và nhỏ
(số thiết bị phụ). Đây thường không phải là một phần của Cảm ơn; tuy nhiên, các nhà phân phối có thể
đã thêm điều này dưới dạng nội trang như một bản hack tốc độ.

in [-nprsu[n|] | -R [-en]] [đối số hữu ích. Cảm ơn !]
in in các đối số của nó trên đầu ra tiêu chuẩn, được phân tách bằng dấu cách và kết thúc
với một dòng mới. Các -n tùy chọn ngăn dòng mới. Theo mặc định, một số C sẽ thoát
được dịch. Chúng bao gồm những điều này được đề cập trong Dấu gạch chéo ngược mở rộng ở trên, cũng như
là '\ c', tương đương với việc sử dụng -n lựa chọn. Mở rộng backslash có thể là
ức chế với -r Lựa chọn. Các -s tùy chọn in vào tệp lịch sử thay vì
chuẩn đầu ra; các -u tùy chọn in vào bộ mô tả tệp n (n mặc định là 1 nếu
bỏ qua); và -p tùy chọn in cho quy trình đồng (xem Đồng quy trình ở trên).

Sản phẩm -R tùy chọn được sử dụng để mô phỏng, ở một mức độ nào đó, BSD bỏ lỡ(1) lệnh nào
không xử lý chuỗi '\' trừ khi -e tùy chọn được đưa ra. Như trên, -n tùy chọn
ngăn chặn dòng mới ở cuối.

printf định dạng [đối số hữu ích. Cảm ơn !]
Đầu ra được định dạng. Gần giống với printf(1), tiện ích, ngoại trừ nó sử dụng
giống nhau Dấu gạch chéo ngược mở rộng và mã I / O và không xử lý dấu phẩy động như
phần còn lại của Cảm ơn. Tiện ích bên ngoài được ưu tiên hơn so với nội trang. Đây không phải là
thường là một phần của Cảm ơn; tuy nhiên, các nhà phân phối có thể đã thêm điều này dưới dạng nội trang như một
hack tốc độ. Không sử dụng trong mã mới.

pwd [-LP]
In thư mục làm việc hiện tại. Nếu -L tùy chọn được sử dụng hoặc nếu vật lý
tùy chọn chưa được đặt (xem định lệnh bên dưới), đường dẫn logic được in (tức là
con đường được sử dụng để cd vào thư mục hiện tại). Nếu -P tùy chọn (đường dẫn vật lý) được sử dụng
hoặc nếu vật lý tùy chọn được đặt, đường dẫn được xác định từ hệ thống tệp (bởi
sau các thư mục '..' đến thư mục gốc) được in.

đọc [-A | -a] [-d x] [-N z | -n z] [-p | -u[n]] [-t n] [-rs] [p hữu ích. Cảm ơn !]
Đọc một dòng đầu vào, tách đầu vào thành các trường bằng cách sử dụng tham số IFS (xem
Thay thế ở trên), và gán từng trường cho các tham số được chỉ định p. Nếu không
tham số được chỉ định, tham số REPLY được sử dụng để lưu trữ kết quả. Với
-A-a tùy chọn, chỉ không hoặc một tham số được chấp nhận. Nếu có nhiều
tham số hơn các trường, các tham số bổ sung được đặt thành chuỗi trống hoặc 0; nếu như
có nhiều trường hơn tham số, tham số cuối cùng được chỉ định phần còn lại
các trường (bao gồm các dấu tách từ).

Các tùy chọn như sau:

-A Lưu trữ kết quả vào tham số p (hoặc TRẢ LỜI) dưới dạng mảng từ.

-a Lưu trữ kết quả mà không cần tách từ thành tham số p (hoặc TRẢ LỜI) với tư cách là
mảng ký tự (ký tự rộng nếu chế độ utf8 tùy chọn được ban hành,
các octet khác); các điểm mã được mã hóa dưới dạng số thập phân theo mặc định.

-d x Sử dụng byte đầu tiên của x, NUL nếu trống, thay vì ký tự dòng mới ASCII
làm dấu phân cách dòng đầu vào.

-N z Thay vì đọc đến cuối dòng, hãy đọc chính xác z byte. Nếu EOF hoặc một
thời gian chờ xảy ra, một phần đọc được trả về với trạng thái thoát 1.

-n z Thay vì đọc đến cuối dòng, hãy đọc đến z byte nhưng trả về ngay sau khi
bất kỳ byte nào được đọc, ví dụ như từ thiết bị đầu cuối chậm hoặc nếu EOF hoặc thời gian chờ
xảy ra.

-p Đọc từ quy trình đồng hiện đang hoạt động, xem Đồng quy trình ở trên để biết chi tiết
về điều này

-u[n] Đọc từ trình mô tả tệp n (mặc định là 0, tức là đầu vào chuẩn). Các
đối số phải ngay sau ký tự tùy chọn.

-t n Đọc gián đoạn sau n giây (được chỉ định dưới dạng giá trị thập phân dương với một
phần phân số tùy chọn). Trạng thái thoát của đọc là 1 nếu thời gian chờ
đã xảy ra, nhưng các lần đọc một phần vẫn có thể được trả lại.

-r Thông thường, ký tự gạch chéo ngược ASCII thoát khỏi ý nghĩa đặc biệt của
sau ký tự và bị loại bỏ khỏi đầu vào; đọc không dừng lại khi
gặp phải một chuỗi dấu gạch chéo ngược-dòng mới và không lưu trữ dòng mới đó trong
kết quả. Tùy chọn này bật chế độ thô, trong đó dấu gạch chéo ngược không
xử lý.

-s Dòng đầu vào được lưu vào lịch sử.

Nếu đầu vào là một thiết bị đầu cuối, cả -N-n các tùy chọn đặt nó ở chế độ thô; họ
đọc toàn bộ tệp nếu -1 được chuyển dưới dạng z tranh luận.

Tham số đầu tiên có thể có một dấu chấm hỏi và một chuỗi được nối vào nó, trong đó
trường hợp chuỗi được sử dụng như một lời nhắc (được in thành lỗi chuẩn trước khi bất kỳ đầu vào nào
đọc) nếu đầu vào là tty(4) (ví dụ: đọc nfoo? 'số of ngu ngốc: ').

Nếu không có đầu vào nào được đọc hoặc xảy ra thời gian chờ, đọc thoát với trạng thái khác không.

Một bộ thủ thuật hữu ích khác: Nếu đọc được chạy trong một vòng lặp chẳng hạn như trong khi đọc foo; do ...
thực hiện thì khoảng trắng ở đầu sẽ bị xóa (IFS) và xử lý dấu gạch chéo ngược. Bạn
có thể muốn sử dụng trong khi IFS = đọc -r foo; do ... thực hiện cho I / O nguyên sơ. Tương tự,
khi sử dụng -a tùy chọn, sử dụng -r lựa chọn có thể thận trọng; cùng áp dụng
cho:

tìm thấy . -type f -print0 | & \
while IFS = read -d '' -pr tên tệp; làm
print -r - "tìm thấy <$ {filename #. /}>"
thực hiện

Vòng lặp bên trong sẽ được thực hiện trong một vỏ con và không thể thay đổi biến
được truyền nếu được thực thi trong một đường ống:

quầy bar | baz | trong khi đọc foo; làm ...; làm xong

Sử dụng đồng quy trình để thay thế:

quầy bar | baz | &
trong khi đọc -p foo; làm ...; làm xong
thực thi 3> & p; thực thi 3> & -

chỉ đọc [-p] [tham số [=giá trị] hữu ích. Cảm ơn !]
Đặt thuộc tính chỉ đọc của các tham số được đặt tên. Nếu các giá trị được đưa ra,
các tham số được đặt thành chúng trước khi đặt thuộc tính. Sau khi một tham số được thực hiện
ở chế độ chỉ đọc, nó không thể không được đặt và không thể thay đổi giá trị của nó.

Nếu không có tham số nào được chỉ định, tên của tất cả các tham số có chỉ đọc
thuộc tính được in một thuộc tính trên mỗi dòng, trừ khi -p tùy chọn được sử dụng, trong trường hợp đó
chỉ đọc các lệnh xác định tất cả các tham số chỉ đọc, bao gồm cả giá trị của chúng, là
đã in.

đường dẫn thực [--] tên
In tên đường dẫn tuyệt đối đã phân giải tương ứng với tên. Nếu tên kết thúc bằng một
gạch chéo ('/'), nó cũng được kiểm tra sự tồn tại và liệu nó có phải là một thư mục hay không;
nếu không thì, đường dẫn thực trả về 0 nếu tên đường dẫn tồn tại hoặc có thể được tạo
ngay lập tức, tức là tất cả trừ thành phần cuối cùng tồn tại và là các thư mục.

đổi tên [--] từ đến
Đổi tên tệp từ đến đến. Cả hai phải là tên đường dẫn hoàn chỉnh và trên cùng một thiết bị.
Nội dung này dành cho các tình huống khẩn cấp, nơi / bin / mv trở nên không sử dụng được, và
gọi điện trực tiếp đổi tên(2).

trở lại [tình trạng]
Trả về từ một hàm hoặc . script, với trạng thái thoát tình trạng. Nếu không tình trạng được đưa ra,
trạng thái thoát của lệnh được thực thi cuối cùng được sử dụng. Nếu được sử dụng bên ngoài một chức năng
or . script, nó có tác dụng tương tự như ra. Lưu ý rằng Cảm ơn xử lý cả hồ sơ và
Tệp ENV dưới dạng . các tập lệnh, trong khi trình bao Korn ban đầu chỉ xử lý các cấu hình là .
tập lệnh.

định [+ -abCefhiklmnprsUuvXx] [+ -o tùy chọn] [+ -A tên] [--] [arg hữu ích. Cảm ơn !]
Sản phẩm định lệnh có thể được sử dụng để thiết lập (-) hoặc rõ ràng (+) tùy chọn shell, đặt vị trí
tham số hoặc đặt một tham số mảng. Các tùy chọn có thể được thay đổi bằng cách sử dụng + -o tùy chọn
cú pháp, ở đâu tùy chọn là tên dài của một tùy chọn hoặc sử dụng +-bức thư cú pháp,
Ở đâu bức thư là tên chữ cái duy nhất của tùy chọn (không phải tất cả các tùy chọn đều có một chữ cái
Tên). Bảng sau liệt kê cả các chữ cái tùy chọn (nếu chúng tồn tại) và tên dài
cùng với mô tả về chức năng của tùy chọn:

-A tên
Đặt các phần tử của tham số mảng tên đến arg hữu ích. Cảm ơn ! If -A Được sử dụng,
mảng được đặt lại (tức là làm trống) đầu tiên; nếu như +A được sử dụng, N phần tử đầu tiên được thiết lập
(với N là số đối số); phần còn lại được để nguyên.

Một cú pháp thay thế cho lệnh định -A foo -- a b c tương thích với
GNU bash và cũng được hỗ trợ bởi AT&T UNIX ksh93 là: foo = (a b C); foo + = (d e)

-a | -o tất cả xuất khẩu
Tất cả các tham số mới được tạo bằng thuộc tính export.

-b | -o thông báo
In các tin nhắn thông báo lệnh in không đồng bộ, thay vì chỉ trước
lời nhắc. Chỉ được sử dụng nếu điều khiển công việc được bật (-m).

-C | -o người ăn bám
Ngăn> chuyển hướng ghi đè lên các tệp hiện có. Thay vào đó,> | phải được sử dụng
để buộc ghi đè. Lưu ý rằng điều này không an toàn khi sử dụng để tạo
tệp tạm thời hoặc tệp khóa do TOCTOU trong một lần kiểm tra cho phép một tệp chuyển hướng
đầu ra / dev / null hoặc các tệp thiết bị khác ngay cả trong người ăn bám chế độ.

-e | -o sai lầm
Thoát (sau khi thực hiện bẫy ERR) ngay khi có lỗi hoặc lệnh
không thành công (nghĩa là thoát với trạng thái khác không). Điều này không áp dụng cho các lệnh
có trạng thái thoát được kiểm tra rõ ràng bởi một cấu trúc shell chẳng hạn như if, cho đến khi,
trong khi, hoặc là ! các câu lệnh. Vì && hoặc ||, chỉ trạng thái của lệnh cuối cùng là
thử nghiệm.

-f | -o người lùn
Không mở rộng các mẫu tên tệp.

-h | -o theo dõi tất cả
Tạo bí danh được theo dõi cho tất cả các lệnh đã thực thi (xem bí danh bên trên). Đã bật
theo mặc định cho các trình bao không tương tác.

-i | -o tương tác
Vỏ là một trình bao tương tác. Tùy chọn này chỉ có thể được sử dụng khi shell
Được gọi. Xem ở trên để biết mô tả về ý nghĩa của điều này.

-k | -o từ khóa
Các phép gán tham số được nhận dạng ở bất kỳ đâu trong một lệnh.

-l | -o đăng nhập
Vỏ là một trình bao đăng nhập. Tùy chọn này chỉ có thể được sử dụng khi trình bao
được gọi. Xem ở trên để biết mô tả về ý nghĩa của điều này.

-m | -o màn hình
Bật kiểm soát công việc (mặc định cho trình bao tương tác).

-n | -o noexec
Không thực hiện bất kỳ lệnh nào. Hữu ích để kiểm tra cú pháp của các tập lệnh (bỏ qua
nếu tương tác).

-p | -o đặc quyền đặc lợi
Vỏ là một đặc quyền. Nó được đặt tự động nếu, khi trình bao
bắt đầu, UID hoặc GID thực không khớp với UID (EUID) hoặc GID hiệu quả
(EGID), tương ứng. Xem ở trên để biết mô tả về ý nghĩa của điều này.

-r | -o hạn chế
Vỏ là một vỏ hạn chế. Tùy chọn này chỉ có thể được sử dụng khi trình bao
được gọi. Xem ở trên để biết mô tả về ý nghĩa của điều này.

-s | -o tiêu chuẩn
Nếu được sử dụng khi trình bao được gọi, các lệnh sẽ được đọc từ đầu vào chuẩn. Bộ
tự động nếu trình bao được gọi mà không có đối số.

Thời Gian -s được sử dụng với định lệnh nó làm cho các đối số được chỉ định là
được sắp xếp trước khi gán chúng cho các tham số vị trí (hoặc cho mảng tên, Nếu
-A Được sử dụng).

-U | -o chế độ utf8
Bật hỗ trợ UTF-8 trong Emacs chỉnh sửa chế độ và xử lý chuỗi nội bộ
chức năng. Cờ này bị tắt theo mặc định, nhưng có thể được bật bằng cách đặt nó
trên dòng lệnh shell; được bật tự động cho các trình bao tương tác nếu
được yêu cầu tại thời điểm biên dịch, hệ thống của bạn hỗ trợ định vị(LC_CTYPE, "") Và
tùy chọn nl_langinfo(BỘ MÃ) hoặc môi trường LC_ALL, LC_CTYPE hoặc LANG
và ít nhất một trong số các biến này trả về thứ gì đó khớp với “UTF-8” hoặc
“Utf8” không phân biệt chữ hoa chữ thường; cho các cuộc gọi nội trang trực tiếp tùy thuộc vào
các biến môi trường nói trên; hoặc cho stdin hoặc script, nếu đầu vào
bắt đầu bằng Dấu đơn hàng UTF-8 Byte.

Trong tương lai gần, theo dõi ngôn ngữ sẽ được triển khai, có nghĩa là định - + Ư is
thay đổi bất cứ khi nào một trong các biến môi trường liên quan đến ngôn ngữ POSIX thay đổi.

-u | -o danh từ
Tham chiếu đến một tham số chưa đặt, ngoài “$ @” hoặc “$ *”, được coi là
lỗi, trừ khi một trong các bổ ngữ '-', '+' hoặc '=' được sử dụng.

-v | -o dài dòng
Ghi đầu vào shell thành lỗi chuẩn khi nó được đọc.

-X | -o người đánh dấu
Đánh dấu các thư mục bằng dấu '/' trong quá trình tạo tên tệp.

-x | -o xtrace
In cây lệnh khi chúng được thực thi, đứng trước giá trị của PS4.

-o bgnice
Các công việc nền được chạy với mức độ ưu tiên thấp hơn.

-o nẹpexpand
Bật mở rộng dấu ngoặc nhọn (hay còn gọi là sự thay thế). Điều này được kích hoạt theo mặc định. Nếu như
bị vô hiệu hóa, mở rộng dấu ngã sau dấu bằng bị vô hiệu hóa như một hiệu ứng phụ.

-o emacs
Bật chỉnh sửa dòng lệnh giống như emacs của BRL (chỉ các trình bao tương tác); Thấy chưa Emacs
chỉnh sửa chế độ.

-o gmac
Bật chỉnh sửa dòng lệnh giống gmacs (chỉ các trình bao tương tác). Hiện tại
giống với chỉnh sửa emacs ngoại trừ các ký tự chuyển vị (^ T) hoạt động nhẹ
khác nhau

-o làm ngơ
Trình bao sẽ không (dễ dàng) thoát ra khi phần cuối của tệp được đọc; ra phải được sử dụng.
Để tránh các vòng lặp vô hạn, trình bao sẽ thoát ra nếu EOF được đọc 13 lần liên tiếp.

-o kế thừa-xtrace
Không đặt lại -o xtrace khi nhập các chức năng. Điều này được kích hoạt theo mặc định.

-o không có gì
Không giết các công việc đang chạy bằng tín hiệu SIGHUP khi thoát ra khỏi trình bao đăng nhập.
Hiện được đặt theo mặc định, nhưng điều này có thể thay đổi trong tương lai để tương thích
với AT&T UNIX ksh, không có tùy chọn này, nhưng gửi SIGHUP
tín hiệu.

-o Không có nhật ký
Không ảnh hưởng gì. Trong trình bao Korn ban đầu, điều này ngăn các định nghĩa hàm khỏi
được lưu trữ trong tệp lịch sử.

-o vật lý
Gây ra cdpwd các lệnh để sử dụng “vật lý” (tức là của hệ thống tệp) '..'
thư mục thay vì thư mục "logic" (nghĩa là trình bao xử lý '..', mà
cho phép người dùng không biết đến các liên kết tượng trưng đến các thư mục). Xóa bởi
vỡ nợ. Lưu ý rằng cài đặt tùy chọn này không ảnh hưởng đến giá trị hiện tại của
Thông số PWD; chỉ cd lệnh thay đổi PWD. Xem cdpwd lệnh
ở trên để biết thêm chi tiết.

-o cái ống nước
Làm cho trạng thái thoát của một đường ống (trước khi bổ sung một cách hợp lý)
mức sai số khác XNUMX ngoài cùng bên phải hoặc bằng XNUMX nếu tất cả các lệnh thoát ra bằng XNUMX.

-o posix
Cư xử gần hơn với các tiêu chuẩn (xem POSIX chế độ để biết chi tiết). Tự động
được kích hoạt nếu tên cơ sở của lệnh gọi trình bao bắt đầu bằng “sh” và điều này
tính năng tự động phát hiện được biên dịch trong (không phải trong MirBSD). Như một tác dụng phụ, thiết lập
lá cờ này tắt nẹpexpand chế độ này có thể được bật lại theo cách thủ công và
sh (trừ khi cả hai được bật cùng một lúc).

-o sh
Kích hoạt tính năng / Bin / sh (k bùn) chế độ (xem SH chế độ). Tự động bật nếu
tên cơ sở của lệnh gọi trình bao bắt đầu bằng “sh” và tính năng tự động phát hiện này
được biên dịch trong (không phải trong MirBSD). Như một tác dụng phụ, cài đặt cờ này sẽ tắt
nẹpexpand chế độ này có thể được bật lại theo cách thủ công và posix chế độ (trừ khi
cả hai đều được kích hoạt cùng một lúc).

-o vi
Kích hoạt tính năng vi(1) chỉnh sửa dòng lệnh giống như (chỉ trình bao tương tác). Nhìn thấy Vi
chỉnh sửa chế độ để biết tài liệu và các giới hạn.

-o vi-esccomplete
Trong chỉnh sửa dòng lệnh vi, hãy hoàn thành lệnh và tên tệp khi thoát (^ [)
được nhập ở chế độ lệnh.

-o vi-tabhoàn thành
Trong chỉnh sửa dòng lệnh vi, hãy hoàn thành lệnh và tên tệp khi tab (^ I) là
đã nhập ở chế độ chèn. Đây là mặc định.

-o viraw
Không ảnh hưởng gì. Trong vỏ Korn ban đầu, trừ khi viraw đã được thiết lập, lệnh vi-
chế độ dòng sẽ cho phép tty(4) trình điều khiển thực hiện công việc cho đến khi nhập ESC (^ [).
Cảm ơn luôn ở chế độ viraw.

Các tùy chọn này cũng có thể được sử dụng khi gọi shell. Tập hợp hiện tại của
có thể tìm thấy các tùy chọn (với các tên chữ cái) trong tham số '$ -'. định -o với
không có tên tùy chọn nào liệt kê tất cả các tùy chọn và mỗi tùy chọn được bật hay tắt; định +o sẽ
in tên dài của tất cả các tùy chọn hiện có. Trong một phiên bản tương lai, định
+o sẽ hoạt động tuân thủ POSIX và các lệnh in để khôi phục các tùy chọn hiện tại
thay thế.

Các đối số còn lại, nếu có, là các tham số vị trí và được gán, theo thứ tự,
các tham số vị trí (tức là $ 1, $ 2, v.v.). Nếu các tùy chọn kết thúc bằng '-' và ở đó
không còn đối số nào, tất cả các tham số vị trí đều bị xóa. Nếu không có tùy chọn hoặc
các đối số được đưa ra, giá trị của tất cả các tên được in. Đối với lịch sử không xác định
lý do, một tùy chọn '-' đơn độc được xử lý đặc biệt - nó xóa cả hai -v-x
tùy chọn.

thay đổi [con số]
Các tham số vị trí con số+ 1, con số+2, v.v. được đổi tên thành '1', '2', v.v.
con số mặc định là 1.

ngủ giây
Tạm dừng thực thi trong thời gian tối thiểu giây được chỉ định là giá trị thập phân dương
với một phần phân số tùy chọn. Việc phân phối tín hiệu có thể tiếp tục thực hiện sớm hơn.

nguồn hồ sơ [arg hữu ích. Cảm ơn !]
Như . (“Dấu chấm”), ngoại trừ việc thư mục làm việc hiện tại được thêm vào tìm kiếm
đường dẫn (GNU bash gia hạn).

Đình chỉ
Dừng trình bao như thể nó đã nhận được ký tự tạm ngưng từ thiết bị đầu cuối. Nó là
không thể tạm ngừng trình bao đăng nhập trừ khi quy trình mẹ là thành viên của
cùng một phiên đầu cuối nhưng là thành viên của một nhóm quy trình khác. Như một vị tướng
quy tắc, nếu trình bao được bắt đầu bởi một trình bao khác hoặc thông qua su(1), nó có thể bị đình chỉ.

thử nghiệm biểu hiện
[ biểu hiện ]
thử nghiệm đánh giá biểu hiện và trả về trạng thái 1 nếu đúng, XNUMX nếu sai hoặc lớn hơn
hơn 1 nếu có lỗi. Nó thường được sử dụng như lệnh điều kiện của if
trong khi các câu lệnh. Các liên kết tượng trưng được theo sau cho tất cả hồ sơ biểu thức ngoại trừ -h
-L.

Các biểu thức cơ bản sau có sẵn:

-a hồ sơ hồ sơ tồn tại.

-b hồ sơ hồ sơ là một thiết bị đặc biệt khối.

-c hồ sơ hồ sơ là một thiết bị đặc biệt của ký tự.

-d hồ sơ hồ sơ là một thư mục.

-e hồ sơ hồ sơ tồn tại.

-f hồ sơ hồ sơ là một tệp thông thường.

-G hồ sơ hồ sơnhóm của là ID nhóm hiệu quả của shell.

-g hồ sơ hồ sơChế độ của có đặt bit setgid.

-H hồ sơ hồ sơ là một thư mục phụ thuộc vào ngữ cảnh (chỉ hữu ích trên HP-UX).

-h hồ sơ hồ sơ là một liên kết tượng trưng.

-k hồ sơ hồ sơchế độ của có dính(8) bộ bit.

-L hồ sơ hồ sơ là một liên kết tượng trưng.

-O hồ sơ hồ sơchủ sở hữu là ID người dùng hiệu quả của shell.

-o tùy chọn Shell tùy chọn được thiết lập (xem định lệnh trên cho danh sách
tùy chọn). Là một tiện ích mở rộng không chuẩn, nếu tùy chọn bắt đầu bằng
a '!', bài kiểm tra bị phủ định; kiểm tra luôn luôn thất bại nếu tùy chọn
không tồn tại (vì vậy [-o foo -o -o! foo] trả về true nếu và chỉ
nếu tùy chọn foo tồn tại). Điều tương tự cũng có thể đạt được với [-o? Foo]
như trong AT&T UNIX ksh93. tùy chọn cũng có thể là lá cờ ngắn do
hoặc '-' hoặc '+' (không có phủ định logic), ví dụ: '-x' hoặc '+ x'
thay vì 'xtrace'.

-p hồ sơ hồ sơ là một đường ống được đặt tên (FIFO).

-r hồ sơ hồ sơ tồn tại và có thể đọc được.

-S hồ sơ hồ sơ là một unix(4) - ổ cắm tên miền.

-s hồ sơ hồ sơ không có sản phẩm nào.

-t fd Bộ mô tả tệp fd là một tty(4) thiết bị.

-u hồ sơ hồ sơChế độ của có bit setuid được thiết lập.

-w hồ sơ hồ sơ tồn tại và có thể ghi.

-x hồ sơ hồ sơ tồn tại và có thể thực thi được.

tệp1 -nt tệp2 tệp1 mới hơn tệp2 or tệp1 tồn tại và tệp2 không làm.

tệp1 -tốt tệp2 tệp1 nó cũ hơn tệp2 or tệp2 tồn tại và tệp1 không làm.

tệp1 -nếu tệp2 tệp1 là cùng một tệp với tệp2.

chuỗi chuỗi có độ dài khác XNUMX.

-n chuỗi chuỗi không có sản phẩm nào.

-z chuỗi chuỗi trống rỗng.

chuỗi = chuỗi Các chuỗi bằng nhau.

chuỗi == chuỗi Các chuỗi bằng nhau.

chuỗi > chuỗi Toán hạng chuỗi đầu tiên lớn hơn toán hạng chuỗi thứ hai.

chuỗi < chuỗi Toán hạng chuỗi đầu tiên nhỏ hơn toán hạng chuỗi thứ hai.

chuỗi != chuỗi Các chuỗi không bằng nhau.

con số -eq con số Các số so sánh bằng nhau.

con số - Là con số Các số so sánh không bằng nhau.

con số -ge con số Các số so sánh lớn hơn hoặc bằng nhau.

con số -gt con số Các số so sánh lớn hơn.

con số -NS con số Các số so sánh nhỏ hơn hoặc bằng nhau.

con số -lt con số Các số so sánh nhỏ hơn.

Các biểu thức cơ bản ở trên, trong đó các toán tử một ngôi được ưu tiên hơn nhị phân
các toán tử, có thể được kết hợp với các toán tử sau (được liệt kê theo thứ tự tăng dần
ưu tiên):

expr -o expr Hợp lý HOẶC.
expr -a expr Hợp lý AND.
! expr Không logic.
(expr) Phân nhóm.

Lưu ý rằng một số thực sự có thể là một biểu thức số học, chẳng hạn như toán học
thuật ngữ hoặc tên của một biến số nguyên:

x = 1; ["x" -eq 1] đánh giá là true

Lưu ý rằng một số quy tắc đặc biệt được áp dụng (với sự hỗ trợ của POSIX) nếu số lượng
đối số với thử nghiệm hoặc bên trong dấu ngoặc [ hữu ích. Cảm ơn ! ] nhỏ hơn năm: nếu dẫn đầu '!'
các đối số có thể bị loại bỏ sao cho chỉ còn lại một đến ba đối số, khi đó
so sánh hạ thấp được thực hiện; (nhờ XSI) dấu ngoặc đơn \( hữu ích. Cảm ơn ! \) thấp hơn bốn và
các dạng ba đối số đến các dạng hai đối số và một đối số, tương ứng; ba đối số
các biểu mẫu cuối cùng thích các phép toán nhị phân, theo sau là phủ định và dấu ngoặc đơn
hạ thấp; dạng hai và bốn đối số thích phủ định theo sau bởi dấu ngoặc đơn; các
dạng một đối số luôn ngụ ý -n.

Chú thích: Một lỗi phổ biến là sử dụng “if [$ foo = bar]” mà không thành công nếu tham số “foo”
là NULL hoặc không được đặt, nếu nó có dấu cách nhúng (tức là các bộ tám IFS) hoặc nếu nó là một ngôi
toán tử như '!' hoặc là '-n'. Thay vào đó, hãy sử dụng các bài kiểm tra như “if [x" $ foo "= x" bar "]" hoặc
toán tử dấu ngoặc kép “if [[$ foo = bar]]” hoặc, để tránh khớp mẫu (xem [[
ở trên): “if [[$ foo =" $ bar "]]”

Sản phẩm [[ hữu ích. Cảm ơn ! ]] cấu trúc không chỉ an toàn hơn khi sử dụng mà còn nhanh hơn.

thời gian [-p] [đường ống dẫn]
Nếu một đường ống dẫn được đưa ra, thời gian được sử dụng để thực hiện đường ống được báo cáo. Nếu không
đường ống dẫn được cung cấp, sau đó người dùng và thời gian hệ thống được sử dụng bởi chính trình bao, và tất cả
các lệnh nó đã chạy kể từ khi nó được khởi động, được báo cáo. Thời gian được báo cáo là
thời gian thực (thời gian đã trôi qua từ đầu đến cuối), thời gian CPU của người dùng (thời gian dành cho
đang chạy ở chế độ người dùng), và thời gian CPU hệ thống (thời gian chạy ở chế độ nhân).
Thời gian được báo cáo với lỗi tiêu chuẩn; định dạng của đầu ra là:

0m0.00s thực 0m0.00s người dùng 0m0.00s hệ thống

Nếu -p tùy chọn được đưa ra là đầu ra dài hơn một chút:

thực 0.00
người dùng 0.00
sys 0.00

Đó là một lỗi khi chỉ định -p tùy chọn trừ khi đường ống dẫn là một lệnh đơn giản.

Việc chuyển hướng đơn giản của lỗi tiêu chuẩn không ảnh hưởng đến kết quả đầu ra của thời gian chỉ huy:

$ time sleep 1 2> afile
$ {thời gian ngủ 1; } 2> afile

Thời gian cho lệnh đầu tiên không chuyển đến “afile”, nhưng thời gian của lệnh thứ hai thì có.

thời gian In người dùng tích lũy và thời gian hệ thống được sử dụng bởi shell và bởi các quy trình
rằng shell bắt đầu đã thoát. Định dạng của đầu ra là:

0 phút0.00 giây 0 phút0.00 giây
0 phút0.00 giây 0 phút0.00 giây

bẫy n [tín hiệu hữu ích. Cảm ơn !]
Nếu toán hạng đầu tiên là một số nguyên không dấu thập phân, điều này sẽ đặt lại tất cả các tín hiệu được chỉ định
thành hành động mặc định, tức là giống như gọi bẫy với một dấu trừ ('-') là
xử lý, theo sau là các đối số (n [tín hiệu hữu ích. Cảm ơn !]), tất cả đều được coi là
tín hiệu.

bẫy [xử lý tín hiệu hữu ích. Cảm ơn !]
Đặt một trình xử lý bẫy sẽ được thực thi khi có bất kỳ lệnh nào được chỉ định tín hiệus là
nhận. xử lý là một chuỗi rỗng, cho biết các tín hiệu sẽ
bị bỏ qua, một dấu trừ ('-'), cho biết rằng hành động mặc định sẽ được thực hiện cho
các tín hiệu (xem tín hiệu(3)), hoặc một chuỗi chứa các lệnh shell sẽ được thực thi tại
cơ hội đầu tiên (tức là khi lệnh hiện tại hoàn thành hoặc trước khi in
lời nhắc PS1 tiếp theo) sau khi nhận được một trong các tín hiệu. tín hiệu là tên của một
tín hiệu (ví dụ: PIPE hoặc ALRM) hoặc số lượng tín hiệu (xem giết -l lệnh
ở trên).

Có hai tín hiệu đặc biệt: EXIT (còn được gọi là 0), được thực thi khi
shell sắp thoát và ERR, được thực thi sau khi xảy ra lỗi; một lỗi là
thứ gì đó sẽ khiến trình bao thoát ra nếu định -e or định -o sai lầm tùy chọn
đã được thiết lập. Các trình xử lý EXIT được thực thi trong môi trường của lần thực thi cuối cùng
chỉ huy.

Lưu ý rằng, đối với các trình bao không tương tác, không thể thay đổi trình xử lý bẫy đối với các tín hiệu
đã bị bỏ qua khi trình bao bắt đầu.

Không có đối số, trạng thái hiện tại của các bẫy đã được đặt kể từ trình bao
bắt đầu được hiển thị dưới dạng một loạt bẫy các lệnh. Lưu ý rằng đầu ra của bẫy không thể
được đưa đến một quá trình khác một cách hữu ích (một hiện vật của thực tế là các bẫy đã được xóa
khi các quy trình con được tạo).

Bẫy GỬI LỖI của vỏ Korn ban đầu và việc xử lý các bẫy ERR và EXIT trong
các chức năng chưa được thực hiện.

đúng Một lệnh thoát với giá trị bằng không.

toàn cầu [[+ -alpnrtUux] [-L[n]] [-R[n]] [-Z[n]] [-i[n]] | -f [-tux]] [tên [=giá trị] hữu ích. Cảm ơn !]
bộ sắp chữ [[+ -alpnrtUux] [-LRZ[n]] [-i[n]] | -f [-tux]] [tên [=giá trị] hữu ích. Cảm ơn !]
Hiển thị hoặc thiết lập các thuộc tính tham số. Với không tên đối số, thuộc tính tham số
Được hiển thị; nếu không có tùy chọn nào được sử dụng, các thuộc tính hiện tại của tất cả các tham số là
được in dưới dạng bộ sắp chữ các lệnh; nếu một tùy chọn được đưa ra (hoặc '-' không có chữ cái tùy chọn),
tất cả các tham số và giá trị của chúng với các thuộc tính được chỉ định được in ra; nếu tùy chọn
được giới thiệu bằng dấu '+', các giá trị tham số không được in.

If tên các đối số được đưa ra, các thuộc tính của các tham số được đặt tên được đặt (-) hoặc
xóa (+). Giá trị cho các tham số có thể được chỉ định tùy ý. Vì tên[*], các
thay đổi ảnh hưởng đến toàn bộ mảng và không có giá trị nào có thể được chỉ định.

If bộ sắp chữ được sử dụng bên trong một hàm, bất kỳ tham số nào được chỉ định đều được bản địa hóa. Điều này
không được thực hiện bởi giống hệt nhau toàn cầu. Chú thích: Điều này có nghĩa rằng Cảm ơn 's toàn cầu
lệnh là không tương đương với các ngôn ngữ lập trình khác 'vì nó không cho phép
hàm được gọi từ một hàm khác để truy cập một tham số ở phạm vi toàn cầu thực sự,
nhưng chỉ ngăn chặn việc đưa một cái đã truy cập vào phạm vi cục bộ.

Thời Gian -f Được sử dụng, bộ sắp chữ hoạt động dựa trên các thuộc tính của chức năng. Như với
tham số, nếu không tên các đối số được đưa ra, các hàm được liệt kê với các giá trị của chúng
(tức là định nghĩa) trừ khi các tùy chọn được giới thiệu bằng '+', trong trường hợp đó chỉ
tên chức năng được báo cáo.

-a Thuộc tính mảng được lập chỉ mục.

-f Chế độ chức năng. Hiển thị hoặc đặt các chức năng và thuộc tính của chúng, thay vì
thông số.

-i[n] Thuộc tính số nguyên. n chỉ định cơ sở để sử dụng khi hiển thị số nguyên
(nếu không được chỉ định, cơ sở đã cho trong phép gán đầu tiên sẽ được sử dụng).
Các tham số có thuộc tính này có thể được gán các giá trị chứa số học
biểu thức.

-L[n] Thuộc tính justify bên trái. n chỉ định chiều rộng trường. Nếu như n không được chỉ định,
chiều rộng hiện tại của một tham số (hoặc chiều rộng của giá trị được chỉ định đầu tiên của nó)
Được sử dụng. Khoảng trắng ở đầu (và các số không, nếu được sử dụng với -Z tùy chọn) là
tước. Nếu cần, các giá trị sẽ được cắt bớt hoặc được đệm khoảng trắng để vừa
chiều rộng trường.

-l Thuộc tính chữ thường. Tất cả các ký tự viết hoa trong các giá trị được chuyển đổi thành
chữ thường. (Trong trình bao Korn ban đầu, tham số này có nghĩa là "số nguyên dài"
khi được sử dụng với -i Tùy chọn.)

-n Tạo một biến bị ràng buộc (tham chiếu tên): bất kỳ quyền truy cập nào vào biến tên
sẽ truy cập vào biến giá trị trong phạm vi hiện tại (điều này khác với
AT&T UNIX ksh93!) thay thế. Cũng khác với AT&T UNIX ksh93
giá trị được đánh giá một cách lười biếng vào thời điểm đó tên được truy cập. Điều này có thể được sử dụng bởi
các hàm để truy cập các biến có tên được truyền dưới dạng tham số, thay vào đó
của việc sử dụng đánh giá.

-p In xong bộ sắp chữ các lệnh có thể được sử dụng để tạo lại các thuộc tính
và giá trị của các tham số.

-R[n] Thuộc tính justify bên phải. n chỉ định chiều rộng trường. Nếu như n không phải là
đã chỉ định, chiều rộng hiện tại của một tham số (hoặc chiều rộng của tham số đầu tiên
giá trị được gán) được sử dụng. Khoảng trắng ở cuối bị loại bỏ. Nếu cần,
các giá trị bị loại bỏ các ký tự hàng đầu hoặc được đệm khoảng trắng để làm cho chúng
phù hợp với chiều rộng trường.

-r Thuộc tính chỉ đọc. Các thông số có thuộc tính này có thể không được gán cho
hoặc bỏ đặt. Sau khi thuộc tính này được đặt, bạn không thể tắt thuộc tính này.

-t Thuộc tính thẻ. Không có ý nghĩa đối với vỏ; được cung cấp để sử dụng ứng dụng.

Đối với các chức năng, -t là thuộc tính dấu vết. Khi các chức năng với dấu vết
thuộc tính được thực thi, xtrace (-x) tùy chọn shell tạm thời bị biến
vào.

-U Thuộc tính số nguyên không dấu. Các số nguyên được in dưới dạng giá trị không dấu (kết hợp
với -i lựa chọn). Tùy chọn này không có trong trình bao Korn ban đầu.

-u Thuộc tính chữ hoa. Tất cả các ký tự viết thường trong các giá trị được chuyển đổi thành
chữ hoa. (Trong trình bao Korn ban đầu, tham số này có nghĩa là “không dấu
số nguyên ”khi được sử dụng với -i tùy chọn có nghĩa là các chữ cái viết hoa sẽ
không bao giờ được sử dụng cho các cơ sở lớn hơn 10. Xem -U Tùy chọn.)

Đối với các chức năng, -u là thuộc tính không xác định. Nhìn thấy Chức năng ở trên cho
ý nghĩa của điều này.

-x Thuộc tính xuất. Các tham số (hoặc chức năng) được đặt trong môi trường của
bất kỳ lệnh nào được thực hiện. Các chức năng đã xuất chưa được thực hiện.

-Z[n] Thuộc tính điền số XNUMX. Nếu không kết hợp với -L, điều này giống với -R, ngoại trừ
zero padding được sử dụng thay vì space padding. Đối với số nguyên, số
thay vì đế được đệm.

Nếu bất kỳ -i, -L, -l, -R, -U, -u, hoặc là -Z các tùy chọn được thay đổi, tất cả các tùy chọn khác từ điều này
tập hợp bị xóa, trừ khi chúng cũng được đưa ra trên cùng một dòng lệnh.

giới hạn [-aBCcdefHilMmnOPpqrSsTtVvw] [giá trị]
Hiển thị hoặc đặt giới hạn quy trình. Nếu không có tùy chọn nào được sử dụng, giới hạn kích thước tệp (-f) là
giả định. giá trị, nếu được chỉ định, có thể là một biểu thức số học hoặc từ
"vô hạn". Các giới hạn ảnh hưởng đến shell và bất kỳ quá trình nào được tạo bởi shell
sau khi một giới hạn được áp đặt. Lưu ý rằng một số hệ thống có thể không cho phép giới hạn
tăng khi chúng được thiết lập. Cũng lưu ý rằng các loại giới hạn có sẵn là hệ thống
phụ thuộc - một số hệ thống chỉ có -f giới hạn.

-a Hiển thị tất cả các giới hạn; trừ phi -H được sử dụng, các giới hạn mềm được hiển thị.

-B n Đặt kích thước bộ đệm ổ cắm thành n kibibyte.

-C n Đặt số lượng chuỗi đã lưu trong bộ nhớ cache thành n.

-c n Áp dụng giới hạn kích thước là n khối trên kích thước của bãi thải lõi.

-d n Áp dụng giới hạn kích thước là n kibibyte trên kích thước của vùng dữ liệu.

-e n Đặt độ đẹp tối đa thành n.

-f n Áp dụng giới hạn kích thước là n khối trên các tệp được viết bởi shell và con của nó
quy trình (có thể đọc các tệp có kích thước bất kỳ).

-H Chỉ đặt giới hạn cứng (mặc định là đặt cả giới hạn cứng và mềm).

-i n Đặt số lượng tín hiệu đang chờ xử lý thành n.

-l n Áp đặt giới hạn là n kibibyte trên số lượng bộ nhớ vật lý bị khóa (có dây).

-M n Đặt bộ nhớ bị khóa AIO thành n kibibyte.

-m n Áp đặt giới hạn là n kibibyte trên dung lượng bộ nhớ vật lý được sử dụng.

-n n Áp đặt giới hạn là n các bộ mô tả tệp có thể được mở cùng một lúc.

-O n Đặt số lượng hoạt động AIO thành n.

-P n Giới hạn số lượng chủ đề trên mỗi quy trình thành n.

-p n Áp đặt giới hạn là n các quy trình mà người dùng có thể chạy bất kỳ lúc nào.

-q n Giới hạn kích thước của hàng đợi tin nhắn POSIX đến n byte.

-r n Đặt mức ưu tiên thời gian thực tối đa thành n.

-S Chỉ đặt giới hạn mềm (mặc định là đặt cả giới hạn cứng và mềm).

-s n Áp dụng giới hạn kích thước là n kibibyte trên kích thước của vùng ngăn xếp.

-T n Áp đặt giới hạn thời gian là n giây thực được sử dụng bởi mỗi quá trình.

-t n Áp đặt giới hạn thời gian là n Số giây CPU dành cho chế độ người dùng sẽ được sử dụng bởi mỗi
quá trình.

-V n Đặt số lượng màn hình vnode trên Haiku thành n.

-v n Áp đặt giới hạn là n kibibyte trên số lượng bộ nhớ ảo (không gian địa chỉ)
đã sử dụng.

-w n Áp đặt giới hạn là n kibibyte về dung lượng hoán đổi được sử dụng.

Xa như giới hạn có liên quan, một khối là 512 byte.

cái ô [-S] [mặt nạ]
Hiển thị hoặc đặt mặt nạ tạo quyền đối với tệp hoặc umask (xem cái ô(2)). Nếu -S
tùy chọn được sử dụng, mặt nạ được hiển thị hoặc đặt là tượng trưng; nếu không, nó là một bát phân
con số.

Mặt nạ tượng trưng giống như những mặt nạ được sử dụng bởi chmod(1). Khi được sử dụng, chúng mô tả những gì
quyền có thể được cung cấp (trái ngược với mặt nạ bát phân trong đó một bit được đặt có nghĩa là
bit tương ứng sẽ được xóa). Ví dụ: “ug = rwx, o =” đặt mặt nạ để
"những người khác" sẽ không thể đọc, ghi hoặc thực thi các tệp và tương đương
(trên hầu hết các hệ thống) sang mặt nạ bát phân “007”.

Unalias [-adt] [tên hữu ích. Cảm ơn !]
Bí danh cho các tên đã cho sẽ bị xóa. Nếu -a tùy chọn được sử dụng, tất cả các bí danh
được loại bỏ. Nếu -t or -d các tùy chọn được sử dụng, các hoạt động được chỉ định được thực hiện
trên các bí danh được theo dõi hoặc thư mục, tương ứng.

không đặt [-fv] tham số hữu ích. Cảm ơn !
Bỏ đặt các tham số đã đặt tên (-v, mặc định) hoặc các hàm (-f). Với tham số[*],
các thuộc tính được giữ lại, chỉ các giá trị chưa được đặt.

Trạng thái thoát là khác XNUMX nếu bất kỳ tham số nào có thuộc tính chỉ đọc
đặt, không thì ngược lại.

chờ đợi [việc làm hữu ích. Cảm ơn !]
Chờ (các) công việc được chỉ định kết thúc. Trạng thái thoát của chờ đợi đó là cái cuối cùng
công việc cụ thể; nếu công việc cuối cùng bị kết thúc bởi một tín hiệu, trạng thái thoát là 128 +
số lượng tín hiệu (xem giết -l trạng thái thoát bên trên); nếu công việc được chỉ định cuối cùng không thể
được tìm thấy (vì nó chưa bao giờ tồn tại hoặc đã hoàn thành), trạng thái thoát của chờ đợi
là 127. Xem Việc làm điều khiển bên dưới cho định dạng của việc làm. chờ đợi sẽ trở lại nếu một tín hiệu
mà một cái bẫy đã được đặt sẽ được nhận hoặc nếu một tín hiệu SIGHUP, SIGINT hoặc SIGQUIT
Đã nhận.

Nếu không có công việc nào được chỉ định, chờ đợi đợi tất cả các công việc hiện đang chạy (nếu có) để
kết thúc và thoát ra với trạng thái không. Nếu tính năng giám sát công việc được bật, việc hoàn thành
trạng thái của công việc được in (đây không phải là trường hợp khi công việc được chỉ định rõ ràng).

thời gian [-pv] [tên hữu ích. Cảm ơn !]
Không có -v tùy chọn, nó giống như lệnh -v, ngoại trừ bí danh không được in
như lệnh bí danh. Với -v tùy chọn, nó giống hệt như lệnh -V. Trong
cả hai trường hợp, -p tùy chọn khác: đường dẫn tìm kiếm không bị ảnh hưởng trong thời gian, Nhưng
tìm kiếm bị hạn chế trong đường dẫn.

Việc làm điều khiển
Kiểm soát công việc đề cập đến khả năng của shell trong việc giám sát và kiểm soát các công việc là quy trình hoặc
các nhóm quy trình được tạo cho các lệnh hoặc đường ống. Ở mức tối thiểu, shell theo dõi
về trạng thái của các công việc nền (tức là không đồng bộ) hiện đang tồn tại; điều này
thông tin có thể được hiển thị bằng cách sử dụng việc làm các lệnh. Nếu kiểm soát công việc được bật hoàn toàn
(sử dụng định -m or định -o màn hình), đối với các trình bao tương tác, các quy trình của một công việc
được đặt trong nhóm quy trình của riêng họ. Có thể dừng các công việc nền trước bằng cách gõ lệnh tạm ngưng
ký tự từ đầu cuối (thông thường ^ Z), công việc có thể được khởi động lại ở nền trước hoặc
nền bằng cách sử dụng fgbg lệnh và trạng thái của thiết bị đầu cuối được lưu hoặc khôi phục
khi công việc nền trước bị dừng hoặc khởi động lại tương ứng.

Lưu ý rằng chỉ các lệnh tạo quy trình (ví dụ: lệnh không đồng bộ, vỏ con
có thể dừng các lệnh và lệnh không có sẵn, không phải chức năng); lệnh như đọc không thể
được.

Khi một công việc được tạo ra, nó sẽ được gán một số hiệu công việc. Đối với các trình bao tương tác, con số này là
được in bên trong “[..]”, theo sau là ID quy trình của các quy trình trong công việc khi
lệnh không đồng bộ được chạy. Một công việc có thể được giới thiệu trong bg, fg, việc làm, giếtchờ đợi
lệnh bằng ID quy trình của quy trình cuối cùng trong đường dẫn lệnh (như được lưu trữ trong
các $! ) hoặc bằng cách đặt trước số công việc bằng dấu phần trăm ('%'). Phần trăm khác
chuỗi cũng có thể được sử dụng để chỉ các công việc:

% + | %% | % Công việc đã dừng gần đây nhất hoặc, nếu không có công việc nào đã dừng, công việc cũ nhất
đang chạy việc.

% - Công việc sẽ là %+ công việc nếu sau này không tồn tại.

%n Công việc với số công việc n.

%?chuỗi Công việc với lệnh chứa chuỗi chuỗi (một lỗi xảy ra nếu
nhiều công việc được kết hợp).

%chuỗi Công việc với lệnh của nó bắt đầu bằng chuỗi chuỗi (một lỗi xảy ra nếu
nhiều công việc được kết hợp).

Khi một công việc thay đổi trạng thái (ví dụ: công việc nền kết thúc hoặc công việc nền trước bị dừng),
shell in thông tin trạng thái sau:

[con số] cờ tình trạng lệnh

ở đâu...

con số là số hiệu của công việc;

cờ là ký tự '+' hoặc '-' nếu công việc là %+ or %- công việc, tương ứng, hoặc không gian
nếu nó không phải là;

tình trạng cho biết trạng thái hiện tại của công việc và có thể là:

Làm xong [con số]
Công việc đã thoát. con số là trạng thái thoát của công việc bị bỏ qua
nếu trạng thái bằng không.

Đang chạy Công việc không dừng lại cũng không thoát (lưu ý rằng chạy không
nhất thiết có nghĩa là tiêu tốn thời gian của CPU - quá trình này có thể bị chặn
chờ đợi sự kiện nào đó).

Đã dừng [tín hiệu]
Công việc đã bị dừng lại theo chỉ định tín hiệu (nếu không có tín hiệu nào được đưa ra,
công việc đã bị dừng bởi SIGTSTP).

mô tả tín hiệu [“Lõi bị bán phá giá”]
Công việc bị chết bởi một tín hiệu (ví dụ như lỗi bộ nhớ, treo máy); sử dụng giết -l
để biết danh sách các mô tả tín hiệu. Thông báo "kết xuất lõi" cho biết
quá trình tạo một tệp cốt lõi.

lệnh là lệnh tạo ra tiến trình. Nếu có nhiều quy trình trong
công việc, mỗi quy trình sẽ có một dòng hiển thị lệnh và có thể là của nó tình trạng, Nếu
nó khác với trạng thái của quá trình trước đó.

Khi một nỗ lực được thực hiện để thoát khỏi trình bao trong khi có các công việc ở trạng thái dừng,
shell cảnh báo người dùng rằng có các công việc bị dừng và không thoát. Nếu một nỗ lực khác là
ngay lập tức được thực hiện để thoát khỏi trình bao, các công việc đã dừng được gửi một tín hiệu SIGHUP và trình bao
lối thoát hiểm. Tương tự, nếu không có gì tùy chọn không được đặt và có các công việc đang chạy khi một nỗ lực
được thực hiện để thoát khỏi trình bao đăng nhập, trình bao cảnh báo người dùng và không thoát. Nếu khác
nỗ lực ngay lập tức được thực hiện để thoát khỏi trình bao, các công việc đang chạy được gửi một tín hiệu SIGHUP và
vỏ thoát ra ngoài.

POSIX chế độ
Nhập định -o posix chế độ sẽ gây ra Cảm ơn để hoạt động tuân thủ POSIX nhiều hơn nữa ở những nơi
nơi các giá trị mặc định hoặc ý kiến ​​khác nhau. Lưu ý rằng Cảm ơn sẽ vẫn hoạt động với chưa ký
Số học 32-bit; sử dụng lksh nếu số học trên máy chủ Dài kiểu dữ liệu, hoàn chỉnh với ISO C
Hành vi không xác định, được yêu cầu; Tham khảo đến lksh(1) trang hướng dẫn sử dụng để biết chi tiết. Phần lớn khác
lịch sử, AT&T UNIX ksh-không tương thích hoặc sự khác biệt cố ý có thể được vô hiệu hóa bằng cách sử dụng
chế độ; đó là:

· GNU bash Chuyển hướng I / O &>hồ sơ không còn được hỗ trợ.

· Các bộ mô tả tệp được tạo bởi chuyển hướng I / O được kế thừa bởi các quy trình con.

· Các số có chữ số XNUMX đứng đầu được hiểu là số bát phân.

· Sản phẩm bỏ lỡ nội trang không diễn giải dấu gạch chéo ngược và chỉ hỗ trợ tùy chọn chính xác “-n".

· ... (danh sách chưa đầy đủ và có thể thay đổi đối với R53)

SH chế độ
Chế độ tương thích; nhằm mục đích sử dụng với các tập lệnh cũ mà không thể sửa chữa dễ dàng; các
những thay đổi như sau:

· GNU bash Chuyển hướng I / O &>hồ sơ không còn được hỗ trợ.

· Các bộ mô tả tệp được tạo bởi chuyển hướng I / O được kế thừa bởi các quy trình con.

· Sản phẩm bỏ lỡ nội trang không diễn giải dấu gạch chéo ngược và chỉ hỗ trợ tùy chọn chính xác “-n".

· ... (danh sách chưa đầy đủ và có thể thay đổi đối với R53)

Interactive đầu vào hàng chỉnh sửa
Shell hỗ trợ ba chế độ đọc các dòng lệnh từ một tty(4) trong một tương tác
phiên, được kiểm soát bởi emacs, gmacvi tùy chọn (tối đa một trong số này có thể được đặt tại
Một lần). Mặc định là emacs. Chế độ chỉnh sửa có thể được đặt rõ ràng bằng cách sử dụng định được xây dựng trong.
Nếu không có tùy chọn nào trong số này được bật, trình bao chỉ đọc các dòng bằng cách sử dụng bình thường tty(4)
tài xế. Nếu emacs or gmac tùy chọn được thiết lập, trình bao cho phép chỉnh sửa giống như emacs của
yêu cầu; tương tự, nếu vi tùy chọn được thiết lập, trình bao cho phép chỉnh sửa giống như vi của
yêu cầu. Các chế độ này được mô tả chi tiết trong các phần sau.

Trong các chế độ chỉnh sửa này, nếu một dòng dài hơn chiều rộng màn hình (xem CỘT
tham số), ký tự '>', '+' hoặc '<' được hiển thị trong cột cuối cùng cho biết rằng
có nhiều ký tự sau, trước và sau hoặc trước vị trí hiện tại,
tương ứng. Dòng được cuộn theo chiều ngang khi cần thiết.

Các dòng đã hoàn thành được đưa vào lịch sử, trừ khi chúng bắt đầu bằng bộ tám IFS hoặc IFS
khoảng trắng, hoặc giống với dòng trước đó.

Emacs chỉnh sửa chế độ
Khi emacs tùy chọn được đặt, chỉnh sửa dòng đầu vào tương tác được bật. Cảnh báo: Chế độ này
hơi khác so với chế độ emacs trong Korn shell gốc. Trong chế độ này, nhiều
các lệnh chỉnh sửa (thường được liên kết với một hoặc nhiều ký tự điều khiển) gây ra các hành động ngay lập tức
mà không cần đợi một dòng mới. Một số lệnh chỉnh sửa bị ràng buộc với điều khiển cụ thể
ký tự khi shell được gọi; những ràng buộc này có thể được thay đổi bằng cách sử dụng ràng buộc chỉ huy.

Sau đây là danh sách các lệnh chỉnh sửa có sẵn. Mỗi mô tả bắt đầu bằng
tên lệnh, có dấu hai chấm; một [n] (nếu lệnh có thể được bắt đầu bằng
đếm); và bất kỳ phím nào mà lệnh được ràng buộc theo mặc định, được viết bằng ký hiệu dấu mũ, ví dụ:
ký tự ASCII ESC được viết là ^ [. Các trình tự kiểm soát này không phân biệt chữ hoa chữ thường.
Tiền tố đếm cho một lệnh được nhập bằng cách sử dụng chuỗi ^ [n, Nơi n là một chuỗi gồm 1
hoặc nhiều chữ số. Trừ khi được chỉ định khác, nếu số bị bỏ qua, nó sẽ mặc định là 1.

Lưu ý rằng tên lệnh chỉnh sửa chỉ được sử dụng với ràng buộc yêu cầu. Hơn nữa, nhiều
các lệnh chỉnh sửa chỉ hữu ích trên các thiết bị đầu cuối có con trỏ hiển thị. Các ràng buộc mặc định
đã được chọn để giống với các ràng buộc khóa Emacs tương ứng. Của người dùng tty(4) ký tự
(ví dụ: ERASE) được ràng buộc với các sản phẩm thay thế hợp lý và ghi đè các ràng buộc mặc định.

hủy bỏ: ^ C, ^ G
Hủy bỏ lệnh hiện tại, làm trống bộ đệm dòng và đặt trạng thái thoát thành
bị gián đoạn.

tự động chèn: [n]
Đơn giản là làm cho ký tự xuất hiện dưới dạng đầu vào theo nghĩa đen. Hầu hết các nhân vật bình thường
bị ràng buộc với điều này.

back-char: [n] ^ B, ^ XD, ANSI-CurLeft, PC-CurLeft
Di chuyển con trỏ về phía sau n ký tự.

từ ngược: [n] ^ [b, ANSI-Ctrl-CurLeft, ANSI-Alt-CurLeft
Di chuyển con trỏ về đầu từ; từ bao gồm
ký tự chữ và số, dấu gạch dưới ('_') và ký tự đô la ('$').

đầu lịch sử: ^ [
Di chuyển đến đầu của lịch sử.

đầu dòng: ^ A, ANSI-Home, PC-Home
Di chuyển con trỏ đến đầu dòng nhập đã chỉnh sửa.

viết hoa từ: [n] ^ [C, ^ [c
Viết hoa ký tự đầu tiên trong ký tự tiếp theo n từ, để con trỏ ở cuối
của từ cuối cùng.

màn hình rõ ràng: ^ [^ L
In một trình tự có thể định cấu hình trong thời gian biên dịch để xóa màn hình và vị trí con trỏ,
vẽ lại toàn bộ lời nhắc và dòng nhập hiện đang được chỉnh sửa. Trình tự mặc định
hoạt động cho hầu hết các thiết bị đầu cuối tiêu chuẩn.

nhận xét: ^ [#
Nếu dòng hiện tại không bắt đầu bằng ký tự nhận xét, một ký tự sẽ được thêm vào
đầu dòng và dòng được nhập (như thể nhấn trả về);
nếu không, các ký tự nhận xét hiện có sẽ bị xóa và con trỏ được đặt tại
đầu dòng.

hoàn thành: ^ [^ [
Tự động hoàn thành nhiều như là duy nhất của tên lệnh hoặc tên tệp
chứa con trỏ. Nếu toàn bộ lệnh còn lại hoặc tên tệp là duy nhất,
khoảng trắng được in sau khi hoàn thành, trừ khi nó là tên thư mục trong trường hợp đó
'/' được thêm vào. Nếu không có lệnh hoặc tên tệp với từ một phần hiện tại
làm tiền tố của nó, ký tự chuông được xuất ra (thường gây ra tiếng bíp).

hoàn thành lệnh: ^ X ^ [
Tự động hoàn thành nhiều như là duy nhất của tên lệnh có một phần
từ lên đến con trỏ làm tiền tố của nó, như trong hoàn thành lệnh trên.

tệp hoàn chỉnh: ^ [^ X
Tự động hoàn thành nhiều như là duy nhất của tên tệp có một phần
từ lên đến con trỏ làm tiền tố của nó, như trong hoàn thành lệnh được mô tả ở trên.

danh sách đầy đủ: ^ I, ^ [=
Hoàn thành càng nhiều càng tốt từ hiện tại và liệt kê những từ có thể
hoàn thành cho nó. Nếu chỉ có thể hoàn thành một lần, hãy so khớp như trong hoàn thành
lệnh trên. Lưu ý rằng ^ I thường được tạo bởi phím TAB (bộ lập bảng).

delete-char-back: [n] XIN LỖI, ^ ?, ^ H
Xóa n ký tự trước con trỏ.

xóa-char-chuyển tiếp: [n] ANSI-Del, PC-Del
Xóa n ký tự sau con trỏ.

xóa-từ-lùi: [n] XONG, ^ [^ ?, ^ [^ H, ^ [h
Xóa n từ trước con trỏ.

xóa-từ-chuyển tiếp: [n] ^ [d
Xóa các ký tự sau con trỏ cho đến cuối n từ ngữ.

tiền sử: [n] ^ N, ^ XB, ANSI-CurDown, PC-CurDown
Cuộn bộ đệm lịch sử về phía trước n dòng (sau). Mỗi dòng đầu vào ban đầu
bắt đầu ngay sau mục nhập cuối cùng trong bộ đệm lịch sử, vì vậy quá khứ không phải là
hữu ích cho đến khi lịch sử tìm kiếm, lịch sử tìm kiếm or lịch sử đã
đã thực hiện.

chữ thường: [n] ^ [L, ^ [l
Hạ cái tiếp theo n từ ngữ.

chỉnh sửa dòng: [n] ^ Xe
Chỉnh sửa dòng n hoặc dòng hiện tại, nếu không được chỉ định, tương tác. Thực tế
lệnh được thực hiện là fc -e $ {VISUAL: - $ {EDITOR: -vi}} n.

cuối lịch sử: ^ [>
Di chuyển đến cuối lịch sử.

cuối dòng: ^ E, ANSI-End, PC-End
Di chuyển con trỏ đến cuối dòng nhập.

eot: ^ _
Hoạt động như một phần cuối của tệp; điều này rất hữu ích vì đầu vào chế độ chỉnh sửa tắt bình thường
chuẩn hóa đầu vào đầu cuối.

eot-hoặc-xóa: [n] ^ D
Diễn như thể eot nếu một mình trên một dòng; nếu không thì hoạt động như xóa-char-chuyển tiếp.

error: (không bị ràng buộc)
Lỗi (rung chuông).

Exchange-point-and-mark: ^ X ^ X
Đặt con trỏ vào vị trí của dấu và đặt dấu ở vị trí của con trỏ.

mở rộng-tệp: ^ [*
Thêm dấu '*' vào từ hiện tại và thay thế từ đó bằng kết quả là
biểu diễn tập tin lấp lánh trên word. Nếu không có tệp nào phù hợp với mẫu, chuông sẽ
thanh ngang.

chuyển tiếp-char: [n] ^ F, ^ XC, ANSI-CurRight, PC-CurRight
Di chuyển con trỏ về phía trước n ký tự.

từ chuyển tiếp: [n] ^ [f, ANSI-Ctrl-CurRight, ANSI-Alt-CurRight
Di chuyển con trỏ tới cuối ntừ thứ.

goto-lịch sử: [n] ^ [g
Đi tới số lịch sử n.

kill-line: GIẾT
Xóa toàn bộ dòng đầu vào.

vùng giết: ^ W
Xóa đầu vào giữa con trỏ và dấu.

giết-to-eol: [n] ^ K
Xóa đầu vào từ con trỏ đến cuối dòng nếu n không được chỉ định;
nếu không sẽ xóa các ký tự giữa con trỏ và cột n.

danh sách: ^ [?
In danh sách tên lệnh hoặc tên tệp (nếu có) đã được sắp xếp, có cột
hoàn thành từ từng phần có chứa con trỏ. Tên thư mục có thêm '/'
đối với họ.

list-command: ^ X?
In danh sách các tên lệnh được sắp xếp, có cột (nếu có) có thể hoàn thành
một phần từ có chứa con trỏ.

danh sách-tệp: ^ X ^ Y
In danh sách tên tệp đã được sắp xếp, có cột (nếu có) có thể hoàn thành
một phần từ có chứa con trỏ. Các chỉ báo loại tệp được thêm vào như được mô tả
Dưới ở trên.

dòng mới: ^ J, ^ M
Làm cho dòng đầu vào hiện tại được xử lý bởi shell. Con trỏ hiện tại
vị trí có thể ở bất kỳ đâu trên dòng.

newline-and-next: ^ O
Làm cho dòng đầu vào hiện tại được xử lý bởi shell và dòng tiếp theo từ
lịch sử trở thành dòng hiện tại. Điều này chỉ hữu ích sau một lịch sử,
lịch sử tìm kiếm or lịch sử tìm kiếm.

không hoạt động: QUIT
Điều này không làm gì cả.

tiền tố-1: ^ [
Giới thiệu chuỗi lệnh gồm 2 ký tự.

tiền tố-2: ^ X, ^ [[, ^ [O
Giới thiệu chuỗi lệnh gồm 2 ký tự.

từ trước theo lịch sử: [n] ^ [., ^ [_
Từ cuối cùng, hoặc, nếu được đưa ra, ntừ thứ (dựa trên số không) của từ trước đó (lặp lại
lệnh thực thi, lệnh thứ hai-cuối cùng, lệnh thứ ba-cuối cùng, v.v.) được chèn vào con trỏ. Sử dụng
lệnh chỉnh sửa này sẽ đánh dấu vào thùng rác.

quote: ^^, ^ V
Ký tự sau được hiểu theo nghĩa đen chứ không phải là một lệnh chỉnh sửa.

vẽ lại: ^ L
In lại dòng cuối cùng của chuỗi lời nhắc và dòng nhập hiện tại trên một dòng mới
hàng.

search-character-back: [n] ^ [^]
Tìm kiếm ngược dòng hiện tại cho nlần xuất hiện của ký tự tiếp theo
đã đánh máy.

tìm kiếm-ký tự-chuyển tiếp: [n] ^ ]
Tìm kiếm về phía trước trong dòng hiện tại cho nlần xuất hiện của ký tự tiếp theo
đã đánh máy.

lịch sử tìm kiếm: ^ R
Vào chế độ tìm kiếm gia tăng. Danh sách lịch sử nội bộ được tìm kiếm ngược lại
lệnh khớp với đầu vào. Ký tự đầu tiên '^' trong chuỗi tìm kiếm cố định
Tìm kiếm. Phím thoát sẽ rời khỏi chế độ tìm kiếm. Các lệnh khác, bao gồm các chuỗi
trốn thoát như tiền tố-1 Theo sau là một tiền tố-1 or tiền tố-2 khóa sẽ được thực hiện sau
rời khỏi chế độ tìm kiếm. Các Huỷ bỏ Lệnh (^ G) sẽ khôi phục dòng nhập trước đó
bắt đầu tìm kiếm. Kế tiếp lịch sử tìm kiếm các lệnh tiếp tục tìm kiếm ngược lại
lần xuất hiện tiếp theo trước đó của mẫu. Bộ đệm lịch sử chỉ giữ lại một
số dòng hữu hạn; cái cũ nhất bị loại bỏ khi cần thiết.

lịch sử tìm kiếm: ANSI-PgUp, PC-PgUp
Tìm kiếm ngược thông qua bộ đệm lịch sử cho các lệnh có phần đầu khớp với
phần của dòng nhập trước con trỏ. Khi được sử dụng trên một dòng trống, điều này có
hiệu ứng tương tự như lịch sử.

lịch sử tìm kiếm xuống: ANSI-PgDn, PC-PgDn
Tìm kiếm chuyển tiếp thông qua bộ đệm lịch sử cho các lệnh có phần đầu khớp với
phần của dòng nhập trước con trỏ. Khi được sử dụng trên một dòng trống, điều này có
hiệu ứng tương tự như quá khứ. Điều này chỉ hữu ích sau một lịch sử,
lịch sử tìm kiếm or lịch sử tìm kiếm.

set-mark-command: ^ [
Đặt dấu tại vị trí con trỏ.

hoán vị ký tự: ^ T
Nếu ở cuối dòng, hoặc nếu gmac tùy chọn được thiết lập, điều này trao đổi hai
các ký tự trước đó; nếu không, nó trao đổi các ký tự trước đó và hiện tại và
di chuyển con trỏ sang phải một ký tự.

lịch sử lên: [n] ^ P, ^ XA, ANSI-CurUp, PC-CurUp
Cuộn ngược bộ đệm lịch sử n dòng (trước đó).

viết hoa-từ: [n] ^ [U, ^ [u
Viết hoa tiếp theo n từ ngữ.

phiên bản: ^ [^ V
Hiển thị phiên bản của Cảm ơn. Bộ đệm chỉnh sửa hiện tại được khôi phục ngay khi có khóa
bị ép buộc. Thao tác nhấn phím khôi phục được xử lý, trừ khi đó là khoảng trắng.

giật: ^ Y
Chèn chuỗi văn bản bị giết gần đây nhất vào vị trí con trỏ hiện tại.

yank-pop: ^ [y
Ngay sau một yank, thay thế chuỗi văn bản đã chèn bằng chuỗi văn bản tiếp theo trước đó
chuỗi văn bản bị giết.

Vi chỉnh sửa chế độ
Lưu ý: Chế độ chỉnh sửa dòng lệnh vi là không có, nhưng vẫn hoạt động. Nó là 8-bit sạch
nhưng đặc biệt không hỗ trợ UTF-8 hoặc MBCS.

Trình soạn thảo dòng lệnh vi trong Cảm ơn về cơ bản có các lệnh giống như vi(1) biên tập viên với
các trường hợp ngoại lệ sau:

· Bạn bắt đầu ở chế độ chèn.

· Có các lệnh hoàn thành tên tệp và lệnh: =, \, *, ^ X, ^ E, ^ F và,
tùy ý, và .

· Sản phẩm _ lệnh là khác nhau (trong Cảm ơn, nó là lệnh đối số cuối cùng; trong vi(1) nó đi
đến đầu dòng hiện tại).

· Sản phẩm /G lệnh di chuyển theo hướng ngược lại với j chỉ huy.

· Các lệnh không có ý nghĩa trong một trình soạn thảo dòng đơn không có sẵn (ví dụ: màn hình
lệnh chuyển động và ex(1) dấu hai chấm kiểu (:) lệnh).

Như vi(1), có hai chế độ: chế độ "chèn" và chế độ "lệnh". Trong chế độ chèn, hầu hết
các ký tự chỉ đơn giản được đưa vào bộ đệm tại vị trí con trỏ hiện tại khi chúng được nhập;
tuy nhiên, một số ký tự được đối xử đặc biệt. Đặc biệt, những nhân vật sau đây là
lấy từ hiện tại tty(4) cài đặt (xem tại biển(1)) và có nghĩa thông thường (giá trị bình thường
nằm trong ngoặc đơn): kill (^ U), delete (^?), werase (^ W), eof (^ D), intr (^ C) và thoát (^ \).
Ngoài các ký tự trên, các ký tự sau cũng được xử lý đặc biệt trong chèn
chế độ:

^ E Lệnh và liệt kê tên tệp (xem bên dưới).

^ F Hoàn thành lệnh và tên tệp (xem bên dưới). Nếu được sử dụng hai lần liên tiếp, danh sách
hoàn thành có thể được hiển thị; nếu được sử dụng lần thứ ba, quá trình hoàn thành sẽ được hoàn tác.

^ H Xóa ký tự trước đó.

^ J | ^ M Cuối dòng. Dòng hiện tại được đọc, phân tích cú pháp và thực thi bởi shell.

^ V Literal tiếp theo. Ký tự tiếp theo được nhập không được xử lý đặc biệt (có thể được sử dụng để
chèn các ký tự được mô tả ở đây).

^ X Lệnh và mở rộng tên tệp (xem bên dưới).

Đặt trình chỉnh sửa ở chế độ lệnh (xem bên dưới).

Tên tệp tùy chọn và hoàn thành lệnh (xem ^F ở trên), được kích hoạt với định -o
vi-tabhoàn thành.

Trong chế độ lệnh, mỗi ký tự được hiểu là một lệnh. Những nhân vật không
tương ứng với các lệnh, là sự kết hợp bất hợp pháp của các lệnh hoặc là các lệnh không thể
được thực hiện, tất cả đều gây ra tiếng bíp. Trong các mô tả lệnh sau, một [n] chỉ ra
lệnh có thể được bắt đầu bằng một số (ví dụ: 10l di chuyển sang phải 10 ký tự); nếu không có số
tiền tố được sử dụng, n được giả định là 1 trừ khi được chỉ định khác. Thuật ngữ “hiện tại
vị trí ”đề cập đến vị trí giữa con trỏ và ký tự đứng trước con trỏ.
“Từ” là một chuỗi các chữ cái, chữ số và ký tự gạch dưới hoặc một chuỗi các ký tự không phải
các ký tự chữ cái, không phải chữ số, không gạch dưới và không có khoảng trắng (ví dụ: “ab2 * & ^” chứa hai
từ) và “từ lớn” là một chuỗi các ký tự không có khoảng trắng.

Reduct ® Cảm ơn lệnh vi:

Các lệnh sau không có trong hoặc khác với trình chỉnh sửa tệp vi thông thường:

[n] _ Chèn một khoảng trắng theo sau bởi ntừ lớn từ lệnh cuối cùng trong lịch sử
ở vị trí hiện tại và vào chế độ chèn; nếu như n không được chỉ định, cuối cùng
từ được chèn.

# Chèn ký tự chú thích ('#') vào đầu dòng hiện tại và quay lại
dòng tới shell (tương đương với Tôi # ^ J).

[n] g Thích G, ngoại trừ nếu n không được chỉ định, nó chuyển sang phần được ghi nhớ gần đây nhất
hàng.

[n] v Chỉnh sửa dòng n bằng cách sử dụng vi(1) biên tập viên; nếu như n không được chỉ định, dòng hiện tại là
đã chỉnh sửa. Lệnh thực được thực thi là fc -e $ {VISUAL: - $ {EDITOR: -vi}} n.

* và ^ X Lệnh hoặc mở rộng tên tệp được áp dụng cho từ lớn hiện tại (với
thêm '*' nếu từ không chứa các ký tự bao quanh tệp) - từ lớn là
được thay thế bằng các từ kết quả. Nếu từ lớn hiện tại là từ đầu tiên trên
dòng hoặc theo sau một trong các ký tự ';', '|', '&', '(', hoặc ')', và không
chứa một dấu gạch chéo ('/'), sau đó mở rộng lệnh được thực hiện; nếu không thì tên tệp
mở rộng được thực hiện. Mở rộng lệnh sẽ phù hợp với từ lớn chống lại tất cả
bí danh, chức năng và lệnh tích hợp cũng như bất kỳ tệp thực thi nào được tìm thấy
bằng cách tìm kiếm các thư mục trong tham số PATH. Các trận đấu mở rộng tên tệp
từ lớn đối với các tệp trong thư mục hiện tại. Sau khi mở rộng,
con trỏ được đặt ngay sau từ cuối cùng và trình soạn thảo đang ở chế độ chèn.

[n] \, [n] ^ F, [n] , và [n]
Hoàn thành lệnh / tên tệp. Thay thế từ lớn hiện tại bằng từ dài nhất
đối sánh duy nhất thu được sau khi thực hiện lệnh và mở rộng tên tệp.
chỉ được công nhận nếu vi-tabhoàn thành tùy chọn được đặt, trong khi la Duy nhât
được công nhận nếu vi-esccomplete tùy chọn được thiết lập (xem định -o). Nếu n được quy định,
các nhoàn thành thứ có thể được chọn (như được báo cáo bởi lệnh / tên tệp
lệnh liệt kê).

= và ^ E Lệnh / liệt kê tên tệp. Liệt kê tất cả các lệnh hoặc tệp phù hợp với
từ lớn hiện tại.

^ V Hiển thị phiên bản của Cảm ơn. Bộ đệm chỉnh sửa hiện tại được khôi phục ngay sau khi
phím được nhấn. Việc nhấn phím khôi phục bị bỏ qua.

@c Mở rộng vĩ mô. Thực thi các lệnh được tìm thấy trong bí danh c.

Các lệnh di chuyển nội dòng:

[n]tay [n] ^ H
Di chuyển sang trái n ký tự.

[n]đất [n]
Đi sang phải n ký tự.

0 Di chuyển đến cột 0.

^ Di chuyển đến ký tự không có khoảng trắng đầu tiên.

[n] | Di chuyển đến cột n.

$ Di chuyển đến ký tự cuối cùng.

[n] b Di chuyển trở lại n từ ngữ.

[n] B Di chuyển trở lại n những từ dài.

[n] e Di chuyển tới cuối từ, n lần.

[n] E Tiến tới phần cuối của từ lớn, n lần.

[n] w Tiến lên n từ ngữ.

[n] W Tiến lên n những từ dài.

% Tìm kết quả phù hợp. Người biên tập mong nhận được dấu ngoặc đơn, dấu ngoặc nhọn hoặc dấu ngoặc nhọn gần nhất
và sau đó di chuyển con trỏ đến dấu ngoặc đơn, dấu ngoặc nhọn hoặc dấu ngoặc nhọn phù hợp.

[n]fc Tiến tới nlần xuất hiện của nhân vật c.

[n]Fc Di chuyển lùi về phía sau nlần xuất hiện của nhân vật c.

[n]tc Tiến tới ngay trước nlần xuất hiện của nhân vật c.

[n]Tc Di chuyển lùi về phía trước ngay trước nlần xuất hiện của nhân vật c.

[n]; Lặp lại lần cuối cùng f, F, t, hoặc là T chỉ huy.

[n], Lặp lại lần cuối cùng f, F, t, hoặc là T lệnh, nhưng di chuyển theo hướng ngược lại.

Các lệnh di chuyển giữa các dòng:

[n] j, [n] + và [n] ^ N
Di chuyển đến ndòng tiếp theo trong lịch sử.

[n] k, [n]-, và [n] ^ P
Di chuyển đến ndòng trước trong lịch sử.

[n] G Di chuyển đến dòng n trong lịch sử; nếu như n không được chỉ định, số đầu tiên
dòng ghi nhớ được sử dụng.

[n] g Thích G, ngoại trừ nếu n không được chỉ định, nó chuyển đến dòng được nhớ gần đây nhất.

[n]/chuỗi
Tìm kiếm ngược lại lịch sử cho ndòng thứ bao gồm chuỗi; nếu chuỗi
bắt đầu bằng '^', phần còn lại của chuỗi phải xuất hiện ở đầu lịch sử
dòng cho nó phù hợp.

[n]?chuỗi
Giống như /, ngoại trừ nó tìm kiếm về phía trước thông qua lịch sử.

[n] n Tìm kiếm nlần xuất hiện của chuỗi tìm kiếm cuối cùng; hướng tìm kiếm
giống như lần tìm kiếm cuối cùng.

[n] N Tìm kiếm nlần xuất hiện của chuỗi tìm kiếm cuối cùng; hướng tìm kiếm
ngược lại với lần tìm kiếm cuối cùng.

ANSI-CurUp, PC-PGUp
Đưa các ký tự từ đầu dòng đến vị trí con trỏ hiện tại như
chuỗi tìm kiếm và thực hiện tìm kiếm ngược lịch sử cho các dòng bắt đầu bằng
chuỗi; giữ nguyên vị trí con trỏ. Điều này chỉ hoạt động ở chế độ chèn và giữ nó
kích hoạt.

Chỉnh sửa lệnh

[n] một văn bản Nối n lần; chuyển sang chế độ chèn ngay sau vị trí hiện tại. Các
append chỉ được sao chép nếu chế độ lệnh được nhập lại, tức là Được sử dụng.

[n] A Giống như a, ngoại trừ nó gắn ở cuối dòng.

[n] i Chèn văn bản n lần; chuyển sang chế độ chèn ở vị trí hiện tại. Sự chèn
chỉ được sao chép nếu chế độ lệnh được nhập lại, tức là Được sử dụng.

[n] Tôi Giống như i, ngoại trừ việc chèn được thực hiện ngay trước ký tự không trống đầu tiên.

[n] s Thay thế tiếp theo n ký tự (tức là xóa các ký tự và đi vào chèn
chế độ).

S Thay thế toàn bộ dòng. Tất cả các ký tự từ ký tự không trống đầu tiên đến cuối
của dòng bị xóa và chế độ chèn được nhập.

[n]cdi chuyển-cmd
Thay đổi từ vị trí hiện tại sang vị trí do n di chuyển-cmds (tức là
xóa vùng được chỉ định và chuyển sang chế độ chèn); nếu như di chuyển-cmd is c, Dòng
bắt đầu từ ký tự không trống đầu tiên được thay đổi.

C Thay đổi từ vị trí hiện tại đến cuối dòng (tức là xóa đến cuối dòng
dòng và chuyển sang chế độ chèn).

[n] x Xóa tiếp theo n ký tự.

[n] X Xóa phần trước n ký tự.

D Xóa đến cuối dòng.

[n]ddi chuyển-cmd
Xóa từ vị trí hiện tại đến vị trí kết quả từ n di chuyển-cmds;
di chuyển-cmd là một lệnh di chuyển (xem ở trên) hoặc d, trong trường hợp đó dòng hiện tại là
đã xóa.

[n]rc Thay thế tiếp theo n nhân vật với nhân vật c.

[n] R Thay thế. Vào chế độ chèn nhưng ghi đè các ký tự hiện có thay vì chèn
trước các ký tự hiện có. Việc thay thế được lặp lại n lần.

[n] ~ Thay đổi trường hợp tiếp theo n ký tự.

[n]ydi chuyển-cmd
Yank từ vị trí hiện tại đến vị trí xuất phát từ n di chuyển-cmds vào
đệm giật; nếu như di chuyển-cmd is y, toàn bộ đường dây bị giật.

Yank từ vị trí hiện tại đến cuối dòng.

[n] p Dán nội dung của bộ đệm yank ngay sau vị trí hiện tại, n lần.

[n] P Giống như p, ngoại trừ bộ đệm được dán ở vị trí hiện tại.

Các lệnh vi khác

^ J và ^ M
Dòng hiện tại được đọc, phân tích cú pháp và thực thi bởi shell.

^ L và ^ R
Vẽ lại dòng hiện tại.

[n]. Làm lại lệnh chỉnh sửa cuối cùng n lần.

u Hoàn tác lệnh chỉnh sửa cuối cùng.

U Hoàn tác tất cả các thay đổi đã được thực hiện đối với dòng hiện tại.

Các phím Home, End, Del và con trỏ của PC
Chúng di chuyển như mong đợi, cả trong chế độ chèn và lệnh.

xâm nhậpbỏ thuốc lá
Các ký tự đầu cuối ngắt và thoát khiến dòng hiện tại bị xóa và
một lời nhắc mới sẽ được in.

Sử dụng mksh trực tuyến bằng các dịch vụ onworks.net


Máy chủ & Máy trạm miễn phí

Tải xuống ứng dụng Windows & Linux

  • 1
    Alt-F
    Alt-F
    Alt-F cung cấp một mã nguồn mở và miễn phí
    chương trình cơ sở thay thế cho DLINK
    DNS-320/320L/321/323/325/327L and
    DNR-322L. Alt-F có Samba và NFS;
    hỗ trợ ext2 / 3/4 ...
    Tải xuống Alt-F
  • 2
    chúng tôi
    chúng tôi
    Usm là một gói slackware thống nhất
    quản lý xử lý tự động
    giải quyết sự phụ thuộc. Nó thống nhất
    các kho lưu trữ gói khác nhau bao gồm
    slackware, slacky, p ...
    Tải về usm
  • 3
    Biểu đồ.js
    Biểu đồ.js
    Chart.js là một thư viện Javascript
    cho phép các nhà thiết kế và nhà phát triển vẽ
    tất cả các loại biểu đồ sử dụng HTML5
    phần tử canvas. Biểu đồ js cung cấp một điều tuyệt vời
    mảng ...
    Tải xuống Chart.js
  • 4
    iReport-Designer cho JasperReports
    iReport-Designer cho JasperReports
    LƯU Ý: Hỗ trợ iReport / Jaspersoft Studio
    Thông báo: Kể từ phiên bản 5.5.0,
    Jaspersoft Studio sẽ là công ty chính thức
    khách hàng thiết kế cho JasperReports. tôi báo cáo
    sẽ...
    Tải xuống iReport-Designer cho JasperReports
  • 5
    PostInstallerF
    PostInstallerF
    PostInstallerF sẽ cài đặt tất cả các
    phần mềm Fedora Linux và những phần mềm khác
    không bao gồm theo mặc định, sau
    chạy Fedora lần đầu tiên. Của nó
    dễ dàng cho ...
    Tải xuống PostInstallerF
  • 6
    đi lạc
    đi lạc
    Dự án đi lạc đã được chuyển đến
    https://strace.io. strace is a
    chẩn đoán, gỡ lỗi và hướng dẫn
    bộ theo dõi không gian người dùng cho Linux. Nó được sử dụng
    để giám sát một ...
    Tải xuống
  • Khác »

Lệnh Linux

Ad