草庐IT

linux - 如何去除文件名中的特殊字符?

在创建播放列表时,我经常遇到会中断播放过程的文件。这将是带有空格或撇号的文件。我会用以下命令修复它forfilein*.;domv"$file"`echo$file|tr""'_'`;done**(forspaces)**现在我更经常遇到带有逗号、撇号、方括号和其他字符的文件。我将如何修改命令以删除此类字符?也试过rename's/[^a-zA-Z0-9_-]//'*.mp4但它似乎没有删除空格或逗号 最佳答案 forfilein*;domv"$file"$(echo"$file"|sed-e's/[^A-Za-z0-9._-]/_

linux - Bash 解析和 shell 扩展

我对bash解析输入和执行扩展的方式感到困惑。对于输入来说,\'"\"helloworld\""在bash中作为参数传递给显示其输入内容的脚本,我不确定Bash是如何解析它的。例子,var=\'"\"helloworld\""./displaywhatiget.sh"$var"Igot'"helloworld"我明白"$var"中的双引号告诉bash将var的值放在一起。但是,我不明白的是,在bash的扩展过程中,反斜杠转义和双引号解析是什么时候发生的。我来自shell-operation,和shellexpansion. 最佳答案

linux - Bash 解析和 shell 扩展

我对bash解析输入和执行扩展的方式感到困惑。对于输入来说,\'"\"helloworld\""在bash中作为参数传递给显示其输入内容的脚本,我不确定Bash是如何解析它的。例子,var=\'"\"helloworld\""./displaywhatiget.sh"$var"Igot'"helloworld"我明白"$var"中的双引号告诉bash将var的值放在一起。但是,我不明白的是,在bash的扩展过程中,反斜杠转义和双引号解析是什么时候发生的。我来自shell-operation,和shellexpansion. 最佳答案

Linux 与 Unix 文件通配符

我想获取Linux目录中以大写字母开头的文件列表。在Unix中,这很简单ls[A-Z]*不过,在Linux中,我看到匹配项似乎不区分大小写:=>lsA.txt b.txt B.txt c.txt C.txt=>ls[A]*A.txt=>ls[AB]*A.txt B.txt=>ls[ABC]*A.txt B.txt C.txt=>ls[A-C]*A.txtb.txtB.txtc.txtC.txt=>ls[b]*b.txt=>ls[a-c]*A.txtb.txtB.txtc.txt在Unix端运行相同的命令如我所料。这是Linux一直以来的行为方式吗?使用awk解决这个问题很容易,所以我不

Linux 与 Unix 文件通配符

我想获取Linux目录中以大写字母开头的文件列表。在Unix中,这很简单ls[A-Z]*不过,在Linux中,我看到匹配项似乎不区分大小写:=>lsA.txt b.txt B.txt c.txt C.txt=>ls[A]*A.txt=>ls[AB]*A.txt B.txt=>ls[ABC]*A.txt B.txt C.txt=>ls[A-C]*A.txtb.txtB.txtc.txtC.txt=>ls[b]*b.txt=>ls[a-c]*A.txtb.txtB.txtc.txt在Unix端运行相同的命令如我所料。这是Linux一直以来的行为方式吗?使用awk解决这个问题很容易,所以我不

linux - 重定向后的参数有什么作用吗?

重定向后是否有任何参数被忽略,或者它是否有任何意想不到的后果?我惊讶地发现,我在bash脚本中输入的错误完全没有影响,因为它是在重定向之后指定的。例如。我原以为它会提示这样的事情./foo.sh>foo2.logwhoopsImadeatypo但它不会抛出任何错误。我必须添加一个分号才能真正让它作为命令和错误运行,比如./foo.sh>foo2.log;whoopsImadeatypo更让我吃惊的是,重定向后linux还没有放弃例如./foo.sh>foo2.logwhoopsImadeatypo>command_is_still_going.log绝对没问题,command_is_s

linux - 重定向后的参数有什么作用吗?

重定向后是否有任何参数被忽略,或者它是否有任何意想不到的后果?我惊讶地发现,我在bash脚本中输入的错误完全没有影响,因为它是在重定向之后指定的。例如。我原以为它会提示这样的事情./foo.sh>foo2.logwhoopsImadeatypo但它不会抛出任何错误。我必须添加一个分号才能真正让它作为命令和错误运行,比如./foo.sh>foo2.log;whoopsImadeatypo更让我吃惊的是,重定向后linux还没有放弃例如./foo.sh>foo2.logwhoopsImadeatypo>command_is_still_going.log绝对没问题,command_is_s

linux - 从空环境访问 X11 显示 (bash)

您好!我正在实现备份解决方案,我需要访问X11显示屏以从用户处获取密码并显示状态信息。我已尝试将脚本中的$DISPLAY设置为:0.0(硬编码),但xhost和misc提示他们无法打开显示。我该怎么办?PS:脚本在这里:http://dpaste.com/109435/ 最佳答案 您需要X身份验证信息。我不相信xhost可以“闯入”Xsession并在没有它的情况下允许访问(你需要让用户为你做这件事),如果你有它,那么就有根本不需要使用xhost。尝试exportDISPLAY=:0.0exportXAUTHORITY=/home/

linux - 从空环境访问 X11 显示 (bash)

您好!我正在实现备份解决方案,我需要访问X11显示屏以从用户处获取密码并显示状态信息。我已尝试将脚本中的$DISPLAY设置为:0.0(硬编码),但xhost和misc提示他们无法打开显示。我该怎么办?PS:脚本在这里:http://dpaste.com/109435/ 最佳答案 您需要X身份验证信息。我不相信xhost可以“闯入”Xsession并在没有它的情况下允许访问(你需要让用户为你做这件事),如果你有它,那么就有根本不需要使用xhost。尝试exportDISPLAY=:0.0exportXAUTHORITY=/home/

linux - 为什么 wdiff 不适用于命名管道

为什么我可以在bash中执行此操作:$diff-u即我可以使用命名管道/进程替换来获取一小段文本的差异。但是,当我尝试使用wdiff(单词的差异,而不仅仅是行)来执行此操作时,我没有得到任何有用的输出wdiff更新:看起来有一个现有的ubuntu错误报告:https://bugs.launchpad.net/ubuntu/+source/wdiff/+bug/160912 最佳答案 strace揭示了wdiffstat文件(可能是为了找出它们的大小)。由于命名管道报告的大小为0,因此它可能假设两个文件都是空的,因此是相等的:$str