Shell脚本的通配符和特殊符号

2023-11-11

通配符:

符号

意义

*

0到无穷个任意字符

?

一个任意字符

[]

如[abcd]表示a,b,c,d中任意一个

[-]

在编码顺序内的所有字符,如[0-9]表示0到9间的数字

[^]

反向选择,如[^abc]表示非a,b,c的其它字符

特殊符号:

符号

内容

|

管线:分割两个管线命令的界定

&

工作控制:将指令变为后台运行

>,>>

数据流重导向:输出导向,分别是“取代”与“累加”

<,<<

数据流重导向:输入导向

(1)数据流重导向:将某个指令执行后应该出现在屏幕上的数据(stdout/stderr)传输到其它地方

  • 标准输入(0):使用<或<<
  • 标准输出(1):使用>或>>
  • 标准错误(2):使用2>或2>>(不写数字默认为1)

例子

例1:
    ll / > ~/rootfile    #输出根目录内容到文件
        >:如果文件不存在则创建,存在则覆盖
        >>:存在则追加
例2:
    find /home -name .bashrc>list_right 2>list_error  #将stdout与stderr存到不同的档案
例3:将正确和错误的信息都写入list中
    find /home -name .bashrc>list 2>list  #错误
    find /home -name .bashrc>list 2>&1    #正确
    find /home -name .bashrc &>list       #正确
例4:
    cat > catfile               #用户输入字符,然后保存到catfile中
    cat > catfile < ~/.bashrc   #输入的字符由bashrc提供保存在catfile中(拷贝)
例5:
    cat > catfile << "eof"      #<<代表结束的输入字符,输入eof则结束输入

注意:

  • /dev/null黑洞设备,可以将不需要的信息输出到/dev/null中
find /home -name .bashrc 2>/dev/null  #将错误数据丢弃,正确数据显示到屏幕

(2)管道符号“|”的使用

ls -al /etc|less    #ls的stdout作为less命令的stdin
  • 在"|"后面的指定必须是管线命令(可以接受stdin),如less、more、head、tail
  • 管线命令仅会处理stdout,对于stderr会忽略

常见管道命令例子

1.cut
cut -d '分隔字符' -f fields    #-f为取出第几段,结果下标从1开始
cut -c 字符区间                #以字符为单位取出固定字符区间
例:
    echo $PATH | cut -d ':' -f 5    #取出第5个
    echo $PATH | cut -d ':' -f 3,5  #取出第3与第5个
    export | cut -c 12-             #取出第12个字符后的字符串
    export | cut -c 12-20           #取出12-20的字符串
2.grep
选项:--color=auto 可在结果中高亮关键字
例:
    last | grep 'root'                 #取出有root的行
    last | grep -v 'root'              #取出没有root的行
    last | grep 'root' |cut -d ' ' -f1 #取出有root的行的第一列
3.sort:排序
-t:分割符 -k:以分隔结果的哪个区间排序 -r:反向排序 -f:忽略大小写 -b:忽略最前面的空格 -n以数字排序
例:将帐号进行排序
    cat /etc/passwd | sort
    cat /etc/passwd | sort -t ':' -k 3     #以第三栏排序
    cat /etc/passwd | sort -t ':' -k 3 -n  #上述排序以字符串排序,1会出现在11后面,-n指出按数字排序
4.uniq:去除重复
例:
    last | cut -d ' ' -f1 | sort | uniq [-c]    #去除重复,-c为计数
5.wc:统计
例:
    cat /etc/man.config | wc      #输出的三个数字分别代表:行、字数、字符数
6.tee:作为管道的输入,同时也输出到屏幕
    last | tee last.list          #输出到屏幕和last.list
7.tr:删除或替换文字
-d:删除后面接的字符串  -s:取代重复的字符
例:
    last | tr '[a-z]' '[A-Z]'
    cat /etc/passwd | tr -d ':'   #将结果中的冒号删除

减号-的用途

