首页 > 系统相关 >shell工具和脚本

shell工具和脚本

时间:2023-01-20 23:33:46浏览次数:32  
标签:脚本 shell 命令 工具 foo find bash

Shell脚本

shell 脚本是一种更加复杂度的工具。

大多数shell都有自己的一套脚本语言,包括变量、控制流和自己的语法。shell脚本
与其他脚本语言不同之处在于,shell 脚本针对 shell 所从事的相关工作进行来优化。
因此,创建命令流程(pipelines)、将结果保存到文件、从标准输入中读取输入,这些
都是 shell 脚本中的原生操作,这让它比通用的脚本语言更易用。本节会专注于bash脚本
因为它最流行,应用更为广泛。

在bash中为变量赋值的语法是foo=bar,访问变量中存储的数值,其语法为 $foo。
需要注意的是,foo = bar (使用空格隔开)是不能正确工作的,因为解释器会调用程序foo
将 = 和 bar作为参数。 总的来说,在shell脚本中使用空格会起到分割参数的作用,
有时候可能会造成混淆,请务必多加检查。

在Bash中单引号和双引号都是定义字符串的
,但是以单引号定义的字符串为原始字符串,其中的变量不会被转义,而
双引号定义的字符串会将变量值进行替换

[root@localhost ~]# test=shell_bash
[root@localhost ~]# echo "$test"
shell_bash
# 打印 shell_bash
[root@localhost ~]# echo '$test'
$test
# 打印 $test

同样bash也支持if,case,while,和for这些控制流关键字
同样地, bash 也支持函数,它可以接受参数并基于参数进行操作。

mcd(){
  mkdir -p "$1"
  cd "$1"
}

这里 $1 是脚本的第一个参数。与其他脚本语言不同的是,bash使用了很多特殊的变量来表示参数、错误代码和相关变量。

$0 - 脚本名
$1 到 $9 - 脚本的参数。 $1 是第一个参数,依此类推。
$@ - 所有参数
$# - 参数个数
$? - 前一个命令的返回值
$$ - 当前脚本的进程识别码
!! - 完整的上一条命令,包括参数。常见应用:当你因为权限不足执行命令失败时,可以使用 sudo !!再尝试一次。
$_ - 上一条命令的最后一个参数。如果你正在使用的是交互式 shell,你可以通过按下 Esc 之后键入 . 来获取这个值。

命令通常使用 STDOUT来返回输出值,使用STDERR 来返回错误及错误码,便于脚本以更加友
好的方式报告错误。 返回码或退出状态是脚本/命令之间交流执行状态的方式。返回值0表示
正常执行,其他所有非0的返回值都表示有错误发生

退出码可以搭配 &&(与操作符)和 ||(或操作符)使用,用来进行条件判断,决定是否执
行其他程序。它们都属于短路运算符(short-circuiting) 同一行的多个命令可以用 ;
分隔。程序 true 的返回码永远是0,false 的返回码永远是1。让我们看几个例子

例子

#!/bin/bash

echo "Starting program at $(date)"
# date会被替换成日期和时间
echo "Running program $0 with $# arguments with pid $$"

for file in "$@";do
  grep foobar "$file" > /dev/null 2> /dev/null
  # 如果模式没有找到,则grep退出状态为 1
    # 我们将标准输出流和标准错误流重定向到Null,因为我们并不关心这些信息
    if [[ $? -ne 0 ]]; then
        echo "File $file does not have any foobar, adding one"
        echo "# foobar" >> "$file"
    fi
done

shell的 通配(globbing)

  • 通配符 - 当你想要利用通配符进行匹配时,你可以分别使用 ? 和 * 来匹配一个或任意个字符。
    例如,对于文件foo, foo1, foo2, foo10 和 bar, rm foo?这条命令会删除foo1 和 foo2 ,
    而rm foo* 则会删除除了bar之外的所有文件。

  • 花括号{} - 当你有一系列的指令,其中包含一段公共子串时,
    可以用花括号来自动展开这些命令。这在批量移动或转换文件时非常方便。

例如:

convert image.{png,jpg}
# 会展开为
convert image.png image.jpg

# 也可以配合通配符使用
mv *{.py,.sh} folder
# 会移动所有 *.py 和 *.sh 文件

mkdir foo bar 

Shell工具

查看命令如何使用

