#! /bin/bash 脚本解释器,特定约定
# 注释
$a 值替换,`if [-n "$a"]` 替换变量a的值到字符串中进行比较
'' 单引号,字符串限定,内部的内容不进行解析,只当作普通字符串
"" 双引号,内部的内容不能识别命令,只进行变量的解析`$a`
`` 反斜单引号(倒引号),内部命令会当作shell指令执行,然后组合其他字符组成最后的字符串。`test=`date +%F`; echo "Tody $test";`
\ 转义字符,与C类似
{} 大括号,与$配合来连接字符串。`$a; ${a};` 一般是等价的。
() 小括号,命令组,命令替换,初始化数组
[] 中括号,一般用来进行流控,`if []; then fi`
; 分号,同一行的不同语句,与C类似。
= 变量定义,等号两边不能有空格。`a="abc"`
由于变量使用弱类型,所以`a=xyz; a='xyz'; a="xyz";`表达的结果一致。如果式数字,不使用引号
但是有单引号双引号等的区别,建议一般情况时使用双引号,防止出现意外的结果。
变量赋值时,不用加引号`a="123"; b=a;`
变量获取`v1=$(pwd); v2=`pwd`; `
unset v1; 删除变量
$0 当前脚本文件名
$n(n>=1) 传入脚本/函数的第n个参数
$# 传入的参数个数
$* 以一个单字符串显示所有向脚本传递的参数
$@ 与$*类似,一般加双引号, 但是它将每个参数单独显示,而$*把所有参数当作一个显示
$? 显示最后命令的退出状态或者函数的返回值,0表示没有错误
$$ 脚本运行的当前进程号
${#a} 获取字符串a的长度
${a:1:2} 字符串a第二哥开始,长度为2的子字符串
a=("1" "3" "a") 定义一个数组,空格为分隔符
${a[1]} / ${a[@]} / ${a[*]} 获取数组的元素
${#a[@]} 获取数组长度
:<Shell中存在三种变量:
按变量的 生存周期 来划分:
export 命令声明,变量在关闭 shell 时失效。按变量的 生效范围 来划分:
一些常用的环境变量:
PATH :可执行程序的搜索目录,决定了shell 将到哪些目录中寻找命令或程序
HOME :当前用户主目录
USER :当前登录用户的用户名
HISTSIZE :保存历史命令的数目
LOGNAME :当前用户的登录名
HOSTNAME :指主机的名称
SHELL :当前用户 Shell 解析器
LANG :Linux系统的语言、地区、字符集
LANGUGE :语言相关的环境变量,多语言可以修改此环境变量
在 Linux 中,与环境变量有关的文件如下:
/etc/profile不会再执行。意思就是登录以后临时在这个文件里面添加的变量,需要重启重启生效或者手动执行 source /etc/profile 。/ect/bash.bashrc还会执行。开一次终端就执行一次,意思就是登录以后临时在这个文件里面添加的变量,重新打开终端就能立即生效。~/.bash_profile,若它不存在,则读取 ~/.bash_login,若前两者不存在,读取~/.profile。~/.bash_profile和~/.bash_login。~/.profile不会再执行,同上面/etc/profile类似理解。~/.bash_profile,若它不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。~/.bashrc。~/.bashrc还会执行。开一次终端就执行一次,同上面/ect/bashrc类似理解。根据不同的登录模式,Shell 的执行顺序也有一定的区别,一般情况如下:
/etc/profile —>~/.profile/etc/bash.bashrc—>~/.bashrc/etc/bash.bashrc—>/etc/profile—>~/.bash_profile~/.bash_profile的,若该文件不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile❤️ 结合我们上面的文件程序,我们可以得出来,在我使用的虚拟机 Ubuntu 上的 Shell 脚本执行顺序为:
/etc/profile—>/etc/bashrc—>/etc/profile.d—>~/.profile—>~/.bashrc
dpkg 工具,Ubuntu 底层的包管理工具,主要用于对已下载到本地和已经安装的deb包进行管理。
这个工具记住他的使用就可以,他的常用命令如下:
安装软件: dpkg -i xxxx.deb
查看安装目录:dpkg -L xxxx #使用此命令不需要加.deb后缀,下面没有后缀的相同
显示版本:dpkg -l xxxx
查找包的详细信息:dpkg -s xxxx
列出deb包的内容:dpkg -c xxxx.deb
卸载软件(保留配置):dpkg -r xxxx
卸载软件(不保留配置):dpkg -P xxxx
解开 deb 包的内容 :dpkg –unpack xxxx.deb
配置包:dpkg –configure xxxx
apt 是新版的包管理工具,解决apt-get命令过于分散的问题。
简单来说就是:apt = apt-get、apt-cache 和 apt-config 中最常用命令选项的集合。
apt 可以看作 apt-get 和 apt-cache 命令的子集, 可以为包管理提供必要的命令选项。
apt-get 命令同上面 dpkg 一样记住使用就可以,他的常用命令如下:
更新源文件,并不会做任何安装升级操作:apt-get update
升级所有已安装的包 :apt-get upgrade
安装指定的包:apt-get install packagename
仅升级指定的包:apt-get install packagename --only-upgrade
重新安装包:apt-get install packagename --reinstall
修复安装:apt-get -f install
安装相关的编译环境:apt-get build-dep packagename
下载该包的源代码:apt-get source packagename
升级系统:apt-get dist-upgrade
使用 dselect 升级:apt-get dselect-upgrade
删除包(不删除配置文件) :apt-get remove packagename
删除包(删除配置文件):apt-get remove packagename -- purge
清理无用的包:apt-get clean
清理无用的包:apt-get autoclean
检查是否有损坏的依赖:apt-get check
查询指定的包 :apt-cache search packagename
显示包的相关信息:apt-cache show packagename
使用该包依赖哪些包:apt-cache depends packagename
查看该包被哪些包依赖:apt-cache rdepends packagename
`df -h -T` 输出硬盘使用状况和类型
`du -h --max-depth=1` 查看文件夹下文件夹大小
`lsblk` 列出所有磁盘情况
`fdisk -l` 打印硬盘硬件详细信息
`cat /proc/partitions` 查看磁盘分区blocks