Skip to content

Linux metacharacters

  1. ; : Separates commands.

    command1 ; command2 # Run command1, then run command2 regardless of whether command1 succeeded.
    

  2. & : Background execution.

    command & # Runs "command" in the background.
    

  3. && : AND operator.

    command1 && command2 # Run command1, then run command2 only if command1 succeeded.
    

  4. || : OR operator.

    command1 || command2 # Run command1, then run command2 only if command1 failed.
    

  5. | : Pipe operator.

    command1 | command2 # Output of command1 is passed as input to command2.
    

  6. () : Command group.

    (command1; command2) # Group commands into a subshell.
    

  7. {} : Command block.

    { command1; command2; } # Group commands in the current shell.
    

  8. $() : Command substitution.

    echo $(command) # Runs "command" and substitutes its output in place.
    

  9. `` (Backticks): Another way of command substitution.

    echo `command` # Same as above, but this syntax can be harder to spot.
    

  10. > : Output redirection.

    command > file # Redirect the output of command to a file, overwriting the file.
    

  11. >> : Append output.

    command >> file # Append the output of command to a file.
    

  12. < : Input redirection.

    command < file # Use "file" as input for command.
    

  13. 2> : Error redirection.

    command 2> file # Redirect the error output of command to a file, overwriting the file.
    

  14. 2>> : Append error output.

    command 2>> file # Append the error output of command to a file.
    

  15. &> : Redirect all output (stdout and stderr).

    command &> file # Redirect all output of command to a file, overwriting the file.
    

  16. * : Wildcard.

    ls *.txt # List all .txt files.
    

  17. ? : Single character wildcard.

    ls ?.txt # List all .txt files with a single character name.
    

  18. [] : Character class.

    ls [ab]*.txt # List all .txt files starting with 'a' or 'b'.
    

  19. ! : Negation.

    command1; ! command1 # Execute command1, then execute command1 again only if the first execution failed.
    

  20. # : Comment.

    # This is a comment in Bash.
    

  21. \$ : Escape character.

    echo \$HOME # prints $HOME, not the value of the variable.
    

  22. \" : Escape character for quotes.

    echo "This is a \"quote\"" # prints This is a "quote".
    

Be careful, especially when using redirections, as they can overwrite your files without warning if you're not careful.