Linux系统管理与编程14:Shell变量及定制bash登录界面

发布于:2025-05-01 ⋅ 阅读:(41) ⋅ 点赞:(0)
兰生幽谷,不为莫服而不芳;
君子行义,不为莫知而止休。

1.准备工作

创建用户wu

useradd wu

passwd wu

修改权限

chmod u+w /etc/sudoers

编辑

visudo

root行下,添加:“wu  ALL……”

图14- 1

恢复文件权限并做登录测试

[root@shell wu]# chmod u-w /etc/sudoers

[root@shell wu]# su wu

 欢迎来到巫正中的SHELL工作室

           _..._

         .'     '.

        /  _   _  \

        | (o)_(o) |

         \(     ) /

         //'._.'\ \

        //   .   \ \

       ||   .     \ \

       |\   :     / |

       \ `) '   (`  /_

     _)``".____,.'"` (_

     )     )'--'(     (

      '---`      `---`

[wu@shell ~]$ sudo ls /root

[sudo] wu 的密码:

anaconda-ks.cfg

2.系统变量

查看系统变量

[wu@shell ~]$ printenv

XDG_SESSION_ID=42

HOSTNAME=ftp

SHELL=/bin/bash

TERM=xterm

HISTSIZE=1000

SSH_CLIENT=192.168.100.1 64190 22

SSH_TTY=/dev/pts/4

USER=wu

LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:

PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/wu/bin:/usr/bin:/usr/local/bin:/usr/sbin:/usr/local/sbin:/sbin

MAIL=/var/spool/mail/wu

PWD=/home/wu

LANG=zh_CN.UTF-8

