一、shell简介

shell可直译为“贝壳”。贝壳是动物作为外在保护的一种工具。可以理解为:Linux中的 shell就是 Linux内核的一个外层保护工具,并负责完成用户与内核之间的交互。

命令是用户向系统内核发出控制请求,与交互的文本流。而 shell是一个命令行解释器,将用户命令解析为操作系统所能理解的指令,实现用户与操作系统的交互。当需要重复执行若干命令,可以将这些命令集合起来,加入一定的控制语句,编辑成为 shell脚本文件,交给 shell批量执行。

最初的 UNIX shell经过多年的发展,由不同的机构、针对不同的目录,开发出许多不同类型的 shell程序,目前流行的 shell主要有以下几种:

  • Bourne Shell(sh):由 AT&T的 Steve Bourne开发,是第一个流行的 shell,是 UNIX上的标准 shell。不过 sh的作业控制功能薄弱,且不支持别名与历史记录等功能
  • C Shell(csh):sh之后另一个广为流传的 shell,由柏克莱大学的 Bill Joy设计,语法有点类似 C语言,其内部命令有52个,较为庞大。但目前使用的不多
  • Korn Shell(ksh):由AT&T 的David Korn开发,语法与 sh相同,同时具备 csh的易用特点。许多安装脚本都使用 ksh,有42条内部命令,但与 bash 相比有一定的限制性
  • Bourne Again Shell(bash):由 GNU组织开发,保持了对 sh的兼容性,是各种Linux发行版默认配置的shell。能够提供环境变量以配置用户 shell环境,支持历史记录,内置算数功能,支持通配符表达式,将常用命令内置简化

二、shell命令格式

2.1 shell命令提示符

shell提示符标识了命令行的开始。用户在提示符后面输入一条命令并按Enter键,完成向系统提交命令。通常shell命令提示符采用以下的格式:

username@hostname:direction$
用户名    主机名    目录名
  • username:用户名,显示当前登录用户的账户名 (执行的命令 whoami)
  • hostname: 主机名,显示登录的主机名(执行的命令hostname)
  • direct体on: 目录名,显示当前所处的路径,根目录下显示为“/”,主目录下显示为“~“(执行的命令是pwd)

2.2 shell命令格式

通常一条 shell命令包含三个要素:命令名称、选项、参数。命令名称是必须的,选项和参数都可选项。格式如下:

$ Command [-Options] Argument1 Argument2...指令      选项      参数1    参数2 ...
  • KaTeX parse error: Expected 'EOF', got '#' at position 23: …示符,若为超级用户,提示符为“#̲”,其他用户的提示符均为“”
  • Command:命令名称,shell命令或程序,严格区分大小写
  • Options:命令选项,用于改变命令执行类型,由“-”引导,可同时带多个选项
  • Argument:命令参数,指出命令作用的对象或目标,允许带多个参数

一条命令的三要数之间用空格隔开;若将多个命令在一行书写,用分号(;)将各命令隔开;如果一条命令不能在一行写完,在行尾使用反斜杠(\)表明该条命令未结束。

2.3 shell命令初体验

使用shell命令,关闭或重启系统

sudo shutdown -h now #系统立即关机
sudo shutdown -r now    #系统立即重启
sudo reboot now         #系统立即重启
sudo shutdown -h +45 "That is all!"      #系统45分钟后关机
sudo shutdown -r +60                   #系统60分钟后重启

三、shell中的特殊字符

3.1 shell中的通配符

当需要用命令处理一组文件,例如 file.txt、file2.txt、file3.txt…,用户不必一一输入文件名,可使用 shell通配符。shell命令的通配符含义如下表

