<linux就该这么学>第三章 管道符、重定向与环境变量
通过这些内容可以让命令的使用更加的自由、方便
输入、输出重定向
重定向是将文件和命令之间的操作符
输入重定向
将文件的内容,导入到命令中
# 统计文件的行数,输入到文件中 >>> [root@localhost ~]# cat test.txt you are right [root@localhost ~]# wc -l < test.txt 1
输入重定向
将命令的输出重定向到文件中
# 演示使用覆盖和追加输出 >>> [root@localhost ~]# cat a.txt 1 [root@localhost ~]# cat test.txt you are right [root@localhost ~]# wc -l < test.txt > a.txt [root@localhost ~]# cat a.txt 1 [root@localhost ~]# wc -l < test.txt > a.txt [root@localhost ~]# cat a.txt 1 [root@localhost ~]# wc -l < test.txt >> a.txt [root@localhost ~]# cat a.txt 1 1
管道符
管道符是命令和命令直接的操作符,将前一个命令的输出结果作为下一个命令的标准输入。
命令1 | 命令2
## 使用管道符修改用户的密码
echo "linuprobe" | passwd --stdin root
## 使用自定义分节符来接受用户的输入,并发送邮件
mail -s "readme" root@linuxprobe.com << over
tip:
可以使用多个管道符进行命令的拼接
通配符
>>>
[root@localhost ~]# ls -l *.txt
-rw-r--r--. 1 root root 4 Jan 18 01:21 a.txt
-rw-r--r--. 1 root root 0 Jan 17 01:12 b.txt
-rw-r--r--. 1 root root 15 Jan 10 19:35 test.txt
[root@localhost ~]# ls -l [a,b,c].txt
-rw-r--r--. 1 root root 4 Jan 18 01:21 a.txt
-rw-r--r--. 1 root root 0 Jan 17 01:12 b.txt
[root@localhost ~]# ls -l {a,b,c}.txt
ls: cannot access 'c.txt': No such file or directory
-rw-r--r--. 1 root root 4 Jan 18 01:21 a.txt
-rw-r--r--. 1 root root 0 Jan 17 01:12 b.txt
常见通配规则
常用的转义字符
[root@localhost ~]# PRICE= 5
bash: 5: command not found...
[root@localhost ~]# PRICE=5
[root@localhost ~]# echo 'price is $PRICE'
price is $PRICE
[root@localhost ~]# echo "price is $PRICE"
price is 5
[root@localhost ~]# echo "price is $$PRICE"
price is 2548PRICE
[root@localhost ~]# echo "price is \$$PRICE"
price is $5
[root@localhost ~]# echo `uname`
Linux
重要的环境变量
命令的执行方式:
路径形式直接执行
别名的形式执行
内部命令
外部命令
使用别名alias
通过别名,可以将复杂的命令简化
>>>
[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'
[root@localhost ~]# alias test=ls
[root@localhost ~]# test
anaconda-ks.cfg c Downloads Pictures test.txt
a.txt Desktop initial-setup-ks.cfg Public Videos
b.txt Documents Music Templates
[root@localhost ~]# unalias test
[root@localhost ~]# test
判断命令是否为外部命令
>>>
[root@localhost ~]# type cd
cd is a shell builtin
[root@localhost ~]# type uname
uname is /usr/bin/uname
环境变量的使用
linux可以为不同的用户提供不同的运行环境,一个变量对于不同的用户值可能不同
当Bash解释外部命令的时候,会在用户定义的变量PATH中进行查找,PATH由多个路径值组成,每个路径使用冒号间隔。
[root@localhost ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/root/bin
[root@localhost ~]# PATH=$PATH:/root/c
[root@localhost ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/root/bin:/root/c
变量的使用
# 定义变量
WORKDIR=/home/workdir
# 使用变量
echo $WORKDIR
# 提高变量的作用域,将其作为全局变量,其他用户也可以使用
export WORKDIR
# 显示当前用户的所有变量
env
# 显示Bash中的所有变量,包括用户的变量
set
License:
CC BY 4.0