Shell:可以批量处理、自动化完成一系列维护任务,大大减轻管理员的负担!Shell是一个特殊的应用程序,介于操作系统内核与用户之间,充当了一个“命令解释器”的角色。负责接收用户输入的操作指令,并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。

如何查看系统所支持的Shell(默认为Bash):

Shell脚本格式:由脚本声明、脚本注释、可执行语句构成:  

Shell脚本执行方式:只要将平时使用的各种Linux命令按顺序保存到一个文本文件,然后添加可执行权限,这个文件就成为一个Shell脚本了!PS:chmod +x 目标文件

   
重定向操作与管道符号:

1.重定向操作:在Linux系统中,一切硬件资源均已文件方式在系统中逻辑显示,例如:硬盘和分区,光盘等设备。包括以下交互设备文件。

A:标准输入(STDIN):默认的设备是键盘,文件编号为0,命令将从标准输入文件中读取在执行过程中需要的输入数据。

B:标准输出(STDOUT):默认的设备是显示器,文件编号为1,命令将执行后的输出结果发送到标准输出文件。

C:标准错误(STDERR):默认的设备是显示器,文件编号为2,命令将执行期间的各种错误信息发送到指定错误文件。

1):重定向输出:指的是将命令的正常输出结果保存到指定的文件中,而不是直接显示在显示器的屏幕上。使用“>”、“>>”符号表示,前者为保存的意思,后者为追加。

例如,将当前主机的CPU类型信息(uname -p)保存到cpuinfo.txt文件中。

例如,当需要保存目标文件原有的内容是,应改为“>>”操作符号,以便追加内容而不是覆盖文件。

2):重定向输入:指的是将命令中接收输入的途径由默认的键盘改为指定的文件获取,重定向输入使用“<”操作符。

例如:通过重定向输入可以使一些交互式操作过程能够通过读取文件来完成。此操作可以大大减少程序被打断的过程,提高脚本执行的效率。(passwd命令的--stdin选项用于识别标准输入)

3):错误重定向:指的是将执行命令过程中出现的错误信息,保存到指定的文件中,而不显示在屏幕上。错误重定向使用“2>”操作符,其中“2”是指错误文件的编号。(而标准输入、输出省略了0和1)

例如:以下操作可以将使用Tar命令进行备份时出现的错误信息保存到error.log文件中。

PS:使用“2>”操作符号,会像使用“>”一样覆盖目标文件内容,若要追加内容则使用“2>>”,也可以使用“>”、“2>”将两类输出信息分别保存到不同文件,也可以使用“&>”保存到同一文件中!

2.管道符号:管道符号作为不同命令之间的协同工作提供了一种机制,位于管道符号“|”左边的命令输出结果,将作为右边命令的输入对象,同一行命令中可以使用多个管道。

例如:使用grep命令查询使用“/bin/bash”作为Shell的用户名称时,会输出符合条件的整行内容,在此基础上可以结合管道操作与Awk命令作进一步过滤,只输出用户名和登录Shell。

PS:上例中Awk作用是以冒号“:”作为分隔符,输出第一和第七区域的字符串。其中“-F”部分用来指定分隔符号(可以指定任意符号)

使用Shell变量:

1.自定义新的变量:格式“变量名称=变量值”

