Questions tagged «bash»

Bash是来自GNU Project的类Unix操作系统的免费外壳。

3
如果程序在给定的超时内没有产生任何输出,如何杀死它?
我想检测一些进程何时被卡住,但它没有给我任何关于此事的线索。我所知道的是,如果它在给定的超时内没有产生任何输出(假设30秒),则意味着它可能被阻止。 我知道coreutils' timeout 程序,但它基于完整的程序退出时间,而不是最后一行输出时间。我喜欢这样的事情: timeout --stdout --stderr 30s my-program 有没有办法做到这一点?我该怎么做?
2 bash  timeout 

1
在bash或zsh中左选项卡完成
当我在bash或zsh中使用标准制表符完成时,我键入文件名或路径的第一部分,然后点击以完成单词。除非我在一个文件目录中,文件名的所有变化都在单词的末尾,例如,这种情况很有效。一个充满时间戳文件的目录,所有文件都以相同的前缀开头: foo-20120701124501.log foo-20120701124531.log foo-20120701124601.log foo-20120701124631.log foo-20120701124701.log foo-20120701124731.log 在这种情况下,如果我输入 foo<tab> 我去拿 foo-20120701124 - 我可以再次选项卡,并查看所有文件...我必须输入接下来的3个字符才能获得唯一的文件名。 我想知道是否有办法输入例如 4731.log 然后完成单词的开头。我猜这在bash中很难,因为bash完成使用 $COMP_CWORD 和 $COMP_KEY 对于它的可编程完成,从我正在阅读它的方式来看,我认为那些不会允许向左完成单词。我对zsh内部的完成知之甚少,不知道从哪里开始查看手册页。

0
使用Linux shell脚本合并xml文件
我有2个文件分别名为file1.xml和file2.xml。文件的内容是: file1.xml : <EJB:Service> <EJB:ServiceId>123</EJB:ServiceId> <EJB:ServiceName>Checkin</EJB:ServiceName> <EJB:JndiName>datasource</EJB:JndiName> <EJB:HomeClassName>local</EJB:HomeClassName> <EJB:ServerName>Weblogic12345</EJB:ServerName> </EJB:Service> <EJB:Service> <EJB:ServiceId>456</EJB:ServiceId> <EJB:ServiceName>local</EJB:ServiceName> <EJB:JndiName>source</EJB:JndiName> <EJB:HomeClassName>local</EJB:HomeClassName> <EJB:ServerName>Weblogic</EJB:ServerName> </EJB:Service> file2.xml : <EJB:Service> <EJB:ServiceId>123</EJB:ServiceId> <EJB:ServiceName>Booking</EJB:ServiceName> <EJB:JndiName>class</EJB:JndiName> <EJB:HomeClassName>Home</EJB:HomeClassName> <EJB:ServerName>Weblogic</EJB:ServerName> </EJB:Service> 我希望输出为: <EJB:Service> <EJB:ServiceId>123</EJB:ServiceId> <EJB:ServiceName>Booking</EJB:ServiceName> <EJB:JndiName>class</EJB:JndiName> <EJB:HomeClassName>Home</EJB:HomeClassName> <EJB:ServerName>Weblogic</EJB:ServerName> </EJB:Service> <EJB:Service> <EJB:ServiceId>456</EJB:ServiceId> <EJB:ServiceName>local</EJB:ServiceName> <EJB:JndiName>source</EJB:JndiName> <EJB:HomeClassName>local</EJB:HomeClassName> <EJB:ServerName>Weblogic</EJB:ServerName> </EJB:Service> 如何使用Linux shell脚本合并这些文件以获得所需的输出?
2 linux  bash  shell  xml 

2
而不是使用RM。我想使用自定义“软删除”命令
而不是使用“RM”命令的东西。我想有一个自定义命令,将文件移动到具有它的目录的“垃圾”文件夹。例如。 如果文件是/home/test/folder1/xx/file.so,当使用该命令处理它时,它将移动到/trash/home/test/folder1/xx/file.so,这样我就没有任何冲突这个名字已经在垃圾桶里了。 任何人有任何想法如何实现这一点,并允许它递归使用,所以目录也可以被删除?
2 linux  bash  trash 

