第11章 认识和学习bash

Posted 且听风吟-wuchao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第11章 认识和学习bash相关的知识,希望对你有一定的参考价值。

认识bash这个shell

硬件、内核和shell

用户操作计算机流程如下:

用户——>用户界面(shell,KDE,application)——>核心(kernel)——>硬件(hardware)

应用程序处于最外层,因此称为shell,shell的功能是提供用户操作系统的一个接口。狭义的shell指的是命令行软件(包括bash),广义的shell包括图形界面软件

系统的合法shell和/etc/shells功能

系统合法的shell都写入到/etc/shells这个软件,查看该文件如下:

[[email protected] wuchao_test]# cat /etc/shells
/bin/sh            (已经被/bin/bash所替代)
/bin/bash           (Linux默认的shell)
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
[[email protected] wuchao_test]# 

用户登陆后可以取得的默认shell都会记录在/etc/passwd文件内:

[[email protected] wuchao_test]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:997:995:User for polkitd:/:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
unbound:x:996:993:Unbound DNS resolver:/etc/unbound:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
colord:x:995:992:User for colord:/var/lib/colord:/sbin/nologin
amandabackup:x:33:6:Amanda user:/var/lib/amanda:/bin/bash
saslauth:x:994:76:Saslauthd user:/run/saslauthd:/sbin/nologin
libstoragemgmt:x:993:990:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
geoclue:x:992:989:User for geoclue:/var/lib/geoclue:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
setroubleshoot:x:991:988::/var/lib/setroubleshoot:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
chrony:x:990:987::/var/lib/chrony:/sbin/nologin
sssd:x:989:986:User for sssd:/:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:988:983::/run/gnome-initial-setup/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
wuchao:x:1000:1000:rootUser(wuchao):/home/wuchao:/bin/bash

bash shell的功能

既然/bin/bash是Linux默认的shell,接下来了解下这个shell。

bash有以下优点:

命令记忆功能

可以记下使用过的命令,只要在命令行按上下关键就可以找到前/后输入过的命令。这些命令记录在~/.bash_history,注意的是该文件只记录上次之前的命令,本次的所有命令暂存在内存里

命令补全功能

tab键接在一串命令的第一个字后面,则为命令补全,tab键接在一串命令的第二个字以后,则为文件补全

命令别名设置

当我们想列出所有文件时,需要输入ls -al命令,更快捷的方式是使用别名代替这个命令,设置别名:alias lm=‘ls -al’

//设置别名
[[email protected] wuchao_test]# alias lm=ls -al
[[email protected] wuchao_test]# lm .
total 188
drwxr-xr-x.  2 root root     84 6月  30 20:57 .
drwxrwxrwt. 47 root root   4096 7月   1 08:14 ..
-rw-r--r--.  1 root root   2370 6月  30 20:52 hosts
-rw-r--r--.  1 root root    511 4月   1 01:39 inittab
-rw-------.  1 root root 151271 6月  27 13:25 test2.txt
-rw-------.  1 root root  20480 6月  30 20:00 .test2.txt.swo
-rw-r--r--.  1 root root     44 6月  30 19:19 test.txt

//取消别名
[[email protected] wuchao_test]# unalias lm
[[email protected] wuchao_test]# lm .
bash: lm: command not found...
[[email protected] wuchao_test]# 

作业控制、前台、后台控制

第17章Linux过程控制部分再讲

程序脚本(shell script)

可以将平时管理系统需要执行的连续命令写成一个文件

通配符

比如查询/usr/bin下有多少以X开头的文件,输入:ls -l /usr/bin/X*

bash shell的内置命令:type

 使用type可以查看命令是bash内置的,还是来源于其他

[[email protected] ~]# type ls
ls is aliased to `ls --color=auto[[email protected] ~]# type cd
cd is a shell builtin
[[email protected] ~]# type which
which is aliased to `alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde

 

shell的变量功能

变量的显示与设置:echo,unset

变量的显示:echo $变量名或echo ${变量名}

[email protected]:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/java/jdk1.8.0_77/bin:/usr/local/java/jdk1.8.0_77/bin
[email protected]:~#

变量的设置规则:

1.变量与变量内容用“=”号连接

2.单引号内的字符仅为一般字符,双引号内的特殊字符可保持原有特性

[email protected]:~# name1=$PATH
[email protected]:~# name2="$PATH"

[email protected]:~# echo $name1
$PATH
[email protected]:~# echo $name2
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/java/jdk1.8.0_77/bin:/usr/local/java/jdk1.8.0_77/bin

[email protected]:~#

3.可用转义字符“\”将特殊字符变为一般字符

4.在一串命令中,如果还需要其他命令提供信息,使用反单引号`命令`或$(命令)

[email protected]:~# version=$(uname -r)
[email protected]:~# echo $version
3.13.0-32-generic
[email protected]:~#

5.在变量后追加变量内容,可用“$变量名称”或${变量名称}累加内容

[email protected]:~# name1=hello
[email protected]:~# name2=${name1}wuchao

