----------------------------经常用到的shell基本知识;
shell 常见命令解析:
$0代表脚本名称;
$# 参数个数;
$* 所有参数数组;
注:遍历参数时也可一通过util 和 shift的形式;
source xx.sh 或者 . xx.sh或者{cmd;cmd;}都是在当前shell环境下执行shell;
./xx.sh 或sh xx.sh 是在当前shell环境下启动一个新的子进程来执行shell;
exec cmd是用新的创建的进程取代当前进程;
硬链接和软链接的区别:
通过ls -li 可以看见硬链接文件有相同的inode值;(实际上磁盘驱动器是根据inode得到扇区,柱面的物理位置);可见硬链接是相同的inode指向相同的数据;修改的话当然同步,删除的时候如果硬链接数大于1,只是删除一个inode;数据不会删除;
软链接的inode值是不同的, 就像一个快捷方式;
注:对于不同的分区,虚拟文件子系统是通过设备号和inode来寻址磁盘物理数据的;可见不同分区有着不同的文件系统;所以不能建立硬链接的;
用户权限:suid和guid权限位是为了方便普通用户执行root的特权位;但是用户不能修改此命令脚本;
比如/etc/passwd文件;
suid的特权码是4,guid是2 ;所以一般可以在权限位前加4或者2,或者6,再加上当前命令的权限方式来加suid,guid,或者suid+guid : 比如: chmod 4755 cmd加上suid权限;
`cmd` 和$(cmd)都是在当前shell环境执行,并将输出结果打印在当前位置;