2
批量重命名与模式不匹配的文件
我没有编程经验,大多使用单行或有时更多来完成工作。我有问题批量重命名与特定模式不匹配的文件。 目录中的示例文件名: Meeting_Packages.pdf 13_textfile0 19_textfile0 23_textfile0 29_textfile0 33_textfile1 45_textfile0 5_textfile3 Membership.pdf 13_textfile1 19_textfile1 23_textfile1 29_textfile1 34_textfile0 46_textfile0 6_textfile0 xyz2009.pdf 13_textfile2 19_textfile2 23_textfile2 29_textfile2 34_textfile1 47_textfile0 6_textfile1 meeting.ics 我想重命名文件,例如 Meeting_Packages.pdf, Membership.pdf, meeting.ics 和 xyz2009.pdf 到他们来的文件(输入文件)。实际上它是输出 ripmime 用邮件作为 xx_textfilex 和其他人是附件。我想将附件命名为原始输入文件 我的代码: #!/bin/bash FILES=*.mime for f in $FILES do echo "Processing $f" #rip …
2 bash 

1
bash中的“删除单词”
我知道在bash, alt-backspae 做什么 ctrl-backspace 在现代GUI中:它会向后删除一个单词。 我正在寻找相当于 ctrl-delete,即删除一个单词。我试过了 alt-delete 但没有运气。在Bash中是否存在键盘组合?
2 bash  keyboard 

3
bash中的自动完成别名(或类似)?
我在我的本地网络中有一个CentOS主机,我每天用它来打开与Internet和本地网络中许多(超过40个)其他主机的SSH连接。我已经设置了RSA密钥对来跳过交互式身份验证和一些像这样的bash脚本: [root@beta ~]# cat ~/connections/mywebsite.sh ssh mywebsitefi@virtualserver123.hostingprovider.fi 当我需要打开它们的连接时,这可以正常工作,但不是在我需要的时候 scp 文件到同一主机。 有可能创建一个等同于别名的东西来替换这样的用户名@ host部分吗? [root@beta ~]# scp myfile MYWEBSITE:/var/www 使用tab键自动完成别名的可能性也很棒。 我知道bash别名只能用作命令的第一个单词,但还有其他方法可以实现吗?如果不是在bash,也许是另一个shell?
2 bash  ssh  bash-alias 

1
如何在我的.inputrc中使用`set show-all-if-ambiguous on`来使用Python解释器?
我注意到我加了之后 set show-all-if-ambiguous on 排到我的 ~/.inputrc每当我按Tab键缩进一个块时,它就会显示bash Display all ... possibilities? (y or n) 提示,让我无法缩进实际代码。 有什么办法可以保留我的那条线 .inputrc 但仍然有tab键在Python解释器中按预期工作? 这是我的VirtualBox Ubuntu 12.04 VM,如果它很重要。 编辑: 奇怪的是,我现在对Django附带的Python shell有一个不同的问题 - 当我按Tab键时,我得到了 蟒蛇 选项卡完成,但只有一个Tab按下。我已经开了一个单独的问题 这里 为了它。
2 bash  python  inputrc 

3
尝试在当天的消息打印用户名(MOTD)
我正在测试一个简单的脚本,它向在服务器中登录的用户打印欢迎消息。 剧本: #!/bin/sh _user=$(whoami) _hostname=$(hostname) _currdate=$(date) echo "#===================================================#" echo " Welcome $_user to $_hostname server" echo " Curr. time: $_currdate" echo " Have a nice day!" echo " " echo "#==================================================#" 我正在保存脚本 /etc/update-motd.d/ ,以便在用户登录后显示该消息。 问题是 变种 _user 总是显得“ 根 “我找不到从用户那里获取用户名的方法。我正在通过SSH测试这个。 有人能帮助我吗? 谢谢! :)
2 linux  ubuntu  bash  ssh 

