shell
查看自己正在使用什么 shell:
echo $SHELL
将变量导出到环境变量:
HARLEY=cool
export HARLEY
没有简单的方法来区分 shell 变量和环境变量,使用大写可以使变量名突出。
显示环境变量:
env
printenv
显示shell变量:
set
显示变量的值,没有歧义,就可以把花括号去掉。
echo ${ACTIVITY}ing
echo $ACTIVITY
当使用变量值的时候,使用花括号是一种好习惯,即便不是必需,这样做可以增强命令的可读性。
创建变量:
HARLEY=cool
WEEDLY="a cool cat"
修改变量的值:
HARLEY=smart
引用元字符最直接的方法,就是在元字符前面放一个反斜线\
,下面这个命令,如果没有反斜线,那么 ;
解释成命令的末尾,然后 come
解释成一条新的命令:
echo It is warm and sunny\; come over and visit
使用双引号引用一串字符,但是保留$
、\``、
` 的特殊含义。单引号是强引用,单引号内没有字符拥有有特殊的含义。
是不是内置命令:
type command ...
history
fc -l
# c-shell
history
重新执行编号为 24
的:
fc -s 24
# c-shell
!24
重新执行上一条命令:
fc -s
!!
登录文件 .bash_profile
和 .bash_login
或者 .profile
(Bash POXIS),存放着每次登录时希望能够自动执行的命令。
环境文件 .bashrc
,存放着所有希望在新 shell 启动时自动执行的命令。
注销文件 .bash_logout
rc 代表 run commands
标准输入
sort
程序期望用户从键盘(标准输入)输入数据,每次一行,很多时候也希望重定向标准输入,使其能够从文件中读取数据:
sort < names.txt
默认情况下,Unix 为每个进程提供3个预定义的文件描述符,0:标准输入,1:标准输出,2:标准错误。
command 0< inputfile
command 1> outputfile
command 2> errorfile
在 C-shell 中重定向标准错误:
command >& outputfile
正常错误和错误消息发送到一个文件中:
sort 1> output 2>&1
同时重定向标准输出和标准错误:
sort &> output
sort >& output
抛弃输出:
update > /dev/null
update 2> /dev/null
# 抛弃所有输出
update > /dev/null 2>&1
子 shell
在子 shell 中运行命令:
(command)
管道线分流
cat
的输出保存在 d1
和 d2
文件中,同时 cat
的输出还管道传送给 grep
:
cat name1 name2 | tee d1 d2 | grep Harley
# -a 参数表示追加
cat name1 name2 | tee -a backup | grep Harley