设为首页 收藏本站
查看: 1199|回复: 0

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

[复制链接]

尚未签到

发表于 2018-8-22 10:17:21 | 显示全部楼层 |阅读模式
  一、
  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>
  [:alpha:]=[a-zA-Z](字母表)charaters in a predefined charater>  [: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>
  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:用来显示[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 允许覆盖
  >|强行覆盖)
  >>追加
   /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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-554998-1-1.html 上篇帖子: Shell脚本编程知识点总结及范例 下篇帖子: 通过shell将*.txt文本内容批量录入mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表