menggabungkan perintah pada terminal di Mac OS X

18

Saya ingin menulis yang berikut pada satu baris di terminal atau jika ada cara yang lebih pendek untuk membuat file dan mengatur izin maka silakan lakukan komentar.

sudo touch .htaccess
sudo chmod 766 .htaccess

Sangat dihargai

Derren
sumber

Jawaban:

31

Gunakan '&&' untuk menjalankan perintah kedua secara kondisional jika yang pertama berhasil.

sentuh sudo .htaccess && sudo chmod 766 .htaccess

sapu terbang
sumber
2
Saya lebih suka solusi ini karena dua alasan: 1. &&umumnya lebih baik daripada ;sehingga berhenti jika perintah pertama gagal, 2. umumnya lebih baik hanya menjalankan program spesifik yang diperlukan sudo, daripada mencoba menggabungkannya ke dalam satu sudopermintaan dan menjalankan lebih banyak kode dengan hak yang lebih tinggi dari yang diperlukan.
Chris Page
Bagaimana jika saya ingin melakukan scp [email protected]:file1 && scp [email protected]:file2 && scp [email protected]:file3dan saya telah menetapkan kata sandi pada kunci SSH saya, itu meminta saya untuk kata sandi setiap saat, apakah ada cara untuk menggabungkannya ???
Akshay Khale
2

Tidak, bukan itu.

Satu-satunya hal yang dapat Anda buat, Anda dapat menggabungkan dua perintah ini dalam satu sudo:

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

Solusi lain (tanpa hanya satu panggilan eksternal, tetapi juga dengan dua perintah):

sudo sh -c 'umask 011 && touch .htaccess'
Igor Chubin
sumber
1
Saran yang bagus, tetapi saya akan merevisinya untuk digunakan &&sebagai ganti ;. Juga, secara umum saya hanya akan menggunakan dua sudoperintah, karena itu berlebihan dan berisiko untuk menjalankan seluruh shell dengan hak istimewa yang tinggi, daripada hanya program yang tepat yang perlu dijalankan dengan mereka (dalam hal ini, sentuh dan chmod).
Chris Page
Ya, Anda benar, itu akan lebih baik
Igor Chubin
1

Tanda titik koma akan memungkinkan Anda menyesuaikan banyak perintah pada satu baris seperti ini:

sudo touch .htaccess; sudo chmod 766 .htaccess

Vickash
sumber
1
Itu saran yang bagus, meskipun itu adalah ide yang baik untuk membiasakan diri &&daripada menggunakan ;ketika menjalankan perintah yang saling tergantung sehingga berhenti jika suatu perintah gagal.
Chris Page
0

pisahkan perintah dengan titik koma. (;)

Contoh

echo firstname; echo lastname;
Chetan Laddha
sumber