Linux开发起步学习笔记(11)----shell基本机制

shell的功能:

1.命令解释器
2.文件名替换、命令替换、变量替换
3.历史替换、别名替换
4.流程控制的内部命令(内部命令和外部命令)

Shell的特点:

1.用途:批处理,执行效率比算法语言低
2.shell编程风格和C语言等算法语言的区别
3.面向命令处理的语言,提供的流程控制结构通过对一些内部命令的解释实现
4.设计简单,提供了灵活的机制,这些灵活的功能通过shell替换实现
例如:流程控制所需的条件判断,四则运算,都由shell之外的命令完成。

bash的启动:

bash是unix shell的一种,包括linux在内的操作系统都将其作为默认shell。
三种方法:①注册shell②键入bash命令③脚本解释器
自动执行的一批命令(用户偏好、系统级)
当bash作为注册shell 被启动时,自动执行~/.bash_profile
当bash作为注册shell退出时,自动执行$HOME/.bash_logout
当bash作为注册shell退出时,自动执行$HOME/.bashrc

脚本文件的执行:

查看文件eg.编辑文件Isdir(格式为文本文件,文件名不必须为.sh后缀,只是个惯例)
1.新创建子进程,并在子进程中执行脚本:
①bash<Isdir 无法鞋带命令行参数
②bash Isdir [param]/bash -x Isdir [param]每执行一行则打印一行
③给文件设置可执行属性(chmod)然后进行执行
2.在当前shell进程中执行脚本
. Isdir /usr/lib/gcc
source Isdir /usr/lib/gcc

历史和别名:

历史替换:

先前键入的命令存于历史表,编号递增,FIFO刷新,表的大小由变量HISTSIZE决定。
内部命令history可以查看历史表。
历史替换:①直接使用上下箭头键②!!引用上一命令 !str引用以str开头的最近用过的命令

别名替换:

在别名表中增加一个别名,内部命令alias,也可以进行重载。
alias 别名=”替代的命令”
如果需要,应把alias放入.bashrc

TAB键补全:

每行的首个单词:TAB键补全搜索$PATH下的命令
行中的其他单词:对当前目录下所有文件名进行匹配

输入重定向:

<filename 从文件中获取数据,如sort < telno.txt
<<word 从shell脚本文件获取数据直到再次遇到定界符word,如cat << word,若不允许定界符之间的内容进行替换操作,则在定界符两侧加单引号
<<<word 从命令行获取信息作为标准输入

输出重定向和管道

1.使用系统调用(原始IO):write
2.使用C语言函数库(缓冲IO):fprintf
3.>filename 文,件已存在则先清空
4.>>filename 将stdout重定向追加到文件尾
5.对于错误标准输出stderr,使用2>filename进行重定向
6.2>&1将文件句柄2重定向到文件描述符1指向的文件(允许对除0,1,2外其他文件句柄输入或输出重定向)

注意:管道也只针对标准输出,如果是错误输出,则需要单独指定输出方向。
eg. gcc tyr.c | more不能对输出的错误信息起作用,要使用:gcc tyr.c 2>&1 | more


附:$+全大写字母,如$PATH和$HOME

是环境变量啦~
linux中变量调用的时候会在变量名前加一个$符号。一般作为规范,环境变量是全部大写的。
在shell中你可以通过echo P A T H 来 查 看 变 量 PATH来查看变量 PATHPATH的值。
PATH 是指系统会去哪些目录中寻找可执行的程序的环境变量。
比如说你想执行一条命令ls。
如果不设置这个环境变量呢,除非你知道ls放在/bin下,告诉系统去执行/bin/ls,否则系统会告诉你我不知道ls在哪啊。。。“command not found”
现在有了$PATH这个变量,系统会优先去这个变量的值里指定的目录去找ls,如果都找不到,才会告诉你“command not found”。所以是不是方便很多呢?而且它的值是你自己可以去设定的。
HOME 是指定当前用户的主目录的环境变量。
主目录又叫家目录。它是你存放自己东西的地方。只有你自己可以访问(不算root)。类似于WINDOWS下的Documents and Settings\你的用户名\ 这个目录。

作者:知乎用户
链接:https://www.zhihu.com/question/20464025/answer/15200592
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值