shell脚本基础知识-shell中的特殊符号

2023-11-01

(1):代表零个或多个字符或数字。

test后面可以没有任何字符,也可以有多个字符,总之有或没有都能匹配出来。

(2):只代表一个任意的字符

不管是数字还是字母,只要是一个都能匹配出来。

(3):这个符号在linux中表示注释说明的意思,即”#”后面的内容linux会忽略掉。

在命令的开头或者中间插入”#” ,linux都会忽略掉”#”后面的内容。这个符号在shell脚本中用的很多。

(4):脱意字符,将后面的特殊符号(例如”*” )还原为普通字符。

(5) | :管道符,它的作用在于将符号前面命令的结果丢给符号后面的命令。这里提到的后面的命令,并不是所有的命令都可以的,一般针对文档操作的命令比较常用,例如cat, less, head, tail, grep, cut, sort, wc, uniq, tee, tr, split, sed, awk等等,其中grep, sed, awk为正则表达式必须掌握的工具。

(6)$ :除了用于变量前面的标识符外,还有一个妙用,就是和’!’结合起来使用。

‘!$’表示上条命中中最后一个变量(也许称为变量不合适,总之就是上条命令中最后出现的那个东西)例如上边命令最后是test.txt那么在当前命令下输入!$则代表test.txt。

(7)grep :过滤一个或多个字符,将会在后续内容中详细介绍其用法。

(8)cut :截取某一个字段

语法:cut -d “分隔字符” [-cf] n 这里的n是数字

-d :后面跟分隔字符,分隔字符要用双引号括起来

-c :后面接的是第几个字符

-f :后面接的是第几个区块

-d 后面跟分隔字符,这里使用冒号作为分割字符,-f 1 就是截取第一段,-f和1之间的空格可有可无。

-c 后面可以是1个数字n,也可以是一个区间n1-n2,还可以是多个数字n1,n2,n3

(9) sort :用做排序

语法:sort [-t 分隔符] [-kn1,n2] [-nru] 这里的n1 < n2

-t 分隔符 :作用跟cut的-d一个意思

-n :使用纯数字排序

-r :反向排序

-u :去重复

-kn1,n2 :由n1区间排序到n2区间,可以只写-kn1,即对n1字段排序

(10)wc :统计文档的行数、字符数、词数,常用的选项为:

-l :统计行数

-m :统计字符数

-w :统计词数

(11)uniq :去重复的行,我常用的选项只有一个:

-c :统计重复的行数,并把行数写在前面

有一点需要注意,在进行uniq之前,需要先用sort排序然后才能uniq。

(12)tee :后跟文件名,类似与重定向”>”,但是比重定向多了一个功能,在把文件写入后面所跟的文件中的同时,还显示在屏幕上。

(13)tr :替换字符,常用来处理文档中出现的特殊符号,如DOS文档中出现的^M符号。常用的选项有两个:

-d :删除某个字符,-d 后面跟要删除的字符

-s :把重复的字符去掉

最常用的就是把小写变大写: tr ‘[a-z]’ ‘[A-Z]’

(14)split :切割文档,常用选项:

-b :依据大小来分割文档,单位为byte

格式如上例,后面的passwd为分割后文件名的前缀,分割后的文件名为test1aa, test1ab, test1ac …

-l :依据行数来分割文档

(15) :分号。平时我们都是在一行中敲一个命令,然后回车就运行了,那么想在一行中运行两个或两个以上的命令如何呢?则需要在命令之间加一个”;”了。

(16)~ :用户的家目录,如果是root则是 /root ,普通用户则是 /home/username

(17):如果想把一条命令放到后台执行的话,则需要加上这个符号。通常用于命令运行时间非常长的情况。使用jobs可以查看当前shell中后台执行的任务。用fg可以调到前台执行。这里的sleep命令就是休眠的意思,后面跟数字,单位为秒,常用于循环的shell脚本中。此时你按一下CTRL +z 使之暂停,然后再输入bg可以再次进入后台执行。

如果是多任务情况下,想要把任务调到前台执行的话,fg后面跟任务号,任务号可以使用jobs命令得到。

