首页
zfl9
取消

Shell 特殊字符

通配符 模式 说明 * 匹配任意个字符(包括0个);用于文件匹配时,不匹配隐藏文件,也不递归匹配 ** 递归匹配当前目录下的所有文件,但.开头的隐藏文件除外 .* 匹配当前目录下的隐藏文件,目录也是一种文件...

Shell subshell

source source 有点类似于 C/C++ 的 #include 预处理指令,也就是 文件包含。 如source a.sh,解释器执行到此处时,会在当前进程解释执行a.sh的内容。 从效果上看,等价于将此语句替换为a.sh的文件内容,因此和#include很相似。 可以利用此特性,将一些通用代码提取到公共文件,然后在用的时候source一下。 source 还有个别名...

Shell 管道

用法 将上一个命令的标准输出作为下一个命令的标准输入,这两个命令之间使用|管道连接符相连。 如,查找是否存在用户 zhang3:cat /etc/passwd | grep 'zhang3'或grep 'zhang3' /etc/passwd。 注意:管道只会将前一个命令的 stdout 作为后一个命令的 stdin,而 stderr 则不会被后一个命令读取! 如果要让后一个命令获取...

Shell 重定向

要彻底理解重定向,我们必须先来了解这些基础知识: 文件描述符 文件描述符(FD, File descriptor)是一个表述 打开的文件 的抽象化概念。 FD是一个非负整数,本质是内核文件表(每个task都有,由内核维护)的索引值。 当程序请求打开文件时,内核执行相关操作,然后向程序返回一个FD,指代此文件。 stdin、stdout、stderr 每个进程(除了守护进程)都会默...

Shell 函数

定义与使用 在 shell 中,同样有函数的概念,具体语法如下: 其中,function、()、return都可以省略。 如果没有return语句,那么默认返回最后一条命令的退出值; 如果有return语句,那么返回值类型为 int([0, 255])。 function func_name() { command1 command2 ... com...

Shell IFS 变量

IFS 变量 IFS,即Internal Field Seprator,默认为: 空格、制表、换行 多个连续空格会被当成一个空格处理,但是其它两个不会被合并 IFS 与 foreach 不要试图改变 IFS 变量的值来改变 foreach 的元素分割符,因为不生效 比如,我想遍历 IPv4 地址的每个部分(点号作为分隔符),这是最初的写法 $ IFS='.'; for byte ...

Shell 分支与循环

分支/循环语句块不可为空,如果不需要就不要写,如果确实需要,就用:内置命令占位。 if if 根据 condition 的返回值判断是否要执行该分支,如果 condition 返回 0,则为真,否则为假。 一般使用/bin/test、/bin/[、[[进行条件测试,具体的命令用法已在前文给出,不再复述。 if condition; then command1 ...

Shell 打印输出

echo echo 可能是我们接触 Linux 的第一个命令了。大家都比较熟悉,下面是几个简单的用法: echo "www.zfl9.com www.baidu.com www.google.com",使用双引号扩起来; echo 'www.zfl9.com www.baidu.com www.google.com',使用单引号扩起来; echo www.zfl9.com ...

Shell 运算符

算数运算符 bash 支持 4 种语法来进行算数运算(只支持整数):let、(())、$(())、$[](过时,同 $(()))。 let、(())、$(()) 这 3 个都是内置命令,它们所支持的运算符是一样的,那么它们有什么区别呢? let:支持多个算数表达式的计算(单纯计算) (()):只支持单个算数表达式的计算(单纯计算) $(()):只支持单个算数表达式的计算(...

Shell 位置参数

位置参数 在执行 shell 脚本时,我们可以向 shell 脚本传递命令行参数(位置参数)。 获取参数可以通过特殊变量$n,其中 n 为非负整数,$0是当前执行文件名。 而我们传递的参数是从序号 1 开始的,$1就是第一个参数,$2就是第二个参数,以此类推。 当 n 大于等于 10 时,需要使用${10}来进行引用,这个和引用变量是一样的,用来标识边界。 test.sh #!/...