kết hợp các lệnh trên thiết bị đầu cuối trên Mac OS X


18

Tôi muốn viết như sau trên một dòng trong thiết bị đầu cuối hoặc nếu có một cách ngắn hơn để tạo một tệp và đặt quyền thì xin vui lòng bình luận.

sudo touch .htaccess
sudo chmod 766 .htaccess

Nhiều đánh giá cao

Câu trả lời:


31

Sử dụng '&&' để chạy lệnh thứ hai một cách có điều kiện nếu lệnh đầu tiên thành công.

sudo touch .htaccess && sudo chmod 766 .htaccess


2
Tôi thích giải pháp này vì hai lý do: 1. &&nói chung là tốt hơn ;để nó dừng lại nếu lệnh đầu tiên thất bại, 2. nói chung tốt hơn là chỉ chạy chương trình cụ thể cần thiết sudo, thay vì cố gắng kết hợp chúng thành một lệnh sudogọi và chạy duy nhất nhiều mã hơn với các đặc quyền nâng cao hơn mức cần thiết.
Chris Trang

Điều gì sẽ xảy ra nếu tôi muốn làm scp admin@host.com:file1 && scp admin@host.com:file2 && scp admin@host.com:file3và tôi đã đặt mật khẩu trên khóa SSH của mình, nó đang hỏi tôi mật khẩu mọi lúc, có cách nào để kết hợp nó không ???
Akshay Khale

2

Không có nó không phải là.

Điều duy nhất bạn có thể thực hiện, bạn có thể kết hợp hai lệnh này trong một sudo:

sudo sh -c 'touch .htaccess && chmod 766 .htaccess'

Một giải pháp khác (không thực hiện một cuộc gọi bên ngoài, nhưng cũng có hai lệnh):

sudo sh -c 'umask 011 && touch .htaccess'

1
Mặc dù vậy, những gợi ý tốt, nhưng tôi sẽ sửa lại những thứ này để sử dụng &&thay vì ;. Ngoài ra, nói chung tôi sẽ chỉ sử dụng hai sudolệnh, vì sẽ quá nguy hiểm và nguy hiểm hơn khi chạy toàn bộ hệ vỏ với các đặc quyền nâng cao, thay vì chỉ các chương trình chính xác cần chạy với chúng (trong trường hợp này là chạm và chmod).
Chris Trang

Vâng, bạn đã đúng, nó sẽ tốt hơn
Igor Chubin

1

Dấu chấm phẩy sẽ cho phép bạn khớp nhiều lệnh trên một dòng như thế này:

sudo touch .htaccess; sudo chmod 766 .htaccess


1
Đó là một gợi ý tốt, mặc dù đó là một ý tưởng tốt để tập thói quen sử dụng &&thay vì ;khi chạy các lệnh phụ thuộc lẫn nhau để nó dừng lại nếu lệnh bị lỗi.
Chris Trang

0

tách các lệnh bằng dấu chấm phẩy. (;)

Thí dụ

echo firstname; echo lastname;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.