精华内容
下载资源
问答
  • 这段代码的主要贡献是它允许以与 clear 命令完全相同的方式使用通配符 *。 keep3 var1 var2 清除除 var1 和 var2 之外的所有变量 keep3 va*2 除了名称以“va”开头并以“2”结尾的变量外,清除所有变量。 需要 ...
  • linux命令中的通配符

    2020-10-28 21:12:39
    介绍linux通配符,并简述通配符和正则的区别

    本小节将介绍一些Linux一个非常实用且出现频率较高的功能,linux通配符,并简述通配符和正则的区别,作为我的CSDN专栏《系统学习Linux命令》的一篇。

    前面的章节提到,如果想要一次性删除很多的文件,这个时候就需要使用到linux中的通配符机制。一些常见的场景如下:

    • 输出当前目录中以特定字符开头的文件名。
    • 将特定字符开头的文件合并成为一个新的文件。
    • 将特定字符开头的文件移动到到另外一个目录。
    • 一次性删除当前目录下所以.txt结尾的文件。
    • 将特定字符开头的文件权限设置为777。

    解决上述四个场景可以采用如图1所示的命令:

    在这里插入图片描述
    图1

    图1中使用了*这个通配符,同时可以看到很多的命令支持通配符的形式。除了上述提到的星号通配符,linux还提供了一些其他的字符,来表示更多的通配模式,具体如下:

    • * 表示任意多个字符,包含0次,如图1中在使用chmod设置权限的时候,test*中的test文件的权限也发生了改变。
    • ?表示任意一个字符,用以和*所表示的0次或者多次相对应。
    • [[:type:]]该种形式表示匹配type类型中的字符,其中type具体可以是digitÿ
    展开全文
  • 允许插入匹配字符串的通配符,例如 Windows 'copy *.old =.new' 一些示例: # 将当前文件重命名为 old doall 'mv *.cur *.old' # 压缩摄像机 DV 文件 doall 'ffmpeg -i *.dv * .mp4' # 根据扩展名移动文件到目录 do...
  • 常用命令及说明 ...删除目录(不允许删除非空目录) mv 移动文件或修改文件名 history 显示输入过的命令 history 5 显示最后输入的五条命令 $HISTFILE="/home/.myhistory" 改变存历史命令的位

    常用命令及说明

    命令说明
    ls查看文件
    ls -a查看所有文件(包含隐藏文件)
    ls -l查看文件及详细信息
    cd目录跳转
    pwd查看当前目录路径
    mkdir创建文件夹
    rm删除文件
    rm -r彻底删除
    rmdir删除目录(不允许删除非空目录)
    mv移动文件或修改文件名
    history显示输入过的命令
    history 5显示最后输入的五条命令
    $HISTFILE="/home/.myhistory"改变存历史命令的位置
    $HISTSIZE=600改变文件大小
    cp复制
    chmod改变用户权限
    chown改变文件拥有者
    date显示日期与时间
    cat显示文件
    cat file1 file2 > newfile合并文件
    head file -n 20显示前xx行
    tail file -n 20显示后xx行
    less、more都用于查看文件
    alias重命名,例如alias l = ls -l

    常用通配符

    符号示例说明
    *f*以f开头的所有东西,只有f也可以
    f?匹配任意一个字符,即fx
    []f[abcd]匹配其中一个 即 fa 或 fb 或 fc 或 fd
    !()f[!1-9]!代表不能有 f[!1-9]代表 f后面加任意一个字符(但不能出现1-9)
    展开全文
  • 通配符

    2016-10-26 09:53:52
    通配符 在开始使用命令之前,我们需要介绍一...使用通配符(也以文件名代换著称)允许你依据字符类型来选择文件名。下表列出这些通配符以及它们所选择的对象: 表5-1: 通配符 通配符 意义 * 匹配任意多个字符(包
    

    通配符

    在开始使用命令之前,我们需要介绍一个使命令行如此强大的 shell 特性。因为 shell 频繁地使用文件名,shell 提供了特殊字符来帮助你快速指定一组文件名。这些特殊字符叫做通配符。使用通配符(也以文件名代换著称)允许你依据字符类型来选择文件名。下表列出这些通配符以及它们所选择的对象:

    表5-1: 通配符
    通配符意义
    *匹配任意多个字符(包括零个或一个)
    ?匹配任意一个字符(不包括零个)
    [characters]匹配任意一个属于字符集中的字符
    [!characters]匹配任意一个不是字符集中的字符
    [[:class:]]匹配任意一个属于指定字符类中的字符

    表5-2列出了最常使用的字符类:

    表5-2: 普遍使用的字符类
    字符类意义
    [:alnum:]匹配任意一个字母或数字
    [:alpha:]匹配任意一个字母
    [:digit:]匹配任意一个数字
    [:lower:]匹配任意一个小写字母
    [:upper]匹配任意一个大写字母

    借助通配符,为文件名构建非常复杂的选择标准成为可能。下面是一些类型匹配的范例:

    表5-3: 通配符范例
    模式匹配对象
    *所有文件
    g*文件名以“g”开头的文件
    b*.txt以"b"开头,中间有零个或任意多个字符,并以".txt"结尾的文件
    Data???以“Data”开头,其后紧接着3个字符的文件
    [abc]*文件名以"a","b",或"c"开头的文件
    BACKUP.[0-9][0-9][0-9]以"BACKUP."开头,并紧接着3个数字的文件
    [[:upper:]]*以大写字母开头的文件
    [![:digit:]]*不以数字开头的文件
    *[[:lower:]123]文件名以小写字母结尾,或以 “1”,“2”,或 “3” 结尾的文件
    展开全文
  • 通配符是由shell处理的(不是由所涉及到命令语句处理的,其实我们在shell各个命令中也没有发现有这些通配符介绍), 它只会出现在 命令的“参数”里(它不用在 命令名称里, 也不用在 操作符上)。当shell在“参数”...

    一、linux shell通配符(wildcard)

    通配符是由shell处理的(不是由所涉及到命令语句处理的,其实我们在shell各个命令中也没有发现有这些通配符介绍), 它只会出现在 命令的“参数”里(它不用在 命令名称里, 也不用在 操作符上)。当shell在“参数”中遇到了通配符时,shell会将其当作路径或文件名去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行代换(路径扩展);否则就将该通配符作为一个普通字符传递给“命令”,然后再由命令进行处理。总之,通配符 实际上就是一种shell实现的路径扩展功能。在 通配符被处理后, shell会先完成该命令的重组,然后再继续处理重组后的命令,直至执行该命令。

     

    我们回过头分析上面命令吧:在第2个命令中,*.txt 实际shell搜索文件,找到了符合条件的文件,命令会变成:ls a.txt b.txt ,实际在执行ls 时候传给它的是a.txt b.txt .

     

    而命令3,d*.txt 由于当前目录下面没有这样的文件或目录,直接将”d*.txt” 作为ls 参数,传给了 ls .这个时候”*” 只是一个普通的 ls 参数而已,已经失去了它通配意义。 由于找不到文件,所以会出现:无法访问提示!

    了解了shell通配符,我们现在看下,shell常见通配符有那一些了。

    shell常见通配符:

    字符含义实例
    *匹配 0 或多个字符a*b  a与b之间可以有任意长度的任意字符, 也可以一个也没有, 如aabcb, axyzb, a012b, ab。
    ?匹配任意一个字符a?b  a与b之间必须也只能有一个字符, 可以是任意字符, 如aab, abb, acb, a0b。
    [list] 匹配 list 中的任意单一字符a[xyz]b   a与b之间必须也只能有一个字符, 但只能是 x 或 y 或 z, 如: axb, ayb, azb。
    [!list] 匹配 除list 中的任意单一字符a[!0-9]b  a与b之间必须也只能有一个字符, 但不能是阿拉伯数字, 如axb, aab, a-b。
    [c1-c2]匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z]a[0-9]b  0与9之间必须也只能有一个字符 如a0b, a1b... a9b。
    {string1,string2,...}匹配 sring1 或 string2 (或更多)其一字符串a{abc,xyz,123}b    a与b之间只能是abc或xyz或123这三个字符串之一。

     

    需要说明的是:通配符看起来有点象正则表达式语句,但是它与正则表达式不同的,不能相互混淆。把通配符理解为shell 特殊代号字符就可。而且涉及的只有,*,? [] ,{} 这几种。

     

     

    二、shell元字符(特殊字符 Meta)

    shell 除了有通配符之外,由shell 负责预先先解析后,将处理结果传给命令行之外,shell还有一系列自己的其他特殊字符。

    字符说明
    IFS由 <space> 或 <tab> 或 <enter> 三者之一组成(我们常用 space )。
    CR由 <enter> 产生。
    =设定变量。
    $作变量或运算替换(请不要与 shell prompt 搞混了)。
    >重导向 stdout。 *
    <重导向 stdin。 *
    |命令管线。 *
    &重导向 file descriptor ,或将命令置于背境执行。 *
    ( )将其内的命令置于 nested subshell 执行,或用于运算或命令替换。 *
    { }将其内的命令置于 non-named function 中执行,或用在变量替换的界定范围。
    ;在前一个命令结束时,而忽略其返回值,继续执行下一个命令。 *
    &&在前一个命令结束时,若返回值为 true,继续执行下一个命令。 *
    ||在前一个命令结束时,若返回值为 false,继续执行下一个命令。 *
    !执行 history 列表中的命令。*

    加入”*” 都是作用在命令名直接。可以看到shell 元字符,基本是作用在命令上面,用作多命令分割(或者参数分割)。因此看到与通配符有相同的字符,但是实际上作用范围不同。所以不会出现混淆。

     

    以下是man bash 得到的英文解析:

    metacharacter
                  A character that, when unquoted, separates words.  One of the following:
                  |  & ; ( ) < > space tab
    control operator
                  A token that performs a control function.  It is one of the following symbols:
                  || & && ; ;; ( ) | <newline>

     

    三、shell转义符

    有时候,我们想让 通配符,或者元字符 变成普通字符,不需要使用它。那么这里我们就需要用到转义符了。 shell提供转义符有三种。

    字符说明
    ‘’(单引号)又叫硬转义,其内部所有的shell 元字符、通配符都会被关掉。注意,硬转义中不允许出现’(单引号)。
    “”(双引号)又叫软转义,其内部只允许出现特定的shell 元字符:$用于参数代换 `用于命令代替
    \(反斜杠)  又叫转义,去除其后紧跟的元字符或通配符的特殊意义。

    man bash 英文解释如下:

    There are three quoting mechanisms: the escape character, single quotes, and double quotes.

    实例:

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [chengmo@localhost ~ /shell ]$ ls \*.txt
    ls : 无法访问 *.txt: 没有那个文件或目录
     
    [chengmo@localhost ~ /shell ]$ ls '*.txt'
    ls : 无法访问 *.txt: 没有那个文件或目录
     
    [chengmo@localhost ~ /shell ]$ ls 'a.txt'
    a.txt
     
    [chengmo@localhost ~ /shell ]$ ls *.txt
    a.txt  b.txt

     

    可以看到,加入了转义符 “*”已经失去了通配符意义了。

    四、shell解析脚本的过程

    看到上面说的这些,想必大家会问到这个问题是,有这么想特殊字符,通配符,那么 shell在得到一条命令,到达是怎么样处理的呢?我们看下下面的图:

    1

    如果用双引号包括起来,shell检测跳过了1-4步和9-10步,单引号包括起来,shell检测就会跳过了1-10步。也就是说,双引号 只经过参数扩展、命令代换和算术代换就可以送入执行步骤,而单引号转义符直接会被送入执行步骤。而且,无论是双引号转义符还是单引号转义符在执行的时候能够告诉各个命令自身内部是一体的,但是其本身在执行时是并不是命令中文本的一部分。

    展开全文
  • 命令使用 什么是命令 显示命令的类型 显示一个可执行程序的位置 得到 shell 内建命令的帮助文档 显示用法信息 显示程序手册页 显示适当的命令 显示非常简洁的命令说明 显示程序 Info 条目 README 和其它...
  • 有需求,在允许命令或者脚本跳出交互行,需要进行内容输入,但需要人手动输入,不是很方便,此时可以通过expect来实现自动互动交互。 expect是一个自动交互功能的工具,可以满足代替我们实际工作中需要从终端手动...
  • Linux基础命令-正则表达式和通配符

    千次阅读 2020-02-04 15:13:06
    Linux基础命令-系统性能网络配置和相关命令一、基本网络配置 网络配置和相关命令 一、基本网络配置
  • 说到shell通配符(wildcard),大家在使用时候会经常用到。下面是一个实例: 从上面这个实例,知道大家有没有发现问题呢。我们先了解一下,通配符相关知识,再分析下这个实例吧。 一、linux shell通配符...
  • java执行linux或者windows命令,这个需求比较常见。 但是若使用 Runtime.getRuntime().exec(cmd); 会发现,若cmd中含有通配符,则无法执行,如cp /dira/*.txt /dirb 可用如下方式执行: String[] cmdArr = new...
  • Linux通配符

    千次阅读 2015-07-18 21:48:04
    Linux通配符在我们平常的 Linux 使用中,在很多时候您可能需要一次对多个文件系统对象执行单一操作(如 cp)。在这些情况下,直接在命令行中输入许多文件名通常是很让人厌烦的: ...它允许您通过使用
  • 1.Shell常见通配符 通配符是shell在做PathnameExpansion(路径名扩展)时用到的。说白了一般只用于文件名匹配,它是由shell解析的,比如find,ls,cp,mv等。 通配符 含义 实例 ...
  • shell通配符

    千次阅读 2016-10-31 09:12:24
    网友看法: (总结精辟!)  通配符是系统level的 而正则表达式需要相关工具的支持: egrep, awk, vi, perl。 ...在您日常的 Linux 使用中,有很多时候您可能需要一次对多个文件系统对象执行单一操作
  • Linux 通配符用法简介

    千次阅读 2017-07-26 22:35:34
    ls,find,cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了。 通配符规则: * 代表任意字符(0到多个) ?代表一个字符 [] 中间为字符组合 正则表达式用来在文件中匹配符合条件的字符串,正则...
  • 1、Redis的通配符 在 Redi s中,允许使用模糊查询 key。 Redis 支持3种通配符: *、?、[ ] *:通配任意多个字符。...【示例】Redis 中使用 Keys 命令通配符进行查询。 3、Java中使用Redis通配符 R..
  • (3)字符串变量表达式( 字符串允许使用赋值号做等号) If [ $string1 = $string2] 如果string1等于string2 if [ $string1 != $string2 ] 如果string1等于string2 if [ -n $string ] 如果string 非空(非0) if...
  • Oracle查询通配符做普通字符使用

    万次阅读 2013-11-04 19:33:11
    上个笔记提到可以将通配符做普通字符使用: 在where子句中,通配符可与like条件一起使用。 我们知道在oracle中:  %(百分号): 用来表示任意数量的字符,或者可能根本没有字符。  _(下划线): 表示...
  • SHELL 通配符

    千次阅读 2012-02-23 09:36:51
    这里面讲的很详细 mark一下,有空细看 ...Linux Shell 通配符、元字符、转义符使用实例介绍 说到shell通配符(wildcard),大家在使用时候会经常用到。下面是一个实例: 1
  • oracle查询通配符做普通字符使用

    千次阅读 2012-12-14 17:38:51
    在where子句中,通配符可与like条件一起使用。在Oracle中:  %(百分号): 用来表示任意数量的字符,或者可能根本没有字符。  _(下划线): 表示确切的未知字符。  ?(问号): 用来表示确切的未知字符。  #(井...
  • bash之通配符

    千次阅读 2016-03-06 16:42:35
    我相信很多人和我一样,天天在使用linux的shell命令,也大概知道有通配符这么个概念,不过比较模糊。平时也会使用简单的通配符,也许还知道有正则表达式的存在,甚至清楚两者的区别,往往搞混淆。 我也是同样的...
  • 通配符与正则表达式

    千次阅读 2013-09-12 22:19:48
    网友看法: (总结精辟!)  通配符是系统level的 而正则表达式需要相关工具的支持: egrep, awk, vi, perl。 在文本过滤工具里,都是用正则表达式,... 在您日常的 Linux 使用中,有很多时候您可能需要一次对多
  • 通配符&正则表达式

    2014-10-08 13:59:41
    通配符通配符是系统级别的 ⽽而正则表达式需要相关⼯工具和语⾔言的⽀支持: egrep, awk, vi,perl。 当您键入 ls .txt 命令并按 Enter 后,寻找哪些文件同 .txt 模式相匹配的任务不是由 ls 命令,而是...
  • MQTT 协议 主题及通配符使用方法

    千次阅读 2019-09-30 14:50:42
    通配符只可用在主题过滤器中,在发布应用消息时的主题名不允许包含通配符 ,主题通配符有两种: #:表示匹配>=0个层次,比如a/#就匹配a,a/,a/b,a/b/c。单独的一个#表示匹配所有,不允许a#或a/#/c等形式。 +...
  • 理解通配符掩码

    2013-05-27 09:45:02
    二、通配符掩码的作用 一条典型的ACL仅能指定一个要允许或拒绝IP的规则,如果要阻止多个地址或一段范围的地址,那么如使用典型的ACL规则,则需要添加多条才能满足。这样导致工作量增多,易出错且ACL执行效率...
  • 使用RoboCopy 命令

    千次阅读 2016-09-06 12:05:44
    经常进行文件管理操作的朋友们,满意于Windows系统内置的复制功能,因为它太龟速了。于是大家就使用FastCopy、TeraCopy之类的软件来加速复制,但是你是否知道Windows 7已经内置快速复制的功能? 这项功能就是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 60,458
精华内容 24,183
关键字:

不允许使用通配符的命令