ターミナルで複数のコマンドを組み合わせる方法は?


25

次のコマンドがあります。

cd import
zcat urls1.sql.gz | mysql -u root -p urls
cd /var/www/project1/
nano 1.php

今のところ、私はそれを一つずつ実行しています。

これらのコマンドを1行で組み合わせる方法はありますか?


3
この質問に対して何か研究をしましたか?
don.joey

それは私の質問ではありませんでした。ちょうど30分間のグーグルで答えが得られたでしょう。したがって、私はあなたがすでに見つけたものがあるとしたら、それを疑問に思っていました。
don.joey

私があなたの質問を否定したと思う理由は何ですか?あなたの怒りを無視します。補足として、「どちらが良いか:1行で複数のコマンドを使用;または&&実行する」という質問のがはるかに優れており、より多くの研究があり、非常に多くの賛成票を集めている可能性があります。
don.joey

askubuntu.com/questions/334994/…で、この質問のより一般的なバリエーションを入手できます。これは、前のコメントで言及した質問とまったく同じです。
don.joey

ギリを心配しないでください。質問の本質は興味深いです。私はそれの一般的なバリアントを作成する努力をしました。
don.joey

回答:


33

はい、次のようにセミコロンで区切ります:

dir; ls -l

ほとんどのlanugauges / shellsは、セミコロンを使用してコマンドの終わりを示し、左から右に評価しながら新しいものを開始します。

または、@ RobieBasakが推奨するように、代わりに&&を使用します。コーディング事故を防ぐため。

dir && ls -l

23
&&代わりに使用することをお勧めします;。これにより、前のコマンドが失敗しなかった場合にのみ、後続のコマンドが実行されます。これにより、厄介な結果が回避されます。たとえば、存在しない場合、またはスペルを間違えたcd /somewhere_else; rm -Rf *場合、悲惨なことをする可能性があり/somewhere_elseます。cd /somewhere_else && rm -Rf *これからあなたを守ります。
ロビーバサック

2
「&&」ソリューションは非常に優れているため、この回答の最初の推奨事項です。回答を編集して、より良い回答を1位に昇格してください。
ケレムベイドアン

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