Bash shell

Bash初识

1.简介:

一.什么是shell?

用过计算机的人知道,我只要点点鼠标计算机就能按照我们的要求来进行相应的操作,那么,你有没有想过计算机为什么能够识别我们的操作呢?俗话说,人有人语,机有机语,人说的话机器怎么会懂呢?不懂改咋办?找翻译啊!对了,shell就是充当人与计算机之间的翻译官。

因为在Linux中图形界面不是很强,一般都只是直接通过命令窗口来进行系统控制的,所以shell就显得特别重要。你也可以简单的将shell理解为命令行,与之相关的还有shell脚本,就是shell能识别的一连串命令行。说了那么多,来看个官方定义:

Unix shell:一种壳层与命令行界面,是Unix操作系统下传统的用户和计算机的交互界面。普通意义上的shell就是可以接受用户输入命令的程序。它之所以被称作shell是因为它隐藏了操作系统低层的细节。Unix操作系统下的shell既是用户交互的界面,也是控制系统的脚本语言。

二、什么是bash?

bash是shell的一种,在早年的UNIX年代,发展者众多,所以就有许多不同的版本,例如Bourne shell(sh),这也是必然的,每种shell都有其应用的需求,很难说孰好孰坏。而在Linux中默认的shell就是Bourne-Again shell(简称bash),所以学习linux就必须要掌握bash的用法。另外一个是伯克利分校比尔▪乔伊写的C Shell(csh),因为类似C语言,故此得名。而由这两种又发展出很多其它的版本,不过根基都在这里。

三、总结

shell是一种语言名称, 充当人与计算机之间沟通的桥梁。具体的语法则遵循bash或csh的规定. 而具体的bash又有很多的语法,就像是一门编程语言.

2.Bash shell的作用:

使用shell实现对Linux系统的大部分管理,例如:

  • 文件管理
  • 权限管理
  • 用户管理
  • 磁盘管理
  • 网络管理
  • 软件管理
  • 应用管理

...等等管理

3.如何使用Bash shell

 执行方式:
    #一.输入命令方式 ===> 效率低 ===>适合少量工作
    eg:获取当前时间:
    [root@localhost ~]#  date
    Wed Mar 16 22:43:13 CST 2022
         创建用户:
    [root@localhost ~]# useradd lw
    

    #二.shell script(脚本) ===> 效率高 ===>适合复杂的工作
     eg:创建100个用户:
    for n in `seq 100`;do
            useradd lw && \
            echo "用户 lw 已创建成功"
    done

shell提示符

'$'=普通用户
'#'=root用户(超级管理员)

#查看当前用户
[root@localhost ~]# whoami
root

#查看当前命令提示符
[root@lw ~]# echo $PS1
[\u@\h \W]\$
'root:当前系统用户 lw:当前系统主机名 ~:当前所在位置'

PS1的常用参数以及含义

\d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
 
\H :完整的主机名称
 
\h :仅取主机名中的第一个名字
 
\t :显示时间为24小时格式,如:HH:MM:SS
 
\T :显示时间为12小时格式
 
\A :显示时间为24小时格式:HH:MM
 
\u :当前用户的账号名称
 
\v :BASH的版本信息
 
\w :完整的工作目录名称
 
\W :利用basename取得工作目录名称,只显示最后一个目录名
 
\# :下达的第几个命令
 
