Table Of Contents

  • Introduction
  • Basics
  • Beyond The Basics
  • Commands
  • Advance Topics

Introduction

  • 学习bash对一个系统管理员来说非常重要,然而对我来说我只是想自动化我的日常工作,因为我发现我效率实在太低了,我不想总是重复做一些日常的工作,所以我想学好shell把一些都自动化,把一切做过的东西存储不需要重新再做一次。

  • 同时我在重新学习使用vagrant,搭建更方便的开发环境,学好shell之后再用chef。

  • Consider that as a Linux machine boots up, it executes the shell scripts in /etc/rc.d to restore the system configuration and set up services.

  • linux在启动时会执行/etc/rc.d下面的脚本来恢复系统配置和启动服务

  • 添加文件执行权限

chmod u+rx scriptname

Starting Off With a Sha-Bang

  • V1
# clean up log files
cat /dev/null > messages
cat /dev/null > wtmp
echo "Log files cleaned up"
  • /dev/null 是空设备, 将空覆盖更新的到文件会清空文件。

  • V2

#! /bin/bash
LOGFILE=/var/log
cd $LOGFILE
cat /dev/null > messages
cat /dev/null > wtmp
echo "Log cleaned up"
exit

-V3

#! /bin/bash

LOG_DIR=/var/log
ROOT_UID=0
LINES=50
E_XDC=86
E_NOTROOT=87

if [ "$UID" -ne "$ROOT_UID" ]
then
echo "Must be root to run this script"
exit $E_NOTROOT
fi

if [ -n "$1" ]
then
lines=$1
else
lines=$LINES
fi

cd $LOG_DIR || {
echo "can not change to nessary directory > &2"
exit "$E_XCD"
}

tail -n $lines messages > mesg.tmp
mv mesg.tmp messages
: > wtmp
echo "Logs cleaned up"
exit 0