shell基础知识介绍
一、shell解释器的查看与指定
系统默认是bash解释器
查看当前机器的shell解释器
cat /etc/shells
查看对应账号的shell解释器
grep test /etc/passwd
设置对应账户的shell解释器
usermod -s /bin/tcsh test
或
chsh -s /bin/bash test
二、>,>>,2>,&>介绍
只输出正确的信息
‘>’ 重定向,会覆盖本来的文件内容
‘>>’ 追加,不会覆盖本来的文件内容
2> 只输出错误的信息
&> 正确错误信息一起输出
三、shell脚本执行方式
一共有四种
当文件有可执行权限到时候可以通过绝对路径或者相对路径的方法进行执行
绝对路径方法
其中由于vim创建的文件,默认没有可执行文件,所以在第一次执行的时候出现请求被拒绝,
使用chmod +x 1.sh
增加可执行权限后,文件正常执行
相对路径方法
不需要文件有可执行权限的方法
sh 文件名
source 文件名(特别点在于,不会执行子进程,可提供pstree命令查看)
四、定义变量和预定变量
定义变量格式:变量名=变量值
取消变量:unset 变量名
#当前所在的进程或脚本名
echo "$0"
#当前运行的进程的PID号(port id)
echo "$$"
#命令执行后的返回状态,只有0表示正常
echo "$?"
# 已经加载的位置标量的个数
echo "$#"
# 所以位置变量的值
echo "$*"
五、read命令的使用
read命令 -s设置表示不再终端显示输入的内容,-t表示指定超时秒数
#!/bin/bash
# read从键盘读值
read -p "请输入用户名:" name
read -p "请输入密码:" pass
useradd "$name"
echo "$pass" | passwd --stdin "$name"
read命令 -s设置表示不再终端显示输入的内容
六、获取服务器硬件信息练习
#!/bin/bash
# 显示服务器硬件信息
echo -e "\033[34m----------服务器硬件信息-----------\033[0m"
echo -e "\033[32m网卡信息如下:\033[0m"
ifconfig eth0 | grep "inet "
echo -e "\033[32m剩余内存容量信息如下:\033[0m"
grep MemAvailable /proc/meminfo
echo -e "\033[32m磁盘容量信息如下\033[0m"
df -h /
echo -e "\033[32mCPU信息如下\033[0m"
grep "model name" /proc/cpuinfo
七、安装nginx脚本
#!/bin/bash
#安装依赖包
yum -y install wget gcc pcre-devel zlib-devel
#下载nginx包,wget后面为对应版本链接
wegt http://nginx.org/download/nginx-1.8.0.tar.gz
#解压缩
tar xf nginx-1.8.0.tar.gz
# 设置安装路径
cd nginx-1.8.0
./configure --prefix=/usr/local/nginx
# 编译安装
make
make install
八、获取本机网络相关信息练习
参考命令。先过滤出需要的字段,接着用tr命令删除字母,去除多余的空格,然后用cut命令获取需要的数据,最后使用xargs命令输出信息。
ifconfig eth0|grep -w ether|tr -d '[a-zA-Z]'|tr -s " "|cut -d " " -f2|xargs echo "mac address:"
获取网卡名称
过滤 出ip,子网掩码,广播地址
八、获取当前机器普通用户的密码和所属的shell
参考命令
cut -d ":" -f1,2,7 /etc/passwd|tr ":" "\t"|grep -i "bash"|grep -v "root" > 1.txt
八、模拟登录
IP=`ifconfig eth0|egrep -w "inet"|awk '{print $2}'`
#清屏
clear
#输出提示信息
echo "CentOs Linux 7"
# echo -e 表示转义
echo -e "Kernel `uname -r` on an 'uname -m'\n"
echo -e "Web console :http://localhost/ or http://$IP \n"
#交互登陆名
echo -n "$HOSTNAME login:"
read account
# 输入密码
read -s -t 20 -p "password:" pw
#判断用户输入是否正确
if [ "$default_account" == "$account" ] && [ "$default_pw" == "$pw" ];then
clear
echo -e "\nwelcome to root"
else
echo "用户名或密码错误..."
sleep 1
#输入错误,再次调用本脚本
sh $0
fi