(18)>, >>, 2>, 2>> :前面讲过重定向符号> 以及>> 分别表示取代和追加的意思,然后还有两个符号就是这里的2> 和 2>> 分别表示错误重定向和错误追加重定向,当我们运行一个命令报错时,报错信息会输出到当前的屏幕,如果想重定向到一个文本里,则要用2>或者2>>。

(19)[ ] :中括号,中间为字符组合,代表中间字符中的任意一个

(20)&&  ||

在上面刚刚提到了分号,用于多条命令间的分隔符。另外还有两个可以用于多条命令中间的特殊符号,那就是 “&&”和”||”。下面笔者把这几种情况全列出:

1) command1 ; command2

2) command1 && command2

3) command1 || command2

使用”;”时,不管command1是否执行成功都会执行command2; 使用”&&”时,只有command1执行成功后,command2才会执行,否则command2不执行;使用”||”时,command1执行成功后command2 不执行,否则去执行command2,总之command1和command2总有一条命令会执行。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shell脚本基础知识-shell中的特殊符号 的相关文章

  • 选择多个模式的 awk 代码

    这是我的输入文件 比如modified txt r4544 n479826 2012 08 28 07 12 33 0400 Tue 28 Aug 2012 1 line Changed paths M branches 8 6 0 con
  • 从 shell 脚本导入函数

    我有一个 shell 脚本 我想用 shUnit 测试它 该脚本 以及所有函数 位于单个文件中 因为它使安装更加容易 示例script sh bin sh foo bar code 我想编写第二个文件 不需要分发和安装 来测试中定义的函数s
  • 从配置文件中读取分配

    我有配置文件 其中每行都包含用分号分隔的分配 像这样的东西 模仿正常的 shell 分配 VAR1 1 VAR2 2 VAR1 3 VAR2 4 每行包含相同的变量 并且旨在单独处理 这些配置文件都在系统管理员的控制之下 所以使用eval现
  • 导出多个 LD_LIBRARY_PATH 的正确方法

    对于linux的使用 我是一个新手 根据有关我的项目的指南 我必须多次导出 LD LIBRARY PATH 并且我不确定是否不覆盖它们 Cupti Tensorflow CUDAit export LD LIBRARY PATH LD LI
  • 使用 unix ksh shell 脚本或 perl 脚本监视文件夹中的新文件并触发 perl 脚本

    我已经在谷歌搜索和溢出了一段时间 但找不到任何可用的东西 我需要一个脚本来监视公共文件夹并在创建新文件时触发 然后将文件移动到私有位置 我有一个 samba 共享文件夹 exam ple 在 UNIX 上映射到X 在窗户上 在某些操作中 t
  • “设置:非法选项 -”在一台主机上,但在另一台主机上则不然

    我在我的一台 ubuntu 虚拟机中编写了一个 sh 脚本 该脚本工作正常 但是当我尝试在其他虚拟机中运行它时 它不起作用 两个虚拟机应该相同 和bash version两个虚拟机均回复 GNU bash version 4 3 11 1
  • 如何将发布档案转换为 git repo

    我有一个发布档案列表 MyProject 0 9 zip MyProject 1 0 zip MyProject 1 3 tar gz MyProject 2 0 tar gz 每个文件都包含一个与存档同名的文件夹 不带文件扩展名 其中包含
  • “bash -c 命令参数”末尾的参数的目的是什么?

    From man bash If the c option is present then commands are read from the first non option argument command string If the
  • MongoDB - 编辑器变量 - MongoDB shell - Windows 7

    EDITOR 变量功能真的可以在 Windows 7 上使用吗 我正在读一篇文章 说一旦我们设置了 EDITOR 变量在 mongorc js 中 我们只需在 shell 中输入 编辑变量名 and var name将被加载到编辑器中 在我
  • 如何使用 echo 命令写入并附加到文件

    我正在尝试编写一个脚本 它将使用 echo 并写入 附加到文件 但我的语法中已经有了 字符串 说 echo I am Finding difficult to write this to file gt file txt echo I ca
  • 拼写检查 shell 脚本

    我有一些疑问 我对一个应该是简单拼写检查器的脚本有疑问 它的目的是 当发现错误的单词时 它会提示用户输入该单词的正确拼写 如果用户输入正确的拼写 则会显示更正的单词以及错误的单词 下面 在读完所有单词之后 但是 如果用户只是按 Enter
  • 如何从脚本编辑 /etc/sudoers?

    我需要编辑 etc sudoers从脚本中添加 删除白名单中的内容 假设我有一个可以处理普通文件的命令 我如何将其应用到 etc sudoers 我可以复制并修改它 然后有visudo用修改后的副本替换原始版本 通过提供我自己的脚本 EDI
  • Ansible - 当至少一项在循环中失败时跳过任务

    我正在使用 sqlplus 运行一些 SQL 脚本 在运行之前 我从该目录获取所有 sql 文件列表并将其存储在sql out如下所示 问题是 如果其中一个 sql 脚本失败 其余 sql 脚本仍然会执行 如果任何一个脚本失败 我想完全跳过
  • python等待shell命令完成

    我正在运行脚本来解压缩一些文件 然后删除 rar 文件 我通过 shell 运行命令来完成此操作 我尝试了几种不同的方法来让脚本等待文件解压完成 但它仍然继续并在文件使用完成之前删除文件 我已经尝试过下面的代码 这是行不通的 我试图看看是否
  • 在Java中执行.lnk文件

    我需要在java中执行 lnk文件 指向exe文件的lnk文件 我能怎么做 在 VB net 中我做 Process Start path 它有效 谢谢你的帮助 Use a 流程构建器 http download oracle com ja
  • 在 Linux 中重新启动时,新创建的文件变为 0 kb(数据被覆盖为空)

    我遇到了一个奇怪的问题 这让我发疯 当前的任务是在 root 用户第一次登录时启动一组文件 并在同一用户第二次登录时启动另一组文件 我决定使用 profile 和 bashrc 文件 并在第一次登录期间发生的任务结束时重新加载 bashrc
  • Linux shell 从用户输入中获取设备 ID

    我正在为一个程序编写安装脚本 该程序需要在其配置中使用 lsusb 的设备 ID 因此我正在考虑执行以下操作 usblist lsusb put the list into a array for each line use the arr
  • BASH:输入期间按 Ctrl+C 会中断当前终端

    我的 Bash 版本是 GNU bash version 4 3 11 1 release x86 64 pc linux gnu 我有一段这样的代码 while true do echo n Set password read s pas
  • VBA Shell 并等待退出代码

    我正在打包一个办公应用程序 VBA 它调用 C 控制台应用程序来执行应用程序 大型模拟程序 的一些繁重工作 我希望能够让 VBA 应用程序等待控制台应用程序完成并从控制台应用程序检索退出代码 我已经能够做到前者 但尚未能够从应用程序中检索退
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终

