当前位置:   article > 正文

Bash 脚本教程(一)简介_bash脚本

bash脚本

本教程原文链接

https://wangdoc.com/bash/intro.html

1. Bash和Shell的含义

  • Shell 这个单词的原意是“外壳”,跟 kernel(内核)相对应,比喻内核外面的一层,即用户跟内核交互的对话界面。
  • Bash 是 Unix 系统和 Linux 系统的一种 Shell(命令行环境),是目前绝大多数 Linux 发行版的默认 Shell。
    在这里插入图片描述

具体来说,Shell 这个词有多种含义:

  • 首先,Shell 是一个程序,提供一个与用户对话的环境。这个环境只有一个命令提示符,让用户从键盘输入命令,所以又称为命令行环境(command line interface,简写为 CLI)。Shell 接收到用户输入的命令,将命令送入操作系统执行,并将结果返回给用户。本书中,除非特别指明,Shell 指的就是命令行环境。
  • 其次,Shell 是一个命令解释器,解释用户输入的命令。它支持变量、条件判断、循环操作等语法,所以用户可以用 Shell 命令写出各种小程序,又称为脚本(script)。这些脚本都通过 Shell 的解释执行,而不通过编译。
  • 最后,Shell 是一个工具箱,提供了各种小工具,供用户方便地使用操作系统的功能。

2. Shell 的种类

Shell 有很多种,只要能给用户提供命令行环境的程序,都可以看作是 Shell。

历史上,主要的 Shell 有下面这些:

  • Bourne Shell(sh)
  • Bourne Again shell(bash)
  • C Shell(csh)
  • TENEX C Shell(tcsh)
  • Korn shell(ksh)
  • Z Shell(zsh)
  • Friendly Interactive Shell(fish)

Bash 是目前最常用的 Shell,除非特别指明,下文的 Shell 和 Bash 当作同义词使用,可以互换。


下面的命令可以查看当前设备的默认 Shell:

$ echo $SHELL
/bin/bash
  • 1
  • 2

查看当前系统提供的Shell解析器:

[root@VM-4-17-centos ~]# cat /etc/shells 
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Linux 允许每个用户使用不同的 Shell,用户的默认 Shell 一般都是 Bash,或者与 Bash 兼容。

3. 命令行环境

3.1 终端模拟器

如果是不带有图形环境的 Linux 系统(比如专用于服务器的系统),启动后就直接是命令行环境。

不过,现在大部分的 Linux 发行版,尤其是针对普通用户的发行版,都是图形环境。用户登录系统后,自动进入图形环境,需要自己启动终端模拟器,才能进入命令行环境。

所谓“终端模拟器”(terminal emulator)就是一个模拟命令行窗口的程序,让用户在一个窗口中使用命令行环境,并且提供各种附加功能,比如调整颜色、字体大小、行距等等。

不同 Linux 发行版(准确地说是不同的桌面环境)带有的终端程序是不一样的,比如 KDE 桌面环境的终端程序是 konsole,Gnome 桌面环境的终端程序是 gnome-terminal,用户也可以安装第三方的终端程序。所有终端程序,尽管名字不同,基本功能都是一样的,就是让用户可以进入命令行环境,使用 Shell。

3.2 命令行提示符

进入命令行环境以后,用户会看到 Shell 的提示符。提示符往往是一串前缀,最后以一个美元符号$结尾,用户可以在这个符号后面输入各种命令。

[user@hostname] $
  • 1

上面例子中,完整的提示符是[user@hostname] $,其中前缀是用户名(user)加上@,再加主机名(hostname)。比如,用户名是bill,主机名是home-machine,前缀就是bill@home-machine。

注意,根用户(root)的提示符,不以美元符号($)结尾,而以井号(#)结尾,用来提醒用户,现在具有根权限,可以执行各种操作,务必小心,不要出现误操作。这个符号是可以自己定义的,详见《命令提示符》一章。

为了简洁,后文的命令行提示符都只使用$表示。

3.3 进入和退出方法

进入命令行环境以后,一般就已经打开 Bash 了。如果你的 Shell 不是 Bash,可以输入bash命令启动 Bash。

$ bash
  • 1

退出 Bash 环境,可以使用exit命令,也可以同时按下Ctrl + d

$ exit
  • 1

使用pstree可以以树状图显示进程:

[root@VM-4-17-centos ~]# pstree
systemd─┬─YDLive───8*[{YDLive}]
        ├─YDService─┬─sh───8*[{sh}]
        │           └─22*[{YDService}]
        ├─acpid
        ├─2*[agetty]
        ├─atd
        ├─auditd───{auditd}
        ├─barad_agent─┬─barad_agent
        │             └─barad_agent───2*[{barad_agent}]
        ├─beam.smp─┬─erl_child_setup───inet_gethost───inet_gethost
        │          └─19*[{beam.smp}]
        ├─containerd───8*[{containerd}]
        ├─crond
        ├─dbus-daemon
        ├─dhclient
        ├─dockerd───10*[{dockerd}]
        ├─epmd
        ├─iscsid
        ├─lsmd
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─ntpd
        ├─polkitd───6*[{polkitd}]
        ├─rshim───{rshim}
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sgagent───{sgagent}
        ├─sshd───sshd───bash───pstree
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tat_agent───6*[{tat_agent}]
        └─tuned───4*[{tuned}]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

注意:可以看到有一个sshd进程,这个就是使用远程连接工具连接服务器的进程,之后这个进程启动了bash。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/70191
推荐阅读
相关标签
  

闽ICP备14008679号