mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-23 17:41:41 +00:00
[bash/en] More details about pipe and redirection (#4119)
* Update bash.html.markdown * More details about pipe and redirection
This commit is contained in:
parent
5f118e3f61
commit
6467d88012
@ -234,7 +234,8 @@ ls -l # Lists every file and directory on a separate line
|
|||||||
ls -t # Sorts the directory contents by last-modified date (descending)
|
ls -t # Sorts the directory contents by last-modified date (descending)
|
||||||
ls -R # Recursively `ls` this directory and all of its subdirectories
|
ls -R # Recursively `ls` this directory and all of its subdirectories
|
||||||
|
|
||||||
# Results of the previous command can be passed to the next command as input.
|
# Results (stdout) of the previous command can be passed as input (stdin) to the next command
|
||||||
|
# using a pipe |. Commands chained in this way are called a "pipeline", and are run concurrently.
|
||||||
# The `grep` command filters the input with provided patterns.
|
# The `grep` command filters the input with provided patterns.
|
||||||
# That's how we can list .txt files in the current directory:
|
# That's how we can list .txt files in the current directory:
|
||||||
ls -l | grep "\.txt"
|
ls -l | grep "\.txt"
|
||||||
@ -274,7 +275,7 @@ cd # also goes to home directory
|
|||||||
cd .. # go up one directory
|
cd .. # go up one directory
|
||||||
# (^^say, from /home/username/Downloads to /home/username)
|
# (^^say, from /home/username/Downloads to /home/username)
|
||||||
cd /home/username/Documents # change to specified directory
|
cd /home/username/Documents # change to specified directory
|
||||||
cd ~/Documents/.. # still in home directory..isn't it??
|
cd ~/Documents/.. # now in home directory (if ~/Documents exists)
|
||||||
cd - # change to last directory
|
cd - # change to last directory
|
||||||
# => /home/username/Documents
|
# => /home/username/Documents
|
||||||
|
|
||||||
@ -289,9 +290,13 @@ mkdir -p myNewDir/with/intermediate/directories
|
|||||||
# if the intermediate directories didn't already exist, running the above
|
# if the intermediate directories didn't already exist, running the above
|
||||||
# command without the `-p` flag would return an error
|
# command without the `-p` flag would return an error
|
||||||
|
|
||||||
# You can redirect command input and output (stdin, stdout, and stderr).
|
# You can redirect command input and output (stdin, stdout, and stderr)
|
||||||
|
# using "redirection operators". Unlike a pipe, which passes output to a command,
|
||||||
|
# a redirection operator has a command's input come from a file or stream, or
|
||||||
|
# sends its output to a file or stream.
|
||||||
|
|
||||||
# Read from stdin until ^EOF$ and overwrite hello.py with the lines
|
# Read from stdin until ^EOF$ and overwrite hello.py with the lines
|
||||||
# between "EOF":
|
# between "EOF" (which are called a "here document"):
|
||||||
cat > hello.py << EOF
|
cat > hello.py << EOF
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
@ -313,6 +318,8 @@ python hello.py 2> "error.err" # redirect error output to error.err
|
|||||||
|
|
||||||
python hello.py > "output-and-error.log" 2>&1
|
python hello.py > "output-and-error.log" 2>&1
|
||||||
# redirect both output and errors to output-and-error.log
|
# redirect both output and errors to output-and-error.log
|
||||||
|
# &1 means file descriptor 1 (stdout), so 2>&1 redirects stderr (2) to the current
|
||||||
|
# destination of stdout (1), which has been redirected to output-and-error.log.
|
||||||
|
|
||||||
python hello.py > /dev/null 2>&1
|
python hello.py > /dev/null 2>&1
|
||||||
# redirect all output and errors to the black hole, /dev/null, i.e., no output
|
# redirect all output and errors to the black hole, /dev/null, i.e., no output
|
||||||
|
Loading…
Reference in New Issue
Block a user