首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SHELL技巧:处理文件名中的那些空格

但是这种命名方式给Linux命令行工具和Shell带来了困扰,因为大多数命令中,都是默认以空格做为值与值之间的分隔符,而不是做为文件名的一部分。 看下面的脚本,我们可以了解的更清楚: ?...执行的结果如下: ? 实际上,当前目录的文件只有两个: ? 对于简单的文件名,如上例中,我们也可以通过 for i in *doc 这样简单的方法来获得文件列表。...有一个办法,通过 for i in "* *" 可以获得文件名的列表,但是一个很糟糕的列表,因为这个结果是一个两个文件名在一起的列表,我们完全无法拿来做后续的操作,如下图所示。 ?...通过 "*\ *" 这样的技巧可以避免上面所说的问题,但是在应用mv或其他操作时,还是会出现问题。 ? 上面的问题,可以通过将变量放入引号中("$i")解决,通常情况下,引号中的空格可以被正确的处理。...但这并不是一个恒久的解决办法,因为我们无法处理管道、子Shell等复杂的情况。

1.8K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何处理Shell脚本中的特殊字符

    用双引号包裹替换 在 shell 中,当我们为mv之类的命令指定文件名时,shell 将文件名之间的空格视为分隔符。因此,每个文件名将对应于磁盘上的一个单独文件或目录。...认为它是由空格分隔的文件列表。...假设我们有一个变量 整体取HOME变量的值 使用空格作为分隔符将字符串拆分为字段 将每个以空格分隔的字段视为一个可以由 shell 扩展的 glob 在我们的例子中,我们对字符串 上下文感兴趣——变量周围的双引号产生一个字符串...——列表中的每个单词都是一个由空格分隔的字段。...和 $ 在 shell 中也有特殊含义。因此,请记住,每当我们在字符串中遇到这些字符时,我们都需要在它们之前添加一个反斜杠以获取文字字符。 6.

    7.9K30

    linux ftp命令大全,linux ftp命令详解「建议收藏」

    ◆远程目录列表 ls命令列出远程目录的内容,就像使用一个交互shell中的ls命令一样。ls命令的一般格式是:ls [目录] [本地文件]如果指定了目录作为参数,那么ls就列出该目录的内容。...如果给出一个本地文件的名字,那么这个目录列表被放入本地机上您指定的这个文件中。 ◆从远程系统获取文件 get和mget命令用于从远程机上获取文件。...mget命令一次获取多个远程文件。mget命令的一般格式为:mget 文件名列表使用用空格分隔的或带通配符的文件名列表来指定要获取的文件,对其中的每个文件都要求用户确认是否传送。...Put命令的一般格式为:put 文件名mput命令一次发送多个本地文件,mput命令的一般格式为:mput 文件名列表使用用空格分隔的或带通配符的文件名列表来指定要发送的文件。...用于向本地机上的命令shell传送一个命令。如果用户处在ftp会话中,需要shell做某些事,就很有用。例如用户要建立一个目录来保存接收到的文件。如果输入!

    25.9K50

    linux查看ftp用户列表_linux ftp下载命令

    转到Shell中 linux ftp常用命令 ◆启动ftp会话 open命令用于打开一个与远程主机的会话。...◆远程目录列表 ls命令列出远程目录的内容,就像使用一个交互shell中的ls命令一样。ls命令的一般格式是: ls [目录] [本地文件] 如果指定了目录作为参数,那么ls就列出该目录的内容。...如果给出一个本地文件的名字,那么这个目录列表被放入本地机上您指定的这个文件中。 ◆从远程系统获取文件 get和mget命令用于从远程机上获取文件。...mget命令一次获取多个远程文件。mget命令的一般格式为: mget 文件名列表 使用用空格分隔的或带通配符的文件名列表来指定要获取的文件,对其中的每个文件都要求用户确认是否传送。...Put命令的一般格式为: put 文件名 mput命令一次发送多个本地文件,mput命令的一般格式为: mput 文件名列表 使用用空格分隔的或带通配符的文件名列表来指定要发送的文件。

    29K80

    linux ftp命令大全,linux ftp命令详解

    ◆远程目录列表 ls命令列出远程目录的内容,就像使用一个交互shell中的ls命令一样。ls命令的一般格式是:ls [目录] [本地文件]如果指定了目录作为参数,那么ls就列出该目录的内容。...如果给出一个本地文件的名字,那么这个目录列表被放入本地机上您指定的这个文件中。◆从远程系统获取文件 get和mget命令用于从远程机上获取文件。...mget命令一次获取多个远程文件。mget命令的一般格式为:mget 文件名列表使用用空格分隔的或带通配符的文件名列表来指定要获取的文件,对其中的每个文件都要求用户确认是否传送。...Put命令的一般格式为:put 文件名mput命令一次发送多个本地文件,mput命令的一般格式为:mput 文件名列表使用用空格分隔的或带通配符的文件名列表来指定要发送的文件。...用于向本地机上的命令shell传送一个命令。如果用户处在ftp会话中,需要shell做某些事,就很有用。例如用户要建立一个目录来保存接收到的文件。如果输入!

    26.1K20

    BashShell变量

    2.2 局部环境变量 局部环境变量只能在定义它们的进程中可见。查看局部变量的列表有些复杂,Linux 系统并没有一个只显示局部环境变量的命令。...用来将文本字符串分割成字段的一系列字符 MAIL 当前用户收件箱的文件名(Bash Shell 会检查这个文件,看看有没有新邮件) MAILPATH 冒号分隔的当前用户收件箱的文件名列表(Bash Shell...控制哪些命令留在历史记录列表中 HISTFILE 保存 Shell 历史记录列表的文件名(默认是 .bash_history) HISTFILESIZE 最多在历史文件中存多少行 HISTTIMEFORMAT...如果设置了且非空,就用作格式化字符串,以显示 Bash 历史中每条命令的时间戳 HISTIGNORE 由冒号分隔的模式列表,用来决定历史文件中哪些命令会被忽略 HISTSIZE 最多在历史文件中存多少条命令...的全路径名 SHELLOPTS 已启用 Bash Shell 选项列表,列表项之间以冒号分隔 SHLVL Shell 的层级,每次启动一个新 Bash Shell,该值增加 1 TIMEFORMAT

    2.4K30

    Makefile函数

    2.2 patsubst 原型: $(patsubst ,,) 功能:查找中以空白符(空格、Tab)分隔的单词是否符合模式文件名称处理函数 3.1 dir 原型: $(dir ) 作用:从多个以空白符分隔的文件列表中获取文件目录。目录部分是指最后一个反斜杠/之 前的部分。...3.2 notdir 原型: $(notdir ) 功能:从多个以空白符分隔的文件列表中获取非目录部分。非目录部分是指最后一个反斜杠/之后的内容。...3.8 wildcard 原型: $(wildcard ) 功能:扩展通配符函数用于获取匹配此模式的所有文件列表,文件名以空格分隔。如果不存在任何符合此模式的文件,返回空。...每一次text会返回一个字符串,循环过程中,text的所返回的每个字符串会以空格分隔,最后当整个循环结束时,text所返回的每个字符串所组成的整个字符串(以空格分隔)将会是foreach函数的返回值。

    2.4K41

    Linux基础——正则表达式

    2、删除行:d命令 从某文件中删除包含 "how" 的所有行 ? 将/etc/passwd的内容显示并找印行号,同时将 2~5 删除 ? 附:nl 命令在 linux 系统中用来计算文件中行号。...tab 键作为缺省的域分隔符,因此如果要浏览域间有空格的文本,不必指定这个选项,如果要浏览诸如passwd文件,此文件各域以冒号作为分隔符, 则必须指明-F 选项,如:awk -F: 'commands...commands 是真正 awk 命令, input-files 是待处理的文件。 iput_files 可以是多于一个文件的文件列表,awk将按顺序处理列表中的每个文件。...在 awk 中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F 域分隔符的情况下,默认的域分隔符是空格或 tab 键。...注: 1、basename 命令能够从路径中分离出文件名。

    4.3K30

    linux bash shell 特殊字符大全

    Linux下无论如何都是要用到shell命令的,在Shell的实际使用中,有编程经验的很容易上手,但稍微有难度的是shell里面的那些个符号,各种特殊的符号在我们编写Shell脚本的时候如果能够用的好,...1.作为路径的分隔符,路径中仅有一个斜杆表示根目录,以斜杆开头的路径表示从根目录开始的路径; 2.在作为运算符的时候,表示除法符号。...用于数组的初始化。 {x,y,z,...} 花括号扩展(Brace Expansion)。 在命令中可以用这种扩展来扩展参数列表,命令将会依照列表中的括号分隔开的模式进行匹配扩展。...1.作为路径的分隔符,路径中仅有一个斜杆表示根目录,以斜杆开头的路径表示从根目录开始的路径; 2.在作为运算符的时候,表示除法符号。...作为通配符,用于匹配文件名扩展特性中,用于匹配单个字符; 5. 正则表达式中,表示匹配其前面规则0次或者1次。

    6.6K30

    linux下命令自动补全总结

    “-o filenames”:告诉“readline”生成文件名,以便进行与文件名相关的处理,例如在目录名后面加上斜杠,引用特殊字符,去掉行尾的空格,目的是用于shell函数。...“-o noquote”:告诉“readline”不引用文件名,默认会进行引用。 “-o nospace”:告诉“readline”在补全的名称后不添加空格,默认添加空格。...“-A helptopic”:内建命令help支持的帮助主题。 “-A hostname”:主机名,从shell环境变量HOSTFILE中获取。 “-A job”:作业名,同选项“-j”。...,从数组变量COMPREPLY中获取补全条目。...“-X filterpat”:filterpat是进行文件名扩展时使用的模式,它作用于通过前面的选项和参数生成的补全列表,并把每个与过滤模式匹配的条目删除,模式中前导的叹号表示否定,这时会删除与过滤模式不匹配的条目

    6.6K50

    一文掌握shell脚本的基本语法

    转义符 转义符是一种引用单个字符的方法。添加转义符(\) 使得shell中的某个字符失去原有特殊含义。 注意:在echo 和 sed 中谨慎使用转义符,否则会有相反效果。...04. shell中参数:$0、$?、$!、$$、$*、$#、$@ 字符符号 功能(用途) $0 shell文件本身的文件名 $1~$n 添加到Shell的各参数值。...echo $PATH 以冒号分隔的目录列表 pwd 当前工作目录 pwd 5.3 自定义变量基本语法 定义变量:变量名=变量值,等号两侧不能有空格(与其它语言可设空格的区别之处)。...8.1 初始化方式 shell中使用括号来表示数组,元素之间则使用 空格符号 分隔。...# 等号两边不能空格 array_name=(element_1 element_2 ... element_N) # 声明偶数 arr_odd=(1 3 5 7 9) 8.2 获取数组中的元素 #

    4.1K01

    shell脚本扩展「建议收藏」

    ,因此如果要浏览域间有空格的文本,不必指定这个选项,如果要浏览诸如passwd文件,此文件各域以冒号作为分隔符,则必须指明-F选项,如:awk -F: ‘commands’ input-file。...iput_files可以是多于一个文件的文件列表,awk将按顺序处理列表中的每个文件。 在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。...通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格或tab键。...入门实例: 例1:显示/etc/passwd文件中的用户名和登录shell 如果只是显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以tab键分割 如果只是显示/etc.../passwd文件中的用户名和登录shell, 而账户与shell之间以逗号分割 注:awk的总是输出到标准输出,如果想让awk输出到文件,可以使用重定向。

    5.8K20

    MobaXterm工具连接Linux服务器入门使用手册,国产化泰山服务器连接工具使用演示

    ② 启用程序 启动程序方法,从左边找到要启用的程序,然后复制一下,右边直接把路径粘贴一下,就可以执行。 也可以直接用下面的复制到终端中。 ? 把路径复制过来后,一回车就可以直接执行了。...⑦ 退出日志界面 直接 ctrl+c 就好了,关闭了打印日志的显示,不会影响程序的。 ? 第三章:更多命令 ① 获取命令列表 输入 help 可以查看全部命令列表。...请输入 `help' 以获取一个列表. 输入 `help 名称' 以得到有关函数`名称'的更多信息....使用 `info bash' 来获得关于 shell 的更多一般性信息 使用 `man -k' 或 `info' 来获取不在列表中的命令的更多信息. 名称旁边的星号 (*) 意味着该命令被禁用....值末尾的空格会使下一个词被检测 作为别名替换展开。

    2.2K30

    7.管道、管道、环境变量与其他常用命令

    LD_LIBRARY_PATH:用于指定动态链接库(.so文件)的路径,其内容是以冒号分隔的路径列表。 C_INCLUDE_PATH:C语言的头文件路径,内容是以冒号分隔的路径列表。...CPLUS_INCLUDE_PATH:CPP的头文件路径,内容是以冒号分隔的路径列表。 PYTHONPATH:Python导入包的路径,内容是以冒号分隔的路径列表。...wc:统计行数、单词数、字节数 既可以从stdin中直接读入内容;也可以在命令行参数中传入文件名列表; wc -l:统计行数 wc -w:统计单词数 wc -c:统计字节数 tree:展示当前目录的文件结构...可以从 stdin 中读取多行数据 可以从命令行参数中读取文件名列表 xargs:将 stdin中的数据用空格或回车分割成命令行参数 find ....内容存放在 ~/.bash_history 中 工具: md5sum:计算md5哈希值 可以从 stdin 读入内容 也可以在命令行参数中传入文件名列表; time command:统计 command

    65030

    shell 循环命令

    如果你需要输出一篇英文文章,英文文章内容自然存在单词间的空格,行与行之间的换行符,现在如果shell输出内容的字段分隔符是空格,那这会存在一个问题,就是输出内容时内容会排成一列,而不是一行一行的输出。...默认情况下,bash shell会将下列字符当作字段分隔符: 空格 制表符 换行符 如果bash shell在数据中看到以上这些字符中的任意一个,它就会假定这表明了列表中一个新数据字段的开始。...要解决这个问题,可以在 shell 脚本中临时更改 IFS 环境变量的值来限制被 bash shell 当作字段分隔符的字符,比如 IFS=$'\n',这样字段分隔符就被更改为换行了。...这样 bash shell 就认为换行才是数据的结束,bash shell 会在数据值中忽略空格和制表符。...在不知道所有的文件名,这个特性在处理目录中的文件时就非常有用。

    1.4K20

    Linux学习笔记(四)

    注意:等号两边不能有空格、不能再子shell中引用 用户自定义全局环境变量 很显然系统自带的全局环境变量、自带的局部环境变量以及用户定义局部变量并不能满足父子shell进程之间的通讯 因此,linux还允许用户设置自定义全局变量...MAIL 当前用户收件箱的文件名(bash shell会检查这个文件,看看有没有新的邮件) MAILPATH 冒号分隔的当前用户收件箱的文件名列表(bash shell会检查列表中的每个文件,看看有没有新邮件...函数的名称 续 变量 描述 FUNCNEST 当设置成非零值时,表示所允许的最大函数嵌套级数(一旦超出,当前命令即被终止) GLOBIGNORE 冒号分隔的模式列表,定义了在进行文件名扩展时可以忽略的一组文件名...,以显示bash历史中每条命令的时间戳 HISTIGNORE 由冒号分隔的模式列表,用来决定历史文件中哪些命令会被忽略 HISTSIZE 最多在历史文件中存多少条命令 HOSTFILE shell在补全主机名时读取的文件名称...已启用bash shell选项列表,列表项之间以冒号分隔 SHLVL shell的层级;每次启动一个新bash shell,该值增加1 TIMEFORMAT 指定了shell的时间显示格式 TMOUT

    1.1K10
    领券