最常用的方法是为对应的命令行添加-h 或 --help 标记。
另外一个更详细的方法则是使用man 命令。man 命令是手册(manual)的缩写,
它提供了命令的用户手册。

查找文件

所有的类UNIX系统都包含一个名为 find 的工具,
它是 shell 上用于查找文件的绝佳工具。
find命令会递归地搜索符合条件的文件。

例如:

# 查找所有名称为src的文件
find . -name src -type d
# 查找所有文件夹路径中包含test的python文件
find . -path '*/test/*.py' -type f
# 查找前一天修改的所有文件
find . -mtime -1
# 查找所有大小在500k至10M的tar.gz文件
find . -size +500k -size -10M -name '*.tar.gz'

查找代码

UNIX的系统都提供了grep命令,它是用于对输入文本进行匹配的通用工具。

grep 有很多选项,这也使它成为一个非常全能的工具。
其中我经常使用的有 -C :获取查找结果的上下文(Context);
-v 将对结果进行反选(Invert),也就是输出不匹配的结果。
举例来说, grep -C 5 会输出匹配结果前后五行。
当需要搜索大量文件的时候,使用 -R 会递归地进入子目录并搜索所有的文本文件。

查找shell命令

history 命令允许您以程序员的方式来访问shell中输入的历史命令。
这个命令会在标准输出中打印shell中的里面命令。
如果我们要搜索历史记录,则可以利用管道将输出结果传递给 grep 进行模式搜索。
history | grep find 会打印包含find子串的命令。

标签:脚本,shell,命令,工具,foo,find,bash
From: https://www.cnblogs.com/-Lucky-/p/17063394.html

相关文章

  • PDF文件一键压缩工具V1.0-免费版
    一、工具简介该PDF文件一键压缩工具V1.0可以批量把PDF大文件一键压缩,减小PDF大小。二、使用教程1.把PDF文件一键压缩工具软件和需要压缩的PDF文档文件放到同一文件夹下。......
  • 登录服务器的软件-WinSCP 和 Xshell
    在登录服务器的时候,可以使用Linux系统,比如虚拟机下的Centos7和子系统Ubuntu。连接方式为:[email protected](需要用户名,端口,地址)。在Windows系统下,如......
  • 功能测试必备:抓包工具的作用及常用抓包工具有哪些?
    大家好啊,我是大田在测试工作中,需要抓包工具帮助定位前后端问题,当看到前端页面出现bug后,需要进一步判断是前端问题还是后端问题。同时可以利用抓包工具进行小规模的安全测......
  • 功能测试必备:抓包工具之谷歌开发者工具介绍及使用场景
    大家好啊,我是大田如果想在Web端抓取网络报文,就打开一个浏览器页面,按快捷键F12,点击NetWork,即可看到。一、四个操作:1、小红点代表抓包标志,点击一下变灰,就停止抓包了......
  • shell脚本
    学习地址嵌入式方向搞到什么程度,简单使用shell脚本语法输入输出计算test命令&&||中括号判断符[]==!=默认变量......
  • 开发者工具
    届时,包括新版下载、文档和示例在内的所有框架日常维护工作,将全部迁移到Github和Gitee。再者,对于layuiAdmin和layim专区,将会迁移到新站进行保留,以便老用户还能下载......
  • OllyDbg动态调试工具的使用
    OllyDbg动态调试工具的使用动态调试工具:OllyDbg,WinDbg静态调试工具:ida本次我将学习OllyDbg动态调试工具的使用OllyDbg是一种具有可视化界面的32位汇编分析调试器,是一......
  • 自动化工具PyAutoGUI :键盘操作
    pyautogui.typewrite('Helloworld!')#输入Helloworld!字符串pyautogui.typewrite('Helloworld!',interval=0.25)#每次输入间隔0.25秒,输入Helloworld!pyautogui.......
  • 无法将“c:\users\XXX\anaconda3\scripts\conda.exe”项识别为 cmdlet、函数、脚
      因为C盘空间不够所以把anaconda3移到D盘了结果PowerShell报错按图索骥找到profile.ps1  把路径修改正确即可! ......
  • Downie V4.6.4 for Mac 视频下载工具
    前言Downie是Mac下一个简单的下载管理器,可以让您快速将不同的视频网站上的视频下载并保存到电脑磁盘里然后使用您的默认媒体播放器观看它们。![在这里插入图片描述](http......