第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,不能更改内容,也不能重设

//变量类型默认为字符串
[[email protected] 桌面]# sum=100+200+300
[[email protected] 桌面]# echo $sum
100+200+300

//定义为整型,后面才会当成计算式
[[email protected] 桌面]# declare -i sum=100+200+300
[[email protected] 桌面]# echo $sum
600
[[email protected] 桌面]# 

数组类型:

[[email protected] 桌面]# var[1]="cat"
[[email protected] 桌面]# var[2]="dag"
[[email protected] 桌面]# var[3]="monkey"
[[email protected] 桌面]#  echo "${var[1]},${var[2]},${var[3]}"
cat,dag,monkey
[[email protected] 桌面]# 
时间: 2024-10-06 05:18:02

第11章 认识和学习bash的相关文章

鸟哥的Linux私房菜_基础版_学习笔记7:第十一章 认识与学习 BASH

11.1 认识 BASH 这个 Shell 图 1.1.1.硬件.核心与用户的相关性图示 11.1.4 Bash shell 的功能 既然 /bin/bash 是 Linux 默认的 shell ,bash 是 GNU 计划中重要的工具软件之一,目前也是 Linux distributions 的标准 shell . bash 主要兼容于 sh ,并且依据一些使用者需求,而加强的 shell 版本.不论你使用的是那个 distribution ,你都难逃需要学习 bash 的宿命啦!那么这个 s

鸟哥的Linux私房菜笔记6------11章认识和学习bash

1.合法的shell与/etc/shells功能 shell有多个版本,有Bourne Shell(sh).C Shell.K Shell .TCSH等.通常Linux使用的是Bourne Again Shell(Bash),是sh的增强版 可以检查/etc/shells,查看有多少可用的shell. 将合法的shell写入/etc/shells文件,是为系统某些服务在运行过程中检查用户能够使用的shells. 当用户登录时就会取得一个shell来工作,这个shell记录在/etc/passwd

鸟哥Linux私房菜知识点总结10到11章

最近翻看了一本<鸟哥的Linux私房菜>.这是一本基础的书,万丈高楼平地起,会的不多但可以学.这是我整理的一些知识点,虽然很基础.希望和大家共同交流. 第10章 vim程序编辑器 按键说明: /word       向下寻找一个名称为word的字符串 ?word 向上寻找一个名为woed的字符串 ndd          删除光标所在的向下的n行 nyy         复制光标所在的向下的n行 j         将光标所在行与下一行的数据结合成同一行 u         复原前一个操作 [

第十一章、认识与学习 BASH

1. 认识 BASH 这个 Shell 1.1 硬件.核心与 Shell 1.2 为何要学文字接口的 shell 1.3 系统的合法 shell 与 /etc/shells 功能 1.4 Bash shell 的功能 1.5 Bash shell 的内建命令: type 1.6 命令的下达 2. Shell 的变量功能 2.1 什么是变量? 2.2 变量的取用与配置:echo, 变量配置守则, unset 2.3 环境变量的功能: env 与常见环境变量说明, set, export 2.4 影

第11章,磁盘存储和文件系统学习笔记

更多内容请点击: Linux学习从入门到打死也不放弃,完全笔记整理(持续更新,求收藏,求点赞~~~~) http://blog.51cto.com/13683480/2095439 笔记整理开始时间:2018年4月24日11:25:33 第11章,磁盘存储和文件系统 本章内容: 磁盘结构 分区类型 管理分区 管理文件系统 挂载设备 管理虚拟内存 RAID管理 LVM管理 LVM快照 设备文件: 磁盘设备的设备文件命名:/dev/dev-file SCSI,SATA,SAS,IDE,USB:   

《Python学习手册 第五版》 -第11章 赋值、表达式和打印

上一章对Python的语句和语法已经进行了基本的说明,接下来就是每个章节的详细说明,本章的主要内容就是标题中涵盖的三点:赋值语句.表达式语句.打印语句 本章重点内容如下: 1.赋值语句 1)赋值语句的特点(注意事项) 2)赋值语句的形式:基本形式.元组及列表解包赋值.序列赋值.扩展的序列解包.多目标赋值.增量赋值 3)变量命名规则 2.表达式语句 1)常见的表达式语句 2)表达式语句和原位置修改 3.打印操作 1)调用形式 2)应用示例 以下是针对以上重点内容的详细说明 1.赋值语句 1)赋值语

锋利的jQuery第2版学习笔记8~11章

第8章,用jQuery打造个性网站 网站结构 文件结构 images文件夹用于存放将要用到的图片 styles文件夹用于存放CSS样式表,个人更倾向于使用CSS文件夹 scripts文件夹用于存放jQuery脚本,个人更倾向于使用JS文件夹存放所有的js及jQuery脚本 编写CSS样式 推荐首先编写全局样式,接着编写可大范围内重用的样式,最后编写细节样式,这样根据CSS最近优先原则,可以较容易地对网站进行从整体到细节样式的定义 第9章,jQuery Mobile jQuery Mobile主要

《白帽子讲WEB安全》学习笔记之第11章 加密算法与随机数

第11章 加密算法与随机数 11.1 概述 攻击密码系统的方法 密码分析者攻击密码系统的方法主要有以下三种: (1)穷举攻击 所谓穷举攻击是指密码分析者采用依次试遍所有可能的密钥对所获密文进行解密,直至得到正确的明文. (2)统计分析攻击 所谓统计分析攻击就是指密码分析者通过分析密文和明文的统计规律来破译密码. (3)数学分析攻击 所谓数学分析攻击是指密码分析者针对加解密算法的数学基础和某些密码学特性,通过数学求解的方法来破译密码. 破译密码的类型 (1)唯密文攻击(Ciphertext-onl

C++ Primer学习总结 第11章 关联容器

第11章 关联容器 1.    使用map的简单例子: 运行结果为: 2.    初始化map和set: 3.    set与multiset的区别: 4.    使用map和set时,其元素类型必须是定义了严格弱序的(即定义了<号比较的),如果元素类型没有定义<号操作也可以通过外部函数来比较: 5.    pair类型:pair是一个用来生成特定类型的模板. pair的默认构造函数对数据成员进行值初始化. 6.    遍历map和set关联容器: 7.    如何往set和map中添加指定元