Questions tagged «bash»

与其他Bourne / POSIX shell相对,GNU的Bourne Again SHell特有的问题。对于一般关于Unix shell的问题,请改用/ shell标记。

1
将搜索字词(而非文件名)管道传输到grep
我想从文件中挑选出包含给定数字的某些行。我要搜索的文件称为os_clusters/piRNA_clusters.bed。 awk '{if (a[$0]++ == 0) {split($0,b,"."); ;split(b[1],c,"r"); print c[3]}};' test_non_enriched | xargs grep {} os_clusters/piRNA_clusters.bed 第一部分在管道之前起作用,它产生要搜索的术语,例如8707、8824等。但是,后一部分没有。 awk '' ... | xargs grep {} os_clusters/piRNA_clusters.bed 它没有在目标文件中搜索管道产生的术语,而是将搜索术语视为输入文件。因此,我收到如下错误消息: grep: 8707: No such file or directory grep: 8824: No such file or directory 我需要更改什么以在文件中搜索os_clusters/piRNA_clusters.bed管道产生的术语?
23 bash  grep  pipe 

3
bash shell-ssh远程脚本捕获输出和退出代码?
我希望使用Shell来调用远程服务器上的脚本。我想捕获该脚本的输出(其日志消息)及其返回的退出代码。 如果我这样做: ssh user@server /usr/local/scripts/test_ping.sh echo "$?" 我得到退出代码,但无法捕获远程日志消息。 如果我这样做: local RESULTS=$(ssh user@server /usr/local/scripts/test_ping.sh) echo "$?" LOG "${RESULTS}"; 我可以使用LOG函数记录我的输出,但似乎无法获得正确的退出代码,我假设获得的代码是varianble赋值的代码。 我想继续使用我的LOG函数来捕获所有输出,并将其格式化并将其发送给我的文件,系统日志和屏幕。 如何在var中捕获结果并从远程脚本中获取正确的退出代码?
23 bash  shell  ssh  remote 

7
将较大的脚本拆分为多个脚本并在主脚本中获取它们是否常见?
目前,我正在开发一个更大的Bash脚本(这是我的一个开源项目),并且开始变得一团糟。我将逻辑拆分为函数,在可以的地方使用局部变量,并且只声明了少数全局变量。不过,它变得很难维护。 我考虑过将脚本拆分为多个脚本,然后将其作为主脚本的源(类似于其他语言的导入)。 但是我想知道这是否可行。首先,采购多个脚本可能会严重减慢脚本的执行时间,其次,这会使分发更加困难。 那么,这是一个好方法吗,其他(开源)项目是否也采用相同的方法?
23 bash 

7
bash和zsh中的两次和三次替换
跟踪该问题的背景部分。 在中,bash我可以使用${!FOO}双重替换zsh ${(P)FOO}。在这两种方法中,老式的(hack-y)都eval \$$FOO可以。 因此,对我来说,最聪明,最合乎逻辑的事情是${${FOO}}, ${${${FOO}}}…使用double / triple / n替换。为什么这不能按预期工作? 二:什么是\在做eval陈述?我认为这是一种逃避,使eval \$$$FOO不可能的事情变成现实。如何用在每个shell中都可以使用的三/ n替换?

3
bash-我可以做:找到...-执行此&&那吗?
有没有一种方法可以逻辑地组合使用find-exec调用的两个shell命令? 例如,要打印出所有包含字符串foo及其出现的.csv文件,我想这样做: find . -iname \*.csv -exec grep foo {} && echo {} \; 但是bash抱怨“缺少'-exec'的参数”
23 bash  find 

2
nohup是否有可能将输出既写入文件nohup.out又写入屏幕/终端?
我正在使用bash外壳。我经常nohup用来确保在关闭启动它们的外壳程序/终端时不会停止我的进程。我使用如下语法: nohup myprocess 启动时,显示nohup以下消息: nohup: ignoring input and appending output to 'nohup.out' 然后,nohup不再向屏幕输出;它全部被写入nohup.out。 但是,我经常希望监视我的计算进度。我可以通过nohup.out使用vi或进行读取tail,但是这样做会很费时间,尤其是在我的计算需要花费几个小时的时候。 有什么办法,我可以打印输出到两个 nohup.out(如果我失去互联网连接,从而启动进程被关闭终端),并在屏幕上?谢谢你的时间。
23 bash  shell  nohup 



10
如何知道/ dev / sdX是连接的USB还是HDD?
我怎么知道 /dev/sdX是本地硬盘还是USB闪存盘?我更希望在没有root特权的情况下执行此操作。 好, udevadm帮了很多忙: 对于本地硬盘: udevadm info --query=all --name=sdb | grep ID_BUS E: ID_BUS=ata 对于USB密钥: udevadm info --query=all --name=sdc | grep ID_BUS E: ID_BUS=usb

6
在shell提示符下缩写当前目录?
vim 有一个非常不错的功能,当它们有点长时可以在其路径中使用: 它在顶部的选项卡中缩写了文档的路径。有没有办法做类似的事情,所以我的bash提示看起来不是这样的: rfkrocktk@work-laptop ~/Documents/Projects/Work/maventest/src/main/java/com/tkassembled/ $
23 bash  prompt 

7
如何更改登录外壳上显示的内容?
我越来越熟悉通过提示符(.bashrc)调整外壳中的内容的方式,但是现在我试图更改首次登录时显示的初始内容。在我的EC2实例上,这就是我看到的内容我登录: __| __|_ ) Fedora 8 _| ( / 32-bit ___|\___|___| Welcome to: Wowza Media Server 2 for Amazon EC2 Version: 2.0.0.08 在我的家用Mint计算机上,这是我登录时看到的内容: Welcome to Linux Mint 11 Katya (GNU/Linux 2.6.38-8-generic x86_64) Welcome to Linux Mint * Documentation: http://www.linuxmint.com Last login: Tue Jun 21 17:44:05 2011 在哪里定义?如何调整某些疯狂的ASCII艺术动作?
23 bash  login  prompt  profile 

7
bash如果没有subshel​​l的话没有多个条件?
我想在一个if语句中合并多个条件,然后取反该组合。对于简单的条件组合,我有以下工作代码: if [ -f file1 ] && [ -f file2 ] && [ -f file3 ] ; then # do stuff with the files fi 这很好。如果要取消它,可以使用以下工作代码: if ! ( [ -f file1 ] && [ -f file2 ] && [ -f file3 ] ) ; then echo "Error: You done …



2
我的终端中以非零代码退出的任何命令都会关闭我的终端窗口
起初这有点有趣,就像玩“ Bash Roulette” ...但是现在它已经变老了。 我的终端中以非零代码退出的任何命令都会关闭我的终端窗口 有人告诉我,也许我set -e在终端机上的某个地方设置了一些bash脚本。 我已经检查了.bash_profile// .bashrc/ .profile,看起来好像不在set -e那里。 还有其他明显的罪魁祸首吗?

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.