Shell 学习基础

1、组合命令的符号

  1. 管道,将前面一个命令的结果作为后面一个命令的输入
  2. 分号,顺序执行用分号分割的命令
  3. 重定向,重定向包括三种:输入重定向、输出重定向、错误重定向,以7个不同的符号实现

< :输入重定向

> :输出重定向

>> :输出重定向,但以追加的方式写入

2> :错误重定向

2>> :错误重定向,但以追加的方式写入

&> :重定向输出和错误

&>> :重定向输出和错误,但以追加的方式写入

2、变量

  1. 变量的基本操作:

变量的定义格式:变量名=变量值

变量的引用格式:$变量名、${变量名}

  1. 脚本内的特殊变量

$n :表示第n个参数

$* :表示所有参数

$# :标识传入脚本的所有参数个数

$? :标识上一条命令的返回值

  1. 三种定界符的区别:单引号、双引号、反撇号

单引号:禁止引用和转义,即所有的符号都是所见即所得

双引号:允许引用和转义,即双引号中的变量会替换为变量的值

反撇号:以命令输出进行替换,即反撇号中的内容会替换为执行它的结果

  1. 执行变量内的命令

当我们需要在脚本中执行多次同样的命令时,可以将该命令放入一个变量中,然后每次使用该变量执行命令即可。

eval ${CMD}

3、算术运算

  1. 整数运算

    使用expr命令,计算表达式,格式:$(expr 数值1 操作符 数值2),对变量的引用需$

    使用$[]表达式,算式替换,格式:$[数值1 操作符 数值2],对变量的引用可以不加$
  2. 几个数值处理技巧

    变量的递更处理,格式:let 变量名++、let 变量名--

    使用随机数,格式:RANDOM 变量

    生成数字序列,格式:seq 首数 末数、seq 首数 增量 末数
  3. 小数运算

    shell本身没有提供小数运算,需要依靠管道来使用另外一个命令bc

4、字符串操作

  1. 字符串截取

    路径分割:dirname命令、basename命令

    使用expr命令:expr substr $var1 起始位置 截取长度,起始位置以1开始

    使用${}表达式:${var:起始位置:截取长度},起始位置以0开始
  2. 字符串替换

    使用${}表达式:${var/old/new}替换第一个old为new和${var//old/new}替换所有的old为new
  3. 使用随机字符串

5、条件测试

  1. 测试操作规范

    测试操作本质上也是一个命令,它的作用就是用来判断一个条件的,格式1:test 条件表达式,格式2:[ 条件表达式 ],注意条件表达式和[]之间的空格
  2. 文件状态的检测

    -e :文件或目录是否存在

    -d :是否为目录

    -f :是否为文件

    -r :是否可读

    -w :是否可写

    -x :是否可执行
  3. 整数值比较

    -eq :等于(equal)

    -ne :不等于(not equal)

    -gt :大于(greater than)

    -lt :小于(lesser than)

    -ge :大于等于(greater or equal)

    -le :小于等于(lesser or equal)
  4. 字符串匹配

    = :判断两个字符串是否相等

    != :判断两个字符串是否不相等

6、if 判断结构

1.单分支结构:

if 条件测试
then
命令序列
fi

2.双分支结构:

if 条件测试
then
命令序列1
else
命令序列2
fi

3.多分枝结构:

if 条件测试1
then
命令序列1
elif 条件测试2
then
命令序列2
...
else
命令序列n
fi

7、for 循环

语法结构:

for 变量名 in 取值列表
do
命令序列
done

取值列表用空白符分割,示例:

for i in 1 2 3 4 5
do
echo $i
done

输出结果:

1
2
3
4
5

8、case 分支

语法结构:

case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
...
*)
默认命令序列
esac

9、awk 工具

  1. 语法格式:awk '模式 {操作}' 文件1 文件2 ...
  2. 常用内置变量:

    NR :当前处理行的序号(行号)

    FS :字段分隔符,默认为空格或tab

    $0 :当前行的所有内容

    $n :当前行第n个字段

10、sed 工具

  1. 语法格式:

    sed '编辑指令' 文件1 文件2 ...

    sed -n '编辑指令' 文件1 文件2 ... 不输出指令不影响的数据

    sed -i '编辑指令' 文件1 文件2 ... 直接修改文件
  2. 编辑指令写法:

    [地址1[,地址2]]操作类型

    多条指令之间以分号隔开,是指编辑指令,例如:sed -n '3p;5p' test.dat
  3. 常用操作类型:

    p :输出文本行

    n :取下一行文本(跳过当前行)

    d :删除

    s :字符串替换

    a :追加新文本

