简朴而有效的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、展示进度百分比

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

# 界说变量 i
i=1
 
# 获取 linuxidc.log 这个文件的行数,并把运行功效赋予变量 l
l=$(wc -l linuxidc.log | sed 's/^[ \t]*//g' | cut -d ' ' -f1)
 
# 每行遍历轮回
while read line; do
 
 # 输出百分比
 echo -en "\b\b\b\b"`echo $i*100/$l | bc `'%'
 
 # 计较 i++
 ((i++))
 
# 传入 linuxidc.log 这个要处理惩罚的文件
done < linuxidc.log
# 完成时打个OK,因为字符长度不敷以粉饰原先的百分比,所今后头加了几个空格
echo -e '\b\b\b\bOK  '

简朴而有效的Linux Shell剧本示例(续三)

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

31、sleep呼吁

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、从文件中删除反复的行

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsdjsx.html