在debian系统下设置时区脚本

Linux 2023-06-06

这个脚本可以让你方便地更改系统时区,而不需要手动修改配置文件。

首先,脚本会列出所有可用的大洲,让你选择你所在的大洲。

然后,它会列出该大洲下所有可用的时区,让你选择你所在的时区。

接着,脚本会备份旧的时区文件,并创建新的时区链接。

最后,它会获取当前时间和新时区的时间偏移量,计算时间差,并设置系统时间。

这个脚本非常方便实用,让你可以轻松地更改系统时区。如果你需要更改时区,只需要运行这个脚本,按照提示进行选择即可。

脚本

vim change_timezone.sh


#!/bin/bash

function list_timezones_by_continent() {
  continent=$1
  echo "List of available time zones:"
  timedatectl list-timezones | grep "^$continent/"
}

echo "List of available continents:"
echo "1. Africa"
echo "2. America"
echo "3. Antarctica"
echo "4. Arctic"
echo "5. Asia"
echo "6. Atlantic"
echo "7. Australia"
echo "8. Europe"
echo "9. Indian"
echo "10. Pacific"

read -p "Please select Continent: " continent_num

case $continent_num in
  1) list_timezones_by_continent "Africa";;
  2) list_timezones_by_continent "America";;
  3) list_timezones_by_continent "Antarctica";;
  4) list_timezones_by_continent "Arctic";;
  5) list_timezones_by_continent "Asia";;
  6) list_timezones_by_continent "Atlantic";;
  7) list_timezones_by_continent "Australia";;
  8) list_timezones_by_continent "Europe";;
  9) list_timezones_by_continent "Indian";;
  10) list_timezones_by_continent "Pacific";;
  *) echo "Error: Invalid selection!"; exit 1;;
esac

read -p "Copy the time zone and paste it: " timezone

if [ ! -f "/usr/share/zoneinfo/$timezone" ]; then
  echo "Error: Time zone does not exist! Stupid guy"
  exit 1
fi

cp /etc/localtime /etc/localtime.bak

ln -sf "/usr/share/zoneinfo/$timezone" /etc/localtime

current_time=$(date +%s)

new_offset=$(TZ=$timezone date +%s)

time_diff=$((new_offset - current_time))

date -s @$((current_time + time_diff))

echo "Time zone has been changed to: $timezone"

执行

chmod +x change_timezone.sh
sudo ./change_timezone.sh