shell总结
1、对于每个进程,在其运行时的环境变量可以使用下面的命令来查看:
pgrep java cat /proc/$PID/environ #替换null字符为换行显示 cat /proc/12501/environ | tr '\0' '\n'
2、export命令用来设置环境变量。至此之后,从当前shell脚本执行的任何程序都会继承这个变量。我们可以按照自己的需要,在执行的应用程序或者shell脚本中导出特定的变量。 常见环境变量:HOME、PWD、USER、UID、SHELL等
$ PATH="$PATH:/home/user/bin" $ export PATH $ echo $PATH /home/slynux/bin:/usr/local/sbin:/usr/ local/bin:/usr/sbin:/usr/bin:/ sbin:/bin:/usr/games:/home/user/bin
3、UID是一个重要的环境变量,可以用于检查当前脚本是以超级用户还是以普通用户的身份运行的。
if [ $UID -ne 0 ]; then
4、设置终端提示符,我们可以利用PS1环境变量来定制提示文本。默认的shell提示文本是在文件~/.bashrc中的某一行设置的。有一些特殊的字符可以扩展成系统参数。例如:\u可以扩展为用户名,\h可以扩展为主机名,而\w可以扩展为当前工作目录。
$PS1="[\u@\h \w]"
5、可以用普通的变量赋值方法定义数值,这时,它会被存储为字符串。然而,我们可以用一些方法使它能像数字一样进行处理。
1)let命令可以直接执行基本的算数操作。当使用let时,变量名之前不需要再添加$
let result=no1+no2 echo $result
2)操作符[]的使用方法和let命令类似, 在[]中也可以使用$前缀
result=$[ no1 + no2 ] result=$[ $no1 + 5 ]
3)也可以使用(())
result=$(( no1 + 50 ))
4)expr同样用于基本算数操作
result=`expr 3 + 4` result=$(expr $no1 + 5)
6、文件描述符是与一个打开的文件或数据流相关联的整数。文件描述符0、1以及2是系统预留的。0 -- stdin(标准输入),1 -- stdout(标准输出),2 -- stderr(标准错误)。来自stderr的输出被丢到文件/dev/null中。/dev/null是一个特殊的设备文件,这个文件接收到的任何数据都会被丢弃。
echo "This is a sample text 1" > temp.txt echo "This is a sample text 1" >> temp.txt ls + 2> out.txt cmd 2>stderr.txt 1>stdout.txt cat a* 2> err.txt some_command 2> /dev/null ##
有一个巧妙的方法可以一方面将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin。这一切都可以使用tee来实现。
cat a* | tee out.txt | cat -n
tee命令接收到来自stdin的数据。它将stdout的一份副本写入文件out.txt,同时将另一份副本作为后续命令的stdin。命令cat -n将从stdin中接收到的每一行数据前加上行号并写入stdout