自定义变量由系统用户自己定义,只在用户自己的Shell环境中生效,又称本地变量(变量名以字母或下划线开头,区分大小写,建议全大写,不可以包含特殊符号,如:+ - * / ? % # 等)。

例如:

2.查看和引用变量的值

通过在变量名称前添加前导符号“¥”,可以引用一个变量的值。使用Echo命令查看,也可以同时查看多个变量值,中间可以没有空格。

PS:echo–e 选项:用于调用特殊字符,支持反斜线控制的字符转换!

例如:

当引用变量和输出自己添加的新内容时,应以“{}”符号把变量名括起来。

3.变量赋值的特殊操作

A:双引号(“”):主要起界定字符串的作用,特别是当要赋值的内容中包含空格时,必须以双引号括起来;一般情况省略。(PS:双引号主要用于调用其他变量值,或者用到“空格”时,加上双引号,其他情况可省略)

例如:将“Benet 5.0”赋值给变量BENET,应执行“BENET=“Benet 5.0”操作。

在双引号范围内,使用“$”符号可以引用其他变量的值(变量引用)

例如:  

B:单引号(‘):当赋值的内容中需要包含特殊符号 $ " \ 等字符时,应使用单引号括起来,在其范围内的字符作为普通符号对待!

但赋值内容中包含单引号时,可以使用“\”符号进行转义,以免冲突。(PS:也可以省略单引号,对特殊字符用“\”符号进行转义)

例如:

C:反撇号(`):此键位于esc键下面。

反撇号主用于命令替换,允许将命令的执行结果,作为变量的值输出。

例如:若要在一行命令中查找useradd命令程序的位置并列出详细信息:

反撇号也可以使用“$()”符号代替,它俩等价

将上面的命令结果作为wgl的值

4.read命令:此命令用于交互式方法赋值,且可以同时赋多个值。

read 的 -p 命令 :-p用于交互式提示信息。

4.设置变量的作用范围:

默认情况下,自定义的变量只在当前用户的Shell环境生效,当进入其他Shell环境却不生效。

例如:

为了使用户定义的变量在所有Shell中生效,可以使用内部命令Export将指定的变量导入到“全局变量”,也可以同时指定多个变量名作为参数,也能使用此命令定义新变量。

5.数值变量的运算

Shell变量的数值运算多用于脚本程序的过程控制(如循环次数,使用量比较等)在Bash Shell 环境中,只能进行简单的整数运算,不支持小数运算。整数值运算主要通过内部命令expr进行!运算符与变量之间必须有至少一个空格。

+:加法运算

-:减法运算

\*:乘法运算,PS:不能仅适用“*”符号,否则将被当成文件通配符

/:除法运算(不计算小数点后的数字)

%:取模运算,又称取余运算,用来计算整除后的余数(不计算小数点前的数字)。

6.环境变量:主要用于设置用户的工作环境,例如用户宿主目录、命令查找路径、用户当前目录、登录终端等,这些变量由Linux系统管理,会随着用户状态的改变而改变。使用env可以看到当前工作环境下的环境变量。

7.位置变量:又称为位置参数,使用“$1 $2 $3 … $9”表示。例如:当执行命令行“ls -lh /boot/”时,其中第一个位置变量为“-lh”,以“$1”表示;第二个位置变量为“/boot/”,以“$2”表示。命令或脚本本事的名称使用“$0”表示。

8.预定义变量:预定义变量是由Bash程序预先定义好的一类特殊变量,用户只能使用预定义变量,不能更改,也不可以预定义变量赋值。预定义变量使用“$”符号和另一个符号组合表示,常见如下:

$#:表示命令行中位置参数的个数。

$*:表示所有位置参数的内容,即参数名。

$?:表示前一条命令执行后的返回状态,返回值为0表示执行正确,返回任何非0值均表示执行出现异常。

$0:表示当前执行的脚本、进程、程序名称。

补充:shell 执行方式(source bash ./)的区别

用法:  
source file.sh 或 . file.sh    
source命令与"."命令相同    
source file.sh 与 sh file.sh 及./file.sh执行脚本的区别在那里呢?    
1.当shell脚本具有可执行权限时,用sh file.sh与./file.sh执行脚本是没有区别的。./file.sh是因为当前目录没有在PATH中,所有"."是用来表示当前目录的。    
2.sh file.sh 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export来传递。    
3.source file.sh:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面

本文出自 “王高利” 博客,请务必保留此出处http://wanggaoli.blog.51cto.com/10422005/1707918

转载于:https://blog.51cto.com/dulinux/1708318

什么是shell,shell基础由浅入深,常用的shell命令、用法、技巧相关推荐

  1. Shell脚本基础及常用的四剑客

    Shell脚本基础及应用 一.shell变量 二.判断语句 if语句 if语句实战 三.循环语句 for循环 while循环 until循环 四.选择语句 case语句 五.四剑客 grep sed ...

  2. linux系统shell知识点,Linux 系统中shell知识点说明和常用的帮助命令简单介绍 | IT工程师的生活足迹...

    linux 系统内核和各种驱动程序覆盖在下层的硬件系统之上:对上提供各种系统调用接口API,供shell和各种程序应用程序调用. 总体结构图如下: 操作系统的层次架构 一般我们理解shell指的是BA ...

  3. 【Shell 编程基础第一部分】Shell脚本HelloShell及简单的Shell基础

    本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/shell/759.html ☞ 点击订阅 ☜ ...

  4. shell脚本基础知识-什么是shell、环境变量

    日常的linux系统管理工作中必不可少的就是shell脚本,对于测试工程师来说,掌握shell脚本的编写能力也是给自己加分的重要技能. 一.什么是shell shell是你(用户)和Linux(或者更 ...

  5. linux常见基础服务,常用的linux命令的基本使用(一)

    序号 命令 对应英文 作用 01 ls list 查看当前文件夹下的内容 02 pwd print name of of current/working directory 查看当前所在文件夹 03 ...

  6. Linux常用60个命令用法

    原文链接:Linux常用的60个命令用法 - Accwiz - 博客园 Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在L ...

  7. 【shell编程基础0】bash shell编程的基本配置

    前面一篇"shell编程之变量篇"主要讲述下shell编程的变量的基本知识:设置变量的方式,自定义变量和环境变量的差别,变量的替换.删除.测试等. 这一篇主要是讲述在bash sh ...

  8. shell脚本求和_常用的Shell脚本

    1.通过位置变量创建linux系统账户及密码 $1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数 #!/bin/bash # Author: Peter zh # Blog: https:// ...

  9. 20 个最常用的 Git 命令用法说明及示例

    作者 | Sahiti Kappagantula 译者 | 弯月,责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 在这篇文章中,我将介绍在使用 Git 时最常使用的 20 个命令. 以下 ...

  10. @程序员,快来 Get 常用的 Linux 命令和技巧!

    好奇开发人员使用的Linux命令是什么样的呢?使用过程中带着什么样的技巧呢?让我们走进开发人员的日常工作吧. 作者 | Mateusz Jarzyna 译者 | 苏本如,责编 | maozz 出品 | ...

最新文章

  1. 在Mac上设置环境变量并永久生效的方法
  2. 清华大学计算机系教授:马少平——计算机是如何实现智能的(附直播回放)...
  3. 用 JavaScript 编写测试脚本
  4. mybaits三:全局配置文件(全面)
  5. phpmailer SMTP Error: Could not connect to SMTP host. 错误解决
  6. 超级vga显示卡_VGA 显示卡简介
  7. 图解matlab基本操作
  8. 如何制作python代码_如何使用50行Python代码制作一个计算器
  9. C语言程序设计 | 程序环境和预处理:翻译环境和执行环境、宏、条件编译
  10. 清明节游戏服务器维护,清明节游戏活动【4月2日--4月16日】
  11. 一些总是记不住又容易搞混淆的东西(不断更新)
  12. 集成Tomcat环境到Eclipse中
  13. 两边定宽,中间自适应布局的四种实现方法
  14. 微信公众平台开发之微团购
  15. 【智能家居篇】wifi网络结构(下)
  16. 美国航空航天局(NASA)高度集成WebFOCUS和SharePoint
  17. 基于SSM的旅游管理系统
  18. 论文查重没通过怎么办?
  19. 认知诊断理论的前世今生
  20. GeForce RTX 3070安装mmdetection

热门文章

  1. 2014迅雷校园招聘笔试题答案
  2. 模拟游客一天的生活与旅游java程序代写源码
  3. 【C语言学习趣事】_GCC源代码分析_2_assert.h
  4. [文摘20090203]巴菲特-等到知更鸟报春,那春天就快结束了
  5. 面向对象和结构化程序设计的区别X
  6. centos6.7上使用nginx实现负载均衡!
  7. MySQL-5.5.28编译安装
  8. 导入Flex/Flash项目后的一个简单错误:无法创建 HTML 包装器
  9. 启用Apache Mod_rewrite模块
  10. ASP.NET 调味品:AJAX