Tôi muốn sử dụng install
lệnh để tạo một tệp thực thi mới với nội dung được điền trước (ví dụ: với một pwd
lệnh duy nhất trong đó).
Vì vậy, tôi đã mở rộng ví dụ này để tạo một tệp thực thi trống mới:
install -b -m 755 /dev/null newfile
vào cái này
install -m755 <(echo pwd) newfile
hoặc là:
echo pwd | install -m755 /dev/stdin newfile
Nơi tôi mong đợi để tạo một newfile
tệp thực thi mới sẽ được tạo với nội dung pwd
bên trong.
Nó hoạt động trên Linux, tuy nhiên trên OS X thì không thành công với lỗi sau:
BSD
install
(/usr/bin/install
)cài đặt ::
/dev/fd/63
Loại tệp không phù hợp hoặc định dạngGNU
install
(/usr/local/opt/coreutils/libexec/gnubin/install
)cài đặt: bỏ qua tập tin
/dev/fd/63
, vì nó đã được thay thế trong khi được sao chép
Tại sao điều này không hoạt động trên Unix, nhưng nó hoạt động trên Linux? Tôi đang thiếu thứ gì? Có cách nào để bỏ qua cảnh báo trên bằng cách sử dụng cú pháp khác nhau ( không tạo tệp trong các lệnh riêng biệt và sử dụng chmod
sau đó) không?
Trên cả hai môi trường (Linux & OS X) Tôi có cùng một phiên bản install
:
$ install --version
install (GNU coreutils) 8.23
zsh
, bạn có thể thử =(cmd)
cú pháp thay vì <(cmd)
. Từ người đàn ông: "Nếu =(...)
được sử dụng thay vì <(...)
, thì tệp được truyền dưới dạng đối số sẽ là tên của tệp tạm thời chứa đầu ra của quy trình danh sách. Điều này có thể được sử dụng thay cho <
biểu mẫu cho một chương trình dự kiến lseek
(xem lseek(2)
) trên tệp đầu vào. " Nếu không mkfifo
là đặt cược tốt nhất của bạn.
cp
. Đây chỉ là một ví dụ: permalink.gmane.org/gmane.os.cygwin/129935
install
phiên bản.
install -m755 <(echo pwd) newfile
trên mộtcentOS 7
máy, và nó hoạt động chính xác. sử dụng cú phápinstall -m755 <(echo pwd)> newfile
tạo ra lỗi bạn đang nhận mặc dù. Tôi nhận ra điều này không hoàn toàn giúp bạn, nhưng nó cho thấy tiền đề của bạn là ít nhất. Nó sẽ hoạt động