290112011 发表于 2018-8-22 10:17:21

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   如:
  数字
  小写字母
  大写字母

  CHARATER>
  [:alpha:]=(字母表)charaters in a predefined charater>  [:upper:]=
  [:lower:]=
  [:digit:]=
  [:alnum:]=
  [: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>
  unset>  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:用来显示#   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 允许覆盖
  >|强行覆盖)
  >>追加
   /tmp/my.txt/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>&-

页: [1]
查看完整版本: linux shell及脚本编写,环境变量及重定向