Linux的bash脚本

Shebang

在计算领域中,Shebang(也称为 Hashbang )是一个由井号和叹号构成的字符序列 #! ,其出现在文本文件的第一行的前两个字符。
在文件中存在 Shebang 的情况下,类 Unix 操作系统的程序加载器会分析 Shebang 后的内容,将这些内容作为解释器指令,并调用该指令,并将载有 Shebang 的文件路径作为该解释器的参数。

#!/bin/bash
echo "Hello world!"
#!/usr/bin/env python
# -*- coding: utf-8 -*-
for i in range(10):
        print("Hello World!")

注意:

  1. 如果#!指定的解释器没有可执行的权限,会报错:"bad interpreter: Permission denied"。
  2. 如果#!指定的解释器不是一个可执行文件,那么指定的解释器会被忽略,转而给当前的shell执行此脚本。
  3. 如果#!指定的解释器不存在,会报错:"bad interpreter:No such file or directory"。
  4. 其中#!指定的解释器需要写其绝对路径。
  5. 如果使用的"bash test.sh"命令来执行脚本,那么shebang会被忽略,使用显式指定的bash。

注释

在shell脚本中,#后面的内容会被注释掉,系统会忽略。
尽量保持写注释的习惯,方便以后回顾(不然可能自己都看不懂)。

#!/bin/bash
# Date :2023-12-12 16:45
# Author: wg
# Blog:www.cnblogs.com/ganwong

echo "Hello world!"

执行shell脚本的方式

  1. bash script.sh或者sh script.sh ,这种方式,即使文件本身没有可执行权限。在脚本未指定shebang时也推荐使用这种方式。
[test@localhost ~]$ bash hello.sh
Hello world!
[test@localhost ~]$ sh hello.sh
Hello world!
  1. 使用绝对或相对路径执行脚本,需要文件具有可执行权限。
  2. source script.sh或者. script.sh ,代表执行通常使用后者。

几种方式的区别可以查看shell执行脚本各方式的区别

命令历史

参考:history命令
shell会保留其会话中用户提交执行的命令。
Linux 命令的历史记录,会持久化存储,默认位置是当前用户家目录的 .bash_history 文件。
当 Linux 系统启动一个 Shell 时,Shell 会从 .bash_history 文件中,读取历史记录,存储在相应内存的缓冲区中。
我们平时所操作的 Linux 命令,都会记录在缓冲区中。包括 history 命令所执行的历史命令管理,都是在操作缓冲区,而不是直接操作 .bash_history 文件。
当我们退出 Shell,比如按下 Ctrl+D 时,Shell 进程会把历史记录缓冲区的内容,写回到 .bash_history 文件中去。
基础用法:

1. 直接输入 history 命令,可以看到最近操作的所有命令都显示出来了
$ history
   1  bash
   2  ls
   3  vim .bash_history
   4  cat .bash_history
   5  history
   6  bash

2. 有时候我不需要显示所有的历史命令,只显示最后的 10 条历史记录,可以在命令后加数字 N 即可
$ history 10

3. 正常情况下,只有在 Shell 正常退出时,才会将缓冲区内容保存到文件。如果你想主动保存缓冲区的历史记录,执行 -w 选项即可
$ history -w

4. 如果你执行了一些敏感的命令操作,可以执行 -c 将缓冲区内容直接删除
$ history -c

重复执行命令(调用历史命令)

1.如果要重复执行一些命令,可以使用 ! 来快速执行重复的命令。重复执行第 1024 历史命令,可以执行如下命令
$ !1024
1024 这个编号可以通过 history 查看.

2.重复执行上一条命令
$ !!

3.重复执行倒数第 6 条历史命令,可以通过负数表示,-6 表示倒数第 6 条记录
$ !-6

4.刚才执行了一个很长命令,只记录命令开头是 curl,这时就可以通过 !curl 快速执行该命令可以通过 !curl 快速执行该命令
$ !curl

调用上一次命令的最后一个参数:

  1. 同时按住esc+.
  2. !$
[wg@localhost wg_test]$ cat !$
cat ./gushi.txt
静夜思
床前明月光

相关推荐

  1. Linuxbash脚本

    2023-12-12 17:57:03       55 阅读
  2. linux bash脚本

    2023-12-12 17:57:03       18 阅读
  3. Linux笔记之bash脚本$符号

    2023-12-12 17:57:03       28 阅读
  4. Linux中用bash脚本

    2023-12-12 17:57:03       27 阅读
  5. Linux系统中编写bash脚本进行mysql数据同步

    2023-12-12 17:57:03       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-12 17:57:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-12 17:57:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-12 17:57:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-12 17:57:03       18 阅读

热门阅读

  1. AtCoder Grand Contest 001

    2023-12-12 17:57:03       55 阅读
  2. TCP和UDP的区别

    2023-12-12 17:57:03       36 阅读
  3. Git合并代码(rebase)

    2023-12-12 17:57:03       39 阅读
  4. android重启app

    2023-12-12 17:57:03       42 阅读
  5. Python——第五章:json模块

    2023-12-12 17:57:03       42 阅读
  6. 12月10号总结

    2023-12-12 17:57:03       42 阅读
  7. Nginx——记录post请求回执405的一种解决方式

    2023-12-12 17:57:03       50 阅读
  8. 代码编译出错可能的原因

    2023-12-12 17:57:03       65 阅读
  9. OOP

    2023-12-12 17:57:03       54 阅读
  10. 02-python基础学习

    2023-12-12 17:57:03       39 阅读
  11. 【docker】根据docker inspect获取启动参数

    2023-12-12 17:57:03       40 阅读
  12. JVM调优

    JVM调优

    2023-12-12 17:57:03      41 阅读
  13. Go 语言区块链测试实践指南(一):GO单元测试

    2023-12-12 17:57:03       40 阅读
  14. 2023年的PHP项目部署笔记。什么?还有人用PHP?

    2023-12-12 17:57:03       39 阅读