Questions tagged «shell»

Shell是Unix的命令行界面。您可以交互地在外壳程序中键入命令,也可以编写脚本来自动执行任务。使用此标记可解决适用于/ bin / sh和大多数兼容shell(ash,bash,ksh,zsh等)的问题。对于有错误的Shell脚本,请在此处发布之前在http://shellcheck.net中对其进行检查。

3
谁在做这个工作:ffmpeg还是shell?
我的问题的第一部分: 我在ffmpeg文档(section 3.2 How do I encode single pictures into movies?)上阅读了以下内容: 要将单张图片编码为电影,请运行以下命令: ffmpeg -f image2 -i img%d.jpg movie.mpg 注意,“%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 其中start_index是25,end_index100,和increment为5。 我想将类似上述的图像序列输入ffmpeg,而不必先重命名该序列。该文档解释了如何使用符号链接来执行此操作,但是我想知道是否有一种方法可以完全避免使用它们,也许在zsh上使用高级glob。
8 shell  ffmpeg 

4
Shell编程,避免使用临时文件
我经常编写遵循相同模式的KSH Shell脚本: (1)从一个或多个命令检索输出 (2)使用grep | cut | awk | sed格式化并打印到屏幕或文件中 为了做到这一点,我经常将(1)的输出存储在一个临时文件中,然后对该文件进行(2)的格式化。 以该代码为例: TMPFILE=file.tmp # If tmpfile exists rm it. [ -f $TMPFILE ] && rm -f $TMPFILE for SERVICE in $(myfunc); do getInfo $SERVICE > $TMPFILE # Store raw output in the TMPFILE # I retrieve the relevant data from …
8 shell  scripting  ksh 

2
了解重定向的顺序
如果将多个重定向一起使用,更改顺序会有所不同吗? 人们将如何理解其命令的含义?是从左到右还是从右到左读取重定向而建立的重定向链接的通道? 例如 command 2>&1 > somefile command > somefile 2>&1 谢谢并恭祝安康!

3
用脚本更改当前工作目录
我已经阅读了这个问题和答案,但是即使是类似的问题也无法解决。 我正在编写一个脚本(称为cpj),它将启动我当前的项目之一。我大约有五个。当我键入 $ cpj blah 我希望当前工作目录更改为blah项目目录(我保存在$ PROJDIR中),并且我希望emacsclient打开该项目的主文件(我保存在$ MAINFILE中)。 我引用的问题是,您不能直接更改运行脚本的shell的环境,但是可以提供脚本的源代码,并且可以这样做。 为了测试这一点,我编写了一个shell脚本(称为chcwd),其中只有一行: cd $1 如果从命令行执行: $ . chcwd $PROJDIR 我当前的工作目录将根据需要更改。另一方面,如果从我的cpj脚本中获得同一行: . chcwd $PROJECT 它不会更改外壳程序的当前工作目录。我意识到我正在运行2个脚本(cpj,然后是chcwd),因此创建了2个shell,但是我看不到要完成所需的任何方法。谁能告诉我如何实现我的目标?


4
SSH启动会话缓慢
对于我的一台服务器,通过SSH启动Interactive Shell的速度很慢。包括协商加密在内的所有操作都很快完成,但是随后挂起了45秒。之后,它结束了,我有了一个外壳。我如何确定它挂在哪里?我尝试清除环境并禁用所有转发,以防降低速度,但无济于事。这是我的测试命令: env -i ssh -x -a -vvv server 这是SSH的输出: debug1: channel 0: new [client-session] debug3: ssh_session2_open: channel_new: 0 debug2: channel 0: send open debug1: Requesting no-more-sessions@openssh.com debug1: Entering interactive session. *(hangs for 45 seconds here)* debug3: Wrote 128 bytes for a total of 3191 debug2: callback start debug2: client_session2_setup: …
8 linux  shell  ssh  openssh 

4
Shell控制台清除
有没有办法仅用一两个键就可以清除shell控制台(在ubuntu linux中)上显示的内容?当我从grep窗口中溢出大量行并且超出了窗口的高度时,我想快速滚动回到提示后键入命令的位置。如果在键入命令之前打开了一个新的终端,然后转到初始位置,则可以这样做。但是,如果继续使用相同的终端窗口,则必须手动查找位置。Ctrl+ l不是答案,因为它只是滚动,而终端的内容仍然保留。我无法使用,less因为grep的彩色输出未显示颜色。
8 shell  terminal 

3
如何从另一个路径运行脚本,并知道脚本的路径?
我需要运行一个脚本,该脚本以与文件位于相同的路径访问文件。 例如:我有脚本/home/me/folder/script.sh,该脚本将访问文件/home/me/folder/myfile。由于文件位于脚本的相同路径中,因此我只使用name myfile而不是完整路径。 但是,如果我从运行它/tmp/,例如: /tmp$ /home/me/folder/script.sh 它给了我: myfile: No such file or directory 因此,如何在脚本中说出文件与脚本本身位于同一路径?

2
使用exiv2打印特定的Exif图像数据值
如何使用exiv2之类的工具打印图像Exif日期? 我的目标是将图像的年和月写到单独的变量中。我是否真的必须用正则表达式解析输出,还是有类似这样的替代方法: exiv2 DSC_01234.NEF -ps | grep 'Image timestamp' | ...regex to parse the date

4
我可以产生一个新终端,它是当前终端的副本吗?
假设我正在目录/ asdf / qwer / dfgh / wert / asdf / qwer中开发代码,并且我在路径中添加了大约三个类似的目录,并且设置了许多奥秘的环境变量。然后,我意识到我确实需要以相同的方式打开另一个终端并进行设置(尽管这种需求不会再次发生,因此我只需要更改.bashrc即可)。是否有任何命令打开一个新的终端窗口,该窗口正是此窗口的精确副本?

2
bash 4有哪些新功能?
到目前为止,我一直在使用bash3,只是得到了最新版本的副本 $ ./bash --version GNU bash, version 4.1.0(1)-release (i686-pc-linux-gnu) Copyright (C) 2009 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. $ 与版本3相比,版本4的主要更改/功能有哪些?
8 shell  bash 


1
每当我输入错误的命令时,我的终端就会尝试在后台运行该命令
我的终端开始发生奇怪的事情。每当我键入错误的命令时,它都会尝试在后台运行该命令。 hegeek@colinux: ~# l [9]+ Stopped l thegeek@colinux: ~# fdsl [10]+ Stopped fdsl 可能是什么问题? 编辑: 重新启动系统后,问题已解决。但是我仍然很好奇是什么引起了这个问题。我认为它必须与command_not_found_handle外壳功能有关。在尝试查找命令时,它做了一些奇怪的事情。


1
什么是用于VMS DCL“ ON ERROR”的Linux?
使用VMS DCL命令脚本,可以使用以下on error命令捕获错误: $ on error then goto MyErrorHandler $ directory samiam.txt $ delete x.txt $ exit $MyErrorHandler: $ print "Something." 在Linuxland中如何做到这一点? 在此示例中,directory或错误delete将导致控制权转到MyErrorHandler。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.