Questions tagged «shell»

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

5
Ctrl + C时如何在shell脚本中杀死并等待后台进程完成?
我正在尝试设置一个shell脚本,使其运行后台进程,当我执行Ctrlc该shell脚本时,它将杀死子级,然后退出。 我设法提出的最好的办法就是这个。看来,在kill 0 -INT等待发生之前也会杀死脚本,因此shell脚本在子进程完成之前就死掉了。 关于如何使此Shell脚本等待孩子在发送后死亡的任何想法INT? #!/bin/bash trap 'killall' INT killall() { echo "**** Shutting down... ****" kill 0 -INT wait # Why doesn't this wait?? echo DONE } process1 & process2 & process3 & cat # wait forever

1
为什么在非登录外壳上使用登录外壳?
我有一个基本的了解点文件中的* nix系统。但是我仍然对登录外壳程序和非登录外壳程序之间的区别感到困惑吗? 一堆不同的答案(包括重复的答案)已经解决了以下问题: 如何调用一个登录或非登录壳 如何检测一个登录或者非登录壳 什么启动文件将被消耗登录或者非登录壳 man bash有关更多详细信息,请参阅文档(例如) 答案没有说明(还有我仍然感到困惑的地方)是: 什么是用例一的登录或者非登录壳呢?(例如,我只配置zshrc了zsh和这足以让大多数个人开发的要求,我知道这不是这么简单什么vimrc来vim) 在非登录外壳上使用登录的原因是什么(除了使用不同的启动文件和生命周期之外)?


4
并行执行四个任务...我该怎么做?
我在目录上有一堆PNG图片。我有一个名为pngout的应用程序,可以运行它来压缩这些图像。该应用程序由我执行的脚本调用。问题在于此脚本一次执行一个,如下所示: FILES=(./*.png) for f in "${FILES[@]}" do echo "Processing $f file..." # take action on each file. $f store current file name ./pngout -s0 $f R${f/\.\//} done 一次只处理一个文件,需要很多时间。运行此应用程序后,我看到CPU仅为10%。因此,我发现可以将这些文件分为4个批次,将每个批次放入一个目录中,并从4个终端窗口,4个进程中触发4个,因此我同时拥有4个脚本实例,同时处理这些图像和工作需要1/4的时间。 第二个问题是我浪费了时间分割图像和批处理并将脚本复制到四个目录,打开4个终端窗口,等等。 如何用一个脚本执行而无需划分任何内容? 我的意思是两件事:首先,我如何从bash脚本中向后台启动进程?(只需添加&到末尾?)第二:在发送第四个任务后如何停止将任务发送到后台,并让脚本等待任务结束?我的意思是说,只是在一个任务结束时将一个新任务发送到后台,同时始终保持4个任务并行?如果我不这样做,则循环会将大量任务发送到后台,并且CPU会阻塞。

5
从将root的shell设置为错误文件中进行恢复
假设我走了,做了一件愚蠢的事情,例如使用'chsh'将根用户的shell更改为错误的文件路径。由于未找到/ bin /任何内容,以后无法登录到根帐户将突然失败,然后将您引导回到登录屏幕。如果不使用恢复模式或插入LiveCD来编辑/ etc / passwd,我有哪些恢复系统的选择?我们还假设(为了好玩?)方向盘上没有其他用户。有什么想法吗?
23 shell  users  login 


4
如何在Shell中解析数​​百个html源代码文件?
我有数百个html源代码文件。我需要<div>从每个文件中提取特定元素的内容,因此我将编写一个脚本来遍历每个文件。元素结构如下: <div id='the_div_id'> <div id='some_other_div'> <h3>Some content</h3> </div> </div> 谁能建议我the_div_id一种使用linux命令行从文件中提取div 以及所有子元素和内容的方法?

5
从grep结果中添加数字
我运行以下命令: grep -o "[0-9] errors" verification_report_3.txt | awk '{print $1}' 我得到以下结果: 1 4 0 8 我想将每个数字加到一个运行计数变量上。有人可以帮助我打造神奇的衬垫吗?
23 bash  shell  grep 

5
为什么在[[]]测试中使用双引号?
假设我们在bash脚本中有2个整数: value1=5 value2=3 那为什么要在测试中使用双引号呢?例如: if [[ "$value1" -eq "$value2" ]] 为什么不只使用以下内容? if [[ $value1 -eq $value2 ]] 对我来说,双引号没有任何意义。
23 bash  shell  quoting  variable  test 


6
程序是否可以在POSIX中获取命令行参数之间的空格数?
假设我用下面的代码写了一个程序: int main(int argc, char** argv) 现在,通过检查的内容,知道将哪些命令行参数传递给它argv。 程序可以检测参数之间有多少空格吗?就像我在bash中键入以下内容一样: ibug@linux:~ $ ./myprog aaa bbb ibug@linux:~ $ ./myprog aaa bbb 环境是现代Linux(例如Ubuntu 16.04),但是我想答案应该适用于任何POSIX兼容系统。

1
回滚和回滚缓冲区到底是什么?
像bash和中的程序中的“回滚”和“回滚缓冲区” screen是什么,它们与tty,正在运行的程序以及stdin / stdout / stderr有什么关系? 这是到目前为止(在archlinux wiki中)发现的“ scrollback”的唯一定义: Scrollback是在文本控制台中实现的功能,允许用户返回以查看滚动到屏幕之外的文本行。为此,可以在视频适配器和显示设备之间创建一个专门为此目的创建的缓冲区。回滚缓冲区。 但是,这给我提出了更多问题: 它是在“子例程”中还是在“功能”中表示“功能”? 此回滚缓冲区是否有Unix标准或API? 在程序的“堆栈”中,例如在终端仿真器vim中screen启动的bashLaunch in sshLaunch中,启动了在终端模拟器中启动的这些程序中的哪些程序? 我也用screen,以转储回溯到一个文件中。该文件的顶部有很多空白,并且看来终端仿真器向我显示的“视图”只是缓冲区的底部几行。 这就是为什么这样的程序vim可以临时访问父Shell的回滚缓冲区,从而“清除”整个终端窗口? 还是vim使用自己的回滚缓冲区(以某种方式覆盖在父级回滚缓冲区的顶部)?

3
在用户登录时执行命令
在Linux桌面系统中,我想在用户登录时执行命令。 阅读其他文章后,我尝试将命令插入其中,~/.bashrc但未成功。此外,系统使用图形界面进行用户登录,因此该命令不应与外壳程序的启动有关。 我还尝试将命令附加到其中包含的脚本之一/etc/profile.d,没有结果。 还有另一种方法吗?登录后系统读取的任何文件?
23 shell  scripting  login 



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.