Stéphane Chazelas によるこのコメントで、彼は次のように述べています。
<ブロック引用>
timedatectl
systemd
です timedated
を照会するもの dbus
以上 と timedated
タイムゾーンの名前を導出します (Europe/London
など) ) readlink()
を実行することによって /etc/localtime
で . /etc/localtime
の場合 がシンボリック リンクでない場合、タイムゾーン定義ファイルにその情報が含まれていないため、その名前を派生させることはできません。
これと tonioc のコメントに基づいて、次のようにまとめました。
#!/bin/bash
set -euo pipefail
if filename=$(readlink /etc/localtime); then
# /etc/localtime is a symlink as expected
timezone=${filename#*zoneinfo/}
if [[ $timezone = "$filename" || ! $timezone =~ ^[^/]+/[^/]+$ ]]; then
# not pointing to expected location or not Region/City
>&2 echo "$filename points to an unexpected location"
exit 1
fi
echo "$timezone"
else # compare files by contents
# https://stackoverflow.com/questions/12521114/getting-the-canonical-time-zone-name-in-shell-script#comment88637393_12523283
find /usr/share/zoneinfo -type f ! -regex ".*/Etc/.*" -exec \
cmp -s {} /etc/localtime \; -print | sed -e '[email protected]*/zoneinfo/@@' | head -n1
fi
タイムゾーンについては、地理位置情報を使用できます:
$ curl https://ipapi.co/timezone
America/Chicago
または:
$ curl http://ip-api.com/line?fields=timezone
America/Chicago
http://wiki.archlinux.org/index.php/time#Time_zone
-bash:/bin/cd:そのようなファイルやディレクトリはありません - cd の後に ls を自動的に実行します
Linuxのfindコマンドを使用して、ファイル名の代わりにコンテンツを印刷するにはどうすればよいですか?