简单而有效的Linux Shell脚本示例(续三)

Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本,常见的脚本解释器有:

bash:是Linux标准默认的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。

sh: 由Steve Bourne开发,是Bourne Shell的缩写,sh 是Unix 标准默认的shell。

另外还有:ash、 csh、 ksh等。

Shell 经过了POSIX的标准化,所以它是可以在不同的Linux系统上进行移植。

简单而有效的Linux Shell脚本示例(续三)

30、展示进度百分比

在需要处理一个几万行的文件的时候,需要处理的时间是比较长的。现在实现一个展示进度百分比的脚本。

简单而有效的Linux Shell脚本示例(续三)

好,通过简单的几行代码,就实现了我想要的效果了。

31、sleep命令

扫描二维码关注公众号,回复: 11180834 查看本文章

sleep命令允许您的shell脚本在指令之间暂停。在许多情况下(例如执行系统级作业),它很有用。下一个示例显示了Shell脚本中运行的sleep命令。

#!/bin/bash
echo "要等多长时间?"
read time
sleep $time
echo "等待了$time秒!"

简单而有效的Linux Shell脚本示例(续三)

该程序将暂停最后一条指令的执行,直到$time,在这种情况下由用户提供。

32、等待wait命令

wait命令用于从Linux bash脚本暂停系统进程。请查看以下示例,以详细了解它在bash中的工作方式。

#!/bin/bash
echo "测试等待命令"
sleep 5 &
pid=$!
kill $pid
wait $pid
echo $pid 被终止了。

 简单而有效的Linux Shell脚本示例(续三)

自己运行该程序以查看其工作原理。

33、显示最近更新的文件

有时您可能需要查找某些操作的最新更新文件。以下简单程序向我们展示了如何使用awk命令在bash中执行此操作。它将列出当前工作目录中的最后更新或创建的文件。

#!/bin/bash

ls -lrt | grep ^- | awk 'END{print $NF}'

简单而有效的Linux Shell脚本示例(续三)

为了简单起见,我们将避免在此示例中描述awk的功能。您只需复制此代码即可完成任务。

34、系统维护

我经常使用一些Linux Shell脚本来升级系统,而不是手动执行。下面的简单shell脚本将向您展示如何执行此操作。

#!/bin/bash

echo -e "\n$(date "+%d-%m-%Y --- %T") --- 开始工作\n"

apt-get update
apt-get -y upgrade

apt-get -y autoremove
apt-get autoclean

echo -e "\n$(date "+%T") \t 脚本终止"

该脚本还处理不再需要的旧软件包。您需要使用sudo运行此脚本,否则它将无法正常工作。

35、获取文件数或目录数

Linux shell统计目录下文件数与目录数有多少。

#!/bin/bash
#脚本名称 dir
#定义一个函数fun_directory
fun_directory() {   
  let "filenum=0"
  let "dirnum=0"
for i in $( ls )
do
  if [ -d $i ]
  then
      let dirnum+=1
  else
      let filenum+=1
  fi
done
echo "目录数是 $dirnum"
echo "文件数是 $filenum"
}
#调用函数
fun_directory

简单而有效的Linux Shell脚本示例(续三) 

可以看出,数据统计是准确的。

36、清理日志文件

下一个简单的示例演示了我们可以在现实生活中使用shell脚本的便捷方法。该程序将只删除/ var / log目录中存在的所有日志文件。您可以更改保存此目录的变量,以清除其他日志。

#!/bin/bash
LOG_DIR=/var/log
cd $LOG_DIR

cat /dev/null > messages
cat /dev/null > wtmp
echo "清理日志。"

记住要以root身份运行此Linux Shell脚本。

简单而有效的Linux Shell脚本示例(续三)

37、使用Bash备份脚本

Shell脚本提供了一种可靠的方式来备份文件和目录。以下示例将备份最近24小时内已修改的每个文件或目录。该程序利用find命令执行此操作。

#!/bin/bash

BACKUPFILE=backup-$(date +%m-%d-%Y)
archive=${1:-$BACKUPFILE}

find . -mtime -1 -type f -print0 | xargs -0 tar rvf "$archive.tar"
echo "Directory $PWD backed up in archive file \"$archive.tar.gz\"."
exit 0

备份过程成功后,它将打印文件和目录的名称。

38、检查您是否为root用户

以下示例演示了一种从Linux bash脚本中查找用户是否为root用户的快速方法。

#!/bin/bash
ROOT_UID=0

if [ "$UID" -eq "$ROOT_UID" ]
then
echo "你是 root 用户"
else
echo "你不是 root 用户"
fi
exit 0

该脚本的输出取决于运行它的用户。它将基于$UID匹配root用户。

简单而有效的Linux Shell脚本示例(续三)

39、从文件中删除重复的行

文件处理需要花费大量时间,并在许多方面影响管理员的工作效率。在文件中搜索重复项可能会成为一项艰巨的任务。幸运的是,您可以使用简短的Shell脚本来完成此操作。

#! /bin/sh

上面的脚本逐行遍历文件,并删除所有重复的行。然后,它将新内容放入新文件中,并保持原始文件完整。

简单而有效的Linux Shell脚本示例(续三)

总结

Linux Shell脚本可以像您想象的那样多种多样。在确定它可以做什么或不能做什么的时候,实际上是没有限制的。如果您是Linux的新手,我们强烈建议您掌握这些基本的bash脚本示例。您应该调整它们,以更清楚地了解它们的工作方式。我们已经尽力为您提供了现代Linux bash脚本所需要的所有基本知识。为了简单起见,我们没有涉及一些技术问题。但是,对于许多人来说,本指南应该是一个很好的起点。

猜你喜欢

转载自www.linuxidc.com/Linux/2020-05/163089.htm
今日推荐