[email protected]:~# echo $name2
hellowuchao
[email protected]:~#

6.若该变量需要在其他子进程使用,需要export来使变量称为环境变量

环境变量的功能

 用env查看环境变量

[[email protected] 桌面]# env
XDG_VTNR=1
XDG_SESSION_ID=1
SSH_AGENT_PID=3304
HOSTNAME=localhost.localdomain
IMSETTINGS_INTEGRATE_DESKTOP=yes
GPG_AGENT_INFO=/run/user/0/keyring/gpg:0:1
VTE_VERSION=3803
XDG_MENU_PREFIX=gnome-
SHELL=/bin/bash
TERM=xterm-256color
HISTSIZE=1000
WINDOWID=35651591
IMSETTINGS_MODULE=IBus
USER=root
LS_COLORS=rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.axv=38;5;13:*.anx=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.axa=38;5;45:*.oga=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:
SSH_AUTH_SOCK=/run/user/0/keyring/ssh
SESSION_MANAGER=local/unix:@/tmp/.ICE-unix/3141,unix/unix:/tmp/.ICE-unix/3141
USERNAME=root
GNOME_SHELL_SESSION_MODE=classic
DESKTOP_SESSION=gnome-classic
MAIL=/var/spool/mail/root
PATH=/usr/local/java/jdk1.8.0_91/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin
QT_IM_MODULE=ibus
PWD=/root/桌面
JAVA_HOME=/usr/local/java/jdk1.8.0_91
XMODIFIERS[email protected]=ibus
LANG=zh_CN.UTF-8
GDM_LANG=zh_CN.UTF-8
GDMSESSION=gnome-classic
HISTCONTROL=ignoredups
SHLVL=2
HOME=/root
XDG_SEAT=seat0
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
LOGNAME=root
XDG_SESSION_DESKTOP=gnome-classic
CLASSPATH=/usr/local/java/jdk1.8.0_91/jre/lib/ext:/usr/local/java/jdk1.8.0_91/lib/tools.jar
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-XFSA7YGZp6,guid=46b270284336ec9172459a4e5777171e
LESSOPEN=||/usr/bin/lesspipe.sh %s
WINDOWPATH=1
DISPLAY=:0
XDG_RUNTIME_DIR=/run/user/0
XDG_CURRENT_DESKTOP=GNOME-Classic:GNOME
XAUTHORITY=/run/gdm/auth-for-root-Qkf798/database
_=/usr/bin/env
[[email protected] 桌面]# 

以下对几个常见的环境变量简单的介绍下:

HOME:代表用户的主文件夹

SHELL:告知目前环境使用的shell是哪个程序

HISTSIZE:历史命令的记录数

MAIL:当我们使用mail命令时,系统读取的邮件信箱文件

LANG:语系数据,英文通常为en_US.UTF-8,中文通常是zh_CN.gb2312和zh_CN.UTF-8

RANDOM:随机数的变量,可以通过$RANDOM获取,范围为0~32767

set查看所有变量(环境变量和自定义变量)

[[email protected] 桌面]# set
ABRT_DEBUG_LOG=/dev/null
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_COMPLETION_COMPAT_DIR=/etc/bash_completion.d
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="2" [2]="46" [3]="1" [4]="release" [5]="x86_64-redhat-linux-gnu")
BASH_VERSION=4.2.46(1)-release
CLASSPATH=/usr/local/java/jdk1.8.0_91/jre/lib/ext:/usr/local/java/jdk1.8.0_91/lib/tools.jar
COLUMNS=80
COMP_WORDBREAKS=$ \t\n"\‘><=;|&(:
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-XFSA7YGZp6,guid=46b270284336ec9172459a4e5777171e
DESKTOP_SESSION=gnome-classic
DIRSTACK=()
DISPLAY=:0
EUID=0
GDMSESSION=gnome-classic
GDM_LANG=zh_CN.UTF-8
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
GNOME_SHELL_SESSION_MODE=classic
GPG_AGENT_INFO=/run/user/0/keyring/gpg:0:1
GROUPS=()
HISTCONTROL=ignoredups
HISTFILE=/root/.bash_history
HISTFILESIZE=1000
HISTSIZE=1000
HOME=/root
HOSTNAME=localhost.localdomain
HOSTTYPE=x86_64
ID=0
IFS=$ \t\n
IMSETTINGS_INTEGRATE_DESKTOP=yes
IMSETTINGS_MODULE=IBus
JAVA_HOME=/usr/local/java/jdk1.8.0_91
LANG=zh_CN.UTF-8
LESSOPEN=||/usr/bin/lesspipe.sh %s
LINES=24
LOGNAME=root
LPATHDIR=/root/.cache/abrt
LS_COLORS=rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.axv=38;5;13:*.anx=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.axa=38;5;45:*.oga=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:
MACHTYPE=x86_64-redhat-linux-gnu
MAIL=/var/spool/mail/root
MAILCHECK=60
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/local/java/jdk1.8.0_91/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin
PIPESTATUS=([0]="0")
PPID=3879
PROMPT_COMMAND=__vte_prompt_command
PS1=[\[email protected]\h \W]\$ 
PS2=> 
PS4=+ 
PWD=$/root/\346\241\214\351\235\242
QT_IM_MODULE=ibus
SESSION_MANAGER=local/unix:@/tmp/.ICE-unix/3141,unix/unix:/tmp/.ICE-unix/3141
SHELL=/bin/bash
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
SHLVL=2
SINCE=1467076530
SINCEFILE=/root/.cache/abrt/lastnotification
SSH_AGENT_PID=3304
SSH_AUTH_SOCK=/run/user/0/keyring/ssh
TERM=xterm-256color
TMPPATH=/root/.cache/abrt/lastnotification.w46b8i8T
UID=0
USER=root
USERNAME=root
VTE_VERSION=3803
WINDOWID=35651591
WINDOWPATH=1
XAUTHORITY=/run/gdm/auth-for-root-Qkf798/database
XDG_CURRENT_DESKTOP=GNOME-Classic:GNOME
XDG_MENU_PREFIX=gnome-
XDG_RUNTIME_DIR=/run/user/0
XDG_SEAT=seat0
XDG_SESSION_DESKTOP=gnome-classic
XDG_SESSION_ID=1
XDG_VTNR=1
XMODIFIERS[email protected]=ibus
//后面省略