通配符 含义 实例
* 匹配任意长度的字符串 file_*.txt,匹配file_wan.txt、file_zhou.txt、file_li.txt
? 匹配一个长度的字符 file_?.txt,匹配file_1.txt、file_2.txt、file_3.txt
[…] 匹配其中指定的一个字符 file_[ota].txt,匹配file_o.txt、file_a.txt和file_t.txt
[ - ] 匹配指定的一个字符范围 file_[a-z].txt,匹配file_a.txt、file_b.txt,直到file_z.txt
[^…] 除了其中指定的字符均可匹配 file_[^ota].txt,除了file_o.txt、file_t.txt、file_a.txt的其它文件

3.2 shell中的管道

管道可以把一系列命令链接起来,意味着第一个命令的输出将作为第二个命令的输入,通过管道传递给第二个命令,第二个命令的输出又将作为第三个命令的输入,以此类推。就像通过使用“|”符连成一个管道。

ls /use/bin | wc -w
1249

以上操作中,借助管道“|”,将ls的输出直接作为wc命令的输入。使用管道可以巧妙的将一些命令联合使用,得到单个命令所无法实现的效果。例如使用以上的命令组合,得到的是==/usr/bin==目录下文件的个数。

3.3 输入输出重定向

输入/输出重定向是改变shell命令或程序默认的标准输入/输出目标,重新定向到新的目标。linux中默认的标准输入定义为键盘,标准输出定义为终端窗口。用户可以为当前操作改变输入或输出,迫使某个特定命令的输入或输出来源为外部文件

重定向符 含义 实例
> file 将file重定向为输出源,新建模式 ls /usr > lsoutput.txt,将ls /usr的执行结果,写到lsoutput.txt中,若有同名文件将被删除
>> file 将file重定向为输出源,追加模式 ls /usr >> lsoutput.txt,将ls /usr的执行结果,追加到lsoutput.txt已有内容后
< file 将file重定向为输入源 wc < file1,将file1中的内容作为输入传给wc命令
2> 或 &> 将产生的错误信息输入到文件中 ls xxx.txt 2> err.log,使用ls命令查看一个不存在的文件时,将错误提示保存在err.log中

cat命令功能为在标准输出上显示文件。下面通过一个实例,可以更好地理解重定向的功能:

linux@ubuntu:~/andyxi$ cat #使用标准输入/出设备
have a good day!           #用户使用标准输入设备——键盘,键入字符串,并按Enter键
have a good day!           #系统在标准输出——显示器上,显示用户刚刚输入的字符串
linux@ubuntu:~/andyxi$ cat > file1.txt    #输出重定向,将输出定向到文件file1.txt
have a good day!           #用户使用标准输入设备——键盘,键入字符串,并按Enter键#用户输入的字符串被保存在file1.txt文件中
linux@ubuntu:~/andyxi$ cat < file1.txt    #输入重定向,将cat命令的输入指定为file1.txt文件
have a good day!           #系统在标准输出显示器上,显示cat命令从文件中读出的字符串

3.4 命令置换

命令替换是将一个命令的输出作为另一个命令的参数。命令格式如下所示。

command1  `command2`