随机推荐

  • 北京大学肖臻老师《区块链技术与应用》公开课笔记17——ETH数据结构篇1(状态树1)

    北京大学肖臻老师 区块链技术与应用 公开课笔记 以太坊数据结构篇1 状态树1 对应肖老师视频 click here 全系列笔记请见 click here 以太坊数据结构篇1 状态树2请见 click here About Me 点击进入我的
  • uniapp swiper 指示点位置修改 亲测有用

    只需要设置swiper的高度高于子元素swiper item就OK 有效回来点个赞哈
  • 解决UE4缓存使C盘膨胀的问题

    大家好 可能很多新手使用UE4的时候会发现C盘越来越小了 那是因为UE4引擎的缓存文件默认保存在C盘的缘故 下面来告诉大家怎么解决这个问题 概述 一 出现的问题 UE4的缓存文件会导致C盘膨胀 二 解决的方式 请严格按照下列步骤来执行 1
  • springdata JPA@Query注解及@Modifying注解

    Query注解查询适用于所查询的数据无法通过关键字查询得到结果的查询 这种查询可以摆脱像关键字查询那样的约束 将查询直接在相应的接口方法中声明 结构更为清晰 这是Spring Data的特有实现 索引参数与命名参数 1 索引参数如下所示 索
  • c#操作符operate的用法

    operate operate 的用法 看代码 public struct CorePoint
  • 用户自定义类型(User-defined Type)参数的传递

    用户自定义类型 User defined Type 参数的传递 用户自定义类型在VB中是一种重要的数据类型 它为编程者提供了很大的灵活性 使开发人员可以根据需要构造自己的数据结构 它相当于C C 中的结构类型 structure 在VB中
  • 转【】浅谈sql中的in与not in,exists与not exists的区别_

    浅谈sql中的in与not in exists与not exists的区别 1 in和exists in是把外表和内表作hash连接 而exists是对外表作loop循环 每次loop循环再对内表进行查询 一直以来认为exists比in效率
  • 基于Cesium的实景三维模型动态更新-以3Dtiles为例(一)

    一 简介 Cesium众所周知 是一个前端的三维框架 本项目利用Cesium平台来实现实景三维模型的动态更新 不认识Cesium的同学戳这里 cesium中文网 学习cesiumjs 的好地方 伐罗密 实景三维模型 概括来讲就是倾斜摄影三维
  • CocosCreator-3D 3D物体触摸移动(跟随移动)

    版本 cocoscreator3 4 0 基本原理 通过触摸屏幕上的点生成一个射线 通过物理射线检测 获得是否点击到物体 通过射线的检测结果 raycastResults 获得碰撞点 hitPoint 设置物体的x z为碰撞点的x y即可
  • JSP分页处理

    作为代码萌新的我今天尝试做了一个JSP的分页处理 如果有什么不好的地方请在评论区留下建议 废话不多说 先看我做的效果图 我在查询数据的时候使用了异步AJAX 在数据绑定的时候使用的是vue 因为我感觉vue用来绑定数据更方便一点 分页插件使
  • java 实现SMS短信发送

    准备工作 注册账号 http sms webchinese cn reg shtml 查看短信密钥 代码实现 package com activiti test import org apache commons httpclient He
  • Eureka的黑白名单过滤机制(Eureka的注册黑白名单)

    参考链接 Eureka的注册黑白名单 不过这篇博文只提供了实现思路和大致 我这边帮忙把完整代码贴出来 通过springboot的autoconfigure实现 大致思路是用自己定义的Eureka注册包装类替换原来的Eureka注册类 当Eu
  • SpaceX预计到2022年Starlink用户将达到2000万,但最终达到了100万

    SpaceX的Starlink部门还没有接近实现客户和收入的预测 该公司在建立卫星网络之前与投资者分享了这一点华尔街日报报道今天出版 据报道 2015年的一份题为 SpaceX用来从投资者那里筹集资金 的报告预计 到2022年 Starli
  • C++ String去除头尾空格 实现trim()方法

    虽然C 11的标准库中并没有提供trim 方法 但我们可以使用string的find first not of 和find last not of方法实现trim include
  • centos linux介绍,关于CentOS使用的简介

    CentOS对大家来说已经很熟悉 什么是CentOS呢 CentOS Community ENTerprise Operating System 是Linux发行版之一 它是来自于Red Hat Enterprise Linux依照开放源代
  • BUUCTF WEB 强网杯 2019 随便注

    1 题目 2 解题 2 1 尝试点提交 url变为 http b61f33a4 644b 402a 9da5 4bdf8043f954 node4 buuoj cn inject 1 可知传入的参数名为 inject 参数为1 2 2 尝试
  • vector中reserve与resize区别

    vector中reserve与resize区别 一 基本概念 1 capacity 指容器在分配新的存储空间之前能存储的元素总数 2 size 指当前容器所存储的元素个数 二 reserve与resize 1 区别 1 reserve 只修
  • 如何计算当前进程的CPU占用率

    由于测试一个解码器的项目 很长时间都在反复进行domain knowledge的学习 再加上自己是一个测试新手 对于测试代码撰写啥的还很是生嫩 前一阵被要求在性能测试中 最好在测试时能够计算出解码进程的CPU占用率 做为我们参考的一种性能参
  • w10 没有internet信息服务器,win10找不到“internet信息服务(IIS)管理器”怎么办...

    用户在搭建开发环境的时候 找了很久没发现 internet信息服务 IIS 管理器 那么 internet信息服务 IIS 管理器 去哪里了 如果你在win10找不到 internet信息服务 IIS 管理器 不要着急 在这里跟大家分享下具
  • shell脚本基础知识-shell中的特殊符号

    1 代表零个或多个字符或数字 test后面可以没有任何字符 也可以有多个字符 总之有或没有都能匹配出来 2 只代表一个任意的字符 不管是数字还是字母 只要是一个都能匹配出来 3 这个符号在linux中表示注释说明的意思 即 后面的内容lin