[[http://tmade.de|Home tmade.de]] [[http://wiki.tmade.de|Home Wiki]] ===== Pipe ===== ==== Pipe to a file ==== (stdin) 0 #Standard input (stdout) 1 #Standard output (stderr) 2 #Standard error output > #redirects standard input 1> #redirects standard output 2> #redirects standard error output Examples: ls /opt/ /otherfile > file 2>&1 #Redirect standard error output and standard output and to "file" sudo -lU ${USER} > /dev/null 2>&1 #Redirect standard error output and standard output and to "/dev/null" ls /opt /otherfile 2> /dev/null #Redirect standard error output to /dev/null programm &> file #Redirect stdout AND stderr to "file" echo "This is a test" 1> /dev/null #Redirects standard output to /dev/null ls xyz > info.txt 2> error.txt #Output of ls will be redirected to "info.txt" (stdout) and if there is an error output (stderr) to "error.txt" ls /opt /otherfolder 2> /dev/null #Output Standartoutput - standarterroroutput will be piped to /dev/null 2> /opt/file #Redirects standard error output 2>> /opt/file #Redirects standard error output (appends) **Explication check:** man -Len -Pless\ +/^REDIRECTION bash ==== Execution Dependency ==== command1 && command2 #Command2 is only executed if command1 completed without errors command1 || command2 #Command2 is only executed if command1 completed with an error command1 && command2 || command3 # ==== Error-handling ==== To check if a process is running/ return code: SERVICE_NAME=apache2 (ps -ef | grep $SERVICE_NAME | grep -v grep && echo "$SERVICE_NAME is running") || echo "$SERVICE_NAME is not running" ps -ef | grep $SERVICE_NAME | grep -v grep && RESULT=running || RESULT=error Another example: BACKUPLOG=/var/log/mysql/backup.log ERRLOGFILE=/var/log/mysql/error.log TARGET_FOLDER=/backup/${HOST} HOST="mytesthost" innobackupex --apply-log $TARGET_FOLDER && /bin/echo "`/bin/date +'%d-%m-%Y %H:%M:%S'`: Backup successful." >> $BACKUPLOG || /bin/echo "`/bin/date +'%d-%m-%Y %H:%M:%S'`: Backup failed." >> $ERRLOGFILE ==== Pipe to a programm ==== Output a command as input to another command: cat /etc/passwd | cut -d: -f1 cat /etc/group |cut -d: -f1 command1 | command2 ls -l /etc | less Output to stdout and a file at the same time: ls -l | tee outputfilename ls -l | tee -a outputfilename #Append to file outputfilename