Linux深入探索16-区域设置:locale

Linux深入探索16-区域设置:locale,第1张

----- 最近更新【2022-02-03】-----

本文目录结构预览:

在 Unix 初期,每个人都使用 ASCII 码,因此也没有什么问题。但是,ASCII 码基于英语,而随着 Unix、Linux 以及 Internet 在世界范围的扩展,有必要设计一种新系统,从而能够处理许多语言以及大量不同的文化习俗。

多年后,开发人员开发出了一种新系统,该系统基于 “区域设置(locale)” 的思想,这属于 POSIX 1003.2 标准。

区域设置是特定于语言和地域的规则和数据的集合,也可以看成是一组环境变量。区域设置包括有关排序规则、日期和时间格式设置、数字和货币约定,以及字符分类的信息。例如,如果 Linux 用户选择了美国英语区域设置,那么在 Linux 中,日期消息将以格式“月-日-年”显示,而货币符号将会使用“$”表示,等。

locale 命令是 Linux 系统中多语言环境的设置接口,用来设置或查看程序运行的不同语言环境。

除 C 和 POSIX 这两个 locale 名称外,locale 的命名规则为: language[_territory[.codeset]][@modifier] ,

即: 语言[_地区[.字符集编码]][@修饰] 。如: en_US.UTF-8

1、语法

locale - 查看区域设置信息。(get locale-specific information)

语法:

常用选项:

注: -c 与 -k 选项后面须带上某个环境变量参数或具体的键名才有意义。如, locale -k LC_CTYPE 。

2、常用案例

使用命令 locale 查看系统中所有区域设置的当前值。

使用命令 locale -a 查看系统支持哪些区域设置。

3、查看区域设置特定变量的值

1)如果 locale 命令后面加上 category 参数,将显示该 category 的所有值。如 locale LC_CTYPE

2)如果 locale 命令后面加上 keyword 参数,将显示该 keyword 对应的值。如 locale charmap

当查看某个具体参数的值时,为了让输出结果更有可读性,一般会加上 -kc 选项。

例:

例:查看有关存储时间和日期的格式。

1、update-locale

update-locale - 修改全局区域设置。(Modify global locale settings)

语法: update-locale [OPTIONS] [var=locale | var] [...]

例:将 LANG 设置为 C.UTF-8

设置完需要重启 shell 才能生效。

2、修改初始化配置文件

也可以通过修改初始化文件来修改区域设置,如修改用户的 .bashrc 文件或 .profile 文件。

如,在初始化文件中添加如下一行:

只是临时修改的话只在命令行执行该命令就行。

3、全局区域设置文件

如果是 Debian 类系统,可以在 /etc/default 中找到全局区域设置文件: /etc/default/locale 。

update-locale 命令修改的就是这个文件的内容。

如果是 Red Hat 类系统,则该文件位于: /etc/locale.conf 。

说明:

优先级: LANG <LC_* <LC_ALL ,优先级比 LANG 高,LC_ALL 优先级最高。

LC_ALL 优先级最高,若设置了此变量,所有 LC_* 和 LANG 都会强制跟随它的值,所以一般不用。 LC_ALL 实际相当于一次设置全部的 LC_* 。

一般我们使用 LANG 来设置全部的 LC_*,而独立设置一个 LC_* 为想要的设置。比如,我设置 LANG=en_US.UTF-8 ,设置 LC_TIME=zh_GN.UTF-8 ,目的是为了输出中文形式的时间。如下:

区域设置可以分为很多个类别(category),也就是多个环境变量。下表将列出一些常用的类别:

使用命 locale 可心展开查看每个 category 的具体键值对:

或者查看某个具体的值:

C 区域设置使用 ASCII 排序序列,在这种排序序列中,大写字母位于小写字母之前:ABC...XYZabc...z。该模式称为 C 排序序列

en_US 区域设置使用一种不同的排序序列,在排序序列中,小写字母和大写字母成对分组:aAbBcC...zZ。这种模式比较自然,因为它以字典顺序组织单词和字符。所以这一模式称为 字典排序序列

