顺序执行多条命令(复合命令)使用分号(;)分隔。
cp,rm,mv 加 -i 进行操作提示,比如cp默认会一直覆盖已存在的,-i 会提示是否覆盖。
cd 不加参数,直接回到主目录。
mkdir -p 选项,可以创建父目录不存在的情况的目录,如b/c/d.
echo 默认是关闭转义字符串。启动使用-e选项。并且要转义,需要加引号。
cd: 不加任何参数时,回到主目录,即cd ~.
cd -:返回到上一次的目录,在两个目录中来回切换。
source:在当前shell环境中执行shell脚本,而不是开辟subshell,这样可以修改当前shell的一些环境变量。source命令可以用.简化,如source xx.sh等同于. xx.sh。
&& 与 || 的 区别:
&&:cmd1 && cmd2 ,只有当cmd1正确时,cmd2才执行。
|| : cmd1 || cmd2 ,只有当cmd1错误时,cmd2才执行。
例子:ls /tmp/vbirding && echo "exist" || echo "not exist" ,判断文件是否存在。
重定向:
输出:>,追加:>>,既输出屏幕又输出文件:cmd | tee file.
输入:<,当前文档输入<<:如 cat <<delimiter a bc (换行)delimiter.
文件描述符重定向:
n>&m (如2>&1,2->STDERR,1->STDOUT,0->STDIN)
1>&2,(当重定向STDOUT时,1可以省略,故有 > file)
例如:exec 4>out.txt; exec 5>&4;date 1>&5;输出内容将在out.txt中,但输出形式为追加,不再是覆盖。
(即date >out.txt;与exec 4>out.txt;date >&4;的区别,前者重新写入,后者是追加写入)。
关闭文件描述符:exec n>-;如:exec 4>-。
read Name:读取用户输入,并存入变量Name中。
/dev/null 丢弃输出信息的特殊文件,例如 rm file > /dev/null,将丢弃rm产生的信息。
查看文件属性:file filename。
硬链接与符号链接的区别:
硬链接:只能指向文件,不能指向目录。保存的是一个node节点,和源文件指向共同的文件内容块(磁盘中的位置)。所以,源文件的位置变化和是否已被删除对硬链接没有影响,即使源文件删了,硬链接的内容仍存在(因为磁盘上的内容仍在)。此外,无法区分硬连接和普通文件,说到底,硬链接和源文件共享了磁盘内容,其本身和源文件一样,是一个node节点。命令:ln src target.
符号链接:只保存源文件的路径名。注意,如果链接时,保存的是相对路径,则改变符号链接的位置会无法指向源文件,一般最好用绝对路径。命令:ln -s src target.
注意:在target为目录时,ln将在该目录下生成与src同名的链接。
文件权限:除了rwx外,还有SUID/SGID,sticky bit两种,设置了SUID/SGID位的文件,可以该用文件属主权限来执行。sticky bit(粘滞位,针对目录),设定目录粘滞位后,限定了目录下文件的删除和移动,除了设置粘滞位的目录属主,要删除文件的属主,root三种用户可以。
后台执行:cmd &。