linux shell及脚本编写,环境变量及重定向

一、
1、命令行编辑(emas风格和vi风格)
ctrl+a  (moves to beginning of line)
ctrl+e  (moves to end of line)
ctrl+u (deletes to begining of line)
ctrl+k (deletes to end of line)
ctrl+<-或-> (一次移动一个单词)
ctrl+l (=clear)清屏
命令行编辑模式,默认为emacs,变为vi风格:
set -o vi

2、File Globbing文件名通配
* 匹配任意个/长字符 >=0
?匹配任意单个字符 =1
[]指定范围内任意单个字符 =1   如:[abc]

[0-9]数字
[a-z]小写字母
[A-Z]大写字母

CHARATER CLASS
[:alpha:]=[a-zA-Z](字母表)charaters in a predefined charater class can be matched
[:upper:]=[A-Z]
[:lower:]=[a-z]
[:digit:]=[0-9]
[:alnum:]=[a-zA-Z0-9]
[:punct:]标点符号[:space:]空格
[^abc]matches any one character except those in the list

引用,如:[[:alpha:]]
file 查看文件内容类型
~当前用户家目录  如:ls ~redhat
{}  如:touch {a,b}_{c,d}


二、
shell:
bsh(sh) 以前标准默认shell(bourn于bell实验室开发)目前unix默认
csh(Bill Joy编写)改进bsh,但麻烦
ksh(Korn)非免费----》GNU ksh
bash(bourn again shell)GPL目前默认shell
zsh功能更强大先进,体积大

软件编程:
编译类:源代码-->目标代码,c,c++,JAVA  -------速度快,面向程序,操作系统
脚本类:源代码---解释器,bash(本身是编译类)---速度慢,面向应用
perl、python(完全面向对象,构建大型应用)、ruby(on rail)构建web应用
注:cat一次显示一个或多个文件内容(不带参数,将输入内容显示出来)
-n显示行号
-v显示非打印字符,如回车
如:cat /etc/shells查看当前系统所有可用shell总类
切换shell:
which ksh 查看ksh在哪
ksh    切换到ksh
exit   退出ksh

三、
变量(命名的内存空间)
变量类型:int(4B) float char 等。
bash:本地变量(局部)
           环境变量(共享)export NAME导出变量,为环境变量
           位置参数变量,如:$1
           特殊变量,如:echo $?        echo $$ 当前进程号
   


NAME=jay
set CLASS=3
unset CLASS撤销
readonly不可撤销变量
NAME=jay
readonly NAME

引用:取变量值,“”弱引用(变量替换),‘’强引用(不做变量替换),``命令引用(反引号)   
   如:echo “$NAME”  (自动换行)
     printf “%s\n” $NAME
          \t制表符 
规范化:echo ${ANIMAL}  echo ${ANIMAL}s 
   FILE=`ls /var` 或 FILE=$(ls /var)
   echo $FILE
   cp /etc/fstab /root/fstab-`date +"%H-%M-%S"`
  set显示本地及环境变量
  export显示本地变量 
  env显示本地变量env PATH=/bin ls在独特环境下,在定制环境下
  printenv


5、PS1:用来显示[root@localhost ~]#     echo $PS1--->[\u@\h \w]\$     宏替换           man bash     /PS1
 \W 基名 (basename  /etc/passwd取基名) \w  \h \H \t \u  \!  \$    如:export PS1='\033[31m\u\033[0m-\t \!\$'  效果为:root-1515:43:19 99#(root为红色,只有基准色:红澄黄绿青蓝紫可这样表示)
PS2:\续航符
PS3:
PS4:

 

PATH:
DISPLAY---定义显示信息的显示位置
HOSTNAME
LANG默认语音区locale
OLDPWD   如:cd -
PWD
SHELL
TERM
USER


四、命令别名:(当前生效,重启或l退出当前shell都会失效,编辑环境配置文件可永久生效)
alias cdnet='cd /etc/sysconfig/network-scripts'
alias 显示当前系统命令别名
unlias cdnet 撤销

 

五、set -x 脚本中追踪调试执行
 set +x关闭
或 命令行 bash -x a.sh不需执行权限也可执行


六、算术运算
$(($1+$2))或$[$1+$2]
如:echo "scale=4;1/3"|bc

 

七、定义环境变量文件:
系统设置/etc/profile  /etc/profile.d/* /etc/bashrc
用户设置~/.bash_profile   ~/.bashrc (~/.bash_history ~/.bash_logout)

注:profile登录用户设定,交互式 (环境变量定义)  ,如root登录
       bashrc非登陆用户设定,非交互式 (别名等的定义),如脚本

交互式/etc/profile--->/etc/profile.d/*--->~/.bash_profile--->~/.bashrc--->/etc/bashrc
非交互式~/.bashrc--->/etc/bashrc--->/etc/profile.d/*

source .bashrc或. .bashrc

 

八、I/O
1、总线:BUS,PCI,ISA,EISA,AGP,USB  桥
程序(代码,数据)
文件句柄(handle),文件描述符 0-9

标准输入 0
标准输出 1
标准错误输出 2


I/O重定向:
1)覆盖重定向:
0<
1> 2>
&> 无论对错输出都重定向=2>&1

2)追加重定向:
(set -C 拒绝信息覆盖
set +C 允许覆盖
>|强行覆盖)

>>追加
<<here document  cat >> /tmp/my.txt << EOF
   ls /etc/ > /tmp/ls.correct 2> /tmp/ls.error


2、管道  |
command | command | command
最后一个命令在子shell中运行,变量引用需注意

tr 'a-z' 'A-Z'
tee          如:echo 'abcd' | tee /tmp/tee.out | tr 'a-z' 'A-Z'

自定义文件描述符,不用必须关闭,占用内存空间
exec 3> /tmp/3.out
ls /etc/ >&3
cat /tmp/3.out
关闭:exec 3>&-

 

 

 

 

 

 

 


 

你可能感兴趣的:(shell,脚本,环境变量,命令行编辑,shell运算)