shell常用命令

变量
1 本地变量
localtest=“test”
echo ${localtest} or echo $localtest
读取所有本地变量
set命令
只读变量
readonly localtest 不能再次赋值了
readonly命令
查看当前shell下面有那几个只读变量
readonly -p

环境变量
cat /etc/profile  //环境变量目录
export chinalab="shenzhen"
env or export //查看当前环境目录
readonly  //设置只读的环境变量

区别:本地变量不能运行到所有子进程中,环境变量可以
显示单个变量取值
echo $变量名称 or ${变量名称}
例如:
[root@bogon root]# testvar="jingjing"
[root@bogon root]# echo $testvar
jingjing
${变量名称:+值}
如果设置了变量名称,则显示变量值,否则,为空
[root@bogon root]# echo ${testvar:+"chinalab"}
chinalab
[root@bogon root]# echo ${1:+"chinalab"}
${变量名称:?值}
如果未设置变量名称,则显示错误信息:值
[root@bogon root]# echo ${testvar1:?"no define"}
-bash: testvar1: no define
${变量名称:-值}
未设置便令名称,这显示其值,设置变量名称,则返回
原来的值
[root@bogon root]# echo ${testvar2:-"ddddddd"}
ddddddd
[root@bogon root]# testvar2=22222
[root@bogon root]# echo ${testvar2:-"ddddddd"}
22222
${变量名称:=值}
如果未设置值,这设置值,并显示,如果已经设置了,
则显示以前的值
[root@bogon root]# echo ${testvar2:="sa"}
22222
[root@bogon root]# echo ${testvar3:="sa"}
sa

清除变量
unset
[root@bogon root]# echo $testvar
jingjing
[root@bogon root]# unset testvar
[root@bogon root]# echo $testvar

[root@bogon root]#
注意:readyonly 不能取消变量

位置变量$0,$1,....$9
脚本中位置参数
注意:$0为脚本名字,参数从$1开始,依次类推
#!/bin/bash
#parm
echo "$0为文件名称: $0"
echo "$1第一个参数: $1"
~
执行结果:
[root@bogon sun]# bash parm sasasasa
parm为文件名称: parm
sasasasa第一个参数: sasasasa
向系统命令传递参数是一样的

标准变量
EXINIT
HOME   //当前目录
IFS    //设置分隔符,默认为tab或者空格,可以自定义
LOGNAME //当前登录名
MAIL   //当前用户存储邮箱放在哪里
MAILCHECK //每隔多少秒检查新的邮件
MAILPATH //存储那几个文件中
TERM    //终端类型
PATH   //可执行文件寻找的路径
TZ   //表示时区
PS1  //当前显示格式
PS2  //定义多行的格式
PWD  //表示当前目录


shift 命令
移动变量参数

引号:
双引号可引用除了$,`,
单引号:没有任何特殊的命令,所有全部当做字符串
反引号:执行系统的命令,引号内作为系统命令执行
反引号:防止shell误解特殊含义的字符

运算符
位运算符
$[2+3] 得到具体的数值
赋值运算符
[root@bogon sun]#  var=65
[root@bogon sun]# let var+=4;
[root@bogon sun]# echo $var
69

read 读取键盘
#!/bin/bash
#readname
echo -n "First Name:"  //-n 不换行
read firstname
echo -n "Last Name:"
read lastname
echo -e "your first name is:${firstname}\n"
echo -e "your last name is : ${lastname}\n"

[root@bogon sun]# chmod 775 readname
[root@bogon sun]# ./readname
First Name:china
Last Name:sun
your first name is:china

your last name is : sun

cat 命令
简单而通用的命令,可以显示文件内容
注意:他不会停下来,而会输出所有,如果想输出第一页,请使用管道


[root@bogon sun]# cat findf readname >myfile123
[root@bogon sun]# cat myfile123
find /home/chinaitlab/shell -name $1 -print
#!/bin/bash
#readname
echo -n "First Name:"
read firstname
echo -n "Last Name:"
read lastname
echo -e "your first name is:${firstname}\n"
echo -e "your last name is : ${lastname}\n"
分页显示
cat ls.txt|more 用more分页

管道运算符,把一个命令的输出作为下一个命令的输入
[root@bogon sun]# df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2              7123640   5017556   1744220  75% /
/dev/sda1               101089     15041     80829  16% /boot
none                    256600         0    256600   0% /dev/shm
[root@bogon sun]# df -k|awk '{print $1}'
Filesystem
/dev/sda2
/dev/sda1
none
[root@bogon sun]# df -k|awk '{print $1}' |grep -v FIlesystem
Filesystem
/dev/sda2
/dev/sda1
none
[root@bogon sun]# df -k|awk '{print $1}' |grep -v Filesystem
/dev/sda2
/dev/sda1
none
[root@bogon sun]#

tee命令 吧输出端副本输送到标准输出,另一个副本拷贝到相应的文件中
tee -a file
如果希望看到输出的同时,将其存入一个文件,这个命令在合适不过了
一般用于管道之后
who |tee -a who.txt
注意:-a是追加,不加-a就覆盖掉了
[root@bogon sun]# df -k|awk '{print $1}' |grep -v Filesystem |tee -a pration.txt
/dev/sda2
/dev/sda1
none
[root@bogon sun]# cat pration.txt
/dev/sda2
/dev/sda1
none

文件重定向

cat score.txt|awk  `$0 "/218.79.131.96/`|grep "php"|wc -l

猜你喜欢

转载自sunjia-704471770-qq-com.iteye.com/blog/1439809