Questions tagged «bash»

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

1
看到Bash变量的扩展进行调试了吗?
是否有任何工具/技巧可用于扩展变量以使bash代码更易于阅读? 例如,它将转换以下内容: DIR=/var/tmp FILE=${DIR}/file SCRIPT_ROOT=/opt/root TOOL=${SCRIPT_ROOT}/tool.sh ${TOOL} ${FILE} 至: DIR=/var/tmp FILE=/var/tmp/file SCRIPT_ROOT=/opt/root TOOL=/opt/root/tool.sh /opt/root/tool.sh /var/tmp/file 我正在将BASH代码转换为Python,并且读取BASH语法非常麻烦。



4
如何在shell脚本中实现logrotate
test.sh #!/bin/bash echo "Hello World" test2.sh #!/bin/bash while true do sh test.sh >> /script_logs/test.log & done 我想实现logrotate来控制日志文件的大小,如果情况如上所示,该如何实现logrotate?

1
在bash中使用内置的“ time”命令,而不是外部命令
使用该time命令时,遇到了一种情况,我应该使用内置的time而不是外部的GNU time命令/usr/bin/time。那么,我该怎么做呢?我在某处看到使用enable和/或command会有所帮助,但没有。 这是一个用例: watch "time ls" 它使用了/usr/bin/time我不想要的外部命令!time当我time ls在终端上运行时调用内部bash函数时会发生这种情况,如下所示: $ time ls 请注意,此处已回答了完全相反的要求: 使bash使用外部`time`命令而不是内置的shell 两个命令有很多区别。内部命令time更精确(我想要),但是外部命令有更多选项(我不需要)。

4
bash动态(变量)变量名
我想通过操作元素数组并创建一些算术过程来动态创建字符串序列。 for name in FIRST SECOND THIRD FOURTH FIFTH; do $name = $(( $6 + 1 )) $name = "${$name}q;d" echo "${$name}"; printf "\n" done 期望的结果将是$6平等0。 1q;d 2q;d 3q;d 4q;d 5q;d 但是我得到这个错误 reel_first_part.sh: line 18: FIRST: command not found reel_first_part.sh: line 19: ${$name}q;d: bad substitution reel_first_part.sh: line 18: FIRST: command …
12 bash  variable 

2
可以将“ cd”的命令完成修改为仅显示目录并忽略文件吗?
当我在bash中的目录中并按时cd Space Tab,它可能会显示目录中的所有内容。(Show all 1000 possibilities?)当我所在的目录中包含许多常规文件且目录相对较少时,这确实很麻烦。 因此,是否可以选择cd仅包含目录的自动完成功能? 我知道我可以通过执行以下操作获取目录中的目录列表 ls -d */ 但我不确定如何从那里继续。 我正在使用CentOS 6.6 Final。

2
如何在终端中找到垂直线的数量?
我正在写一个脚本,当我进入cd时显示目录的git日志。这样的日志可能不胜枚举,包含数百行。到目前为止,我一直将其限制为硬编码的20行(... | head -n 20),这在工作中的屏幕上还可以,但是在家用的较小MacBook屏幕上就太多了。 我希望日志占据任一终端上(垂直)屏幕的一半左右。而且“终端”也发生了变化:它是Gnome终端在工作,而iTerm2在家里。而且我不使用屏幕或tmux。 如何从命令行找到终端中可用的垂直线数?

3
您如何在内部使用命令继续句子
例如,我一直试图在我的脚本文件中说“目前有10个人在线”。 如果没有下一行的“当前在线人员”部分,我似乎永远无法使命令正常工作。 此刻,我有 w='who | wc -l' echo "There are $w people online at the moment" 但是,我总是以输出结束 There are who | wc -l users online at the moment 您如何在中间使用命令?我一直在尝试查找和复制示例,但这似乎无济于事我的命令替换问题。
12 bash  scripting 


2
Bash字符串串联用于构建参数列表
鉴于这一点: PARMS='-rvu' PARMS+=" --delete --exclude='.git'" echo $PARMS rsync ${PARMS} . ${TARGET} 回显按预期显示PARMS字符串,不显示任何错误,但rsync默默地充当+ =添加的选项。但是,这按预期工作: PARMS='-rvu' rsync ${PARMS} --delete --exclude='.git' . ${TARGET} 我想我用bash引号搞砸了(这些引号总是有问题),但是即使字符串似乎已经正确构建,也不能完全确定忽略了什么以及为什么忽略了这些选项。

7
在bash或zsh中序列化shell变量
有什么方法可以序列化shell变量吗?假设我有一个变量$VAR,并且希望将其保存到文件或其他文件中,然后稍后再读回以获取相同的值? 有便携式的方法吗?(我不这么认为) 有没有办法在bash或zsh中做到这一点?
12 bash  shell  zsh  variable 


7
是否可以从`ls`命令中删除文件夹前缀
我在bash脚本中,我想获取所有文件的列表(比方说所有jar文件)。我执行命令ls -1 lib/*.jar并得到输出: lib/mylib_1.jar lib/mylib_2.jar ... 是否可以选择以下输出: mylib_1.jar mylib_2.jar ... 制作cd lib前是不是一种选择,因为我在一个循环中,并需要在为想在循环里做动作的父文件夹。 我试图通过键入查找信息,man ls但是没有找到任何解决方案。 只要我可以将其传递给我的ls命令或自给自足,使用另一个命令的解决方案将是很好的。
12 bash  shell  directory  ls 

5
清空文件而不中断管道对其的写入
我有一个程序,其输出重定向到日志文件: ./my_app > log 我想不时地(按需)清除(即清空)日志,并尝试了诸如 cat "" > log 但是,似乎总是会破坏原始管道,并且程序不再将其输出重定向到日志文件。 有什么办法吗? 更新资料 请注意,我无法修改产生输出的应用程序。它只是将其吐出到stdout,我想将其保存在日志中,以便我可以在需要时进行检查,并在需要时进行清除。但是,我不需要重新启动应用程序。

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.