bash shell编程学习笔记 [1]

来源:互联网 发布:上海复旦中和软件 编辑:程序博客网 时间:2024/06/05 05:31

顺序执行多条命令(复合命令)使用分号(;)分隔。

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 &。





原创粉丝点击