Linux Shell 002-基础知识
2023-12-23 17:44:39
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
文章来源:https://blog.csdn.net/qq_45157350/article/details/135167242
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!