linux 截取ln换行符,[LN_06] Shell基础:Bash基本功能(别名|输出重定向|管道符|通配符)...

目录结构

一、Shell概述

1. Shell简介 & 工作原理

2. Shell分类

二、脚本执行方式

1. 输出命令:echo

2. 第一个Shell脚本(.sh)

3. 脚本执行

三、Bash的基本功能

1. 别名与快捷键

1)别名查看&设置

2)命令生效执行优先顺序

3)常用快捷键

2. 历史命令:history

1)查看历史命令存储的文件

2)历史命令的调用

3)命令补全

3. 输出重定向

1)标准输入&输出

2)输出重定向

3)输入重定向

4. 管道符

1)多命令顺序执行

2)管道符

5. 通配符

1)常用通配符

2)Bash中的其他特殊符号

一、Shell概述

1. Shell简介 & 工作原理

引入Shell:

在系统终端输入的字符即ASCII字符,计算机不能识别,需要翻译成为二进制(0和1组成),计算机才能有效识别,此时即需要Shell构建桥梁联通用户和计算机进行交流

Shell概念:

Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序(如:命令终端界面),用户可以用Shell来启动、挂起、停止甚至是编写一些程序。Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令

168f586c998b

Shell工作场景:

用户与内核通过Shell的搭桥牵线进行交流

Step1:用户在命令终端界面输入常规命令的字符,Enter回车

Step2:Shell根据ASCII码表,将用户输入的字符翻译成二进制形式的字符串

Step3:Shell将翻译的结果传递给内核

Step4:内核调用计算机硬件来处理用户输入的命令

Step5:硬件执行的结果,通过内核传递给Shell

Step6:通过Shell再将处理结果翻译成用户可识别的ASCII字符

Step7:传递计算机处理结果呈现给用户

2. Shell分类

Shell主要有两种语法类型:Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括:sh、ksh、Bash、psh、zsh,其中Bash是目前Linux中标准的Shell;C家族主要包括:csh、tcsh,主要是给Unix使用

1)Bourne Shell:

从1979起Unix就开始使用Bourne Shell,其主文件名为sh

2)C Shell:

C Shell主要在BSD版的Unix系统中使用,其语法和C语言相类似而得名

查看Shell的相关操作:

查看系统中所有支持的shell:cat /etc/shells

168f586c998b

查看当前系统运行的shell:echo $SHELL

168f586c998b

切换状态(Bash --> sh):sh

退出切换(sh --> Bash):exit

168f586c998b

二、脚本执行方式

1. 输出命令:echo

echo [选项] [输出内容]

选项:

-e 支持反斜线控制的字符转换

控制字符

作用

\a

输出警告音

\b

退格键(向左删除键)

\n

换行符

\r

回车键

\t

制表符(Tab键)

\v

垂直制表符

\0nnn

按照8进制ASCII码输出字符(0为数字零,nnn为3位8进制数)

\xhh

按照16进制ASCII码表输出字符(hh为2位16进制数)

:ASCII码对照表

如:echo -e "\x68\x65\x6C\x6C\x6F\t2019\nFighting"

168f586c998b

输出颜色:

# 输出颜色

echo -e "\e[1;31m hello 2019 \e[0m"

颜色:

30m--31m--32m--33m--34m--35m--36m--37m

黑----红---绿---黄---蓝---洋红--青---白

168f586c998b

2. 第一个Shell脚本(.sh)

以命令vi hello.sh新建Shell脚本文件,文件开头填写 #!/bin/bash 为必填内容,目的是为了规范使用,且保证在Shell中调用其他语言时正常运行

#!/bin/bash

# 第1个Shell脚本

echo -e "\e[1;34m Hello World ! \e[0m"

168f586c998b

3. 脚本执行

方式①:赋予执行权限,直接运行

chmod 755 hello.sh

./hello.sh

方式②:通过Bash调用执行脚本(无须赋权)

bash hello.sh

168f586c998b

三、Bash的基本功能

1. 别名与快捷键

1)别名查看&设置

# 查看系统中已经生效的命令别名

alias

# 设置命令的别名(临时设置)

alias 别名='原命令'

# 删除别名(临时删除)

unalias 别名

PS:别名设置时,等号=左右不留空格,否则可能设置不成功

168f586c998b

vim作为vi的增强版,可将vim的别名设置为vi,如:alias vi='vim'

取消设置:unalias vi

168f586c998b

168f586c998b

168f586c998b

168f586c998b

使别名配置永久生效:

# 写入环境变量配置文件(永久生效)

vi ~/.bashrc

# 使配置文件立即生效

source .bashrc

2)命令生效执行优先顺序

No.1:绝对or相对路径执行的命令

No.2:别名设置的命令

No.3:Bash内部命令

No.4:$PATH环境变量定义的目录下查找到的命令

