《Linux Shell脚本攻略》读书笔记1
- Shell是系统用户界面,提供用户与内核进行交互操作的一种接口。Shell是一种命令解释器,它解释用户输入的命令并把他们送到内核
- Bash是目前多数GNU/Linux系统默认的shell环境
- sudo (Super user do) sudo <command><arguments>
- 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进制数转化为十进制
-