目录
管道(可将两个或多个命令连接在一起,上一个命令的输出信息会作为下一个命令的输入信息):command1 | command2
全局变量:直接定义,只能在当前的shell进程里访问,但其它进程以及shell进程的子进程是不能访问的。
环境变量:export,能在当前的shell进程以及shell进程的子进程访问,但其它进程是不能访问的。
shell是应用程序的一种,比如/bin/sh、/bin/bash等,是用户与linux内核沟通的桥梁。对外接收用户输入的命令,对内通过“系统调用”传递给内核运行。呈现内核运行界面。
Shell原寓“壳”,即充当着“中间人”身份。shell以键盘操作为主,需要记忆各种控制命令。图形化界面以鼠标操作为主,简单易学。
比如我们输入“ls”并回车时,shell程序找到“ls”程序并运行,把结果打印出来。
shell脚本常用后缀名:.sh。
Shell寻找程序:会去PATH的环境变量所指示的位置寻找。
查看PATH变量可得到指示的位置,用“:”隔开,可使用“echo $PATH”查看。
shell命令本质:内置命令/外部命令(应用程序)。(可由type
例如:创建hello.c,意在终端输出hello world。然后编译这个c文件(gcc hello.c -o hello),然后把hello移动到/usr/bin/。
当向终端输入hello时,终端输出hello world。这个c文件就成了shell的外部命令。
shell:指命令行解释器,常用的解释器有bash、sh,在Ubuntu系统默认使用bash解释器,所以有时说bash也是指命令行。
Terminal(终端):指用来运行Shell的工具。如Ubuntu系统自带的本地终端、开发板的串口终端、网络访问的ssh终端。
Console(控制台):特指某些终端,通常是指它的物理形态,如带键盘和显示器的物理设备。
修改/etc/environment,比如:sudo gedit /etc/environment,然后添加下行红色部分。然后重启系统或重新登录。
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/用户名"
修改~/.bashrc,在行尾添加或修改下行部分。然后重启系统或重新登录。
export PATH=$PATH:/home/用户名
在终端执行以下命令,这只对当前终端有效。
export PATH=$PATH:/home/用户名
相对路径运行(./)
指定解释器运行(/bin/bash)
source和.
- #include
- int main()
- {
- printf("hello world!\n");
- return 0;
- }
-
- #!/bin/bash
- echo "hello world!"

variable=value
variable='value'(符号内不做逻辑判断)
variable="value"。
$variable
${variable}

variable=`command`
variable=$(command)

| 特殊变量 | 描述 |
| $0 | 当前脚本的文件名 |
| $n(n>=1) | 传递给脚本或函数的参数。n是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2 |
| $* | 传递给脚本或函数的所有参数 |
| $@ | 传递给脚本或函数的所有参数。当被双引号“”包含时,$@与$*稍有不同 |
| $# | 传递给脚本或函数的参数个数 |
| $$ | 当前Shell进程ID。对于Shell脚本,就是这些脚本所在的进程ID |
| $? | 上个命令的退出状态或获取函数返回值 |


command1&&command2
command1||command2
test expression
[ expression ]
| 选项 | 描述 |
| -eq | 判断数值是否相等 |
| -ne | 判断数值是否不相等 |
| -gt | 判断数值是否大于 |
| -lt | 判断数值是否小于 |
| -ge | 判断数值是否大于等于 |
| -le | 判断数值是否小于等于 |
| -z str | 判断字符串str是否为空 |
| -n str | 判断字符串str是否为非空 |
| =和== | 判断字符串str是否相等 |
| -d filename | 判断文件是否存在,并且是否为目录文件 |
| -f filename | 判断文件是否存在,并且是否为普通文件 |


- if condition
- then
- statement(s)
- fi
- if condition
- then
- statement1
- else
- statement2
- fi
- if condition1
- then
- statement1
- elif condition2
- then
- statement2
- ...
- else
- statement
- fi

- case expression in
- pattern1)
- statement1
- ;;
- pattern2)
- statement2
- ;;
- pattern3)
- statement3
- ;;
- ......
- *)
- statementn
- ;;
- esac

- for variable in value_list
- do
- statements
- done
value_list:
直接给出具体的值;
给出一个取值范围;
使用命令的执行结果;
使用Shell通配符;
使用特殊变量。

- while condition
- do
- statements
- done
- function name(){
- statements
- [return value]
- }


shell进程每次启动时,它都会执行shell配置文件的代码来做一些初始化的工作。
如果我们将shell变量的定义放到shell配置文件的话,shell进程一启动,就会去定义这些变量。
与Bash Shell有关的配置文件主要有:
/etc/profile
~/.bash_profile
~/.bash_login
~/.profile
~/.bashrc
/etc/bashrc
/etc/bash.bashrc
/etc/profile.d/*.sh
Shell执行顺序:/etc/profile、~/.profile(~/.bash_profile、~/.bash_login)
shell启动方式对变量的影响