当前位置: 首页 > news >正文

Linux Shell 002-基础知识

Linux Shell 002-基础知识

本节关键字:Linux、Bash Shell、基础知识、Bash特性
相关指令:bash、rm、cp、touch、date

基础知识

什么是Shell脚本

简单概括:将需要执行的命令保存到文本中,按照顺序执行。
准备描述:shell脚本 = 若干命令 + 脚本的基本格式 + 脚本特定语法 + 思想

Shell脚本能干什么

Shell脚本可以将重复化、复杂化的工作简单化,无须每次都将复杂的命令依次手动执行一遍。使用Shell脚本可以完成以下内容:

  • 自动化软件部署,如:LANP、LNMP、Tomcat等
  • 自动化管理,如:系统初始化脚本、批量修改密码、推送公钥等
  • 自动化分析处理,如:统计网站访问量等
  • 自动化备份,如:数据库备份、日志转储等
  • 自动化监控脚本,如:实时监测某个进程,进程异常退出时就自动重启
Shell脚本的基本写法
  • 脚本第一部分,在第一行使用魔法字符指定解释器
#!/bin/bash

#!/bin/env bash
  • 脚本第二部分,给脚本添加注释,如:脚本名称、功能描述、存放路径、使用方法、更新时间等
  • 脚本第三部分,要实现的具体代码内容
Shell脚本的执行方法
  • 第一步,编写Shell脚本 /home/Jeck/shell.sh
  • 第二步,给Shell脚本增加可执行权限,chmod +x /home/Jeck/shell.sh
  • 第三步,标准方式执行脚本,使用Shell脚本的绝对路径执行脚本,如:/home/Jeck/shell.sh
bash命令的常用选项
选项说明
-x查看脚本的执行过程,一般用于排错
-n查看脚本的语法是否存在问题

使用示例

bash -n /home/Jeck/shell.sh
bash -x /home/Jeck/shell.sh
Shell脚本的基本语法结构
  • 变量定义、条件判断、循环语句(for、until、while)、分支语句、函数和数组等
  • 基本正则表达式的作用
  • 文件处理三剑客:grep、sed、awk工具的使用
  • 使用shell脚本完成一些比较复杂的任务,如服务搭建、批量处理等

Bash的特性

命令和文件自动补全

Tab键只能补全命令和文件。

常见的快捷键

说明:^ 为 Ctrl 键

快捷键组成说明
^c终止前台运行的程序
^z将前台运行的程序挂起到后台
^d退出 等价exit
^l清屏
^a+Home键光标移到命令行的最前端
^e+End键光标移到命令行的后端
^u删除光标前所有字符
^k删除光标后所有字符
^r搜索历史命令
常用的通配符
通配符说明
*匹配0或多个任意字符
?匹配任意单个字符
[list]匹配[list]中的任意单个字符,或者一组单个字符 [a-z]
[!list]匹配除list中的任意单个字符
{string1,string2,…}匹配string1,string2或更多字符串

应用示例

# 实例1,强制删除当前目录下以file开头的说有文件
$ rm -f file*# 实例2,拷贝当前目录下所有以.conf结尾的文件到目录/mydir下
$ cp *.conf  /mydir# 实例3,创建5个文件,并分别命名为file1、file2、file3、file4、file5
$ touch file{1..5}
Bash中的引号
符号名称作用
“”双引号会把引号的内容当成整体来看待,允许通过$符号引用其他变量值
‘’单引号会把引号的内容当成整体来看待,禁止引用其他变量值,shell中特殊符号都被视为普通字符
``反撇号反撇号和$()一样,引号或括号里的命令会优先执行,如果存在嵌套,反撇号不能用

说明:反撇号就是键盘ESC下面一个的英文按键符号

Bash Shell引号的使用示例

[root@localhost]$ echo "$(hostname)"
server
[root@localhost]$ echo '$(hostname)'
$(hostname)
[root@localhost]$ echo "hello world"
hello world
[root@localhost]$ echo 'hello world'
hello world
[root@localhost]$ echo $(date +%F)
2018-11-22
[root@localhost]$ echo `echo $(date +%F)`
2018-11-22
[root@localhost]$ echo `date +%F`
2018-11-22
[root@localhost]$ echo `echo `date +%F``
date +%F
[root@localhost]$ echo $(echo `date +%F`)
2018-11-22
http://www.lryc.cn/news/266237.html

相关文章:

  • 前缀和+单调双队列+贪心:LeetCode2945:找到最大非递减数组的长度
  • 【微服务】springboot整合kafka-stream使用详解
  • 什么是动态代理?
  • 【OAuth2】:赋予用户控制权的安全通行证--原理篇
  • 【K8s】2# 使用kuboard管理K8s集群(kuboard安装)
  • 爬虫是什么?起什么作用?
  • 代码随想录27期|Python|Day24|回溯法|理论基础|77.组合
  • mysql(49) : 大数据按分区导出数据
  • 阿里云ECS配置IPv6后,如果无法访问该服务器上的网站,可检查如下配置
  • 基于SSM的双减后初小教育课外学习生活活动平台的设计与实现
  • HTTP前端请求
  • 前端性能优化二十四:花裤衩模板第三方库打包
  • 多维时序 | MATLAB实现BiTCN-Multihead-Attention多头注意力机制多变量时间序列预测
  • Qt的简单游戏实现提供完整代码
  • SpringMVC之文件的下载
  • 计算机组成原理第6章-(算术运算)【下】
  • 【开题报告】基于微信小程序的校园资讯平台的设计与实现
  • VUE前端导出文件之file-saver插件
  • 【Earth Engine】协同Sentinel-1/2使用随机森林回归实现高分辨率相对财富(贫困)制图
  • C++ 检测 是不是 com组件 的办法 已解决
  • linux buffer的回写的触发链路
  • Lambda表达式超详解
  • 西门子博途与菲尼克斯无线蓝牙模块通讯
  • vue2 之 实现pdf电子签章
  • 什么是MVC?MVC框架的优势和特点
  • 主从复制mysql-replication | Replication故障排除
  • 基于Java SSM框架实现教学质量评价评教系统项目【项目源码+论文说明】计算机毕业设计
  • 03|模型I/O:输入提示、调用模型、解析输出
  • springcloud-gateway-2-鉴权
  • 实现一个最简单的内核