在管道命令中,会用前一个指令的stdout作为这次的stdin,某些指令需要用到文件名来处理时,该stdin与stdout可以利用减号“-”来代替。例:

tar -cvf - /home | tar -xvf -

  • 用tar打包/home,文件名位置填“-”,打包的数据传送到stdout,则后面的tar的“-”就是前一个指令的stdout。

 

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

Shell脚本的通配符和特殊符号 的相关文章

  • 使用 sed 更新 xml 属性(Windows + cygwin 和 Linux)?

    我需要使用 sed 命令对 xml 文件进行更新 但我在这方面遇到了麻烦 它需要在 Windows 使用 cygwin 和 Linux 上运行 XML 具有以下元素
  • Android 时钟滴答数 [赫兹]

    关于 proc pid stat 中应用程序的总 CPU 使用率 https stackoverflow com questions 16726779 total cpu usage of an application from proc
  • 添加要在给定命令中运行的 .env 变量

    我有一个 env 文件 其中包含如下变量 HELLO world SOMETHING nothing 前几天我发现了这个很棒的脚本 它将这些变量放入当前会话中 所以当我运行这样的东西时 cat env grep v xargs node t
  • 对目录中的所有文件执行命令

    有人可以提供执行以下操作的代码 假设有一个文件目录 所有这些文件都需要通过程序运行 该程序将结果输出到标准输出 我需要一个脚本 该脚本将进入一个目录 对每个文件执行命令 并将输出连接到一个大输出文件中 例如 要在 1 个文件上运行命令 cm
  • 尝试安装 LESS 时出现“请尝试以 root/管理员身份再次运行此命令”错误

    我正在尝试在我的计算机上安装 LESS 并且已经安装了节点 但是 当我输入 node install g less 时 出现以下错误 并且不知道该怎么办 FPaulMAC bin paul npm install g less npm ER
  • PHP 从命令行启动 gui 程序,但 apache 不启动

    首先 我阅读了有类似问题的人的一些帖子 但所有答案都没有超出导出 DISPLAY 0 0 和 xauth cookies 这是我的问题 提前感谢您的宝贵时间 我开发了一个小库 它使用 OpenGL 和 GLSL 渲染货架 过去几天我将它包装
  • 动态参数值取决于另一个动态参数值

    启动前提 非常严格的环境 Windows 7 SP1 Powershell 3 0 使用外部库的可能性有限或不可能 我正在尝试重写之前创建的 bash 工具 这次使用 PowerShell 在 bash 中 我实现了自动完成功能 以使该工具
  • Linux 内核标识符中前导和尾随下划线的含义是什么?

    我不断遇到一些小约定 比如 KERNEL Are the 在这种情况下 是内核开发人员使用的命名约定 还是以这种方式命名宏的语法特定原因 整个代码中有很多这样的例子 例如 某些函数和变量以 甚至 这有什么具体原因吗 它似乎被广泛使用 我只需
  • 如何在 Windows 下向 .sh 脚本传递参数?

    我正在尝试在 Windows 下执行 sh 脚本 我安装了 Git 它允许我执行 sh 文件 但是 如果不使用 sh 作为执行前缀 我似乎无法传递任何参数 我的 sh 文件 echo Test 1 如果我用以下命令执行它 gt sh tes
  • NPTL 和 POSIX 线程有什么区别?

    NPTL 和 POSIX 线程之间的基本区别是什么 这两者是如何演变的 POSIX 线程 pthread 不是一个实现 它是几个函数的 API 规范 纸上的标准 英文 其名称以pthread 以及定义在
  • 如何查找所有以句号结尾的单词?

    我有一个包含许多以 a 结尾的单词的文件 其中大部分是缩写 例如 etc p s 如何输出一个仅显示一次所有这些单词的列表 所有单词前面都有一个空格 因此可以使用该空格来查找单词的开头 没有一个单词出现在该行的开头 文件中没有句子 因此句点
  • 获取变量的名称作为输入并使用该名称更改变量

    我从脚本用户那里获取变量的名称作为第一个参数 并将该变量的值回显到控制台 bin bash variablename 1 echo The value of variablename is variablename 这太棒了 我无法开始工作
  • 如何从 bash 数组中删除元素而不展平数组

    我想创建一个采用 bash 数组的函数 如下所示 a element zero element one element two 并删除一个元素 如 元素一 并留下一个数组 如下所示 a element zero element two 这样
  • ubuntu:升级软件(cmake)-版本消歧(本地编译)[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我的机器上安装了 cmake 2 8 0 来自 ubuntu 软件包 二进制文件放置在 usr bin cmake 中 我需要将 cmake 版本至少
  • 为什么我可以直接从 bash 执行 JAR?

    我是一个长期从事 Java 工作的人 并且知道运行带有主类的 JAR 的方法MANIFEST MFJar 中的文件很简单 java jar theJar jar 我用它来启动 Fabric3 服务器 包含在bin server jar在其标
  • 为arm构建WebRTC

    我想为我的带有arm926ej s处理器的小机器构建webrtc 安装 depot tools 后 我执行了以下步骤 gclient config http webrtc googlecode com svn trunk gclient s
  • 协助 awk/bash 捕获内存差异

    我正在尝试从以下文件中提取以下输出 xr lab show clock Thu Sep 19 14 38 02 812 WIB 14 38 02 893 WIB Thu Sep 19 2019 xr lab xr lab xr lab sh
  • 查找哪些页面不再与写入时复制共享

    假设我在 Linux 中有一个进程 我从中fork 另一个相同的过程 后forking 因为原始进程将开始写入内存 Linux写时复制机制将为进程提供与分叉进程使用的不同的唯一物理内存页 在执行的某个时刻 我如何知道原始进程的哪些页面已被写
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • Linux 上有关 getBounds() 和 setBounds() 的 bug_id=4806603 的解决方法?

    在 Linux 平台上 Frame getBounds 和 Frame setBounds 的工作方式不一致 这在 2003 年就已经有报道了 请参见此处 http bugs java com bugdatabase view bug do

随机推荐

  • 计算机单位及单位转换

    计算机单位及转换 一 位 计算机中表示信息的最小单位 表示一位二进制信息 以b表示 bit 0 1 一个字节8位 字节 计算机中处理信息的最小单位 以八位二进制信息 以B表示 1B 8b 一个整数4个字节 字长 一个字所包含二进制输的位数
  • 刷脸支付逐渐普及刷脸项目也逐渐火热起来

    科技的发展总是朝着更智能化的方向前进 在此基础上 人脸识别技术因其生物支付特征明显 和特征唯一性获得了众多项目的青睐 将这一技术迅速线下落地产业化 随着人脸识别技术的逐渐成熟 刷脸支付应运而生 刷脸支付代理项目也逐渐火热起来 我们体验了刷脸
  • 认识 MySQL

    文章目录 1 前言 2 数据库 3 MySQL 1 前言 在当今信息时代 数据被认为是最宝贵的资源之一 因为它可以帮助我们洞察趋势 做出决策 构建智能系统 并推动创新 而数据库技术的崛起 尤其是MySQL数据库 为我们提供了强大的工具来存储
  • vue中实现删除校验-iview的气泡提示

    前言 很多时候我们担心删除会出现误删的情况 这样就需要对删除进行二次校验 确定是否继续删除 效果图 实现代码
  • Type Incompatible operand types String and int

    今天eclipse包了一个错误 意思就是Description Resource Path Location Type Incompatible operand types String an 但是昨天还没有错误为什么那 最后找了好久发现不
  • 区块链之PBFT算法

    在公有链中用的最多的是pow算法和pos算法 这些算法都是参与者的利益直接相关 通过利益来制约节点诚实的工作 解决分布式系统中的拜占庭问题 拜占庭容错算法是一种状态机副本复制算法 通过节点间的多轮消息传递 网络内的所有诚实节点就可以达成一致
  • jQuery实现省市二级联动

    主要实现流程 步骤分析 1 设置加载页面函数事件 2 在里面获取select的id并且设置下拉事件并且绑定函数 3 定义2维数组存放相应的城市 4 遍历2维数组省份 并且使用if判断 点击时的this value值 如果值与省份 二位数组下
  • 深入理解 == 与 equals 区别

    深入理解 与 equals 区别 这是一个老生常谈的问题了 也是在面试过程中常见的问题之一 网上所提供的常用回答是 equals比较值 比较值和引用 对java源码有了一定了解了之后回头再思考这个问题并不是那么的简单单一 java中的二元运
  • springboot的配置注入

    文章目录 第一种 使用 Value 第二种 使用 ConfigurationProperties springboot配置注入 数据绑定 有两种方式 第一种 使用 Value 首先 在application yml中定义自己的数据 appl
  • 蓝桥杯基础试题汇总(Python)看这一篇就够了

    目录 蓝桥杯习题汇总 1 试题 基础练习 A B问题 2 数列问题 3 试题 基础练习 十六进制转八进制 4 试题 基础练习 十六进制转十进制 5 试题 基础练习 十进制转十六进制 6 试题 基础练习 序列求和 7 试题 基础练习 圆的面积
  • 浅谈数据同步实现rsync+inotify

    浅谈数据同步实现rsync inotify 数据的实时同步介绍 数据的实时同步实现 inotify inotify的介绍 实现inotify软件 inotify rsync使用方式 实现inotify rsync 1 rsync基本概述 2
  • ubuntu安装deb包

    ubuntu安装deb包 安装deb包 sudo dpkg i 包名 安装deb包后 可能会出现依赖关系而不能正常安装软件 这个时候先更新下源然后解决依赖关系后重装即可 sudo apt get update 更新 sudo apt get
  • 教程网站 汇总:Linux 、 C /C++ 、HTML、CSS

    C 语言教程 菜鸟教程 https www runoob com cprogramming c tutorial html C 教程 菜鸟教程 https www runoob com cplusplus cpp tutorial html
  • 安装apache后无法访问localhost但可以访问127.0.0.1的解决方法

    localhost与127 0 0 1的概念和工作原理之不同 概念 localhost 也叫local 正确的解释是 本地服务器 127 0 0 1 在windows等系统的正确解释是 本机地址 本机服务器 工作原理 localhot 是不
  • VS2019的常见错误和调试功能

    目录 一 VS2019常见问题 1 scanf问题 2 如何在当前页面下再创建新项目和创建多项目后无法运行当前项目的问题 二 VS2019的调试功能 不打断点 三 VS2019的调试功能 打断点 四 总结 一 VS2019常见问题 1 sc
  • 爬虫实战爬取豆瓣电影Top250榜单电影

    爬虫实战爬取豆瓣电影Top250榜单电影 实战内容 直接上代码 重要地方有注释 from bs4 import BeautifulSoup import re import urllib request urllib error impor
  • Postman + Pre-resuestScript:预请求脚本发送GET请求

    通过预执行脚本 Pre request Script 发送GET请求 一 效果演示 二 控制台 Console 打印响应结果 代码注释详解 pm sendRequest 是发送一个请求 function 中的 err 表示请求返回的错误信息
  • Node的Buffer对象和fs模块

    一 Node的模块化管理 1 模块化 node应用程序由模块组成 遵循的是CommonJS模块规范 使用模块管理的好处是隔离模块的作用域 避免出现命名冲突 2 什么是CommonJS 是一套代码的规范 构建一个在浏览器之外的JavaScri
  • 报错:ImportError: rocketmq dynamic library not found解决方法

    目录 一 ImportError rocketmq dynamic library not found 二 OSError librocketmq so cannot open shared object file No such file
  • Shell脚本的通配符和特殊符号

    通配符 符号 意义 0到无穷个任意字符 一个任意字符 如 abcd 表示a b c d中任意一个 在编码顺序内的所有字符 如 0 9 表示0到9间的数字 反向选择 如 abc 表示非a b c的其它字符 特殊符号 符号 内容 管线 分割两个