为了账号安全,请及时绑定邮箱和手机立即绑定

Linux基础 Shell基础学习

标签:
Linux
Shell基础
Shell概述

Shell是什么

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

Shell的分类

  • Bourne Shell:从1979年起Unix就开始使用Bourne Shell, Bourne Shell的主文件名就是sh。
  • C Shell: C Shell主要在BSD版的Unix系统中使用,其语法和C语言类似而得名。
Shell脚本执行方式

1、echo 输出命令

echo [选项] [输出命令]
选项: -e:支持反斜线控制的转义字符

[root@localhost ~]# echo -e "\e[1;31m 这里可以有颜色 \e[0m"
输出颜色
30m=黑色, 31m=红色, 32m=绿色,33m=黄色
34m=蓝色, 35m=洋红, 36m=青色,37m=白色

2、第一个脚本]

[root@localhost ~]# vi hello.sh
#!/bin/bash
#the first program
echo -e "\e[1;34m hello shell \e[0m"
Bash的基本功能

1、命令别名与快捷键

查看与设定别名
alias #查看系统中所有的命令别名
alias 新的命令='原命令 -选项/参数'
设定新别名

别名永久生效与删除别名
vi ~/.bsdhrc
写入环境变量配置文件
unalias 别名
删除别名

命令生效顺序

  • 第一顺位执行用绝对路径或相对路径执行的命令。
  • 第二顺位执行别名
  • 第三顺位执行Bash的内部命令
  • 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令

常用快捷键

  • ctrl+c 强制终止当前命令
  • ctrl+l 清屏
  • ctrl+a 光标移动到命令行首
  • ctrl+e 光标移动到命令行尾
  • ctrl+u 从光标所在位置删除到行首
  • ctrl+z 把命令放入后台
  • ctrl+r 在历史命令中搜索

2、历史命令

history [选项] [历史命令保存文件]
选项:
-c: 清空历史命令
-w: 把缓存中的历史命令写入历史命令保存文件~/.bash_history
历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改

历史命令的调用

  • 使用上、下箭头调用历史命令
  • 使用 "!n" 重复执行第n条历史命令
  • 使用 "!!" 重复执行上一条命令
  • 使用 "!字符串" 重复执行最后一条以该字符串开头的命令

命令与文件补全
在Bash中,命令与文件补全是非常方便与常用的功能,只要在输入命令或文件时,按“Tab”键就会自动补全。

3、输出重定向

1、标准输入输出

设备设备文件名文件描述符类型

键盘/dev/stdin0标准输入
显示器/dev/sdtout1标准输出
显示器/dev/sdterr2标准错误输出

类型符号作用

标准输出重定向命令 > 文件以覆盖的方式,把命令的正确输出输出到指定的文件或设备中
/dev/命令 >>文件以追加的方式,把命令的正确输出输出到指定的文件或设备中
标准错误输出重定向命令 2>文件以覆盖的方式,把命令的错误输出输出到指定的文件或设备中
显示器错误命令 2>> 文件以追加的方式,把命令的错误输出输出到指定的文件或设备中

正确输出和错误输出同时保存命令 > 文件 2>1&1以覆盖的方式,把正确输出和错误输出都保存到同一个文件中
命令 >> 文件 2>1&1以追加的方式,把正确输出和错误输出都保存到同一个文件中
命令 &> 文件以覆盖的方式,把正确输出和错误输出都保存到同一个文件中
命令 &>> 文件以追加的方式,把正确输出和错误输出都保存到同一个文件中
命令 >> 文件1 2>> 文件2把正确的输出追加到文件1中,把错误的输出追加到文件2中

3、输入重定向

[root@localhost ~]# wc [选项] [文件名]
选项:
-c统计字节数
-w统计单词数
-l统计行数

  • 命令<文件 把文件作为命令的输入
  • 命令 << 标示符
  • ...
  • 标识符把标识符之前内容作为命令的输入

    4、管道符

    1、多命令顺序执行

多命令执行符格式作用

;命令1 ; 命令2多个命令顺序执行,命令之间没有任何逻辑关系
&& 命令1 && 命令2逻辑与 <br>当命令1正确执行,命令2才会执行<br>当命令1执行不正确,命令2不会执行
\ 命令1 \命令2 逻辑或<br>当命令1执行不正确,则命令2才会执行<br>当命令1正确执行,则命令2不会执行

2、管道符

  • 命令格式:
  • [root@localhost~]# 命令1 命令2
    命令1的正确输出作为命令2的操作对象

    5、Shell中特殊符号

    1、通配符

    通配符作用

    ? 匹配一个任意字符
    *匹配0个或任意多个任意字符,也就是匹配任何内容
    []匹配中括号中任意一个字符。例如:[abc]代表一定匹配abc中一个字符
    [-]匹配中括号中任意一个字符,-代表一个范围。例如:[a-z]代表匹配一个小写字母
    [^]逻辑非,标示匹配不是中括号内的一个字符。例如:[^0-9]代表匹配一个不是数字的字符

2、Bash中其他特殊符号

符号作用

'' 单引号。<br>在单引号中所有的特殊符号,如"$"和""(反引号)都没有特殊含义 ""双引号。<br>在双引号中特殊符号都没有特殊含义,但是"$"、""和"\"是例外,拥有”调用变量的值“、”引用命令“和”转义符“的特殊含义
``反引号。<br>反引号括起来的内容是系统命令,在Bash中会先执行它。和$()作用一样,不过推荐使用$(),因为反引号非常容易看错
$()和翻译好作用一样,用来引用系统命令。

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

$用于调用变量的值,如需要调用变量name的值时,需要用¥name的方式得到变量的值。
\ 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通符号。如\$将输入"$"符号,而不当做是变量引用

点击查看更多内容
25人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
40
获赞与收藏
461

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消