shell 极速入门
shell 是什么
我们使用的操作系统(Windows、Mac OS、Android等)都是有界面的,对所有人都非常好用;计算机的普及离不开图形界面。
但在计算机早期并没有图形界面,只能通过一个一个地命令来执行计算机命令,这些命令有成百上千之多,记住这些命令非常困难,面对没有任何色彩的“黑屏”是一件枯燥的事情;这个时候的计算机还远远谈不上炫酷和普及,只有专业人员才能使用。
图形界面中,用户点击某个图标就能启动某个程序。命令行中,用户输入某个程序的名字就能启动某个程序。这两者的基本过程都是类似的,都需要查找程序在硬盘上的安装位置,然后将它们加载到内存运行。
换句话说,图形界面和命令行运行的本质的是一样的,让用户控制计算机。但真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel),图形界面和命令行是架设在用户和内核之间的一座桥。
由于安全、复杂、繁琐等原因,用户不能直接接触内核,因此另外开发了一个程序,该程序的作用就是接收用户的操作(比如点击图标、输入命令),进行简单的处理,然后传递给内核。如此一来,用户和内核之间就多了一层“代理”,这层“代理”既简化了用户的操作,也保护了内核。
用户界面和命令行就是这个另外开发的程序,就是这层“代理”。在Linux下,这个命令行程序叫做 Shell。
常见的shell类型有 sh、bash、csh、tcsh、ash 等。
shell 脚本
作为专业选手,我们除了在命令行中写下零碎的单个命令行,更多时候,需要用 shell script 脚本的形式写下一个完整的功能。
这样的好处是存为脚本文件以后,文件就能够反复进行使用。
如下,是一个脚本,其作用就是脚本的方式创建账号:
#!/bin/bash
read -p "请输入用户名: " user
if [ -z $user ]; then
echo "您不需输入账户名"
exit 2
fi
stty -echo
read -p "请输入密码: " pass
stty echo
pass=${pass:-123456}
useradd "$user"
echo "$pass" | passwd --stdin "$user"
我们将该文件保存为 create_user.sh ,然后运行该文件 ./create_user.sh 。在运行期间,你可以选择自己输入密码,否则将会被存为密码 123456 。
我写了一百个 左右类似功能的脚本,包括各种的用途,对于想要极速入门的小伙伴,就是一个大补丹,快速增长功力,传送门,各种自动化部署、自动化监控等用途的脚本,传送门。
|