以下内容主要摘抄自上课课件,非本人原创
$(<filename) 可以用file里面的内容替代整个的$(...) 内容
$(command) 用命令执行的结果来替代整个$(...)内容
将目前的目录记录到路径堆栈中
让系统记住当前目录,就可以在别的目录的时候很方便的切换回来
pushd .
#查看当前路径堆栈中都存有哪些路径
dirs -v
我真的很奇怪自己以前怎么那么笨,就不知道加个点么,这不就直接把当前的路径压到堆栈中了么。
回到前一个目录
cd -
针对文件名的操作,这个太重要了
$name 和${name}输出的结果是一样的
但是${name}在以下几个情况中特别好使
${name}_suffix 可以在_suffix的前面加上前缀
但是此时如果用$name_suffix 就不好使了,因为系统会认为你要返回name_suffix的值
${name%pattern} 会在name的后部去掉pattern,其实也就是去后缀
F=file.fa; echo ${F%.fa} 结果是 file
F=f.file.fa; echo ${F%%.*} 结果是 f
${name#pattern} 在name的钱不去掉pattern,其实也就是去前缀
F=/home/bins/test.fa; echo ${F#*/} 返回结果为home/bins/test.fa
F=/home/bins/test.fa; echo ${F##*/} 返回结果为 test.fa
获取路径或文件名
F=/bin/bins/fa.fa
basename $F 结果是fa.fa
dirname $F 结果是 /bin/bins
注意linux与mac以及win使用的换行符不一样
linux : linefeed
mac : carriage-return
win: carriage-return + linefeed
可用命令
dos2unix filename
mac2unix filename
移除软连接
unlink filename
sh脚本多行注释
:>>eof
commands
commands
commands
commands
eof
就可以将所有的commands注释掉