草庐IT

BASH_SOURCE

全部标签

linux - 如何在 bash/linux 脚本中执行相同的循环 1 小时?

我想以随机间隔打开和关闭一些网页一个小时。到目前为止我已经写完了内部结构FILE=webpagesTIMES=0whiletest$TIMES-lt10do#Picksrandomline(Website)fromFILETEMPWEB=`shuf-n1$FILE`echo"Opening"$TEMPWEB#OpensTEMPWEBxdg-open$TEMPWEBsleep10#Killsfirefoxps-e|grepfirefox|sed's/\(.[0-9]*\).*/\1/'|xargskillTIMES=$(($TIMES+1))done所以我错过了while条件。我想要这样

linux - 如何从 bash 中的字符串中获取最后一个数字?

对不起,我会解释得更好如何从字符串中获取最后一个数字?泛型字符串的例子:Ifstr=str1s2echo$str|cmd?Iget2Ifstr=234ef85echo$str|cmd?Iget85Ifstr=djfs1d2.3echo$str|cmd?Iget3“命令?”是我想要的命令/脚本 最佳答案 你只需要grep-Eo'[0-9]+$':gv@debian:~$echo234ef85|grep-Eo'[0-9]+$'##-->85gv@debian:~$echo234ef856|grep-Eo'[0-9]+$'##-->856

c - "Source file is more recent than executable"除了它不是

GDB提示说我的源文件比可执行文件更新,调试信息似乎确实与源文件的旧版本有关,因为gdb在空白行停止:ProgramreceivedsignalSIGSEGV,Segmentationfault.0x0000000000000000in??()(gdb)up#10x00007ffff7ba2d88inCBKeyPairGenerate(keyPair=0x602010)atlibrary/src/CBHDKeys.c:246warning:Sourcefileismorerecentthanexecutable.246(gdb)list241if(versionBytes==CB_HD

linux - Git Bash 与 Oracle VM VirtualBox

我已经下载CentOS7minimalISOimage并通过OracleVMVirtualBox在我的Windows8.1机器上创建了一个虚拟机。我不想使用VirtualBoxshell。我要使用GitBash作为界面。虚拟机必须正在运行,但我如何使用GitBash作为连接该虚拟机的接口(interface)?是否有像sshusername@localhost这样的命令可以在GitBash中使用,以便将我连接到虚拟机?谢谢! 最佳答案 我遇到了同样的问题,我已经做了几个步骤来实现这个,创建仅主机适配器以在每次机器启动时获取DHCP(

用于交互式 bash 的 C 接口(interface)

我正在为bashshell寻找C接口(interface)。IE。我想要一组函数,允许我打开session、执行命令、返回输出(STDOUT、STDERR)并最终关闭shell。它可以是库或基于标准库的C源代码。 最佳答案 一般的根本问题似乎是如何以编程方式运行交互式终端程序。现在这对我来说需要实际测试,但您大致需要创建三个pipes对应子进程stdin、stdout、stderr(父进程写stdin_pipe,读stdout_pipe和stderr_pipe)使用pipe(2)系统调用;fork在child身上close通过调用d

c - 如何在干净的环境中从 C 调用 bash?

我正在尝试设置我的计算机,以便我可以使用连接到python脚本的外部设备对自己进行身份验证。我首先用我自己的程序替换了inittab中的login程序,并且我已经能够进入bashshell。问题是它没有像(我推测)通过login提供的环境那样的新环境。我知道有很多方法可以让我弄乱环境,但我还没有找到给它一个“默认”配置的方法,如果这样的事情有意义的话。 最佳答案 一些想法:首先,在大多数情况下,使用可插入登录架构PAM会更好。这将确保所有支持PAM的应用程序和服务都可以使用身份验证方法(例如ssh),并且无法使用常规服务绕过它。如果

linux - 从 bash 脚本启动时 Logstash 关闭停止

我编写了一个bash脚本,它在指定的文件夹中查找CSV文件,并使用正确的配置文件将它们通过管道传输到logstash中。然而,当运行这个脚本时,我遇到了以下错误,说关闭过程被停滞,导致无限循环,直到我用ctrl+c手动停止它:[2018-03-22T08:59:53,833][INFO][logstash.runner]StartingLogstash{"logstash.version"=>"6.2.3"}[2018-03-22T08:59:54,211][INFO][logstash.agent]SuccessfullystartedLogstashAPIendpoint{:por

linux - 最常用IP地址bash脚本的Apache访问日志

所以我在apache日志文件上运行bash脚本我可以对IP地址进行排序并显示最常见的但它显示在页面底部而不是顶部我如何从最高到最低显示它这是我目前的脚本cataccess_log.txt|awk'{print$1}'|uniq-c|sort-n-k1|tail在我的txt文件中我有10.23.234.0250.40.56.788.45.98.25010.23.234.0250.40.56.788.45.98.25010.23.234.0250.40.56.7810.23.234.0250.40.56.7810.23.234.010.23.234.0输出是28.45.98.2504250

c# - 如何在 C# 中运行 Windows bash

我想在bash(Windows中的Linux子系统)中运行以下命令:bash-c"ls"然后像这样在C#中使用它:ProcessStartInfoinfo=newProcessStartInfo("bash","-c\"ls\"");Processp=Process.Start(info);p.WaitForExit();但它给了我下面的异常(exception):System.ComponentModel.Win32ExceptionwasunhandledErrorCode=-2147467259HResult=-2147467259Message=Thesystemcannotf

linux - 为什么 `timeout 2 timeout 1 bash`卡住了

我正在研究Linuxshell中的timeout命令。当我尝试timeout1bash时,bash将运行并在1秒后终止。当我尝试timeout2timeout1yes时,程序yes将运行1秒并被第二个timeout杀死。但是当我尝试timeout2timeout1bash时,它卡住了。没有出现bashshell,即使我按Ctrl+C,它也会继续运行。我知道在一个命令中写两个timeout是没有用的。我只是想知道为什么会这样。 最佳答案 这是相同行为的另一个例子:strace超时1bash即使您中断了strace,bash也会继续运行