Articles of shell

如何更改Linux shell脚本中的文件扩展名?

我发现了一些类似的情况,但是这是我写的唯一一个除了运行命令之外什么也不做的shell脚本,所以我很努力地将这些例子应用到我自己的情况中,持有<3 我只是试图从MP4批量翻录audio。 这个脚本的作品: for f in *.mp4; ffmpeg -i "$f" -f mp3 -ab 192000 -vn "mp3s/$f.mp3" done 但是这些文件都以.mp4.mp3结尾。 我怎样才能摆脱mp4的一部分?

如何从PHP执行交互式命令?

我需要从PHP脚本(使用浏览器,而不是命令行)在我的桌面机器(localhost)中执行kdiff3命令。 我已经授予执行脚本的用户www-data使用visudo执行kdiff3的权限。 事实上,如果我作为万维网数据login,我可以执行它没有问题( sudo kdiff3 … ,它被configuration为根本不要求密码)。 问题是当我尝试从PHP脚本执行这个命令。 我试过这个: $output = shell_exec("sudo kdiff3 -m $file.def.old $file $file.def -o $file"); 没有任何反应(输出为NULL)。 如果我尝试一个非交互式命令,像ls它的工作: $output = shell_exec("ls"); 发生了什么? 为什么不能执行交互式命令?

shell脚本中$ @和$ *有什么区别?

在我的script.sh : aa=$@ bb=$* echo $aa echo $bb 运行时: source script.sh abcdefg 我得到: abcdefg abcdefg $@和$*什么区别?

使用getopts(bash)的多个选项参数

我想在bash中使用getopts来处理命令行参数。 其中一个要求是处理任意数量的选项参数(不使用引号)。 第一个例子(只抓取第一个参数) madcap:~/projects$ ./getoptz.sh -sabc -s was triggered Argument: a 第二个例子(我希望它的行为是这样的,但不需要引用“ madcap:~/projects$ ./getoptz.sh -s "abc" -s was triggered Argument: abc 有没有办法做到这一点? 这里是我现在的代码: #!/bin/bash while getopts ":s:" opt; do case $opt in s) echo "-s was triggered" >&2 args="$OPTARG" echo "Argument: $args" ;; \?) echo "Invalid option: -$OPTARG" >&2 ;; 🙂 echo "Option -$OPTARG requires […]

Bash监视磁盘使用情况

我买了一个有debian的debian的NAS盒子。 前些天空间不足,我没有意识到。 我基本上想编写一个bash脚本,当磁盘达到90%以上时会提醒我。 有谁知道脚本会做到这一点,或给我一些build议,写一个?

如果一个命令行程序不确定stdout的编码,它应该输出什么编码?

我有一个用Python编写的命令行程序,当我通过命令行上的另一个程序pipe理它时, sys.stdout.encoding是None 。 这是有道理的,我想 – 输出可能是另一个程序,或者一个文件,你redirect到,或者其他什么,它不知道什么编码是需要的。 但我也不是! 这个程序将以不同的方式被许多不同的人使用(幽默我)。 我应该玩它安全,只输出ascii(用问号replace非ASCII字符)? 或者我应该输出UTF-8,因为这些日子如此普遍?

轻量级GNU readline替代品

我正在寻找一个GNU readline的select。 它具有很多function,但只有其中的几个对我来说是有用的,如下所述 – 我正在处理交互式命令提示符应用程序(显示提示符并接受下一个要运行的用户命令)。 我想为提示实现一些编辑和历史function。 所以当用户按UP键时,应该显示最后一个运行命令。 另外,如果需要编辑任何错字或命令开关等,用户应该能够使用箭头键进行导航。 在Windows上,类似的东西已经存在了,如果你使用fgets或者scanf在cmd提示符下input,它已经保存了历史logging,并且允许你编辑。 有没有一个很好的select在Linux上?

将string拆分成bash中的数组

我正在寻找一种方法来在bash中分隔string中的string,并将这些部分放在一个数组中。 简单案例: #!/bin/bash b="aaaaa/bbbbb/ddd/ffffff" echo "simple string: $b" IFS='/' b_split=($b) echo ; echo "split" for i in ${b_split[@]} do echo "—— new part ——" echo "$i" done 给出输出 simple string: aaaaa/bbbbb/ddd/ffffff split —— new part —— aaaaa —— new part —— bbbbb —— new part —— ddd —— new part —— ffffff 更复杂的情况: #!/bin/bash c=$(echo […]

显示套接字选项

我如何从shell中看到什么套接字选项被设置? 特别是我很有兴趣知道SO_BROADCAST是否被设置?

linux-shell:将文件重命名为创build时间

大家早上好, 为一个网站,我想重命名文件(图片)从“1.jpg,2.jpg,3.jpg …”到“yyyymmdd_hhmmss.jpg” – 所以我想读出创build把这个时间设置为图片的名字。 有没有人有一个想法如何做到这一点,例如一个Linux的壳或imagemagick? 谢谢!