《Linux Shell脚本攻略》-1小试牛刀(1)

《Linux Shell脚本攻略》读书笔记1

  • Shell是系统用户界面,提供用户与内核进行交互操作的一种接口。Shell是一种命令解释器,它解释用户输入的命令并把他们送到内核
  • Bash是目前多数GNU/Linux系统默认的shell环境
  • sudo (Super user do) sudo
  • shebang: #! (sharp/hash: #; bang: !)
  • 当启动shell时,它一开始会执行一组命令来定义诸如提示文本、颜色等各类设置。这组命令来自位于用户主目录中的脚本文件~/.bashrc。
  • 在Bash中,每个命令或是命令序列是通过使用分号或换行符来分隔的。
  • echo是用于终端打印的基本命令:
    • echo xxx 不能打印;
    • echo 'xxx' 不能打印变量
    • echo “xxx” 不能打印特殊字符,需要转义
  • printf 格式化输出,需要手动添加换行,%-5s:
    • - : 左对齐
    • 5 : 输入最小宽度
    • s : 输出字符串
  • echo "\e[1;31m xxxx \e[0m": \e[1;31将颜色设为红色,\e[0m将颜色重新置回。
  • 在bash中,每个变量的值都是字符串
  • 在一些特殊的变量会被shell环境和操作系统环境用来出储存一些特别的值,这些变量就被称为环境变量。
    cat /proc/$PID/environ
  • pgrep命令获得进程id:
    pgrep gedit # 获取gegit的进程ID
  • tr(translate)命令,简化sed工具:
    • 主要功能:①替换②删除。
    • tr '\0' '\n' #用'\n'替换'\0'
    • tr [option] ["string1"] ["string2"] < file:
      • 默认选项 - 替换操作
      • c - 将string1字符的补集替换为string2
      • d - 删除
      • s - 重复出现,只保留一个
  • 变量赋值 var=value
    • 如果value不包含任何空白字符(例如空格),那么它就不需要使用引号进行引用,否则必须使用单引号或双引号
    • 注意=两遍不要留空格: val=value是赋值,val==value是相等操作
  • 环境变量是未在当前进程中定义,而从父进程中继承而来的变量。
  • export命令用来设置环境变量。
  • PATH通常定义在/etc/environment/etc/profile~/.bashrc中。
  • ${#变量} 是变量长度
  • $SHELL or $0 是所用shell
  • UID是一个重要的环境变量,可以用来检查当前脚本是以超级用户还是以普通用户的身份运行的。
  • PS1环境变量用来定制提示文本。默认的shell提示文本是在文件~/.bashrc中的某一行。
  • chsh -s /bin/zsh #修改SHELL
  • eval 首先扫描名两行进行所有的置换,然后再执行该命令。
    prepend() { [ -d "$2" ] && eval $1=\"$2$\{$1:+':'\$$1\}\" && export $1 ; }
    其中,${parameter:+expression} 如果parameter有值且不为空,则使用expression的值
  • 反引号``和$()功能相似。解释命令行,开子shell执行命令,然后用结果替换。反引号以及其中的命令。
  • 在Bash shell环境中,可以要利用let、(( ))和[ ]执行基本的算术操作,在进行高级操作时,expr和bc这两个工具也会非常有用。
  • bc是一个用于数学运算的高级工具。
    • echo "scale=2;3/8" | bc #0.37 scale设定小数精度
    • echo "obase=2;$no"| bc obase结果进制为2进制
    • echo "obase=10;ibase=2;$no | bc"将2进制数转化为十进制

你可能感兴趣的:(《Linux Shell脚本攻略》-1小试牛刀(1))