Shell初识、编辑器的使用
CLI和GUI概念回顾
命令行(Command Line)和图形界面(Graphical User Interface,GUI)是两种不同的用户界面概念。其中:
- 命令行是一种以文本形式输入命令和参数的界面,用户通过键盘输入命令来与计算机进行交互。在命令行中,用户可以输入特定的命令和选项,然后按下回车键执行命令。命令行界面通常被认为是一种较为低级和直接的交互方式,适用于专业用户、系统管理员和开发人员等。
- 图形界面是一种通过图形、图标、菜单和指针(如鼠标)来提供可视化和直观的用户界面。图形界面提供了更直观和易于使用的方式来与计算机进行交互,图形界面通常适用于普通用户和一般应用程序的交互。
什么是Shell
现在人们使用的操作系统(Windows、Android、iOS等)都带有图形界面,简单直观,容易上手。然而早期的计算机并没有图形界面,人们只能使用烦琐的命令来控制计算机。其实,真正能够控制计算机硬件(CPU、内存、显示器)的只有操作系统内核(Kernel),图形界面和命令行都是架设在用户和内核之间的桥梁,是为了方便用户控制计算机而存在的。由于安全等原因,用户不能直接接触内核,因此需要在用户和内核之间增加命令解释器,既能简化用户的操作,又能保障内核的安全。在Linux下的命令解释器叫作“Shell”,它能让用户更加高效、安全、低成本地使用Linux内核。在后续的学习中,我们将结合上一学期学习的 OpenStack 私有云 环境,通过 Shell 脚本来实现云平台的自动化管理。

作业1:Shell本质上是一个(),它运行在操作系统之上。
Shell的各种版本
- Bourne shell(sh)是Unix系统中最古老的shell,也是现在大多数shell的基础。它的命令行语法较为简单,缺乏一些高级特性,但是在大多数Unix系统中都内置了这个shell,因此可以保证可移植性。尽管Bourne shell已经被多种先进的shell所取代,但它作为shell编程的鼻祖,仍然具有重要的历史和学习价值。
- Bourne Again Shell (bash)是Linux操作系统所使用的Shell,它是Bourne Shell的扩展,简称bash。bash与Bourne Shell完全向下兼容,也就是说bash可以兼容相同版本的Bourne Shell。bash在Bourne Shell的基础上增加、增强了很多特性,所以它比Bourne Shell能力更强。
- zsh(Z shell)是Bourne shell(sh)的一个增强版本。与bash相比,zsh具有更好的命令补全功能、更好的主题和插件支持、更好的脚本语言、更好的历史命令管理和更好的可定制性。它还有许多其他功能,如自动提示,文件名扩展,别名扩展等。zsh是一种功能强大、易于使用和高度可定制的Shell,适用于任何需要使用命令行的用户。
zsh的安装与使用
作业2:参考以下笔记安装zsh,体验zsh和bash的异同(自动补全、主题和外观、历史记录、参数补全),截图zsh安装完成的界面。
查看Shell版本、更换默认Shell并生效设置。
##查看当前Shell版本 [root@host1 ~]$ echo $SHELL /bin/bash ##查看系统当前可用Shell [root@host1 ~]$ cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash ##更换默认Shell [root@host1 ~]$ chsh -s /bin/sh Changing shell for root. Shell changed.安装git,zsh。
[root@localhost ~]$ sudo yum -y install git zsh安装源有问题安装不了的可以重新下载阿里源配置再安装
[root@host1 ~]$ sudo rm -rf /etc/yum.repos.d/* [root@host1 ~]$ sudo curl -o /etc/yum.repos.d/Centos7-aliyun-x86_64.repo https://mirrors.wlnmp.com/centos/Centos7-aliyun-x86_64.repo [root@host1 ~]$ sudo yum -y install git zsh使用ohmyzsh提供的脚本配置zsh。
# 获取并运行`install.sh`完成安装。 [root@host1 ~]$ sh -c "$(curl -fsSL https://install.ohmyz.sh/)"
zsh还具有丰富的插件功能,可以扩展和增强其默认功能。通过使用插件,可以将 Zsh 配置成适合自己需求的个性化命令行环境,zsh自带的插件称为内部插件,除此之外称之为外部插件,外部插件需要额外安装才能使用,常见的内部插件有git、z,常见的外部插件有auto-suggestion,autojump,zsh-syntax-highlighting。
插件z的使用
插件z是内部插件不需要安装,只需要编辑文件打开插件z的功能,编辑
~/.zshrc第73行如下:plugins=(git z)使用命令
z完成历史目录的快速跳转。
插件auto-suggestions的安装与使用
auto-suggestions作为外部插件需要单独安装
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions编辑
~/.zshrc文件,在plugins列表中添加zsh-autosuggestions:plugins=(git z zsh-autosuggestions)执行
source ~/.zshrc使配置生效。输入命令时使用
Ctrl + E可以快速补全。
Shell的启动方式
终端上启动
Shell会以交互模式启动,提示符会显示在屏幕上,等待用户输入命令。
用户输入命令后,Shell会解释和执行这些命令,并将执行结果输出到终端上。
在终端启动模式下,Shell会自动设置一些环境变量,如PATH等,以便用户可以方便地执行命令。脚本启动
脚本启动是将Shell命令写入一个脚本文件中,然后通过执行这个脚本文件来启动Shell。情境引入:在上学期的 OpenStack 实验中,如果我们需要为多名用户创建云平台账户,手动在 Horizon 界面点击或在命令行逐条输入
openstack user create会非常低效且容易出错。这时,我们可以将这些命令写入一个 Shell 脚本中批量执行。脚本启动的基本过程如下:
(1)创建一个包含 Shell 命令的脚本文件(通常以.sh作为扩展名)。
(2)将脚本文件保存到磁盘上,并赋予执行权限。
(3)在终端中输入脚本文件的路径,并按下回车键。
(4)Shell 会读取脚本文件中的命令,并依次执行这些命令。脚本启动模式适用于需要重复执行的一系列命令,它可以极大地提高运维效率。此外,脚本启动模式还支持各种 Shell 的内置命令和选项。
情境举例(自动化运维参考):
在上学期的 OpenStack 私有云 课程中,如果我们需要为多名用户批量创建账户,手动操作非常低效。这时,我们可以利用在本节学到的 Shell 脚本知识,编写一个循环脚本来自动调用云平台命令:
#!/bin/bash
# OpenStack 批量创建用户脚本示例(仅作理解参考)
user_list="user_a user_b user_c"
for username in $user_list
do
echo "正在为云平台创建用户: $username"
# openstack user create --domain default --password 000000 $username
done
VIM使用
vimtutor 是 VIM 官方提供的一个文本实机教程,旨在帮助初学者在 30 分钟内快速掌握 VIM 的基本编辑操作。你只需在终端输入 vimtutor 命令,系统就会为你打开一个教程文档,你可以按照文档中的说明直接进行移动、删除、插入等练习。
如何进入中文版:
如果系统语言未设置为中文,你可以通过指定语言来强制进入中文教程:
vimtutor zh
作业3:vimtutor 的学习进度截图(至少完成前四节内容)。
vim常用命令: