shell内置重要命令
built-in commands
alias/unalias function/unset -f
首先要说的就是在shell中怎么写函数,当然了立马会想到function,这种one liner的写法只有在zsh中才可以使用,在bash中不能写在一行
1
2
3
4
5
6
7function autoline(){for ((i=0;i<`tput cols`;i++));do echo -n "=";sleep 0.001;done}
可以使用unset -f来删除删除定义
unset -f autoline
如果需要处理参数,那么只有function可以做到。
function get(){a=$@;echo "length:${#a}"}其实alias也可以做到,实质都是对代码段的引用,但是alias写的需要source之后才能使用
1
2
3
4
5alias autoline="for ((i=0;i<`tput cols`;i++));do echo -n "=";sleep 0.001;done"
对于简单的,不需要传参的,两种调用效果相同
autoline
可以使用unalias来取消alias定义
unalias autoline
:占位
之前在写if语句的时候就遇到过需要类似python中pass的效果,但是shell中没有pass,不过冒号可以做到
1
2
3
4if [ ${a} > 3 ];then
:
else
a=6local
设置局部变量,仅在函数内部有效,function中有效,alias没效果
1
2
3
4
5
6
7
8
9
10a=3
function pt(){
local a=6
echo $a
}
pt
echo $a
6
3type查看是一个alias还是一个function/built-in/executable等
set -C,禁止复写
set的一个重要作用,set是用来对shell做一些设置的,可设置shell的属性。使用
-设置属性,使用+取消属性。1
2
3
4
5
6
7在shell中避免清空存在的文件开启set -C
!bin/bash
echo "123" > 2.txt
set -C
echo "456" > 2.txt
运行脚本会报错,无法写入。只能追加unset,取消设置的变量,与set的作用完全不同
1
2
3a=1
unset a
echo $a