Shell介绍

shell介绍 Shell又称命令解释器,它能识别用户输入的各种命令,并传递给操作系统。它的作用类似于Windows操作系统中的命令行,但是,Shell的功能远比命令行强大的多。在UNIX或者localhost中,Shell既是用户交互的界面,也是控制系统的脚本语言。 阅读详情

Shell

当我们登入Linux之後,第一个接触到的,便是Shell.我们必须对它有点初步的熟悉才行.

一.Shell简介.

Linux系统分成三个重要的部份

核心
Shell
工具程式
核心的部份相当低阶,操作者不易和它直接沟通,因此,必须要有一个友善的介面(interface),使得操作时能更为方便,这个介面便是Shell.

换言之,Shell就是一个居於核心和操作者之间的一层使用者介面.

那麽,为何称它为Shell呢?Shell的本意是"壳"的意思呢!

没错,在核心的外面,包覆着一层外壳,用来负责接收使用者输入的指令,然後将指令解译成核心能够了解的方式,传给核心去执行,再将结果传回至预设的输出周边.

如图所示:

 

例如:键入

ls-l

shell给你以下回应:

拥
档有
案档
种案档案大小最近修改的
类档案权限数拥有人组别(byte单位)日期及时间档案名称
drwxr-xr-x14rootroot1024Jul2121:31.
drwxr-xr-x17rootroot1024Apr1112:01..
drwxr-xr-x882821024Feb2519:23apache
-rw-r--r--1rootroot1335460Feb2517:45apache_1_3_4.tar.gz
drwxr-xr-x6rootroot1024Aug311998FTP
drwxr-xr-x5rootroot1024Aug311998httpd
drwx------2jamesjames1024Apr2306:47james
drwxr-xr-x2rootroot12288Aug311998lost found
drwxr-xr-x2msqlnobody1024Dec281998msql
drwxr-xr-x28ols3ols32048Jul1921:38ols3
drwxr-xr-x31022nobody1024Jan2523:40ols3cgi
drwxrwxr-x3perlols31024Feb207:11perl
-rw-------1rootroot2097152Jul2118:39quota.group
-rw-------1rootroot1278656Jul2118:39quota.user
drwxrwxr-x2rootnobody1024May111998samba
drwxr-xr-x3apachenobody1024Feb2516:58temp
drwxrwxr-x2webadmnobody1024Mar1416:34webadm

 

其实不只是Linux有这一层Shell,其它作业系统也有.
比如DOS的command.com,Windows的GUI(GraphicalUserInterface),Mac的GUI.

Shell按着表现的方式与读取使用者输入种类的不同,可分为二大类:

Textbase:文字导向
Graphbase:图型导向
所谓"读取使用者输入种类不同"是指:读取自键盘,或读取自滑鼠,其它serialinput,萤幕触控等.

这样说来,Shell似乎只是命令直译器罢了?!
嗯,这倒要按不同的OS所附给的Shell其功能和选择性的自由度而定.

以DOS的COMMAND.COM而言,它就是一个十足的命令直译器,除了一点点batch档的能力之外,它的功能并不多.Win平台的GUI,则是一个图型式的命令直译器,介面十分友善.不过,这二种OS,不能让你自由而简单地选择Shell.(以前DOS有4dos可选用)

Linux的shell,除了做为命令直译器之外,它也是一个不错的程式语言,是系统治理维护时的重要工具.

由於Unix家族,对Shell的处理,采独立自由开放的方式,因此,Shell的种类相当地多,更可以让人自由地更换(chsh).

目前流行的shell有:

Bourneshell:sh
Cshell:csh
Kornshell:ksh(商业软体)
tcsh(free)
BourneAgainshell:bash(GNU)
Linux的标准shell是采用bash.它也是我们要学习的主要对象.

二.Shell的简史

第一个重要的shell是Bourneshell(如此命名是为了纪念此shell的发明者StevenBourne),1979年第一个流行的Unix版本7发行时,开始使用Bourneshell.

Bourneshell的主档名为sh,因此,日後人们便以sh为Bourneshell的主要识别名称.

虽然Unix上的shell有许多种,但Bourneshell的地位至今仍然没有改变.许多Unix系统中仍然使用sh做为重要的治理工具.(它的工作从开机到关机,几乎无所不包)

