变量替换:用变量的值替换变量名:echo"$AGE"
命令替换:用命令的执行结果替换命令:$(COMMAND)='COMMAND'
echo "Today is 'date+%F'"
touch file-'date+%F-%H-%M-%S'
seq 用来列出一系列数
seq 5 1 2 3 4 5
seq 1 10 1 2 3 4 5 6 7 8 9 10
seq 10 2 100
NUMSEQ=’seq 1 10'
echo $NUSEQ
变量:配置文件
bash:
全局:
/etc/profile,/etc/profile.d/*, /etc/bashrc
个人
~/.bash_profile ~/.bashrc ~/.bash_history
bash的运行方式:
交互式:先读取/etc/profile-->/etc/profile.d/*--
>.bash_profile-->~/.bashrc-->/etc/bashrc
非交互式:~/.bashrc-->/etc/bashrc-->/etc/profile.d/*
profile 类
设定环境变量
运行命令或脚本
bashrc类
设定本地变量
设定命令别名
source 文件名 = . 文件名 让bash重新读取配置文件
命令别名:
alias cls=clear 将clear换为cls
unalias cls 将cls撤销
alias cdnet="cd /etc/sysconfig/"
bash脚本解释器:
shell脚本:
每一个脚本第一行必须加#!/bin/bash
练习:
#!/bin/bash
mkdir /tmp/test
touch /tmp/test/file-'date +%F-%H-%M-%S'
cp -r /etc/profile.d /tmp/test2
DESTDIR='/tmp/test'
mkdir $DESTDIR
touch %DESTDIR/file-'date+%F-%H-%M-%S'
cp -r /etc/profile.d/ $DESTDIR
nuset DESTDIR 撤销变量
输入输出重定向.管道
程序的默认输入设备,叫标准输入,stdin,键盘,0
程序的默认输出设备,叫标准输出,stdout,minitor,1
程序的默认错误信息输出设备,标准错误输出,stderr ,minitor,2
输出重定向:
command>FILE 覆盖输出(慎重)
set -C 关掉标准输入输出
set +C 打开标准输入输出
set >|强制覆盖
command >>FILE 追加输出
/dev/null 数据黑洞
date >/dev/null
echo $? 显示为0,则表示执行成功
/dev/zero 泡泡机,吐0
/dev/urandom 随机数生成器
输入重定向
COMMAND <FILE
tr 'a-z' 'A-Z' </etc/passwd
COMMAND <<"EOF"
echo -e "the fist line.\nwww.baidu.com.\nwww.qq.com" >/tmp/test
cat >>/tmp/test1
<the fist line
<www.baidu.com
<www.qq.com
<EOF
错误输出:
COMMAND 2>FILE
COMMAND 2>>FILE
正确或错误统统重定向
COMAND >FILE 2>&1
COMMAND &>FILE
管道:只传递正确信息
COMMAND1 |command2 |COMMAND3
ehco "the first line " |tr 'a-z' 'A-Z'
echo "the first line " |tr 'a-z' 'A-Z' |cut -d" " -f2|tr 'A-Z'
'A-Z'
RESULT=echo "the first line " |tr 'a-z' 'A-Z'
echo $RESULT
file 'ls /var/log' |cut -d: -f2|tr -d' ' |sort
uniq 对于连续的内容,只保留一个
tee
command |tee file |command
ls /etc |tee /tmp/tee.out |gr 'a-z' 'A-Z'
本文转自 穿越防火墙 51CTO博客,原文链接:http://blog.51cto.com/sjitwant/1399186