Linux shell脚本编程

什么是Shell程序设计?

也就是给计算机发命令,让它帮你做事,你通过shell

的小工具,用键盘输入指令,linux就会根据这些指令去执行任务,就像你法号一个指令一样。

shell的强大之处?

  • 文件处理:让计算机去找文件、压缩文件、删除文件
  • 系统管理:自动备份、清理垃圾文件等
  • 任务自动化:比如你设定定时任务,自动做一些此重复性的工作,解放你的双手。

shell脚本的建立与执行

1.shell脚本的建立:

shell脚本色建立,简单的来所就是给计算机编写任务清单(脚本),这个脚本就像你给计算机的"指令书",告诉他需要做什么。

步骤一:创建有一个脚本文件(与创建普通的文件一样)

复制代码
touch myscript.sh

步骤二:给文件加点"魔法"

使用文本编辑器(比如nano、vim等)

复制代码
nano myscript.sh

然后在文件里写这些内容:

复制代码
#!/bin/bash
# 这是一个简单的脚本
echo "你好,世界!"

其中#!/bin/bash 是告诉计算机这个脚本应该用bash来执行

2.给脚本执行权限:

相当于给文件"通行证",可以随时跑起来了

复制代码
chmod +x myscript.sh

这一步就是给脚本文件加上执行权限

3.执行脚本(3种执行方式)
  • 直接运行:

    ./myscript.sh

  • 通过shell命令运行:

    bash myscript.sh

或者

复制代码
sh myscript.sh

或者

复制代码
. myscript.sh

总结:

  1. ./myscript.sh:直接执行(拍肩膀让它动起来)。
  2. bash myscript.shsh myscript.sh:让Shell代你执行(给计算机找个帮手)。
  3. source myscript.sh. myscript.sh:在当前环境执行(你自己动手,做得更直接)。

历史命令(history):

它就像一个"记事本",帮你记下了每一次你敲入的命令,,方便之后回顾或重用

1.查看历史命令

你可以用history命令来查看之前执行过的命令列表,类似你翻阅自己做过的笔记。

复制代码
history

它会列出你执行过的命令,按顺序编号,从最早的命令开始,越新的命令越在后面。

输出的格式一般是这样的:

复制代码
1  ls
2  cd /home/user
3  echo "Hello"
4  history
2.重新执行历史命令:

如果你想重复执行某个命令,可以用!加上命令编号。就像你去超市,看到买过的商品,直接拿来再买一遍。

复制代码
!2

这个命令会重新执行编号为2的命令,也就是cd /home/user

3.执行最近的命令:

如果你只想重复最近执行的命令,可以直接输入!!。就像说:"嘿,刚刚那个命令,你再来一次!"

复制代码
!!

这会重新执行你刚刚执行的命令,超级省事儿。

4.查看历史命令:

如果你记得之前执行过某个命令,但记不清具体是什么,可以使用!加上命令的一部分来搜索。比如,假设你曾经执行过一个git命令,你可以输入:

复制代码
!git

这样就会执行最近一次包含git的命令。就像翻阅日历,找出最相关的日期。

5.清楚历史命令:

如果你不想让别人看到你的命令历史,或者想重置记录,可以用history -c来清除当前的历史命令。就像你想清空"记事本"一样:

复制代码
history -c
6.保存历史命令:

默认情况下,历史命令会保存在~/.bash_history文件中。你可以直接打开这个文件查看或者编辑历史命令记录。

复制代码
nano ~/.bash_history
相关推荐
还是鼠鼠41 分钟前
Node.js 跨域 CORS 简单请求与预检请求的介绍
运维·服务器·vscode·中间件·node.js·express
我命由我123452 小时前
35.Java线程池(线程池概述、线程池的架构、线程池的种类与创建、线程池的底层原理、线程池的工作流程、线程池的拒绝策略、自定义线程池)
java·服务器·开发语言·jvm·后端·架构·java-ee
old_iron5 小时前
vim定位有问题的脚本/插件的一般方法
linux·编辑器·vim
爱知菜7 小时前
Windows安装Docker Desktop(WSL2模式)和Docker Pull网络问题解决
运维·docker·容器
做测试的小薄7 小时前
Nginx 命令大全:Linux 与 Windows 系统的全面解析
linux·自动化测试·windows·nginx·环境部署
影龙帝皖8 小时前
Linux网络之局域网yum仓库与apt的实现
linux·服务器·网络
月下雨(Moonlit Rain)8 小时前
Docker
运维·docker·容器
碎忆8 小时前
在VMware中安装虚拟机Ubuntu
linux·ubuntu
农民小飞侠8 小时前
ubuntu 安装pyllama教程
linux·python·ubuntu
打工人你好9 小时前
UNIX域套接字(Unix Domain Sockets, UDS) 的两种接口
服务器·unix