Đây là vị trí lệnh có thể được 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
sang trọng - Giá bán thông thường tuân thủ chính sách
SYNOPSIS
sang trọng [+ -aCefilnuvx] [+ -o tùy chọn]
[[-C chuỗi lệnh [tên lệnh] | -s | hồ sơ ] [đối số...]]
MÔ TẢ
sang trọng là sự hoàn thiện lại của trình bao Bourne, một trình thông dịch lệnh cho cả hai tương tác
và sử dụng script.
Shell Khởi động
Các tùy chọn sau chỉ có thể được chỉ định trên dòng lệnh:
-c chuỗi lệnh
shell thực thi (các) lệnh có trong chuỗi lệnh
-i
chế độ tương tác - xem bên dưới
-l
vỏ đăng nhập - xem bên dưới chế độ tương tác - xem bên dưới
-s
shell đọc lệnh từ đầu vào tiêu chuẩn; tất cả các đối số không phải tùy chọn đều là vị trí
thông số
Ngoài các tùy chọn trên, các tùy chọn được mô tả trong định lệnh nội trang cũng có thể được
được sử dụng trên dòng lệnh.
Nếu không -c cũng không phải -s các 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ó tùy chọn
đối số, trình bao đọc lệnh từ đầu vào chuẩn. Tên của vỏ (tức là, Các
nội dung của $0) tham số được xác định như sau: nếu -c tùy chọn được sử dụng và ở đó
là một đối số không phải là tùy chọn, nó được sử 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 thì tên shell được gọi bằng (tức là, argv [0])
Được sử dụng.
Một cái vỏ là tương tác nếu -i tùy chọn được sử dụng hoặc nếu cả đầu vào tiêu chuẩn và tiêu chuẩn
lỗi được đính kèm với một tty. Một trình bao tương tác đã bật kiểm soát công việc (nếu có),
bỏ qua các tín hiệu INT, QUIT và TERM và in lời nhắc trước khi đọc đầu vào (xem PS1
và PS2 thông số).
Một cái vỏ là đặc quyền đặc lợi nếu -p tùy chọn được sử dụng hoặc 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)). Một vỏ đặc quyền
không xử lý $ HOME / .profile. Thay vào đó, tệp / etc / suid_profile được xử lý. Thanh toán bù trừ
tùy chọn đặc quyền khiến trình bao đặt id người dùng hiệu quả (id nhóm) thành
id người dùng (group-id).
Nếu tên cơ sở của tên, trình bao được gọi với (tức là, argv [0]) bắt đầu bằng - hoặc nếu
các -l tùy chọn được sử dụng, trình bao được giả định là trình bao đăng nhập và trình bao đọc và
thực hiện các nội dung của / etc / profile và $ HOME / .profile nếu chúng tồn tại và có thể đọc được.
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
không thể mở được 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
một kịch bản. 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.
Lệnh cú pháp
Trình bao bắt đầu phân tích dữ liệu đầu vào của nó bằng cách chia nhỏ nó thành các từ. Các từ, là chuỗi
trong số các ký tự, được phân tách bằng các ký tự khoảng trắng không được trích dẫn (dấu cách, tab và dòng mới)
hoặc ký tự meta (<,>, |,;, &, (và)). Ngoài việc phân định các từ, khoảng trắng và tab
bị bỏ qua, trong khi dòng mới thường là lệnh phân cách. Các ký tự meta được sử dụng trong
xây dựng các mã thông báo sau: <, <&, <<,>,> &, >>, v.v. được sử dụng để chỉ định chuyển hướng
(xem Chuyển hướng đầu vào / đầu ra bên dưới); | được sử dụng để tạo đường ống dẫn; ; được dùng để ngăn cách
các lệnh; & được sử dụng để tạo đường ống không đồng bộ; && và || được sử dụng để chỉ định
thi hành có điều kiện; ;; được sử dụng trong các câu lệnh trường hợp; và cuối cùng, (...) được sử dụng để
tạo biểu mẫu 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 double (") hoặc đơn (') trích dẫn. Lưu ý rằng các ký tự sau đây cũng là
đượ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 họ: \,
", ', #, $, `, ~, {, }, *, ? và [. Ba đầu tiên trong số này được đề cập ở trên
trích dẫn ký tự (xem phần trích dẫn bên dưới); #, nếu được sử dụng ở đầu một từ, hãy giới thiệu
một bình luận - mọi thứ sau # cho đến dòng mới gần nhất bị bỏ qua; $ đã từng
giới thiệu các phép thay thế tham số, lệnh và số học (xem phần Thay thế bên dưới); `
giới thiệu một thay thế lệnh kiểu cũ (xem Thay thế bên dưới); ~ bắt đầu một
mở rộng thư mục (xem Mở rộng dấu nghiêng bên dưới); { và } phân định csh(1) kiểu thay thế
(xem Phần mở rộng Brace bên dưới); và cuối cùng, *, ? và [ được sử dụng trong việc tạo tên tệp
(xem Mẫu Tên Tệp bên dưới).
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 cho và if 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 Tham số
bên dưới), chuyển hướng đầu vào / đầu ra (xem Chuyển hướng đầu vào / đầu ra bên dưới) và lệnh
từ; 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 từ lệnh, nếu có, xác định lệnh sẽ được thực thi và các đối số của nó.
Lệnh có thể là một lệnh tích hợp trong shell, một hàm hoặc một ngoài lệnh, tức là, Một
tệp thực thi riêng biệt được đặt bằng cách sử dụng PATH tham số (xem Thực thi lệnh
phía dưới). Lưu ý rằng tất cả các cấu trúc lệnh đều có ra tình trạng: đố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ả về bởi chờ đợi(2) (nếu không tìm thấy lệnh, lối ra
trạng thái là 127, nếu không thể thực hiện, trạng thái thoát là 126); trạng thái thoát của
các cấu trúc lệnh khác (lệnh tích hợp, hàm, lệnh ghép, đường ống dẫn,
danh sách, và vv) đều được xác định rõ và được mô tả khi cấu trúc được mô tả. Các
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à trạng thái cuối cùng
thay thế lệnh được thực hiện trong quá trình gán tham số hoặc bằng XNUMX 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 để hình 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)) đến đầ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ó. MỘT
đường ống dẫn có thể được bắt đầu bởi ! từ dành riêng gây ra 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 thì bổ sung
trạng thái sẽ là 1 và nếu trạng thái ban đầu không phải là 0, thì trạng thái bổ sung 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 chỉ được thực hiện
nếu trạng thái thoát của cmd1 là khác XNUMX. && và || có mức độ ưu tiên như nhau cao hơn
hơn là của &, |& và ;, cũng có quyền ưu tiên như nhau. Các & mã thông báo gây ra
lệnh trước được thực thi không đồng bộ, nghĩa là, trình bao bắt đầu lệnh,
nhưng không đợi nó hoàn thành (shell theo dõi trạng thái của
lệnh không đồng bộ - xem Điều khiển công việc bên dưới). Khi một lệnh không đồng bộ được bắt đầu
khi kiểm soát công việc bị vô hiệu hóa (tức là, trong hầu hết các tập lệnh), lệnh được bắt đầu bằng các tín hiệu
INT và QUIT bị bỏ qua và với đầu vào được chuyển hướng từ / dev / null (tuy nhiên, chuyển hướng
được chỉ định trong lệnh không đồng bộ có quyền ưu tiên). Lưu ý rằng một lệnh phải tuân theo
các && và || toán tử, trong khi một lệnh không cần tuân theo &, |& và ;. Trạng thái thoát của một
là danh sách của lệnh cuối cùng được thực thi, ngoại trừ danh sách không đồng bộ, cho
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 một 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
làm esac nếu thời gian [[
hoàn thành fi trong cho đến khi {
elif để chọn trong khi}
Lưu ý: Một số shell (nhưng không phải cái này) thực thi các lệnh cấu trúc điều khiển trong một subshell khi
một hoặc nhiều bộ mô tả tệp của chúng được chuyển hướng, vì vậy bất kỳ môi trường nào thay đổi bên trong
chúng có thể thất bại. Để có thể di động, giám đốc điều hành câu lệnh nên được sử dụng thay thế để chuyển hướng tệp
bộ mô tả trước cấu trúc điều khiển.
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 dấu (về mặt cú pháp
đúng) từ dành riêng. Ví dụ,
{ bỏ lỡ foo; bỏ lỡ quán ba; }
{ bỏ lỡ foo; bỏ lỡ quán ba }
{ { bỏ lỡ foo; bỏ lỡ quán ba; } } tất cả đều hợp lệ, nhưng
{ bỏ lỡ foo; bỏ lỡ thanh } không phải là.
( )
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à } đang
từ dành riêng, không phải ký tự meta.
trường hợp lời in [[(] Belt Hold [| Belt Hold] ... ) ;; ] ... nó C
trường hợp tuyên bố cố gắng khớp lời chống lại những gì được chỉ định Belt HoldS; 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ừ
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ất kỳ khoảng trống nào có mẫu phải được trích dẫn. Cả từ
và các mẫu có thể thay thế tham số, lệnh và số học như
cũng như thay thế dấu ngã. Vì lý do lịch sử, có thể sử dụng dấu ngoặc nhọn đóng mở
thay vì in và nó C (ví dụ, trường hợp $ foo { *) bỏ lỡ quán ba; }). 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 được thực thi, trạng thái thoát là
số không.
cho tên [ in lời ... kỳ hạn ] do thực hiện
Ở đâu kỳ hạn là một dòng mới hoặc một ;. 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à vv) được sử dụng thay thế. Vì
lý do lịch sử, dấu ngoặc nhọn mở và đóng có thể được sử dụng thay vì do và thự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à không.
if sau đó [elif 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ự. Nếu tất cả
danh sách theo sau if và elifthất bại (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à của
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 hiện,
trạng thái thoát bằng không.
cho đến khi do thực hiện
Đ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 do thực hiện
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
Thành phố điện khí hóa phía tây dãy núi Rocky đầu tiên là số không. Trạng thái thoát của một trong khi câu lệnh là trạng thái thoát cuối cùng của
các 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.
tên () lệnh
Xác định chức năng tên. Xem Các chức năng bên dưới. Lưu ý rằng các chuyển hướng được chỉ định sau
một đị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.
thời gian [ -p ] [ đường ống dẫn ]
thời gian từ dành riêng được mô tả trong phần Thực thi Lệnh.
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. Ở đó
là ba phương pháp trích dẫn: Thứ nhất, \ trích dẫn ký tự sau, trừ khi nó ở
cuối dòng, trong trường hợp đó cả hai \ và dòng mới bị loại bỏ. Thứ hai, một
trích dẫn (') 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à \, lên đến cú đúp không được đánh giá tiếp theo
trích dẫn $ và ` bên trong dấu ngoặc kép có ý nghĩa thông thường của chúng (tức là, tham số, lệnh hoặc
phép thay thế số học) ngoại trừ việc tách trường không được thực hiện dựa trên kết quả của
sự thay thế được trích dẫn kép. Nếu một \ bên trong một chuỗi dấu ngoặc kép được theo sau bởi \, $, `
or ", 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ả hai \
và dòng mới bị loại bỏ; nếu không, cả hai \ và nhân vật sau đây là
không thay đổi.
Lưu ý: xem Chế độ POSIX bên dưới để biết quy tắc đặc biệt liên quan đến các chuỗi của biểu mẫu
"...`...\"...`..".
Thay thế
Bước đầu tiên mà shell 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,
mang hình thức $ name or ${...}; thay thế lệnh có dạng $(lệnh) or
`lệnh`; và các phép thay thế số học có dạng $ ((biểu hiện)).
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 chia từ hoặc trường theo giá trị hiện tại của IFS
tham số. Các IFS tham số chỉ định một danh sách các ký tự được sử dụng để ngắt một
xâu chuỗi thành nhiều từ; bất kỳ ký tự nào từ không gian đã đặt, tab và dòng mới
xuất hiện trong các ký tự IFS được gọi là IFS trắng không gian. Chuỗi của một hoặc nhiều IFS
các ký tự khoảng trắng, kết hợp với XNUMX hoặc một ký tự khoảng trắng không phải IFS
phân định một trường. Là một trường hợp đặc biệt, khoảng trắng IFS ở đầu và cuối bị loại bỏ
(tức là, không có trường trống ở đầu hoặc cuối được tạo bởi nó); đầu hoặc cuối không phải IFS
khoảng trắng không tạo ra một trường trống. Ví dụ: nếu IFS được đặt thành ` :', trình tự
nhân vật ` MỘT : B :: D 'chứa bốn trường: `` A', 'B', '' và
`D '. Lưu ý rằng nếu IFS tham số được đặt thành chuỗi rỗng, không có trường nào được thực hiện tách;
nếu tham số không được đặt, giá trị mặc định của khoảng trắng, tab và dòng mới sẽ được sử dụng.
Kết quả của sự thay thế, trừ khi có quy định khác, cũng phải chịu dấu ngoặc
mở rộng 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 đã chỉ định,
được chạy trong một vỏ con. Vì $(lệnh) thay thế, quy tắc trích dẫn thông thường được sử dụng khi
lệnh được phân tích cú pháp, tuy nhiên, cho `lệnh` hình thức, một \ theo sau bởi bất kỳ $, ` or \ is
tước (một \ theo sau là bất kỳ ký tự nào khác là không thay đổi). Như một trường hợp đặc biệt trong lệnh
thay thế, một lệnh của biểu mẫu < hồ sơ được hiểu có nghĩa là thay thế các nội dung
of hồ sơ ($ (<foo) có tác dụng tương tự như $ (cat foo), nhưng nó được thực hiện nhiều hơn
hiệu quả vì không có quá trình nào được bắt đầu).
LƯU Ý: $(lệnh) các biểu thức hiện được phân tích cú pháp bằng cách tìm dấu ngoặc đơn phù hợp,
bất kể trích dẫn. Điều này hy vọng sẽ sớm được sửa chữa.
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 bỏ lỡ $ ((2 + 3 * 4)) bản in 14. Xem Biểu thức số học để biết
mô tả của một biểu hiện.
Thông số Kỹ thuật
Tham số là các biến shell; chúng có thể được gán giá trị và giá trị của chúng có thể
được truy cập bằng cách sử dụng thay thế tham số. Tên tham số là một trong những tên đặc biệt
các tham số ký tự chữ số hoặc dấu chấm câu đơn được mô tả bên dưới hoặc một chữ cái được theo sau bởi
không hoặc nhiều chữ cái hoặc chữ số (`_ 'đượ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ó dạng: [thể hiện] Ở đâu thể hiện là một số học
biểu hiện. Chỉ số mảng hiện được giới hạn trong phạm vi từ 0 đến 1023, bao gồm cả.
Thay thế tham số có dạng $tên, ${tên} or ${tên[thể hiện]}, Nơi tên là một
tên tham số. Nếu thay thế được thực hiện trên một tham số (hoặc một tham số mảng
phần tử) 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ố thông số như #, PWD, Vân vân.; đâ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 thanh; nhiều phép gán tham số có thể được đưa ra trên một
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ụ chỉ có hiệu lực trong khoảng thời gian của lệnh (các nhiệm vụ đó cũng
đã xuất, hãy xem bên dưới để biết ý nghĩa của điều này). Lưu ý rằng cả tên tham số và =
phải được bỏ trích dẫn để trình bao nhận ra một phép gán tham số. Cách thứ tư của
thiết lập một tham số là với xuất khẩu và chỉ đọc các lệnh; xem mô tả của họ trong
phần Thực thi Lệnh. Thứ năm, cho và chọn vòng lặp thiết lập các thông số cũng như
getopt, đọc và định -A các lệnh. Cuối cùng, các tham số có thể được gán giá trị bằng cách sử dụng
toán tử gán bên trong biểu thức số học (xem Biểu thức số học bên dưới) hoặc
bằng cách 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 lệnh hoặc bằng tham số
các nhiệm vụ theo sau bởi các lệnh đơn giản) được đưa vào môi trường (xem về(5)) trong tổng số
các lệnh chạy bởi shell dưới dạng tên=giá trị cặp. Thứ tự mà 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 trình bao khởi động, nó trích xuất các thông số
và các giá trị của chúng từ môi trường của nó và tự động đặt thuộc tính xuất cho
các thông số đó.
Cá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 chứ không phải rỗng, nó được thay thế, ngược lại lời được thay thế.
${tên:+lời}
if tên được đặt và không rỗng, 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 chứ không phải rỗng, nó được thay thế, nếu không thì nó được gán lời và
giá trị kết quả của tên được thay thế.
${tên:?lời}
if tên được đặt chứ không phải rỗng, nó được thay thế, ngược lại lời được in trên tiêu chuẩn
lỗi (trước tên:) và một lỗi xảy ra (thường gây ra sự kết thúc của một trình bao
script, function hoặc.-script). Nếu từ bị bỏ qua, chuỗi `tham số null hoặc không
set 'được sử dụng để thay thế.
Trong các bổ ngữ ở trên, : có thể được 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:
$ {#tên}
Số lượng tham số vị trí nếu tên is *, @ hoặc không được chỉ định, hoặc độ dài
của giá trị chuỗi của tham số tên.
$ {#tên[*]}, $ {#tên[@]}
Số phần tử 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 đơn # kết quả trong trận đấu ngắn nhất, hai
#là kết quả trong trận đấu dài nhất.
${tên%Belt Hold}, ${tên%%Belt Hold}
Như ${..#..} thay thế, nhưng nó xóa từ cuối giá trị.
Các tham số đặc biệt sau được đặt ngầm bởi shell và không thể thiết lập
trực tiếp sử dụng các nhiệm vụ:
!
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 các tham số vị trí (tức là, $1, $2, và vv).
$
ID tiến trình của trình bao hoặc PID của trình bao ban đầu nếu nó là vỏ con.
-
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 cho danh sách
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 là
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.
0
Tên mà trình bao được gọi bằng (nghĩa là, argv [0]), hoặc là tên lệnh nếu nó là
được gọi với -c tùy chọn và tên lệnh đã được cung cấp, hoặc hồ sơ tranh luận, nếu
nó đã được cung cấp. Nếu posix tùy chọn không được đặt, $0 là tên của hiện tại
chức năng hoặc tập lệnh.
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ác thông số vị trí khác có thể được truy cập bằng cách sử dụng $ {number}.
*
Tất cả các tham số vị trí (ngoại trừ tham số 0), tức là, $1 $2 $3.... Nếu được sử dụng bên ngoài
dấu ngoặc kép, tham số là các từ riêng biệt (bị 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 ký tự đầu tiên của
IFS tham số (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 ("$ @" có thể được sử dụng để truy cập các đối số, nguyên văn mà không bị mất
đối số rỗng 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:
"CDPATH"
Tìm kiếm đường dẫn cho cd lệnh cài sẵn. Hoạt động giống như PATH cho những người
thư mục không bắt đầu bằng / in cd các lệnh. Lưu ý rằng nếu CDPATH được thiết lập và
Không chứa . cũng không phải là một đường dẫn trống, thư mục hiện tại không được tìm kiếm.
CỘT
Đặt thành số cột trên thiết bị đầu cuối hoặc cửa sổ. Hiện được đặt thành vòng cổ
giá trị như được báo cáo bởi tại biển(1) nếu giá trị đó khác XNUMX. 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 -o và giết -l lệnh để định dạng
thông tin trong các cột.
LỖI
Giá trị nguyên của biến errno của shell - cho biết lý do hệ thống cuối cùng
cuộc gọi không thành công.
Chưa được thực thi.
KHAI THÁC
Nếu được đặt, tham số này được giả định là chứa trình bao sẽ được sử dụng để thực thi
lệnh đó thi hành(2) không thực thi và không bắt đầu bằng dấu `#! shell'
sự nối tiếp.
FCEDIT
Trình chỉnh sửa được sử dụng bởi fc lệnh (xem bên dưới).
FPATH
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 PATH. Thấy
Các chức năng bên dưới để biết thêm thông tin.
TRANG CHỦ
Thư mục mặc định cho cd lệnh và giá trị được thay thế cho một lệnh không đủ điều kiện
~ (xem Mở rộng dấu nghiêng bên dưới).
IFS
Dấu tách trường bên trong, được sử dụng trong quá trình thay thế và bởi đọc lệnh, để tách
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. Nhìn thấy
Thay thế ở trên để biết chi tiết.
Lưu ý: tham số này không được nhập từ môi trường khi trình bao được khởi động.
POSH_VERSION
Phiên bản của sang trọng (chỉ đọc).
DÒNG KHÔNG
Số dòng của hàm hoặc tập lệnh shell hiện đang được thực thi.
NGÀNH NGHỀ
Đặt thành số dòng trên thiết bị đầu cuối hoặc cửa sổ.
Chưa được thực thi.
CAO TUỔI
Thư mục làm việc trước đó. Bỏ đặt nếu cd đã không thay đổi thành công 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 đang 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 đối số.
TÙY CHỌN
Chỉ mục của đối số cuối cùng được xử lý khi sử dụng getopt. Gán 1 cho cái này
nguyên nhân tham số getopt để xử lý các đối số từ đầu vào lần tiếp theo
viện dẫn.
PATH
Danh sách thư mục được phân tách bằng dấu hai chấm được tìm kiếm khi tìm kiếm các lệnh và
.'d tệp. 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 như là một `. ', thư mục hiện tại.
PPID
ID tiến trình của cha của shell (chỉ đọc).
PS1
Lời nhắc chính cho các trình bao tương tác. Lời nhắc được in nguyên văn (tức làkhông
thay thế được thực hiện). Mặc định là '$' cho người dùng không phải root, '# 'cho root ..
PS2
Chuỗi lời nhắc phụ, theo mặc định `> ', được sử dụng khi cần thêm đầu vào để hoàn thành
chỉ huy.
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
phía dưới). Lời nhắc được in nguyên văn (tức là, không có thay thế nào được thực hiện). Mặc định là
`+ '.
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.
ĐÁP LẠI
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.
TMPDIR
Các tệp tạm thời của vỏ thư mục được tạo trong. Nếu tham số này không được đặt, hoặc
không chứa đường dẫn tuyệt đối của một thư mục có thể ghi, các tệp tạm thời là
được tạo trong / tmp.
dấu ngã Sự bành trướ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 với một 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, + or -, giá trị của
TRANG CHỦ, PWD, hoặc là CAO TUỔI tham số được thay thế tương ứng. Nếu không, tệp mật khẩu
được tìm kiếm 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ố (những lệnh đứng trước một lệnh đơn giản hoặc những lệnh xảy ra trong
đối số của bí danh, xuất khẩuvà chỉ đọc, mở rộng dấu ngã được thực hiện sau bất kỳ dấu hai chấm nào chưa được trích dẫn
(:), và 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 ').
Tập tin Họ tên Patterns
Mẫu tên tệp là một từ chứa một hoặc nhiều không được trích dẫn ? or * ký tự hoặc [..]
trình tự. 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 các 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ó tệp nào khớp, 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.
*
khớp với bất kỳ chuỗi ký tự nào.
[..]
khớp với bất kỳ ký tự nào bên trong dấu ngoặc. Phạm vi ký tự có thể là
được chỉ định bằng cách tách hai ký tự bằng dấu -, ví dụ, [a0-9] khớp với chữ cái a or
bất kỳ chữ số nào. Để đại diện cho chính nó, - phải được trích dẫn hoặc đầu tiên hoặc
ký tự cuối cùng trong danh sách ký tự. Tương tự, một ] phải được trích dẫn hoặc đầu tiên
ký tự trong danh sách nếu nó đại diện cho chính nó thay vì ở cuối danh sách. Cũng thế,
a ! xuất hiện ở đầu danh sách có ý nghĩa đặc biệt (xem bên dưới), vì vậy
đại diện cho chính nó phải được trích dẫn hoặc xuất hiện sau đó trong danh sách.
[!..]
Lượt thích [..], ngoại trừ nó khớp với bất kỳ ký tự nào không nằm trong dấu ngoặc.
Lưu ý rằng sang trọng hiện không bao giờ phù hợp. và .., nhưng ksh ban đầu, Bourne sh và bash
do đó, điều này có thể phải thay đổi (quá tệ).
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
tên tệp hoặc một dấu gạch chéo (/), ngay cả khi chúng được sử dụng rõ ràng trong [..] sự nối tiếp; ngoài ra,
những cái tên. và .. không bao giờ được khớp, kể cả theo mẫu .*.
Các lớp ký tự POSIX (tức là, [:tên lớp:] bên trong [..] biểu thức) vẫn chưa
thực hiện.
Đầ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 được đặt ban đầu là từ / dev / null và 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ó
có 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 thì tập tin 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 để viết, trước đó 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ừ tệp, tệp hiện có đượ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
(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à ở đây
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
một dòng phù hợp đánh dấu được đọc. Khi lệnh được thực thi, đầu vào tiêu chuẩn là
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 lần
lệnh được thực thi, vì vậy các thay thế tham số, lệnh và số học là
được thực hiện, cùng với dấu gạch chéo ngược (\) trốn thoát cho $, `, \ và \dòng mới. 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ự.
"<< - đá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.
"<& fd"
đầu vào tiêu chuẩn được sao chép từ bộ mô tả tệp fd. fd có thể là một chữ số,
cho biết số của một 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 quy trình đồng hiện tại hoặc ký tự
-, cho biết đầu vào tiêu chuẩn sẽ được đóng lại.
">& fd"
giống như <&, ngoại trừ hoạt động được thực hiện trên đầu ra tiêu chuẩn.
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à, Tiêu chuẩn
đầ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
chữ số duy nhất. Các thay thế tham số, lệnh và số học, thay thế dấu ngã và (nếu
shell là tương tác) tạo tên tệp tất cả được thực hiện trên hồ sơ, đánh dấu và
fd đối số của chuyển hướng. Tuy nhiên, lưu ý rằng kết quả của bất kỳ quá trình tạo tên tệp nào
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ừ có
các ký tự tạo tên tệp không được mở rộng đượ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, đối với
lệnh ghép (if báo cáo, và vv), mọi chuyển hướng phải xuất hiện ở cuối.
Chuyển hướng được xử lý sau khi đường ống được tạo và theo thứ tự chúng được đưa ra, vì vậy
làm sao / foo / bar 2> & 1 > / dev / null | làm sao -n sẽ in lỗi với một số dòng được thêm vào trước
nó.
toán học Biểu thức
Biểu thức số học nguyên có thể được sử dụng bên trong $ ((..)) biểu thức, mảng bên trong
người giới thiệu (ví dụ, tên[thể hiện]), dưới dạng các đối số số cho thử nghiệm lệnh và dưới dạng giá trị
của một phép gán cho một tham số số nguyên.
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 có thể đượ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ố,
Ở đâu cơ sở là một số nguyên thập phân chỉ định cơ số và con số là một số trong
cơ sở xác định.
Các toán tử được đánh giá như sau:
"một năm +"
kết quả là đối số (được bao gồm để tính đầy đủ).
"một năm -"
sự phủ định.
"!"
logic không; kết quả là 1 nếu đối số là 0, XNUMX nếu không.
"~"
số học (bit-khôn ngoan) không.
"++"
tăng; 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 lên 1. Khi được sử dụng như một toán tử tiền tố, kết quả là
giá trị gia tăng 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ự như ++, ngoại trừ tham số được giảm đi 1.
","
tách hai biểu thức số học; phía bên trái được đánh giá đầu tiên, sau đó
bên phải. Kết quả là giá trị của biểu thức ở phía bên phải.
"="
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; = giống như = ( ).
"||"
lôgic hoặc; kết quả là 1 nếu một trong hai đối số khác 0, XNUMX nếu không. Bên phải
đối số chỉ được đánh giá nếu đối số bên trái là XNUMX.
"&&"
logic và; kết quả là 1 nếu cả hai đối số đều khác 0, XNUMX nếu không. Bên phải
đối số chỉ được đánh giá nếu đối số bên trái khác XNUMX.
"|"
số học (bit-khôn ngoan) hoặc.
"^"
số học (bit-khôn ngoan) độc quyền-hoặc.
"&"
số học (bit-khôn ngoan) và.
"=="
bình đẳng; kết quả là 1 nếu cả hai đối số bằng nhau, 0 nếu không.
"!="
không công bằng; kết quả là 0 nếu cả hai đối số bằng nhau, 1 nếu không.
"<"
ít 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.
"<= >= >"
nhỏ hơn hoặc bằng, lớn hơn hoặc bằng, lớn hơn. Xem <.
"<< >>"
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ố bên phải.
"+ - * /"
cộng, trừ, nhân và chia.
"%"
phần còn lại; kết quả là phần còn lại của phép chia đối số bên trái cho
bên phải. Dấu của kết quả là không xác định nếu một trong hai đối số là âm.
" ? : "
if khác XNUMX, kết quả là , Nếu không .
Chức năng
Các chức năng được xác định bằng cách sử dụng trình bao Bourne / POSIX tên() cú pháp. Các chức năng giống như
.-scripts trong đó chúng được thực thi trong môi trường hiện tại, không giống như.-scripts,
đối số shell (tức là, tham số vị trí, $1, và vv) không bao giờ nhìn thấy bên trong chúng.
Khi trình bao xác định vị trí của một lệnh, các chức năng sẽ được tìm kiếm sau
các lệnh tích hợp đặc biệt và trước các lệnh tích hợp thông thường và không thường xuyên, và trước
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.
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.
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.
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: cài sẵn đặc biệt, một chức năng, cài sẵn thông 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 PATH tham số. Kiểm tra được thực hiện ở trên
gọi mó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ố là
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 một trình bao không tương tác
để thoát và các phép gán tham số được chỉ định trước khi lệnh được giữ sau
lệnh hoàn thành. Chỉ để nhầm lẫn mọi thứ, nếu tùy chọn posix bị tắt (xem định
lệnh bên dưới) một số lệnh đặc biệt rất đặc biệt ở chỗ không tách trường, tệp
dấu cầu, mở rộng dấu ngoặc nhọn hoặc mở rộng dấu ngã được thực hiện trên các đối số trông giống như
bài tập. Các lệnh tích hợp thông thường chỉ khác ở chỗ PATH tham số là
không được sử dụng để tìm chúng.
Việc làm Kiểm soát
Kiểm soát công việc đề cập đến khả năng giám sát và kiểm soát của shell việc làm, đó là những 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, vỏ giữ
theo dõi tình trạng của nền (tức là, không đồng bộ) các công việc 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 yêu cầu. 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ác công việc nền trước có thể được dừng lại bằng cách nhập
đình chỉ ký tự từ đầu cuối (thông thường ^ Z), công việc có thể được khởi động lại trong
tiền cảnh hoặc hậu cảnh, sử dụng fg và bg các lệnh tương ứng và trạng thái của
terminal đượ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ể.
Khi một công việc được tạo, nó sẽ được gán một số công việc. Đối với các trình bao tương tác, con số này là
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ết và chờ đợi
lệnh hoặc bằng id quy trình của tiến trình cuối cùng trong đường dẫn lệnh (như được lưu trữ
trong $! tham số) hoặc bằng cách bắt đầu số công việc bằng dấu phần trăm (%). Khác
chuỗi phần trăm cũng có thể được sử dụng để chỉ các công việc:
%+ %+ hầu hết gần đây dừng lại việc làm, hoặc, if
có đang Không dừng lại việc làm, các lâu đời nhất
chạy công việc.
%%, % %%, % Giống như %+.
% -% - Công việc sẽ
là %+ công việc, nếu
sau này thì không
hiện hữu.
%n %n Công việc với
số công việc n.
%?chuỗi %?chuỗi Công việc có chứa
chuỗi chuỗi
(một lỗi xảy ra nếu
nhiều công việc
đang
phù hợp).
%chuỗi %chuỗi Công việc bắt đầu với
chuỗi chuỗi (một lỗi
xảy ra nếu nhiều công việc
đang
phù 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ố công việc của công việc.
" cờ"
is + or - nếu công việc là %+ or %- công việc tương ứng hoặc khoảng trống nếu không phải như vậy.
" tình trạng"
cho biết trạng thái hiện tại của công việc và có thể
"Chạy"
công việc vẫn chưa dừng lại hoặc thoát ra (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 có thể bị chặn khi chờ một số sự kiện).
"Thực hiện [(con số)]"
công việc đã thoát. con số là trạng thái thoát của công việc, được bỏ qua nếu trạng thái
là số không.
"Ngừng [(tín hiệu)]"
công việc đã bị dừng lại bởi chỉ định tín hiệu (nếu không có tín hiệu nào được đưa ra, công việc đã
đã dừng bởi SIGTSTP).
"mô tả tín hiệu [(cốt lõi đổ)]"
công việc đã bị giết bởi một tín hiệu (ví dụ, Lỗi bộ nhớ, Treo máy, và vv - sử dụng giết -l cho một
danh sách các mô tả tín hiệu). Các (cốt lõi đổ) thông báo cho biết quá trình được 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,
thì 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 quy 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 đi HÚT tín hiệu và vỏ
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
cố gắng thoát khỏi trình bao đăng nhập, trình bao sẽ cảnh báo người dùng và không thoát. Nếu như
một nỗ lực khác được thực hiện ngay lập tức để thoát khỏi trình bao, các công việc đang chạy được gửi HÚT
tín hiệu và vỏ thoát ra.
ĐƯỢC XÂY DỰNG TRONG TIỆN ÍCH
posh triển khai các tiện ích nội trang sau:
·.
·:
· [
· nghỉ
· được xây dựng trong
· tiếp tục
· Eval
· Thực thi
· lối ra
· sai
· trở lại
· bộ
· sự thay đổi
· Lần
· bẩy
· đợi đã
· đọc
· kiểm tra
· đúng vậy
· Umask
· Bỏ đặt
· đĩa CD
· yêu cầu
· Tiếng vang
· xuất khẩu
· Getopts
· giết
· địa phương
· Pwd
· chỉ đọc
Sử dụng sang trọng trực tuyến bằng các dịch vụ onworks.net