排列顺序比较:

例:C 排序序列

例:字典排序序列

date命令用于显示及设置系统的时间或日期,格式为:"date [选项] [+指定的格式]"。

强大的date命令只需键入以"+"号开头的参数即可按照指定格式来输出系统的时间或日期,这样日常工作时咱们便可以将打包数据的备份命令与指定格式输出的时间信息结合到一起,使得咱们可以更加便捷的区分每个文件的备份时间啦,date命令常见的格式如下:

参数    作用  

%t    跳格[TAB键]  

%H    小时(00-23)  

%I    小时(01-12)  

%M    分钟(00-59)  

%S    秒(00-60)  

%X    相当于%H:%M:%S  

%Z    显示时区  

%p    显示本地AM或PM  

%A    星期几 (Sunday-Saturday)  

%a    星期几 (Sun-Sat)  

%B    完整月份 (January-December)  

%b    缩写月份 (Jan-Dec)  

%d    日(01-31)  

%j    一年中的第几天(001-366)  

%m    月份(01-12)  

%Y    完整的年份  

按照默认的格式查看当前的系统时间:

[root@linuxprobe ~]# date

Mon Aug 24 16:11:23 CST 2016

按照"年-月-日 小时:分钟:秒"的格式查看当前的系统时间:

[root@linuxprobe ~]# date "+%Y-%m-%d %H:%M:%S"

2016-08-24 16:29:12

设置当前的系统时间为2016年9月1日8点30分:

[root@linuxprobe ~]# date -s "20160901 8:30:00"

Tue Sep 1 08:30:00 CST 2016

再次按照默认的格式查看当前的系统时间:

[root@linuxprobe ~]# date

Tue Sep 1 08:30:01 CST 2016

查看今天是一年中的第几天:

[root@linuxprobe ~]# date "+%j"

245

reboot命令用于重启系统,格式为:"reboot"。

重启计算机这种 *** 作会涉及到对硬件资源的管理权限,因此默认只能使用root用户来重启您的电脑:

[root@linuxprobe ~]# reboot

poweroff命令用于关闭系统,格式为:"poweroff"。

关机命令也同理,默认只有root用户才可以关闭您的电脑:

[root@linuxprobe ~]# poweroff

如果你对Linux感兴趣的话,可以看看http://www.linuxprobe.com/chapter-02.html,非常适合初学者学习。

现在我们新建一个空白文件ubuntugege.txt,看到当前的文件访问时间和修改时间是一样的。

用以下命令进行修改:

touch -m -d "2000-01-01 10:10:10" ubuntugege.txt

嘿,文件修改时间变成了2000-01-01 10:10:10,这下我们也做了个小小的穿越呀!

当然,这个命令还有更多其它高级的用法,比如:你可以读取一个已存在的文件的修改时间再修改到指定的文件上,相当于复制“修改时间”到别的文件上,大家运行touch --help查看手册。

用法:touch

[选项]... 文件...Update the access and modification times of each FILE to

the current time.A FILE argument that does not exist is created empty,

unless -c or -his supplied.A FILE argument string of - is handled

specially and causes touch tochange the times of the file associated

with standard output.Mandatory arguments to long options are mandatory

for short options too. -a只更改访问时间 -c, --no-create

不创建任何文件 -d, --date=字符串使用指定字符串表示时间而非当前时间 -f(忽略) -h,

--no-dereference会影响符号链接本身,而非符号链接所指示的目的地

(当系统支持更改符号链接的所有者时,此选项才有用) -m只更改修改时间 -r,

--reference=FILE use this file's times instead of current time -t

STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current

time --time=WORDchange the specified

time: WORD is access, atime, or use:

equivalent to -a WORD is modify or mtime:

equivalent to -m --help显示此帮助信息并退出 --version

显示版本信息并退出请注意,-d 和-t 选项可接受不同的时间/日期格式。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7444476.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存