linux之命令加单引号和不加的区别
假设家目录为/home/work/
,家目录下含有下列文件
a b c d e
则执行ls *
shell会把*
号置换为当前命令下的所有文件,所以就相当于执行ls a b c d e
在比如,执行:
find ~ -name *
则会报错:
find: paths must precede expression: b
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
因为shell会把*
号替换为当前命令下的所有文件,所以相当于执行:
fin ~ -name a b c d e
这显然是不符合find
命令的语法的,所以报错
删除除了a
文件之外的所有文件,则再次执行:
find ~ -name *
则会输出正确的结果,因为shell会把*
号替换为a
,则上述命令相当于:
find ~ -name a
这是正确的find
语法,所以会给出正确的结果
如果拒绝shell对*
进行解释,则只需加上引号即可,我们再此把删除的文件创建好,执行:
find ~ -name '*'
则会列出a b c d e
5个文件的信息,可见用引号括起来之后,才把*
号作为通配符使用的
参考:
相关文章
- wget批量下载gitlab uploads的文件和图片
背景 下载gitlab的uploads文件,因为wiki可以直接clone,但是上传的文件和图片却无法下载(除非你有gitlab的服务器权限) 之前尝试用写Java工具下载 遍历所有的.md文件
- shell/设置外网访问权限
/sbin/route add default gw 10.94.144.1 该网段的默认路由地址即路由器的地址为10.xxx.xxx.1 而路由器是可以访问外网的 由于静态路由在网卡启动时会删除,所
- shell/文件权限操作
文件安全与权限 文件类型 d 目录 l 符号连接 s 套接字文件 b 块设备文件 c 字符设备文件 p 命名管道文件 普通文件 改变权限 符号模式 chmod [who] operator
- shell/条件测试
测试语法 test condition #或 [ condition ] 使用方括号时,要注意在条件两边加上空格。 文件测试 测试状态: 符号 释义 -d 是否是目录 -f 是否
- 常用shell命令
常用命令 查找类 find / -name "export.sh" which 查看可执行文件的位置 whereis 查看文件的位置 locate 配合数据库查看文件位置 find 实际搜寻硬盘查询文
随机推荐
- wget批量下载gitlab uploads的文件和图片
背景 下载gitlab的uploads文件,因为wiki可以直接clone,但是上传的文件和图片却无法下载(除非你有gitlab的服务器权限) 之前尝试用写Java工具下载 遍历所有的.md文件
- shell/设置外网访问权限
/sbin/route add default gw 10.94.144.1 该网段的默认路由地址即路由器的地址为10.xxx.xxx.1 而路由器是可以访问外网的 由于静态路由在网卡启动时会删除,所
- shell/文件权限操作
文件安全与权限 文件类型 d 目录 l 符号连接 s 套接字文件 b 块设备文件 c 字符设备文件 p 命名管道文件 普通文件 改变权限 符号模式 chmod [who] operator
- shell/条件测试
测试语法 test condition #或 [ condition ] 使用方括号时,要注意在条件两边加上空格。 文件测试 测试状态: 符号 释义 -d 是否是目录 -f 是否
- 常用shell命令
常用命令 查找类 find / -name "export.sh" which 查看可执行文件的位置 whereis 查看文件的位置 locate 配合数据库查看文件位置 find 实际搜寻硬盘查询文