第一个广为流行使用的shell变种是Cshell.Cshell主要附在BSD版的Unix系统中.它的作者是柏克莱大学的BillJoy.Cshell主要是因为其语法和C语言相类似,因而得名.这使得Unix系统的程式师,在学习Cshell时,感到相当地方便轻易.

以上这二种形成shell的二大主流,後来的变种shell大都攫取这二种shell的优点.

比如Korn,tcsh及bash.

Bashshell是GNU计划的重要工具软体之一,也是GNU作业系统中标准的shell.


Bash相容於sh,因此,许多早期开发出来的Bourneshell都可以继续在bash中运作.现在我们安装好的RedHatLinux便是完全使用Bash.(/bin/sh->/bin/bash)

Bash在1988年诞生,最初的作者是BrianFox,ChetRamey於1989加入,现在官方正式的维护者是ChetRamey,他的工作便是持续不断地增强bash的功能.

1995~1996期间推出bash2.0,在这之前,广为使用的版本是1.14.x,它增加了许多新的功能,以及更好的相容性.

当然,Bash是完全免费的,它是OpenSource的一员,原始码全部开放.

二.Bash的功能.

Bash具有以下功能:

相容於Bourneshell(sh)
包含有Cshell以及Kornshell中最好的功能.
具命令列编修的能力(您记得以前DOS中的doskey吗?)
工作控制(jobcontrol)的能力,可控制前景及背景程式
具shell程式设计的能力,可让您自订shell及设计程式,治理系统.
三.新版的Bash哪里抓取?

若欲抓取新版的bash,可至http://www.gnu.org或其mirror站台.

中研院FTP也是不错的选择.ftp://ftp.sinica.edu.tw或ftp://linux.sinica.edu.tw

三.开始使用Bash

当你login进Linux主机时,便开始和bash互动,一直到你logout主机(下exit,logout,或按^D)为止.

Bash的提示符号为$(代表一般身份使用者),当您具有root权限时,提示符号则变为#.

一旦出现提示符号时,您便可以开始键入操作命令列(commandline)了.

命令可分为二大类:

bash内建的指令
程式
假如是bash内建的指令,则由bashshell负责回应;若是程式,则shell会找出该程式,然後将控制权交给核心,由核心执行该程式,执行完之後,再将控制权交回给shell.

怎麽知道那些指令是bash内建的,那些是程式呢?通常用"which指令",若没有任何回应,表示是内建的指令(除非该指令错误、不存在,或该程式不在预设的搜寻路径之内),例如下:

[ols3@ols3/ols3]$whichecho   [没有回应,表示是内建的指令]

[ols3@ols3/ols3]$whichls

/bin/ls

四.命令列的格式.

命令列通常由好几个字串组成,中间用空白或tab键分开.如下所示:

commandoptionsarguments(或称为parameters)
命令选项参数
rm-rf/home/ols3

除了空白和tab键之外,每一部份,我们称之为token,比如上面的例子中,便有三个token:rm,-rf,/home/ols3.

当键入此一命令列时,shell首先将它分解成个别的token,然後判定是内建的指令,或是程式,再按之前提过的方式去执行.

怎麽知道一个命令或程式,它有那些选项和参数呢?通常man一下该指令,就可以得到了.例如:

manrm

另外,多行指令也可以一下全部写在同一命令列中,只要中间用;分开,如:

ls;mkdirtest;clear

五.现行目录和自家目录.

所谓现行目录(currentDirectory)是指:你现在所处的位置,又称为工作目录(workingdirectory).

欲知现行目录为何?可下pwd指令便知.

所谓自家目录(homedirectory)是指:当初root为你建立帐号时,所指定给你的一个私人专用的目录,也是你登入系统之後,第一个进入的地方.

欲知自家目录,可用下列方式:

cd   (然後直接按Enter)
cd~  (~代表自家目录)
cat/etc/passwdgrep您的帐号
相关的技巧

cd./myway(进入目前目录下的myway目录中) 
cd.. (回到上一层目录)
cd- (回到先前的目录)
六.万用字元.

假如命令列的参数中,含有档名,那麽万用字元(wildcards)可以带来十分便利的操作.(不过若使用不当,也是恶梦的开始)