3)常用快捷键

【CTRL+C】 ==> 强制终止当前命令的执行

【CTRL+L】 ==> 清屏

【CTRL+A】 ==> 光标移动到命令行首

【CTRL+E】 ==> 光标移动到命令行尾

【CTRL+U】 ==> 从光标所在位置删除直至行首

【CTRL+Z】 ==> 把命令放入后台(未终止命令,还会占用一定的系统资源)

【CTRL+R】 ==> 在历史命令中搜索

2. 历史命令:history

history [选项] [历史命令保存文件]

选项:

-c 清空历史命令

-w 把缓存中的历史命令写入历史命令保存文件 ~/.bash_history

1)查看历史命令存储的文件

168f586c998b

vi /etc/profile

168f586c998b

2)历史命令的调用

①使用上下箭头 ↑↓ 调用以前的历史命令

②使用 "!字串" 重复执行最后一条以该字串开头的命令

如:service network restart,执行一次之后,下一次可用 !ser 执行,提升操作效率

3)命令补全

Bash中命令与文件补全,可用Tab键,连续2次按Tab键则会展示该字符串开头的所有命令备选;相似的,连续按2次Tab键则会展示某个目录下的所有子目录

168f586c998b

3. 输出重定向

1)标准输入&输出

设备

设备文件名

文件描述符

类型

键盘

/dev/stdin

0

标准输入

显示器

/dev/stdout

1

标准输出

显示器

/dev/stderr

2

标准错误输出

2)输出重定向

从把本来会输出到显示器上的信息,改变方向写入到指定文件中保存而不在显示器输出

应用场景:Linux服务器上人为维护以外的时间,设置定时执行某个命令,然后将其结果保存到指定文件中成为日志,以备查看

a-标准正确输出重定向

符号

作用

命令 > 文件

把命令的正确输出保存到指定文件or设备中

(覆盖原内容)

命令 >> 文件

(追加到原内容之后)

b-标准错误输出重定向

符号

作用

错误命令 2>文件

把命令的错误输出保存到指定文件or设备中

(覆盖)

错误命令 2>>文件

(追加)

PS:对于错误输出,建议符号>左右两侧不留空格

c-同时保存正确输出和错误输出的结果

符号

作用

命令 > 文件 2>&1

命令 &>文件

把正确输出和错误输出都保存到同一个文件中

(覆盖)

命令 >> 文件 2>&1

命令 &>>文件

把正确输出和错误输出都保存到同一个文件中

(追加)

命令>>文件1 2>>文件2

把正确输出追加到文件1中,把错误输出追加到文件2中

3)输入重定向

wc [选项] [文件名]

选项:

-c 统计字节数

-w 统计单词数

-l 统计行数

168f586c998b

命令 < 文件:把文件作为命令的输入,统计文件中的字符

命令 << 标识符:把出现标识符及以前的内容作为输入,统计其中的字符

168f586c998b

4. 管道符

1)多命令顺序执行

执行符

格式

作用

;

命令1; 命令2

多个命令顺序执行,命令之间没有任何逻辑联系

&&

命令1 && 命令2

逻辑与

当命令1执行正确,则才会执行命令2

math?formula=%7C%7C

命令1 || 命令2

逻辑或

当命令1执行错误,则才会执行命令2

应用场景

【1】执行某个or几个命令所需的时间计算:

date; xxx命令; date

如:

date; dbupdate; date

168f586c998b

【2】判断某个命令执行是否正确:

xxx命令 && echo yes || echo no

如:

pwd && echo yes || echo no

password && echo yes || echo no

168f586c998b

2)管道符

# 命令1的正确输出,作为命令2的操作对象

命令1 | 命令2

如:

对上一个命令的查询结果,通过下一个命令进行分屏查看:ll -a /etc/ | more

查询服务器上连接的用户:netstat -an | grep ESTABLISHED

统计服务器上连接的用户数:netstat -an | grep ESTABLISHED | wc -l

168f586c998b

5. 通配符

1)常用通配符

通配符

作用

?

匹配一个任意字符

*

匹配0个or任意多个任意字符(匹配任何内容)

[]

匹配中括号中的任意一个字符

[-]

匹配中括号中的任意一个字符,符号-连接字符的范围

[^]

逻辑非,匹配非中括号内的一个字符。如:[^0-9]

2)Bash中的其他特殊符号

符号

作用

'

单引号。在其内所有的特殊符号都无特殊含义,以普通字符处理

""

双引号。在其内$可调用变量的值,`可引用命令,\可作转义符

``

反引号。其内引用的是系统命令,在Bash中会先执行它

$()

和反引号作用一致,用来引用系统命令

#

在Shell脚本中,#开头的行代表注释

$

用于调用变量的值

\

转义符。跟在\之后的特殊符号将会失去特殊含义,变为普通字符

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值