上面会列出很多变量,记住几个比较重要的变量:

PS1:提示符设置

\d:显示星期月日的日期格式

\H:完整的主机名

\h:主机名第一个小数点前面的部分

\t:显示时间,24小时格式,HH:MM:SS

\T:显示时间,12小时格式,HH:MM:SS

 \A:显示时间,24小时格式,HH:MM

 \@:显示时间,12小时,am/pm样式

\u:目前用户的账号名称

\v:BASH的版本

\w:完整的工作目录名称

\W:利用basename取得的工作目录名称,所有仅会列出最后一个目录名

\#:执行的第几个命令

\$:提示符,如果是root时显示#

 

查看上面内容可知PS1=[\[email protected]\h \W]\$ ,故命令行显示[[email protected] ~]#

OSTYPE,HOSTYPE,MACHTYPE

主机硬件与内核等级

export:自定义变量转成环境变量

当我们登陆Linux时便取得一个bash,这个bash就是一个独立的进程,在这个bash执行的命令都是由这个bash衍生出来的,因此被执行的命令称为子进程,子进程仅会继承父进程的环境变量,不会继承自定义变量。

使用“export 变量名”将自定义变量设为环境变量,使用“export”可以查看所有的环境变量。

 影响显示结果的语系变量(local)

使用locale -a查看所有支持的语系

[[email protected] ~]# locale -a
en_AG
en_AG.utf8
en_AU
en_AU.iso88591
en_AU.utf8
en_BW
en_BW.iso88591
en_BW.utf8
en_CA
en_CA.iso88591
en_CA.utf8
en_DK
en_DK.iso88591
en_DK.utf8
en_GB
en_GB.iso88591
en_GB.iso885915
en_GB.utf8
en_HK
en_HK.iso88591
en_HK.utf8
en_IE
[email protected]
en_IE.iso88591
[email protected]
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ
en_NZ.iso88591
en_NZ.utf8
en_PH
en_PH.iso88591
en_PH.utf8
en_SG
en_SG.iso88591
en_SG.utf8
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8
en_ZA
en_ZA.iso88591
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW
en_ZW.iso88591
en_ZW.utf8
//省略
zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8
zh_HK
zh_HK.big5hkscs
zh_HK.utf8
zh_SG
zh_SG.gb2312
zh_SG.gbk
zh_SG.utf8
zh_TW
zh_TW.big5
zh_TW.euctw
zh_TW.utf8
zu_ZA
zu_ZA.iso88591
zu_ZA.utf8
[[email protected] ~]# 

查看需要设置的语系变量

直接输入locale

[[email protected] ~]# locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
[[email protected] ~]# 

当设置了LANG或者LC_ALL时,其他的语系变量都会被这两个变量替换,所以我们通常只设置LANG变量即可。centos7以前在/etc/sysconfig/i18n设置,centos7在/etc/loacle.conf文件设置LANG="zh_CN.UTF-8"

变量的有效范围

环境变量可以被子进程使用,类似于全局变量,其余变量不可以被子进程使用,类似于局部变量。

变量键盘的读取、数组与声明:read,array,declare

read

读取来自键盘输入的变量

read [-pt] 变量名

参数:

-p:后面可以接提示符

-t:后面接等待的秒数

[[email protected] 桌面]# read -p "please input your name:" -t 20 name
please input your name:wuchao
[[email protected] 桌面]# echo $name
wuchao
[[email protected] 桌面]# 

declare/typeset

declare和typeset是一样的功能,就是声明变量的类型

如果declare后面不接任何参数,功能和set一样,显示所有变量和内容

declare [-aixr] 变量名

参数:

-a:将变量定义为数组

-i:将变量定义为整型

-x:定义为环境变量

-r:将变量定义为readonly,不能更改内容,也不能重设