2
如何将bash变量(密码)传递给IRSSI配置文件?
我正在使用IRSSI,我想知道如何将IRC频道的密码传递给IRSSI配置文件( ~/.irssi/config )而不直接在文件中写入它们。 在Mutt中,我有一个awk命令,用于查询加密的主文件夹中的本地文件,如下所示: set my_pass1=`awk '/fradeve_gmail:/ {print $2}' ~/.mutt/muttpass` set my_pass2=`awk '/fradeve_inventati:/ {print $2}' ~/.mutt/muttpass` IRSSI有类似的解决方案吗? PS:显然我 别 想把IRSSI配置文件保存在加密的家里:)
2 bash  perl  awk  mutt  irssi 

4
如何使用命令行参数找到进程的PID?
我正在使用Mac OS X,这意味着我没有(例如)pgrep / pkill,但我想要这样的东西(我不使用macports / fink,或者 - homebrew是我选择的Unix包工具 - 所以那些包裹不会这样做。 我想找到并杀死具有特定参数的ssh实例 - 基本上,一个特定的远程ssh端口转发隧道。我使用的命令是这样的: ps aux | grep ssh | grep remote-host | grep port-forwarding-stmt 但是,有时这个grep命令实际显示在输出中,因此当前命令字符串在写入时没有用。 我可以使用Mac OS X的工具吗?

1
如何创建多个文件夹?
如何在一个命令中在文件夹中创建多个子文件夹。 例如,我想创建: /home/user/*create dir1*/*create dir2*/*create dir3*/ 提供,我没有dir1。而且我不能使用3命令,也不能使用shell脚本。此创建必须在一个shell命令中。 $ mkdir /home/user/TEST1/TEST2/TEST3/ 不起作用,没有这样的文件错误。如果 $ mkdir /home/user/TEST1/ $ mkdir /home/user/TEST1/TEST2/ $ mkdir /home/user/TEST1/TEST2/TEST3/ 那项工作,但我无法实现该解决方案。我只需要使用一个命令。 你能帮我解决这个问题吗?
2 linux  bash  shell  dir  mkdir 

1
用实数递增变量(不是整数)[关闭]
我想k在循环内增加一个变量。每个增量为0.025。我试过用: let "k += 0.025" 和 let "$k += 0.025" 和 k += 0.025 和许多其他变化。有谁知道如何做到这一点? 谢谢!阿米特
2 bash 

1
shell脚本中的xargs
我想用奇数和偶数组合jpeg图像。所以我喜欢以下内容: $ mkdir odd $ mkdir even $ find . -regextype posix-egrep -regex ".*[13579].jpg$" -print0 | xargs -i -0 mv {} odd/ $ find . -regextype posix-egrep -regex ".*[02468].jpg$" -print0 | xargs -i -0 mv {} even/ 它工作正常。我在shell脚本中写了同样的东西。 #!/bin/bash mkdir odd mkdir even find . -regextype posix-egrep -regex ".*[13579].jpg$" -print0 …

2
grep和sed with tail from tail -f似乎是缓存
我正在尝试使用一个工作系统来监控特殊日志。我通常只想要一个非常具体的模式,我提取使用grep和管道tail -f。我注意到grep不会输出所有内容,而是保留一些行缓冲。我想如果你有一个输出所有东西然后终止并关闭流的管道,这是有道理的。 但是,tail -f这对我来说不起作用。 出现同样的问题sed。 这是我想要使用的示例命令: clear && tail -F -n1000 /var/log/fail2ban.log | grep 'WARNING.*Ban' | sed s/'fail2ban.actions: WARNING '//g | grep -E --color 'ssh-iptables-perma|$' 举个例子: 上面命令的最后一行是这样的: 2015-05-04 11:17:24,551 [ssh-iptables] Ban x.x.x.x 并使用此命令: clear && tail -F -n1000 /var/log/fail2ban.log | grep 'WARNING.*Ban' | sed s/'fail2ban.actions: WARNING '//g 最后一行是这样的: 2015-05-04 19:45:17,615 …

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.