10、参数

$n:取传给函数或者脚本的第n个参数(n从0开始),当大于9时,需要用大括号括起来,${10}

$0:脚本的名称

$@:所有参数

$:所有参数,当以""包括时,$是一个整体,$@是分开的

$#:参数个数

$$:当前shell的进程ID

shell基础知识的更多相关文章

  1. Linux shell基础知识(上)

    Linux shell基础知识(上) 目录 一.shell介绍 二.命令历史 三.命令补全和别名 四.通配符 五.输入输出重定向 六.管道符和作业控制 七.shell变量 八.环境变量配置文件 九.b ...

  2. Linux Shell 基础知识(一)

    1. 本文知识结构 2. shell 基础知识 2.1 shell 简单介绍 ​ GNU bash shell 能提供对 Linux 系统的交互式访问,一般来说,使用快捷键 Ctrl + Alt + ...

  3. Shell 基础知识和总结

    调试脚本 检查脚本语法错误 bash -n /path/to/some_script 调试执行 bash -x /path/to/some_script shell里的变量 本地变量:只对当前shel ...

  4. shell基础知识总结

    1. shell 对于一台计算机而言,其硬件受系统内核的控制,使用者想要控制计算机,就必须有与系统内核进行通讯的手段.而shell就是使用者与计算机进行通讯的手段之一.从命名上看,shell其实是相对 ...

  5. shell基础知识---与监听服务器长连接端口状态

    从未写过脚本我的最近接了俩脚本的需求,就在这分享一下我的我学到基础知识主要就四部分内容 一.变量 变量的定义 string='字符串' string="字符串" num=808st ...

  6. shell基础知识讲解

    第1章 shell基础 1.1 什么叫做shell编程 shell编程也叫做bash高级编程语法 1.2 常见的shell命令解释器 bash            redhat和centos使用 d ...

  7. shell从入门到精通进阶之一:Shell基础知识

    1.1 简介 Shell是一个C语言编写的脚本语言,它是用户与Linux的桥梁,用户输入命令交给Shell处理,Shell将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户. 下面是处 ...

  8. Shell基础知识和编程规范

    一,Shell环境查看 1.1 查看系统Shell支持情况 [root@linux-node1 ~]# cat /etc/shells /bin/sh /bin/bash /sbin/nologin ...

  9. shell基础知识5-函数

    函数的定义 function fname(){ } 或者 function_name(){ } 对于简单的函数,甚至可以是这样做 fname() { statement; } 函数调用 直接写函数名即 ...

随机推荐

  1. SQL 基本的函数

    select * from emp;

  2. C++向量(Vector)

    向量Vector: 向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器. 与string相同, vector 同属于STL(Standard Template L ...

  3. Linux Ubuntu常用终端命令

    查看cpu温度: 安装命令如下:sudo apt-get install acpi 然后acpi -t 即可 输入法配置窗口命令: fcitx-config-gtk3 im-config 任务管理器命 ...

  4. [原创]java WEB学习笔记72:Struts2 学习之路-- 文件的上传下载,及上传下载相关问题

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  5. Python学习总结11:获取当前运行类名和函数名

    一. 使用内置方法和修饰器方法获取类名.函数名 1. 外部获取 从外部的情况好获取,可以使用指向函数的对象,然后用__name__属性. def a(): pass a.__name__ 或者 get ...

  6. ofbiz进击 第一节。 新建自己的webapp项目

    创建一个webapp的过程更新下来项目(直接从svn上面切下来就好),要先ant clean 下,然后在重新ant下.一: start sheel here :ant create-component ...

  7. . ToString(),Convert.ToString(),(string),as比较:

    http://www.cnblogs.com/chehaoj/archive/2010/02/23/1671955.html 通常 object 到 string 有四种方式(假设有object ob ...

  8. 常见http状态

    200(成功):服务器已成功处理了请求.通常,这表示服务器提供了请求的网页.如果是对您的 robots.txt 文件显示此状态码,则表示 Googlebot 已成功检索到该文件. 304(未修改):自 ...

  9. [OrangePi] Installation on SD Card

    Download any of the available images (xz archive) from Mega or GoogleDrive Download scriptbin_kernel ...

  10. linux系统中grub配置文件

    安装了Windows和Linux时肯定要通过GRUB进行引导,GRUB引导器的主配置文件路径/boot/grub/grub.conf(也可能是/boot/grub2/grub.conf),以#号开头的 ...