36

I have the following commands.

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

As of now I'm executing it one by one.

Is there a way to combine those commands in one line?

6
  • 3
    Did you do any research for this question?
    – don.joey
    Aug 20, 2013 at 14:33
  • That was not my question. It is just that half a minute of googling would have given you the answer. Hence, I was wondering what you had already found, if anything.
    – don.joey
    Aug 20, 2013 at 15:04
  • What makes you think I downvoted your question? I will neglect your anger. As a side-note, the question "which one is better: using ; or && to execute multiple commands in one line" is a lot better, has more research and would likely have attracted a great many upvotes.
    – don.joey
    Aug 20, 2013 at 16:25
  • There is a more generic variant of this question available at askubuntu.com/questions/334994/…. It deal with exactly the question I mention in the previous comment.
    – don.joey
    Aug 20, 2013 at 16:42
  • Don't worry Giri. The essence of the question is interesting. I took the effort of making a generic variant of it.
    – don.joey
    Aug 20, 2013 at 16:44

2 Answers 2

42

Yes, separate with a semi-colon like so:

dir; ls -l

Most lanugauges/shells use the semi-colon to signify the end of a command and to start new while evaluating from left to right.

Or as @RobieBasak recommends, use && instead of ; to guard against coding accidents.

dir && ls -l
2
  • 26
    It's a good idea to use && instead of ;. This ensures that subsequent commands are only executed if previous commands have not failed. This avoids some awkward consequences. For example: cd /somewhere_else; rm -Rf * could do something disastrous if /somewhere_else doesn't exist or you mis-spell it; cd /somewhere_else && rm -Rf * protects you from this. Aug 20, 2013 at 14:42
  • 4
    The '&&' solution is so good, it should be the first recommendation in this answer. Please edit your answer and promote the better answer to first place. Mar 16, 2017 at 16:02
10

This illustrates more:

  1. A ; B – Run A and then B, regardless of the success or failure of A

  2. A && B – Run B only if A succeeded

  3. A || B – Run B only if A failed

source :https://www.howtogeek.com/269509/how-to-run-two-or-more-terminal-commands-at-once-in-linux/

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .