当前位置: 首页 > news >正文

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

兰生幽谷,不为莫服而不芳;
君子行义,不为莫知而止休。

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

【后记】

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

相关文章:

  • LLM - Large Language Model
  • 迈瑞医疗一季度业绩环比大幅改善 国内业务将从今年三季度迎来重大拐点
  • AIGC重构元宇宙:从内容生成到沉浸式体验的技术革命
  • TypeScript之基础知识
  • 基于常微分方程的神经网络(Neural ODE)
  • XrayR启动失败
  • 如何查看电脑电池使用情况
  • 嵌入式开发面试典型编程题解析:排序算法、指针操作、字符处理、递归原理等基础原理的深度解析。
  • VS2022+OpenCasCade配置编译
  • C++ —— 正向迭代器与反向迭代器
  • 在服务器中,搭建FusionCompute,实现集群管理
  • KML文件转shp并保留关键字段
  • 【KWDB 创作者计划】_KWDB产品技术解读
  • 【C语言】初阶算法相关习题(二)
  • mapbox V3 新特性,室内楼层多层同时三维展示(可单层切换),类似蜂鸟视图效果
  • 第7讲:图例与标题规范(字号、位置、字体选择技巧)
  • Excel处理控件Aspose.Cells for Go :通过 C++ 实现的设计概念和 API 架构讲解
  • 关于kafka
  • 使用exdp 备份数据库
  • [Agent]AI Agent入门02——ReAct 基本理论与实战
  • “90后”樊鑫履新乌兰察布市察右中旗副旗长人选
  • 当AI开始深度思考,人类如何守住自己的慢思考能力?
  • 朝鲜派兵库尔斯克是否有助于解决乌克兰危机?外交部回应
  • 见证上海援藏30年成果,萨迦非遗珍品展来沪
  • 特朗普的百日执政支持率与他“一税解千愁”的世界观和方法论
  • 幸福航空取消“五一”前航班,财务人员透露“没钱飞了”