假如各位以前有过DOS的操作经验,应该还记得*及?所代表的意义吧?!

以下是bash中使用的万用字元:

?代表任何单一字元(character)
*代表任何字串(注重:0个以上的字元,例:*yes将包含yes或yes-or-not)
[字元组合]在中括号中的字元皆符合,如:[a-z]代表所有的小写字母
[!字元组合]不在中括号中的字元皆符合,如:[!0-9]代表非数字的字元皆符合

 

七.输入和输出与重新导向.

当Linux系统完成开机之後,预设上,便开有三个档案,这三个档案是做为输入、输出以及显示错误之用的.

我们称之为:

标准输入:通常是键盘,档案代码为0
标准输出:通常是萤幕,档案代码为1
标准错误:通常标准输出相同(也就是萤幕),档案代码为2
虽然系统已帮你设好了这三个档案,但我们仍然可以视需要,适时地改变输入,输出,及错误这三者至不同的地方.这种改变标准输出入的动作,我们称之为"I/O重新导向"(I/ORedirection).

例如:

ls-la>myfile就是将查询的结果重新导向至myfile中(本来是应该出现在萤幕上的)

catmyfile便可以看见ls-la的结果.

catyoufile就是将myfile的内容拷贝给youfile.

>代表将输出转向

<代表将输入转向

另一个会将输出入转向的机制是"管线"(Pipelines).

所谓的管线就是将一个程式的输出当成另一个程式的输入.

例如:cat/etc/passwdgrepols3


上面这段指令的意思是说:把/etc/passwd档的内容显示结果(即输出)丢给grep这个指令当作输入值,然後由grep从中找出包含要害字ols3的资料列.

 

八.前景与背景工作.

Linux是多人多工的作业系统,这意谓Linux可以让多人同时使用,更可以同时执行许多程式.

一般而言,你所执行的指令会一直握着控制权,一直到程式结束为止,我们称为这样的执行工作是在前景工作(foregroundjobs),假如,执行指令时,你仍然可以再做其它的事情,那我们就称它是在背景工作.

通常比较耗时间的工作,我们会把它丢到背景去执行,而这期间,我们仍然可以和shell继续沟通,下达其它命令给shell去执行.

例如:我们想从中研院的FTP伺服器下载某一个目录中所有的档案,但又不想等它执行完毕(因为这样耗时间,也很无聊),可以用以下的方式来达成:

ncftp-Rftp://linux.sinica.edu.tw/pub1/redhat/powertools&

其中&这个符号便是将命令列丢到背景去执行的指令.

假如您想离线之後,仍然令系统继续传档,可以在前面再加一个nohup的指令,如下:

nohupncftp-Rftp://linux.sinica.edu.tw/pub1/redhat/powertools&

nohup是nohangup即不挂断之意.

八.非凡字元及引号.

有许多字元,对shell来说,是具有非凡意义的.详列於下:

符号意义
~自家目录
`命令取代
#解
$变数取值
&背景工作
*万用字元
(子shell开始
)子shell结束
/使非凡字元恢复本意
管线
[字元组合开始
]字元组合结束
{命令区块开始
}命令区块结束
;命令分隔号
'单引号(不具变数置换的功能)
"双引号(具置换的功能)
<输入转向
>输出转向
/路径分隔号
?万用字元
!管线逻辑意义上的NOT

九.常用控制组合键.

我们在操作Linux时,常会使用一些组合键来控制shell的活动.

详列如下:

组合键意义
Ctrl-C中止目前的命令
Ctrl-/同上
Ctrl-D输入结束,即EOF之意(如使用mail信件结束时);或logout登出Linux
Ctrl-Z暂停目前的命令
Ctrl-M相当按Enter
Ctrl-S暂停萤幕输出
Ctrl-Q恢复萤幕输出
Ctrl-U将命令列整列删除
Ctrl-?删除最後一个字元,相当於按Del

十.指令练习.

指令选项或参数意义
ls
pwd
which
more
less
passwd
man
cat
toUCh
cd
mkdir
rmdir
cp
rm
head
tail
wc
grep
ps

关于 Shell 解释器 介绍! 文章目录1、Shell 解释器简介:2、Linux shell种类:  ①、bourne again shell(/bin/bash) —— 最常用  ②、bourne shell(/use/bin/sh 或 /bin/sh)  ③、C shell (/usr/bin/csh)  ④、K shell (/usr/bin/ksh)    ... 阅读详情

相关推荐

把对讲门铃(控制底楼铁门)接入米家服务器

今天讲个跟SDR或者无人机无关的东西,技术含量不高,但是方便了我的生活。 现在家门有智能锁,汽车也可以远程解锁发动,NFC门禁也可以用某些手机复制,唯独楼下的铁门,必须用老式对讲门铃控制。 也就是说其它钥匙都可以不带,就剩这个钥匙还必须随身携带。 另外有时候人不在家,不能开楼下铁门,快递员也没法把东西送上楼。 ......

老邵的开源世界 6551

Shell 介绍

通过掌握 Shell,你可以显著提高在 Linux/Unix 系统中的操作效率,自动化日常任务,并深入理解操作系统的工作原理。Shell 不仅是一个命令行解释器(CLI),还可以用于编写脚本,自动化执行复杂任务。Shell 脚本是一种文本文件,包含一系列命令和控制结构。的详细介绍,涵盖其定义、功能、常见类型、脚本编程基础等内容,帮助你快速理解 Shell 的核心概念和应用。Shell 有多种类型,每种类型有不同的语法和特性。Shell 提供命令行界面(CLI),用户可以通过输入命令与操作系统交互。

关注我学习编程不迷路 1091

matlab内读取文件目录时斜杠和反斜杠的使用

@matlab内读取文件目录时斜杠和反斜杠的使用TOC matlab内读取文件目录时,斜杠和反斜杠的使用 最近被斜杠和反斜杠弄晕了,于是总结了一下,在此和大家分享一下。 代码 clear; clc; close all; I1= imread('..\zs1.jpg'); %和代码文件夹同目录的图片 (纯反斜杠) I2= imread('../zs2/zs2.j...

weixin_44456694的博客 6575

死磕shell系列-shell介绍

写的比较好的博客推荐: 博主介绍:-纸短情长 死磕shell系列-shell介绍

dearQiHao的博客 2232

【iOS开发】dyld: Symbol not found: ___chkstk_darwin 问题解决

【iOS开发】dyld: Symbol not found: ___chkstk_darwin 问题解决 Xcode 13.2.1 运行到iOS12.x版本上崩溃报错如下:dyld: Symbol not found: ___chkstk_darwin dyld: Symbol not found: ___chkstk_darwin Referenced from: /private/var/containers/Bundle/Application/A424CEFD-51DB-450E-9D62-B8

wm9028的专栏 6566

优化NEXYS A7开发板(Xilinx Artix-7)Microblaze核的FLASH读写性能实战

本文针对NEXYS A7开发板(Xilinx Artix-7)上Microblaze核读写FLASH速度慢的问题,提供了系统性的优化实战指南。通过深入分析SPI控制器配置、Flash指令模式选择、Microblaze核的Cache与硬件加速器优化,以及程序运行位置(BRAM vs DDR)的调整,有效将FLASH读写性能从“龟速”提升至接近理论峰值。文章结合实测数据,为FPGA嵌入式开发者提供了清晰的性能瓶颈分析与解决方案。

carrot的博客 259

shell基本介绍

一,shell基本介绍 1,什么是shell 在Linux内核与用户之间的解释器程序 通常指 /bin/bash 负责向内核翻译及传达用户/程序指令 相当于操作系统的“外壳” shell使用方式: 交互式 —— 命令行 人工干预、智能化程度高 逐条解释执行、效率低 非交互式 —— 脚本 需要提前设计、智能化难度大 批量执行、效率高 方便在后台静悄悄地运行 [root@svr7 ~]# cat /etc/shells //查看所有解释器 [root@svr7 ~]# sh //切换成sh解释器 s

yumtian的博客 570

Arm CCA架构:硬件级机密计算与安全隔离技术解析

机密计算(Confidential Computing)通过硬件级隔离技术构建可信执行环境(TEE),是当前云安全和数据隐私保护的核心方案。Armv9-A引入的CCA架构采用物理地址空间隔离和Granule保护表(GPT)机制,实现4KB颗粒度的内存访问控制。该技术通过标准化的RMI/RSI接口规范,为虚拟化环境和安全敏感应用提供硬件级保护,特别适用于金融交易、医疗数据处理等需要严格隔离的场景。相比传统TEE方案,Arm CCA在隔离等级和动态权限管理方面具有显著优势,其Realm World设计为机密计算

weixin_30905133的博客 566

shell及其shell编程基础介绍

在Linux系统中,默认的shell程序是bourne again shell,简称bash。bash可以接收所有来自终端的输入,并具备命令行解析的功能,在读取到用户的输入后,就可以执行相关的命令。在Linux系统中,bash是最常用的shell程序。shell是解释型语言,不像C/C++语言那样需要经过编译、链接后才可以执行,而是在编写完之后就可以直接在shell中执行。shell免编译的便利性及其与Linux系统良好的契合性,使得它非常适合用来编写一些脚本用于系统维护、系统监控、服务启停等。

m0_51073072的博客 931

杰理SDK入门教程(一):编译环境的安装和程序下载

本文档提供了杰理SDK在Windows系统下的开发环境配置与代码编译指南。主要内容包括:1) 开发环境安装步骤,需下载Code::Blocks和杰理工具链;2) 编译过程中常见问题的解决方案,如安全警告提示和链接文件缺失问题;3) 代码编译流程说明,包括打开工程、连接开发板、执行编译等步骤。文档特别强调了强制升级模式的操作方法,并指出需避免点击运行/调试按钮。最后提示了杀毒软件可能误报工具链的注意事项。

qq_42014563的博客 2744

Nvidia Jetson平台 JP4.2.1版本GStreamer视频采集异常问题调试记录

Nvidia Jetson平台GStreamer in JP4.2.1不能采集但是 v4l2-ctl和 ffmpeg能正常采集视频。

jzwjzw19900922的博客 2127

9、Shell编程:Shell的介绍、Shell脚本的编写

9、Shell编程:Shell的介绍、Shell脚本的编写

wujch_tr的专栏 324

013 PID参数整定:Ziegler-Nichols法

几年前在调试一台伺服压机,客户要求位置精度±0.01mm,响应时间小于50ms。我按照教科书上的经验值设了P=1.5,I=0.02,D=0.01,结果电机一启动就开始尖叫,位置超调直接干到0.3mm,然后开始震荡,像极了喝醉的舞者。现场工程师看我的眼神,就像在看一个刚毕业的实习生。那次之后我明白了一个道理:PID参数不是靠猜的,也不是靠经验公式硬套的。你需要一个系统的方法,而Ziegler-Nichols法就是那个让你从“瞎调”走向“有章可循”的起点。

m0_50546716的博客 101

Shell脚本介绍

一.Shell介绍 Shell 和python都是弱语言 定义变量规则 : 变量名=值 shell定义变量的规则: 1:等号两边不能有空格 2:定义特殊的变量需要用单引号...

q18735924674的博客 2万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Linux中shell介绍

脚本示例1检查脚步是否有错误调试方式-n 检查脚本中的语法错误-v 先显示脚本所有内容,然后执行脚本,结果输出,如果执行遇到错误,将错误输出。-x 将执行的每一条命令和执行结果都打印出来语法。

lsh0411的博客 846

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

shell脚本介绍

面向字符串的编程语言,可跟其他语言调用实现特殊的应用程序,在操作系统和用户之间充当“命令解释器”负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。

m0_53572595的博客 407

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

shell语言介绍

1、 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。 Shell 脚本 Shell 脚本(shell script),是一种为 shell 编写的脚本程序。 业界所说的 shell

test_leader的博客 3550

Shell编程--shell介绍

shell shell 是操作系统为用户(特别是程序员)提供的命令接口。它实际上是一个解释器,如linux下面的bash。 查看当前的shell程序 zhangpeng@pikathu:~$ echo $SHELL /bin/bash 进一步查看bash zhangpeng@pikathu:~$ ls -l /bin/bash -rwxr-xr-x 1 root root 111...

qq_37160943的博客 210
上一篇: 350个linux命令详解
下一篇: Ncverilog 常用命令使用详解
study16
博客等级 码龄18年 18粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值