指令记录

全局变量对所有shell包括子shell都是可见的。局部变量在当前shell中可见,子shell中设置的局部变量,回到父shell中就不可见了。

全局变量的创建:先建一个局部变量,通过export命令完成全局化。(变量名、等号、值之间没有空格) my_var="i am global"     export $my_var

在子shell修改全局变量的值 或 删除全局变量,并不会影响到父shell中该变量的值。

unset my_var:删除环境变量。变量前不要使用$。使用变量时,前加$。操作变量时,不加$,例外是printenv显示变量值时要加$。

set:显示特定进程所有的环境变量,包括局部、全局、及用户自定义变量。

env或printenv:查看全局变量。

PATH:定义了命令和程序查找的目录,以冒号:进行分隔,其修改持续到退出或重启系统。

shell的三种启动方式

     etc/profile文件是默认的主启动文件,根据发行系统 .bash_profile、.bash_rc、.bash_login、.profile4个文件不一定都存在。

    1. 登录shell:系统启动时默认启动的一个bash shell。  依次读取etc/profile文件、$HOME/.bash_profile、$HOME/.bashrc、$HOME/.bash_login、$HOME/.profile。

    2. 交互式shell:命令行中通过输入bash启动的,只读取HOME目录下的 .bashrc文件。

    3. 非交互式shell:执行shell脚本时用的是这种shell。如果启动了子shell,且父shell是登陆shell,可读etc/profile, etc/profile.d/*.sh,  $HOME/.bashrc。  不启动子shell,则继承当前shell的局部和全局变量。

readlf:可对可执行、库文件等elf文件进行分析,使用方式见 https://blog.csdn.net/wangbaochu/article/details/41548549

objdump -T lib*.so | grep name:查找某个动态库中是否包含某个对象,比如某个函数。

ll:指令可显示当前路径下的 文件和 链接关系

反引号`` $() 进行命令替换:var=`date`  或 var=$(date)  将date命令的时间输出赋给变量var,=前后不能有空格。

>:输出重定向,新的数据会覆盖原文件的数据    date > text          >>: 在原文件里追加数据  date >> text

>:输入重定向,将文件的内容重定向到某个命令 command < file         <<:内联输入重定向 

bc:进入计算器 quit退出计算器

$[ ]: 将表达式放到方括号种,进行数学运算。 var=$[5*(5-6)]

ps -f:显示进程,可展示shell和子shell的关系

ps --forest: 显示子shell间的嵌套结构

echo $BASH_SUBSHELL:返回0,表明没有子shell,返回非0则说明有子shell

命令列表用括号()括起来,可以在子shell中运行。(pwd ; ls ; cd /etc ; ls),不加括号时是在当前shell中执行。

jobs -l:显示当前运行在后台的所有进程

命令后加&:可以让命令在后台模式运行

type command:查看某个命令command是内建命令(不启动子shell来执行)还是外部命令(存在于bash shell外的程序,可通过which命令找到它的位置)

列表后面继续添加值:list="a b c d",      list=$list" e"

传递参数:shell脚本后面 加 数据 即可,./test a b。 $0是程序名,$1是第一个参数,$2是第二个参数,脚本中使用$# 代表参数的个数。

posted @ 2023-05-12 10:00  wieneralan  阅读(24)  评论(0编辑  收藏  举报