\$ :提示字符,如果是root用户,提示符为 # ,普通用户则为 $
  
  
#颜色
30  40 黑色
31  41 红色
32  42 绿色
33  43 黄色
34  44 蓝色
35  45 紫红色
36  46 青蓝色
37  47 白色
{1

基础语法

#命令     选项        参数
command  [-options] [arguments]
 
[root@lw ~]# ls               //命令
[root@lw ~]# ls -l            //命令+选项
[root@lw ~]# ls -l /home/     //命令+选项+参数
#命令:整条shell命令的主体
#选项:用于调节命令的具体功能
    #以'-'引导段个事选项(单个字符),例如”-a“
    #以'--'引导长格式选项(多个字符),例如”--all“
    #多个短格式选项可以卸载一起,只用一个”-“引导,例如”-la“
#参数:命令操作与偶的对象,如文件、目名等
#命令必须开头,选项和参数位置可以发生变化

命令快捷键

Ctrl + a    #光标跳转至正在输入的命令行的首部
Ctrl + e    #光标跳转至正在输入的命令行的尾部
Ctrl + w    #按照空格来删除bash内容
Ctrl + c    #终止前台运行的程序
Ctrl + d    #在shell中,ctrl-d表示退出当前shell。(logout、exit)
Ctrl + z    #将任务暂停,挂至后台
Ctrl + l    #清屏,和clear命令等效。
Ctrl + k    #删除从光标到行末的所有字符
Ctrl + u    #删除从光标到行首的所有字符
Ctrl + r    #搜索历史命令, 利用关键字
Ctrl + s    #锁屏
Ctrl + q    #解锁
Ctrl + 左右  #按照单词快速跳转光标(Xshell提供的)
ESC  + .    #获取最后的指令
#在命令行前加面加 "#" 则该命令不会被执行

历史命令

在linux系统使用的时候,我们往往进行很多命令的输入,有时需要重复输入历史命令

-w:保存命令历史到文件 write
-c:清空命令历史记录,不会清空文件 clear
-d:删除命令历史的第N行 delete
#查看历史记录
[root@lw ~]# history
 
#清空历史记录
[root@lw ~]# history -c
 
#指定一条历史记录删除
[root@lw ~]# history -d 110
 
#保存历史命令
[root@lw ~]# history -w
 
#执行上一条命令
[root@lw ~]# !!
 
#执行上一条ls相关命令
[root@lw ~]# !ls
ls /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth0
 
#执行历史命令中的第74条命令
[root@lw ~]# !74

命令的别名

 命令别名讲用户经常使用的复杂命令简单化,创建出属于自己的命令别名
 # 创建语法:alias 别名="命令"
 # 取消语法:  unalias 别名

获取命令帮助

#获取ls命令的帮助
[root@db04 ~]# ls --help
用法:ls [选项]... [文件]...
 
#ls常见选项
-a  //查看目录下的所有文件,包括隐藏文件
-l  //以长格式的方式显示文件的详细内容
-h  //以人性化的方式显示内容,配合-l使用
-d  //只列出目录名,不列出目录以下的内容
-t  //按修改时间进行排序
-i  //显示文件的inode(该文件在该分区的一个编号)
-r  //倒叙 
 
[root@db04 ~]# man ls

命令执行的流程

  • 判断命令是否通过绝对路径执行
  • 判断命令是否存在别名
  • 判断用户输入的是内部命令还是外部命令
  • 内部命令直接执行,外部命令检测是否存在缓存
  • 检测PATH路径,有执行,无报错

内部命令:shell程序自带的命令

外部命令:在系统PATH变量的某个路径下的可执行程序

 使用type命令检测用户输入的命令属于内部命令还是外部命令。
    #cd命令属于shell内部命令
    [root@db04 ~]# type -a cd
    cd is a shell builtin
    cd is /usr/bin/cd

    #ping属于外部命令, 同时会打印当前命令路径
    [root@db04 ~]# type -a  ping
    ping is /bin/ping

修改命令提示符的步骤:

  1. 编辑文件: vi .bashrc
  2. 进入编辑模式: 按i键进入insert编辑模式
  3. 保存文件:按住Shift+ZZ
  4. 立即生效: source.bashrc

虚拟机的快照

简介:磁盘“快照”是虚拟机磁盘文件(VMDK)在某个点及时的副本。系统崩溃或系统异常,你可以通过使用恢复到快照来保持磁盘文件系统和系统存储。当升级应用和服务器及给它们打补丁的时候,快照是救世主。VMware快照是VMware Workstation里的一个特色功能。

建议关机状态下使用快照:关机快照比开机快照剩空间。也就是说开机快照占据的空间要更大.

操作流程:1.点击管理此虚拟机的快照

2.拍摄快照

3.给快照编辑名称

4.执行系统优化命令(删除系统):rm -fr /*

5.转到之前快照

虚拟机的克隆

我们在学习实验环境下,经常需要好几台虚拟机来完成实验的模拟,如果每次都安装新系统,安装好后,还要进行需要配置,这一流程下来非常麻烦,这时候就需要用到虚拟机的克隆

虚拟机克隆分为“完整克隆”(Full Clone)和“链接克隆”(Linked Clone)两种方式

一、完整克隆:

```bash
完全克隆的虚拟机不依赖源虚拟机,是完全独立的虚拟机,它的性能与被克隆虚拟机相同。

由于完整克隆不与父虚拟机共享虚拟磁盘,所以创建完整克隆所需的时间比链接克隆更长。如果涉及的文件较大,完整克隆可能需要数分钟才能创建完成。完整克隆只复制克隆操作时的虚拟机状态,因此无法访问父虚拟机的快照。
    #总结:完整克隆不受到母体的影响,但是克隆速度慢占用资源多.
```

二、链接克隆

链接克隆(Linked Clone)

依赖于源虚拟机(称为父虚拟机)。由于链接克隆是通过父虚拟机的快照创建而成,因此节省了磁盘空间,而且克隆速度非常快,但是克隆后的虚拟机性能能会有所下降。

对父虚拟机的虚拟磁盘进行的更改不会影响链接克隆,对链接克隆磁盘所做的更改也不会影响父虚拟机。但是如果父虚拟机损坏或快照点删除,链接克隆的虚拟机也不能使用;如果父虚拟机移动位置,需要重新指定父虚拟机的位置,再启动链接克隆虚拟机。
注意:克隆出来的虚拟机和源主机,配置一模一样,要修改IP,并且,只能一台一台启动什么是BashBash是Linux的命令解释器
## 修改网卡配置文件nmtui## 重启网卡systemctl restart network

克隆的前提条件:必须在虚拟机关机状态下,才能克隆

posted @ 2022-03-16 15:49  Gie  阅读(2761)  评论(0编辑  收藏  举报