文章目录
- 命令的执行和快速编辑按钮
- echo
- 变量的有效范围
- 变量读取、数组和声明
- read
- declare, typesset
- 数组
- ulimit限制
- 变量内容微调P330
命令的执行和快速编辑按钮
【Ctrl】+【u】/【Ctrl】+【k】从光标处向前删除命令串/向后删除命令串
【Ctrl】+【a】/【Ctrl】+【e】让光标移动到整个命令串的最前面/最后面
echo
使用echo显示变量内容,在变量被使用时必须加上美元符号$
- 变量的设置规则
- 变量与变量内容以一个=连接,但是等号两边不能有空格
myname=yzq √
myname = yzq ×
- 变量内容若有空格可以用双引号或单引号将内容结合起来,注意:
- 可以用转义字符【\】将特殊符号(\、$、空格等)变成一般字符
- 需要借由其他额外的命令所提供的信息时,可以使用反单引号【`】和【$()】。
- 需要该变量在其他子程序执行,则需要以export来使变量变成环境变量
- 取消变量使用unset:【unset 变量名称】
- 变量名称只能是英文字母和数字,开头不能是数字
如果name是yzq,现在想在yzq后加个yes该怎么做?这样对吗?
name=$nameyes
这是错的,如果nameyes是个变量,name的内容就是nameyes里的,就像这样:
正确的做法是
双引号可以输出变量本来的内容,但是单引号输出一般字符【图片】
在一串命令中【``】中的内容会被先执行单引号和双引号最大的不同在于:
双引号内能输出变量的内容,单引号仅能输出一般字符
如果一个路径太长,可以把这个路径定义为一个变量,然后cd这个变量的内容即可
变量的有效范围
环境变量可以理解为全局变量,自定义变量可以理解为局部变量。环境变量可以被子进程引用,但是其他自定义变量内容不会存在于子进程中。
子进程:在当前的shell下启用另一个新的shell,新的shell就是子进程。一般情况下父进程的自定义变量无法在子进程中使用,但是用export
将变量变成环境变量后就能在子进程使用了
变量读取、数组和声明
read
用read来读取键盘输入的变量。
read [-pt] 变量名
-p 后面接提示字符
-t 后面接等待的【秒数】
这里加上-p能在输入的光标前输出一些提示字符;加上-t,比如上面的30,如果在30秒内没有任何操作就会自动跳过该命令。
declare, typesset
这两个都用来声明变量。
declare [-aixr] 变量名
-a 将后面的变量定义为数组
-i 将后面的变量定义为整数
-x 将后面的变量定义为环境变量(同export)
-r 将变量设置为readonly类型,该变量内容不能被更改且不能unset
因为变量类型默认为字符串,这里的sum就是这样。
改成这样就对了
并且bash环境中的数值计算默认最多只能达到整数,所以1/3这种的结果是0。
用declare -p
可以单独列出变量的类型
将-变成+可以进行取消操作,让sum不具有i属性,最后变成了默认的字符串。
数组
注意数组输出,要有{}
ulimit限制
Linux支持多用户,一个时刻可以有多个用户同时登陆一台Linux。但是如果每个人都开启很多文件,操作系统会难以承受。所以可以用bash限制用户的系统资源,包括开启的文件数量、可以使用的CPU时间、可以使用的内存总量等。
ulimit [-SHacdfltu] 配额
-H hard limit,严格设置,一定不能超过这个数值
-S soft limit,警告设置,可以超过,但是超过会有警告
-a 后面不接任何参数,用于列出所有的限制额度
-c 当某些程序出现错误,系统可能将该程序在内存中的信息写成文件(用于除错)
这种文件被称为core file(内核文件),此为限制内核文件的最大容量
-f 此shell可以建立的最大文件容量,单位是KB
-d 程序可使用的最大段内存容量
-l 可用于锁定的内存量
-t 可使用的最大CPU时间,单位为秒
-u 单一使用者可使用的最大进程数量
变量内容微调P330