Shell基础之概述

一、Shell介绍

Shell是指操作系统的用户界面,提供了一种与内核进行交互的方式,也被称为命令解释器。Shell可以让用户通过命令行或脚本来启动、挂起、停止等操作系统级别的程序,也能够进行文件操作、文本处理、调用其他程序等多种操作。通常情况下,Shell是由C语言编写的应用程序,它和命令行交互、解释命令并执行相应的操作。

Shell通常包含两个部分:命令提示符命令行解释器

  • 命令提示符是Shell给出的提示,例如"$“、”%"等,用于提示用户可以输入命令了。
  • 命令行解释器则负责读取用户输入的命令,并且将其转换为可执行的操作系统命令。

二、Shell分类

在大多数Unix/Linux系统中,比较常用的是:Bourne Shell(sh)C Shell(csh)

  • Bourne Shell(sh):由Steve Bourne开发,是最早的Unix Shell,其语法简单,功能基本,但灵活性较差。Bourne Shell在Linux下是BASH。Bourne家族主要包括sh、ksh、Bash、psh、zsh;
  • C Shell(csh):由Bill Joy开发,支持类似C语言的流程控制语句、命令历史和命令行编辑等高级功能,但缺点是执行效率较低。C Shell在Linux下是TCSH。C家族主要包括csh、tcsh;

注:Bash与sh兼容,现在主流的Linux就是使用Bash作为用户的基本Shell。

三、Linux支持的Shell

可以通过/etc/shells文件查看,该文件包含了可用的登录Shell的完整路径名。该文件中列出的Shell可以用于用户登录系统时作为默认Shell。一般如下:

/bin/sh
/bin/bash
/bin/rbash
/bin/dash
/usr/bin/tmux
/usr/bin/screen

注:一些程序还会查看这个文件以确定用户是否是正常用户。例如,在某些情况下,一些FTP服务器会拒绝那些使用非标准Shell的用户进行访问。

四、Shell脚本的执行方式

1、echo命令

介绍Shell脚本之前,我们先要了解一个输出命令:echo,这个命令可将字符串输出到标准输出中,在 shell 脚本中通常用于显示消息或输出其他命令的结果。在 Linux/Unix 系统中,echo 是 Bash 和其他大多数流行的 shell(如 Zsh 和 Ksh)中的一个内置程序。

echo 命令的语法:echo [选项] [输出内容]。echo命令最常用的选项为-e,该选项用于支持反斜线控制的字符转换。这意味着在使用 echo 命令时,任何以反斜杠(\)开头的特殊字符都将被视为转义字符并进行相应的解释。

控制字符 作用
\a 警告(响铃)符,可以用来在终端中发出警告声或响铃声。
\b 退格符,将当前输出位置前移一个字符,可以用来删除一个字符。
\c 用于在输出中取消行末的换行符,使得输出内容在同一行显示。
\e 逃脱符,可以用来在终端中设置光标颜色、背景色等特殊效果。
\f 换页符,将当前输出位置移到下一页开头。
\n 换行符,将当前输出位置移到下一行开头。
\r 回车符,将当前输出位置移到本行开头。
\t 水平制表符,将当前输出位置移到下一个制表符位置。
\v 垂直制表符,将当前输出位置移到下一垂直制表符位置。
\0nnn 表示八进制数码,其中 nnn 是一个三位数的八进制数,用于表示 ASCII 码表示的一个字符。
\xhh 表示十六进制数码,其中 hh 是一个两位数的十六进制数,用于表示 ASCII 码表示的一个字符。

结合例子说明:

  • echo -e "\ahello",输出 hello ,并且会发出一声警告。
  • echo -e "Countdown: 3\b2\b1\bBlast off!",输出Countdown: Blast off!
  • echo -e "Name:\tzheng",输出Name: zheng
  • echo -e "zheng1\rzheng2",输出zheng2
  • echo -e "The ASCII code of @ is \064.",输出The ASCII code of @ is 4.
  • echo -e "The ASCII code of a is \x61.",输出The ASCII code of a is a.

2、第一个脚本-hello.sh

hello.sh

#!/bin/bash
#zhenghaojie

echo "Mr. zheng is the most kind man in xinhua school"

关于#!/bin/bash

  • #!/bin/bash 是指定脚本使用的解释器。在 Linux 或 Unix 系统中,当运行一个脚本文件时,系统会根据文件的第一行判断所需的解释器类型。
  • 其中 #! 符号是特殊的注释符号,它告诉系统这个脚本需要用什么命令来解释执行。如果你使用其他的 shell,可以将 /bin/bash 修改成对应的解释器路径。
  • #!/bin/bash 必须出现在脚本文件的第一行,否则系统无法正确解释该脚本文件。

3、脚本执行

(1)赋予脚本执行权限,直接执行,如下:

chmod 755 hello.sh //将 hello.sh 文件的权限设置为 -rwxrwxr-x
./hello.sh

(2)通过bash命令执行,则不需要赋予执行权限,如下:

bash hello.sh

注:使用cat -A hello.sh,会发现在Linux中编辑文件时回车符表示为$,而在window中编辑文件时回车符表示为^M$。因此,当在window中编辑脚本后直接在Linux中执行会报/bin/bash^M:bad interpreter:没有那个文件或目录错误,我们可以通过dos2unix工具或fromdos工具转换格式后再执行。当然也有unix2dostodos将unix格式转为dos格式在window中执行。

你可能感兴趣的:(Linux之Shell,linux,bash,unix)