小编Ame*_*ina的帖子

谁在做这项工作:ffmpeg 还是 shell?

我的问题的第一部分:

我在ffmpeg 文档( section 3.2 How do I encode single pictures into movies?)上阅读了以下内容:

要将单张图片编码为电影,请运行以下命令:

  ffmpeg -f image2 -i img%d.jpg movie.mpg    
Run Code Online (Sandbox Code Playgroud)

请注意,`%d' 被图像编号替换: img%03d.jpg 表示序列 img001.jpg、img002.jpg 等...

我的问题是:谁在img%03d.jpg和之间进行翻译img001.jpg, img002.jpg, etc?它是shell还是ffmpeg?

第二部分:

我想请 ffmpeg 将一系列图像编码为视频。然而,我的序列通常以一个不同于 1 的索引开始,(例如,我们可以称之为start_index),并以我们可以称之为 的索引结束end_index。此外,该序列使用 value 的增量increment,例如:

img_0025.png, img_0030.png, img_0035.png, ... img_0100.png
Run Code Online (Sandbox Code Playgroud)

其中start_index是 25,end_index是 100,increment是 5。

我想将上述图像序列提供给 ffmpeg,而不必先重命名序列。文档解释了如何使用符号链接来做到这一点,但我想知道是否有办法完全避免它们,也许在 zsh 上使用高级通配符。

shell ffmpeg

8
推荐指数
2
解决办法
1620
查看次数

ZSH:排除指定隐藏目录的递归通配符

我认为 glob 模式:

**/(*|.*)
Run Code Online (Sandbox Code Playgroud)

将代表以点 ( .)开头或不以点 ( )开头的每个文件夹和文件,但它会跳过当前目录中以..开头的目录。

什么是 glob 模式,这意味着:

每个文件和文件夹可能会或可能不会.在当前和更深的文件夹中开始

另外:如何从递归全局模式(例如上面的模式)中排除特定文件夹(或者甚至更好,全局子模式)?

我尝试了以下.hg从当前级别排除文件夹(但包括以.字符开头的其他文件夹):

**~.hg/*
Run Code Online (Sandbox Code Playgroud)

但它并没有递归地进入更深的目录。

zsh wildcards

8
推荐指数
2
解决办法
4911
查看次数

Emacs Mx 查询替换环绕文档?

我经常M-x query-replace在 Emacs ( M-%)上使用,我喜欢我可以灵活地在这些选项之间进行选择:

Spacebar               Replace text and find the next occurrence
Del                    Leave text as is and find the next occurrence
. (period)             Replace text, then stop looking for occurrences
! (exclamation point)  Replace all occurrences without asking
^ (caret)              Return the cursor to previously replaced text
Run Code Online (Sandbox Code Playgroud)

有没有办法:

  • 到达文件末尾后循环回到文件的开头?

  • 在命令执行过程中反转查找和替换的方向。

emacs

8
推荐指数
1
解决办法
936
查看次数

Helm(以前的任何东西)、Ido 和 Emacs 的类似工具:重叠和差异

阅读有关Emacs 的HelmIdo 时,我注意到它们支持类似的功能。EmacsWiki 提供了关于两者的大量信息,但我仍然无法分辨是什么让它们与众不同。

  • 这两个工具有什么区别?
  • 有没有其他人提供类似的功能?

emacs

8
推荐指数
1
解决办法
1727
查看次数

xargs -r0 与 xargs -0

我在网上看到过xargs带有论点的例子-r0。这个论点是什么意思?我的手册页没有显示任何条目 -r0我见过的大多数手册页也没有显示(例如http://linux.die.net/man/1/xargs

xargs

8
推荐指数
1
解决办法
2115
查看次数

BASH_ENV 和 cron 作业

我有几个与非交互式、非登录 shell 和 cron 作业相关的问题。

一季度。我已经读过非交互式、非登录 shell 仅 "load" $BASH_ENV。这究竟是什么意思?这是否意味着我可以指向$BASH_ENV一个文件,并且该文件将被引用?

Q2:假设我有一个cron指向带有 Bash shebang 的 Bash 脚本的条目,我可以假设我的 Bash 脚本加载了哪些环境变量和定义?

Q3:如果我添加SHELL=/bin/bash到我的顶部crontab,这到底有什么作用?是否意味着:

  1. cron 本身在 Bash 中运行?
  2. 该指令规定crontab在猛砸何解释?
  3. 那些脚本具有shebangs在其中,正在运行$SHELL

还有什么?

Q4:如何设置BASH_ENV定时任务?

bash cron init-script

8
推荐指数
1
解决办法
3592
查看次数

将带参数的命令传递给脚本

我正在尝试编写一个shell 脚本,它接收一个带参数命令作为输入并运行它。

例如,我希望在cron以下情况下使用它:

0 11 * * * my_wrapper.sh "task_name" "command arg1 arg2 arg3 ..."
Run Code Online (Sandbox Code Playgroud)

什么的细节my_wrapper.sh无关紧要,但它是一个zsh脚本,我希望它接收command arg1 arg2 arg3 ...并调用它。请注意,参数可能包含单引号、双引号等。

向脚本传递和接收带有参数的命令的正确方法是什么?

更新:

在 zsh 的命令行上,@Gilles 的第一个解决方案效果很好:

#!/bin/zsh
task_name=$1
shift
"$@" > /path/to/logging_directory/$task_name
Run Code Online (Sandbox Code Playgroud)

然后> my_wrapper.sh date "%Y-%b-%d" 从命令行调用即可完成这项工作。

但是,当我尝试按如下方式使用它时cron

CRON_WRAPPER="/long/path/to/my_wrapper.sh"
0 11 * * * $CRON_WRAPPER "current_date.log" date "+%Y-%b-%d"
Run Code Online (Sandbox Code Playgroud)

它不起作用。

最终更新(问题已解决):

正如吉尔斯的回答所解释的,crontab需要逃避任何%迹象。将以上更改为:

CRON_WRAPPER="/long/path/to/my_wrapper.sh"
0 11 * * * …
Run Code Online (Sandbox Code Playgroud)

shell zsh

8
推荐指数
1
解决办法
3万
查看次数

防止 foo="*" 中的 glob 扩展;回声 $foo

在 Bash 中,当我这样做时:

foo="*"
echo $foo
Run Code Online (Sandbox Code Playgroud)

它扩展*到当前文件夹的内容。我如何确保它只打印一个文字*

顺便说一下,常规 也会发生同样的情况echo "$foo",它会打印当前文件夹的内容。

shell bash wildcards

8
推荐指数
1
解决办法
4971
查看次数

理解 zsh 中的颜色

这个线程中,尤达建议使用以下颜色的解决方案zsh

#load colors
autoload colors && colors
for COLOR in RED GREEN YELLOW BLUE MAGENTA CYAN BLACK WHITE; do
    eval $COLOR='%{$fg_no_bold[${(L)COLOR}]%}'  #wrap colours between %{ %} to avoid weird gaps in autocomplete
    eval BOLD_$COLOR='%{$fg_bold[${(L)COLOR}]%}'
done
eval RESET='$reset_color'
Run Code Online (Sandbox Code Playgroud)

如果我错了,请纠正我,但如果我理解正确,则autoload colors && colors允许您按名称调用颜色,而脚本的其余部分只是将它们包装在${ $}.

这让我想到了以下问题:

  1. 有没有办法通过调用知道加载了哪些颜色autoload colors && colors
  2. 我如何知道我的终端支持哪些颜色?

colors zsh

7
推荐指数
1
解决办法
1万
查看次数

ZSH:按字典顺序查找路径下的前 N ​​个文件

我想知道是否有办法指定 zsh 中给定目录下的前 N ​​个文件。

我对递归枚举(即路径下递归的任何文件都被考虑用于枚举)和非递归(只考虑那些严格位于给定文件夹下的文件)的解决方案感兴趣。

谢谢!

zsh wildcards

7
推荐指数
1
解决办法
1111
查看次数

标签 统计

zsh ×4

shell ×3

wildcards ×3

bash ×2

emacs ×2

colors ×1

cron ×1

ffmpeg ×1

init-script ×1

xargs ×1