Bởi vì đó là cách nó có nghĩa là.
<(...)trong bashlà cú pháp để thay thế quá trình. Nó được sao chép từ cùng một toán tử trong ksh.
<, (, ), |, &, ;Là thẻ từ vựng đặc biệt trong bashđó được sử dụng để tạo thành nhà khai thác đặc biệt trong các kết hợp khác nhau. <, <(, <<, <&... mỗi người đều có vai trò của họ. <là để chuyển hướng. <file, < filesẽ chuyển hướng đầu vào từ một tập tin. <'(file)'sẽ chuyển hướng đầu vào từ một tệp được gọi (file), nhưng <(file)là một toán tử khác không phải là toán tử chuyển hướng.
< (file)sẽ được <theo sau (file). Trong bối cảnh đó, trong bash, (file)là không hợp lệ. (...)có thể hợp lệ dưới dạng một mã thông báo trong một số ngữ cảnh như:
(sub shell)
func () {
...
}
var=(foo bar)
Nhưng không phải trong
sort < (cmd)
Trong fishvỏ, nó khác. Trong fish, (...)là để thay thế lệnh (tương đương với $(...)trong bash). Và <là để chuyển hướng đầu vào như trong shell giống như Bourne.
Vì vậy, trong fish:
sort <(echo file)
sẽ giống như:
sort < (echo file)
Đó là:
sort < file
Nhưng đó là một cái gì đó hoàn toàn khác với bashquá trình thay thế.
Trong hệ yashvỏ, một vỏ POSIX khác, <(...)không phải để thay thế quy trình mà là để chuyển hướng quy trình
Trong đó,
sort <(ls -l)
Viết tắt của:
sort 0<(ls -l)
là một toán tử chuyển hướng. Nó ít nhiều tương đương với:
ls -l | sort
Trong khi ở bash, đường <(ls -l)được mở rộng thành đường ống, vì vậy nó giống như:
ls -l | sort /dev/fd/0
Trong zsh, (...)bị quá tải như một toán tử toàn cầu ( (*.txt|*.png)sẽ mở rộng đến txtvà pngcác tệp) và như là vòng loại toàn cầu ( *(/)ví dụ: mở rộng sang các tệp thư mục).
Trong zsh, trong:
sort < (ls -l)
Điều đó (ls -l)sẽ được coi là một vòng loại toàn cầu. Vòng lloại toàn cầu sẽ khớp với số lượng liên kết và mong đợi một số sau l(như trong ls -ld ./*(l2)danh sách các tệp có 2 liên kết), vì vậy đó là lý do tại sao bạn gặp zsh: number expectedlỗi ở đó.
sort < (w)zsh: no matches found: (w)thay vào đó sẽ đưa ra một lỗi thay vì (w)khớp với các tệp có tên trống có thể ghi.
sort < (w|cat)sẽ sắp xếp nội dung của các tập tin wvà / hoặc cattrong thư mục hiện tại ...