最精炼的Linux学习笔记

Shell

Shell功能

命令解释过程

  1. Shell判断命令为内置命令,则将命令直接解释为系统功能调用并转交给内核执行。
  2. Shell判断命令为外部命令或实用程序,则会先在硬盘中查找该命令并将其调入内存,再将命令解释为系统功能调用并转交给内核执行。

命令查找过程

  1. 用户给出命令路径,Shell沿着路径查找。
  2. 用户未给出命令路径,Shell在环境变量PATH所制定的路径中依次查找

Shell环境变量

变量定义和引用

变量替换:$ name=string(等号两侧不要有空格)

在定义变量时,若string中包含空格、制表符和换行符,则string必须用’string’或者"string"的形式。双引号内允许变量替换,而单引号内则不可以。

Shell变量的作用域

可以使用export内置命令将局部变量设置为全局变量

显示当前Shell的PID:

$ echo $$

环境变量

不同类型的Shell的环境变量有不同的设置方法,以下为bash
设置环境变量:
$ set 环境变量=变量的值

不加任何参数直接使用set命令可以显示出用户当前所有环境变量的设置。

环境变量前加$,表示引用环境变量的值。

切换到主目录:

$ cd $HOME

将一个路径/tmp加到PATH变量前:

$ PATH=/tmp:$PATH

Shell在执行命令前,会先查找这个目录。

将语言环境重新设置为默认的英文状态:

$ unset LANG

工作环境设置文件

系统中的用户工作环境设置文件:

  • 登陆环境设置文件:/etc/profile
  • 非登陆环境设置文件:/etc/bashrc

用户设置的环境设置文件:

  • 登陆环境设置文件:$HOME/.Bash_profile
  • 非登陆环境设置文件:$HOME/.bashrc

系统中的用户工作环境设置文件对所有用户均生效,而用户设置的环境设置文件
对用户自身生效

用户可以将自定义的环境变量存放在$HOME/.Bash_profile中
用户可以将自定义的别名存放在 $HOME/.bashrc中,以便在每次登陆和调用子Shell时生效。

正则表达式

Shell的特殊字符正则表达式很相似,要了解两者之间的区别。
注意:由于正则表达式使用了一些特殊字符,所以所有正则表达式都必须用单引号括起来。

字符表达式:. [list] [range] [^]
量词:* {n,} {n} {n,m}
控制字符:^ $
非特殊字符代表它们自己,如果要表示特殊字符需要在前面加上反斜杠。

^[0~9]\{3\}[^0~9] 匹配以3个数字开头跟着是一个非数字字符的行

输入/输出重定向与管道

重定向

Shell检查是否有重定向符来决定是否重定向。

<	输入重定向
>>>	输出重定向
2>或2>>	实现错误重定向
&>	同时实现输出重定向和错误重定向

输出重定向:
执行命令前,>会覆盖原文件中的数据,而>>是在原来数据后面追加。

输入重定向:
#wc < 文件名
#命令<文件把文件作为命令的输入
#命令<<标识符
#标识符把标识符之间内容作为命令的输入

错误重定向:
将命令的错误信息保存在当前目录的文件中
#命令 2> 文件

输出和错误重定向同时实现:
#命令 &> 文件
当命令没有产生错误信息时,原文件内容会被清空。\

防止文件被覆盖:
set -o noclobber
仅对当前命令解释程序起作用,其它程序仍可能覆盖已存在的文件。
解除:
set +o noclobber

空设备/dev/null的用法:
将错误重定向到空设备,在屏幕上只得到有用的输出。

$ grep delegate /etc/* 2> /dev/null

管道

Linux的过滤性:一条名令执行后产生的结果数据又通过标准输出端口送给后一条命令。
Shell提供命令"|"连接,形成一个管道线
管道就是组合命令,从左到右顺序执行。
多级管道将一些简单的命令连接起来,形成更复杂的、功能更强的命令。

Shell脚本

Shell是一种脚本型语言,包含的成分主要有注释、命名、Shell变量和流程控制语句。
1。当执行脚本文件没有可执行权限时,只能使用$ bash 文件名
2。否则先修改为可执行权限,以便将文件作为可执行文件调用。

$ chmod +x 文件名
$ PATH = $PATH:$PWD
$ 文件名

3。./文件名
“.”命令就是在当前Shell中执行脚本文件中的命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值