Mã của tôi để tạo một tập lệnh thực thi
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
Mã của tôi để tạo một tập lệnh thực thi
touch script.sh && echo "echo 'Hello World'" > script.sh && sudo chmod +x script.sh
Câu trả lời:
Bạn có thể bỏ toàn bộ touch
lệnh và không cần sử dụng sudo
. Để rút ngắn dòng lệnh hơn nữa, bạn có thể sử dụng bash
Mở rộng Lịch sử để lưu tên tệp lần thứ hai và bỏ qua các khoảng trắng không cần thiết:
echo "echo 'Hello World'" >script.sh&&chmod +x !#:3
Lịch sử mở rộng thay thế !#:3
bằng từ thứ tư từ dòng lệnh hiện tại, trong trường hợp của bạn là tên tệp script.sh
. Tất nhiên điều này cần phải được điều chỉnh trong trường hợp bạn sửa đổi lệnh đầu tiên, ví dụ:
>script.sh echo "echo 'Hello World'"&&chmod +x !#:1
Lưu ý rằng một tập lệnh hợp lệ cần một shebang :
>script.sh echo -e "#!/bin/bash\necho 'Hello World'"&&chmod +x !#:1
Nếu bạn cần chuỗi lệnh này thường xuyên hơn, tôi khuyên bạn nên xác định hàm , theo cách này, bạn chỉ cần nhập tên hàm. Một cách thích ứng tương tự - mặc dù dài hơn là cách sử dụng một biến giữ tên tệp:
f=script.sh;>$f echo "echo 'Hello World'"&&chmod +x $f
Nếu tên tệp của bạn chứa các ký tự đặc biệt, đừng quên trích dẫn chúng đúng cách .
Các install
lệnh (một phần của GNU coreutils cùng với cp
, mv
, rm
, vv) có thể sao chép một tập tin đồng thời cũng thiết lập quyền sở hữu và quyền của mình và tạo ra các thư mục mẹ khi cần thiết. Theo mặc định, nó sẽ làm cho tập tin mới thực thi. Nó không hiểu ' -
' nhưng /dev/stdin
có thể được sử dụng thay thế:
install /dev/stdin script.sh <<< "echo Hello World"
Ở trên sử dụng ' chuỗi ở đây ' để cung cấp văn bản trên stdin, ngắn hơn một chút so với đường dẫn. Các đối số echo
không cần trích dẫn trừ khi chúng chứa các ký tự có ý nghĩa đặc biệt.
install <(echo echo Hello World) script.sh
Bạn cũng có thể bỏ toàn bộ chmod và sử dụng umask thay vì trước tiếng vang. Nên tiết kiệm cho bạn một vài byte. Shebang là tùy chọn miễn là bạn sử dụng các lệnh được hiểu bởi mọi shell (chủ yếu là bourne và C).
umask
mặc định , không thể sử dụng để thiết lập bit thực thi ...
sudo
một cách tiết kiệm. Tập thói quen ném nó xung quanh có thể nguy hiểm. Trong trường hợp này, bạn sở hữu tập lệnh bạn đã tạo để bạn có thể làm bất cứ điều gì bạn muốn với các quyền, không cần sudo.