其中,命令command2的输出将作为命令command1的参数。需要注意,命令置换的单引号为ESC键下方的“`”键

linux@ubuntu:~$ ls  `pwd`
Desktop  Examples  historycommandlist  andyxi

pwd命令用于显示当前目录的绝对路径。在上面的命令行中,使用命令置换符,将pwd的运行结果作为ls命令的参数。最终,命令执行结果是显示当前目录的文件内容。

什么是shell,用途是什么相关推荐

  1. 脚本 linux bash PowerShell、alibaba clound toolkit OpenSSH

    ##linux bash 和 windows powershell 老旧的cmd (command) 一. bash shell用途 运维命令: linux bash:linux 使用bash 发布j ...

  2. 什么是shell,用途是什么?

    shell学习1 1.什么是shell 2.什么是shell脚本 3.shell的用途 1.什么是shell 1.shell是操作系统的最外层,是一个用户跟操作系统之间交互的命令解释器.2.大多数li ...

  3. shell脚本 -- 用途替换所有json文件(main.json 除外)中的 ios下载链接

    #!/bin/bash #脚本用途 替换所有json文件(main.json 除外)中的 ios下载链接 #调用格式 "xxx.sh" (脚本名称) "ios||and& ...

  4. 什么是shell?shell的用途是啥?

    场景:只知道写shell脚本,却不知道什么是shell?那shell是什么呢?找到了之前在腾讯课堂上看的视频,这是课件笔记 你学Linux的话,不懂shell等同于不懂linux shell是操作系统 ...

  5. 关于shell脚本中‘’,“”,``的各自用途

    '': 单引号是不能识别变量,只会原样输出,单引号是不能转义的 "": 双引号能够识别变量,双引号能够实现转义(类似于"\") 网上查了一些bash的单引号'' ...

  6. shell [] [[ ]] {}区别

    一.小括号,圆括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号, ...

  7. Shell脚本基础介绍

    shell基础简介: 编写脚本通常使用某种基于解释器的编程语言.而shell脚本不过就是一些文件,我们能将一系列需要执行的命令写入其中,然后通过shell来执行这些脚本. 进入Linux系统(Ubun ...

  8. shell命令查阅端口信息_短小强大的8个Linux命令,分分钟帮你提高工作效率!

    今天就跟大家分享自己工作中总结的8个超级好用,但鲜为人用的Linux命令,希望对大家有帮助. 1. fc 命令用途:编辑最近的一条命令并自动执行该命令 适用场景:执行了一条很长的命令,然而命令敲错执行 ...

  9. 中key的用途_Micro Focus Operations Bridge Manager中的多个(RCE)漏洞

    从供应商的网站上. OBM作为操作桥为您的IT操作提供了一个单一的控制中心.所有来自服务器.网络.应用程序.存储和基础设施中其他IT孤岛的事件和性能管理数据都会被整合到一个先进的中央事件控制台的单一事 ...

最新文章

  1. 网络营销外包专员浅析响应式网站建设应注意哪些网络营销外包细节
  2. 手淘H265编解码算法与工程优化
  3. 如何简单有效地实现迁移学习?ECCV 2020 论文介绍
  4. Thumbelina,摘自iOS应用Snow White and more stories
  5. 使用 Lightbox 2 和 JavaScript 构建出色的图片库
  6. java面试宝典第五版,《程序员面试宝典(第5版)》和《Java程序员面试宝典(第4版)》的一些看法......
  7. Go语言使用protobuf快速入门
  8. mybatis缓存引起的问题
  9. 【HTML】一个index.html文件,完成三码合一,完成万能打赏码
  10. python和java反射_python的反射和自省
  11. 用计算机算平米怎么算,平米换算亩怎么算(平方米换算亩计算器)
  12. angular.js 增删改查练习2
  13. 面试的时候,如何自我介绍?
  14. MySQL默认字符集设置
  15. openGL法线贴图和纹理贴图结合使用,以增强三维物体表面细节
  16. 西北乱跑娃 --- bottle框架部署pytorch模型
  17. bat添加修改注册表键值 批处理修改注册表项
  18. 干货来袭!CSS的行内样式与内联样式,看完就会了
  19. 基于SpringBoot+Vue在线考试系统【web端+小程序端】【附带源码】
  20. c3po连接mysql带端口号_利用C3PO配置数据库连接池出现的问题

热门文章

  1. jlink 固件升级
  2. 去掉Echarts饼状图的引导线
  3. 电脑如何通过滑动关机?
  4. zz国外接活网站Elance, Freelancer和ScriptLance的介绍和对比
  5. win11内存完整性不兼容的驱动程序怎么找到并删除?
  6. 栈、波兰表达式、逆波兰表达式
  7. 本地js文件替换浏览器source中js文件进行开发调试,插件使用方法
  8. dell raid卡PERC H330硬盘替换后序号混乱问题.md
  9. 需要计算机安装msxml,Win7安装Office2010提示让安装MSXML组件的五种解决方法
  10. 修改hp服务器ilo密码工具,通过脚本方式修改ILO3的账号及密码-HPECommunity.PDF