Mac OS Xの端末でコマンドを組み合わせる


12

私はターミナルの1行に次のように書きたいのですが、あるいはファイルを作成してパーミッションを設定するより短い方法があるならコメントしてください。

sudo touch .htaccess
sudo chmod 766 .htaccess

とても有難い

回答:


21

「&&」を使用最初のコマンドが成功した場合は、条件付きで2番目のコマンドを実行します。

sudo touch .htaccess&& sudo chmod 766 .htaccess


2
私はこの解決策を好む理由は2つあります。 && 一般的に ; 最初のコマンドが失敗した場合に停止するようにする。 sudoそれらを一つにまとめるのではなく sudo 必要以上に高い特権でより多くのコードを呼び出して実行する。
Chris Page

やりたい場合 scp admin@host.com:file1 && scp admin@host.com:file2 && scp admin@host.com:file3 そして私は自分のSSHキーにパスワードを設定しました、それは常にパスワードを私に求めています、それを組み合わせる方法はありますか?
Akshay Khale

2

いいえそうではありません。

あなたが作ることができる唯一のもの、あなたは一つの中にこれら二つのコマンドを組み合わせることができます sudo

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

もう1つの解決策(1つの外部呼び出しだけでなく2つのコマンドを使用)。

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

1
良い提案ですが、私はこれらを使うように修正します && の代わりに ;しかし。また、一般的に私はちょうど2つを使用します sudo なぜなら、それらを一緒に実行する必要がある正確なプログラム(この場合はtouchとchmod)ではなく、シェル全体を高い特権で実行するのはやり過ぎで危険だからです。
Chris Page

はい、あなたは正しいです、それは良いでしょう
Igor Chubin

1

セミコロンを使用すると、次のように複数のコマンドを1行に収めることができます。

sudo touch .htaccess; sudo chmod 766 .htaccess


1
これは良い提案ですが、使用する習慣を身に付けるのは良い考えです && の代わりに ; 相互依存コマンドを実行しているときに、コマンドが失敗した場合にコマンドが停止するようにします。
Chris Page

0

コマンドをセミコロンで区切ります。 (;)

echo firstname; echo lastname;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.