Shell的参数有哪些
这篇文章主要为大家展示了“Shell的参数有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Shell的参数有哪些”这篇文章吧。
Shell 参数
传递参数:可以将外部的值传递到脚本的内部函数中,提高脚本的灵活性;可以添加脚本的使用选项,增加脚本的可定制性。
上图显示了 Shell 中函数的参数传递:定义函数 testfunc();函数输出两个引用参数,$# 表示传入函数的参数个数,$@ 表示所有参数的内容。
值得注意的是,如果拥有的参数多余 9 个,则不能使用 $10 来引用第十个参数,必须先处理或者保存第一个参数($1),然后使用 shift 命令删除第一个参数,并将剩下的参数上移一位,则 $10 就变成了 $9,以此类推,而 $# 的值将被更新以反映剩余参数的个数。实际情况中,一般使用迭代的方法完成这个约束。
许多 UNIX 程序遵循以下原则:从标准输入(standard input)读入,经过处理,从标准输出(standard output)输出,将异常及错误报告到标准错误(standard error)。这样的程序被称为过滤器(filter)。
重定向符号 command>filename 会将 command 的标准输出重定向到 filename 中而不是打印在控制台,如果有同名 filename,则覆盖它,如果没有,则新建;command>>filename 会将 command 的标准输出以追加的形式重定向到 filename,不会覆盖同名文件;command<filename 将command="" 的标准输入重定向为="" filename;管道符号="" command1|command2="" 将="" command1="" 的标准输出与="" command2="" 标准输入相连。 理论上讲,管道功能可以通过创建临时文件,使用重定向符号实现。但是管道符号可以直接连接程序的输入输出,并且没有程序使用个数限制,只要尚未获得最终处理结果,就可以继续添加管道。管道的数据共享在 Linux 内核中是通过内存拷贝实现的,相较于 CPU 的计算,数据的移动往往更消耗时间,因此在设计管道的时候,尽量把能够减少数据量的操作置于管道的前端,一来数据拷贝速度快,二来程序运算量少。
内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符为非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符指定待读写的文件。
文件描述符表:用户区的一部分,除非通过使用文件描述符的函数,否则程序无法对其进行访问。对进程中每个打开的文件,它都包含一个条目。
系统文件表:为系统中所有的进程共享。对每个活动的 open 都包含一个条目。每个系统文件表的条目都包含文件偏移量、访问模式(读、写、读写),以及指向它的文件描述符表的条目计数。每个进程的文件表在系统文件表中的区域都不重合,这样使每个进程都有它自己对该文件的当前偏移量。
内存索引节点表:对系统中的每个活动的文件(被某个进程打开了),内存中的索引节点表都包含一个条目。几个系统文件表条目可能对应于同一个内存索引节点表(不同进程打开同一文件)。
每个进程维护自己的文件描述符表,当进程调用文件描述符相关的函数或命令时,会对其进行修改操作;文件描述符表中的每一项指向系统文件表;系统文件表被所有进程共享,处于内核区,与内存中的索引节点表对应。因此,进程通过对文件描述符表的操作,访问被内存中的索引节点表控制的文件。
标准输入的文件描述符是 0,标准输出的文件描述符是 1,标准错误的习惯描述符是 2。1> 表示重定向标准输出,2> 表示重定向标准错误,0< 表示重定向标准输入,&> 表示重定向标准输出和标准错误。文件描述符是由无符号整数表示的句柄,进程使用它来标识打开的文件,它与包括相关信息(如文件的打开模式、文件的位置类型、文件的初始类型等)的文件对象相关联,这些信息被称为文件的上下文。
特殊文件:/dev/null 非常接近于一个只写文件,所有写入它的内容都会永远丢失,而且读取它的结果是空值,一般用于重定向标准输出或标准错误,或者清空某个文件的内容并且不改变文件权限。/dev/zero 会产生一个 null 流(二进制的 0 流,而不是 ASCII 类型),主要用来创建一个指定长度、并且初始化为空的文件,一般用作临时交换文件。
常见 Linux 文件类型
普通文件:用 ls -lh 查看某个文件的属性,第一个字符为 - 的文件。一般是用一些相关的应用程序创建,用 rm 命令删除。
目录:第一个字符为 d 的文件。创建目录可以使用 mkdir 或 cp 命令,删除用 rm 或 rmdir。
字符设备或块设备文件:第一个字符为 c 表示字符设备文件,b 表示块设备。用 mknode 创建,用 rm 删除。但是一般不自主创建,它们跟内核相关联的。
套接口文件:第一个字符为 s 的文件。
符号链接文件:第一个字符为 l 的文件。通过命令 “ln -s 源文件名 新文件名”创建。类似于 windows 系统中的快捷方式。
以上是“Shell的参数有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注蜗牛博客行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
评论