PS1=\[\e[31m\][\[\e[m\]\[\e[38;5;172m\]\u\[\e[m\]@\[\e[38;5;153m\]\h\[\e[m\] \[\e[38;5;214m\]\W\[\e[m\]\[\e[31m\]]\[\e[m\]\$

HISTCONTROL=ignoredups

HOME=/home/wu

SHLVL=4

LOGNAME=wu

SSH_CONNECTION=192.168.100.1 64190 192.168.100.23 22

LESSOPEN=||/usr/bin/lesspipe.sh %s

XDG_RUNTIME_DIR=/run/user/1001

_=/usr/bin/printenv

3.自定义变量

3.1变量赋值

1)字符串赋值:shell默认是字符串赋值

[wu@shell ~]$ var01=wzz

[wu@shell ~]$ echo $var01

wzz

[wu@shell ~]$ var02="wzz"

[wu@shell ~]$ echo $var02

wzz

2)数值赋值

[wu@shell ~]$ var03=1

[wu@shell ~]$ var04=$var03+1

[wu@shell ~]$ echo $var03

1

[wu@shell ~]$ echo $var04

1+1

[wu@shell ~]$ let var04=$var03+1

[wu@shell ~]$ echo $var04

2

[wu@shell ~]$ let var05=2+1

[wu@shell ~]$ echo $var05

3

3)激活转义字符

[wu@shell ~]$ var06='pwd'

[wu@shell ~]$ echo $var06

pwd

[wu@shell ~]$ var07=$(pwd)

[wu@shell ~]$ echo $var07

/home/wu

[wu@shell ~]$ var08=10

[wu@shell ~]$ echo "这个数是:$var08"

这个数是:10

[wu@shell ~]$ echo -e "用户:$USER\t家目录:$HOME\n"

用户:wu        家目录:/home/wu

[wu@shell ~]$ echo -n "输入你身份证号:";read ID

输入你身份证号:12345678

[wu@shell ~]$ echo $ID

12345678

4echo打印

[wu@shell ~]$ LOGDIR=/var/log/

[wu@shell ~]$ echo "日志文件是${LOGDIR}messages"

日志文件是/var/log/messages

[wu@shell ~]$ LIST="一二三"

[wu@shell ~]$ for var in $LIST

> do

>   echo "$var"

> done

一二三

[wu@shell ~]$ LIST=" "

[wu@shell ~]$ for var in $LIST

> do

>   echo "$var"

> done

[wu@shell ~]$ for var in "$LIST"

> do

>   echo "$var"

> done

5)删除变量

unset ID

图14- 2

6){}扩展

[wu@shell ~]$ echo a{1..15}d

a1d a2d a3d a4d a5d a6d a7d a8d a9d a10d a11d a12d a13d a14d a15d

[wu@shell ~]$ echo {a..e}{1..3}

a1 a2 a3 b1 b2 b3 c1 c2 c3 d1 d2 d3 e1 e2 e3

[wu@shell ~]$ echo 87021{01..52}

8702101 8702102 8702103 8702104 8702105 8702106 8702107 8702108 8702109 8702110 8702111 8702112 8702113 8702114 8702115 8702116 8702117 8702118 8702119 8702120 8702121 8702122 8702123 8702124 8702125 8702126 8702127 8702128 8702129 8702130 8702131 8702132 8702133 8702134 8702135 8702136 8702137 8702138 8702139 8702140 8702141 8702142 8702143 8702144 8702145 8702146 8702147 8702148 8702149 8702150 8702151 8702152

[wu@shell ~]$ echo {870201..870249..5}

870201 870206 870211 870216 870221 870226 870231 870236 870241 870246

4.变量打印综合应用:定制自己的BASH登录界面

bash登录界面在家目录里面:

图14- 3

图14- 4

编制一个自己喜欢的颜色及显示相关信息的界面,处理~/.bash_profile~/.bashrc

# .bash_profile

# Custom Command Prompt

export PS1="\n\e[1;32m[\e[0;31m\u\e[0;34m@\e[0;31m\h\e[1;32m]\e[1;32m[\e[0;34m\w\e[1;32m]$ "

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

        . ~/.bashrc

fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/usr/bin:/usr/local/bin:/usr/sbin:/usr/local/sbin:/sbin

export PATH

unset USERNAME

umask 022

# Custom DJRavine Modification

login_pwd=`pwd`;

login_date=`date`;

login_users=`users`;

login_uptime=`uptime`;

server_ip=`/sbin/ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | head -1 | cut -d: -f2 | awk '{ print $1}'`;

disk_available=$(df -h --block-size=1024 | awk '{sum += $4;} END {print sum;}');

disk_used=$(df -lh --block-size=1024 | awk '{sum += $3;} END {print sum;}');

disk_size=$(df -lh --block-size=1024 | awk '{sum += $2;} END {print sum;}');

disk_available_gb=$(echo "scale=2; $disk_available/(1024^2)" | bc)

disk_used_gb=$(echo "scale=2; $disk_used/(1024^2)" | bc)

disk_size_gb=$(echo "scale=2; $disk_size/(1024^2)" | bc)

red="\033[31m"

blue="\033[34m"

green="\033[32m"

echo -e " "

echo -e "${blue}+---------------------------------------------------------------------------"

echo -e " ${green}  Welcome to Wu Zhengzhong's SHELL HOME!                                  "

echo -e "${blue}+---------------------------------------------------------------------------"

echo -e " ${green}Server IP及端口: ${red}"$SSH_CLIENT

echo -e " ${green}日期:            ${red}"$login_date

echo -e " ${green}用户:            ${red}"$login_users

echo -e " ${green}登入目录:        ${red}"$login_pwd

echo -e " ${green}运行时间:        ${red}"$login_uptime

echo -e "${blue}+---------------------------------------------------------------------------"

df -lh  | column -c 6 | awk '{ printf " \033[22;32m%s\t%s\t\033[22;31m%s\t%s\t%s\n", $1, $6, $2, $3, $4,$5 }'

echo -e " ${green}Total Disk Space: ${red}${disk_size_gb} GB"

echo -e " ${green}Total Free Space: ${red}${disk_available_gb} GB"

echo -e " ${green}Total Used Space: ${red}${disk_used_gb} GB"

echo -e "${blue}+---------------------------------------------------------------------------"

再处理.bashrc

alias l.='ls -d .* --color=tty'

alias ll='ls -l --color=tty'

alias ls='ls --color=tty'

export PS1="\[\e[31m\][\[\e[m\]\[\e[38;5;172m\]\u\[\e[m\]@\[\e[38;5;153m\]\h\[\e[m\] \[\e[38;5;214m\]\W\[\e[m\]\[\e[31m\]]\[\e[m\]\\$ "

cat<<'EOF'

 欢迎来到巫正中的SHELL工作室

           _..._

         .'     '.

        /  _   _  \

        | (o)_(o) |

         \(     ) /

         //'._.'\ \

        //   .   \ \

       ||   .     \ \

       |\   :     / |

       \ `) '   (`  /_

     _)``".____,.'"` (_

     )     )'--'(     (

      '---`      `---`

EOF

看看登录效果:

图14- 5

【后记】

学好了变量,也接触到了简单的调用,为后边的自动化运维打下了基础。


网站公告

今日签到

点亮在社区的每一天
去签到