我有以下bash复合命令:
while true ; do slow-command-one ; slow-command-two ; slow-command-three ; done
Run Code Online (Sandbox Code Playgroud)
发生什么了:
我想要发生的事情:
slow-command-two,slow-command-two应该中止,执行应该继续slow-command-three。我怎样才能做到这一点?
我有一个正在构建的 Uni 作业,我需要使用多个不同的参数多次运行以检查运行时间。目前我有一个简单的 bash 脚本,它看起来有点像下面的 - 它记录了它在做什么以及time每个测试的结果,所有正常输出都被丢弃(我正在其他地方检查正确性,别担心)。
问题是有时(而且相当罕见)master进程会卡住并且永远不会终止,这显然会妨碍完成测试运行。我正在努力解决这个问题,显然,但算法很好,所以我仍然想继续测试,因为有一个交接日期。
所以,我想要某种方式来指定进程的最大运行时间,如果它们超过了,我希望它们自动终止(最好通过SIGINT,或其他一些识别信号),然后脚本继续下一个条目。或具有相同结果的任何合适的替代方案。
建议?
我目前拥有的片段:
#!/bin/bash
echo "starting tests: clearing output file" > log
echo "running single tests" >> log
echo " starting 16" >> log
time (./single 16) 1> /dev/null 2>> log
time (./single 16) 1> /dev/null 2>> log
time (./single 16) 1> /dev/null 2>> log
#etc
echo "running multi tests" >> log
echo " starting 16 1 1 1" >> log
time …Run Code Online (Sandbox Code Playgroud) 正如标题所问,是否可以列出以 X 开头或包含 X 的文件?
ls用于列出文件。我可以使用任何选项来列出以特定字母开头或包含特定字母的文件吗?
Bashreadline有一个blink-matching-paren不适合我的设置。如果我在命令行上输入一个左括号,然后是一些文本,然后是一个右括号,我就不会闪烁。括号匹配在vim和 中对我有用emacs -nw。
以下是设置和版本等:
$ bind -v | grep blink-matching-paren
set blink-matching-paren on
$ set -o | grep -E '\<(emacs|vi)\>'
emacs on
vi off
Run Code Online (Sandbox Code Playgroud)
各种组合:
我需要做什么才能在命令行上的 Bash 中使括号匹配工作?
我有一台笔记本电脑,我已经安装了beep包。我把每个声音都调到满,我这样做:
$ beep
Run Code Online (Sandbox Code Playgroud)
但是我听不到任何哔哔声。我错过了什么?我只需要在脚本完成时运行哔声。
我在 Ubuntu 服务器上有一个具有正确 PS1 变量的帐户,我想让同一台服务器上的其他帐户之一具有相同的 PS1 变量,以便我对这个新帐户的提示(当我 ssh 进入机器时)是与原始帐户相同。
有没有办法可以在帐户之间传递这个 PS1 变量,以便提示相同?
我曾尝试将其打印出来,复制输出,然后将其重新分配给新帐户上的 PS1,但它不起作用。
这是我输入时打印的内容echo $PS1:
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
Run Code Online (Sandbox Code Playgroud)
我想将该提示(如上所示)分配给我的新帐户。
我的 bash 命令提示符是:
\e[32;1m[\e[m\h.\u \e[33;1m\W\e[m\e[32;1m]\e[0;36m::\e[m
Run Code Online (Sandbox Code Playgroud)
一定有什么问题,因为在长行中,当前行被覆盖,而不是在下一行继续。
我正在使用 OSX 和 bash 3.2.48
我总是#!/bin/bash在我的 shell 脚本中声明 shebang 行。最近,当我调用包含调用的脚本时exit,它杀死了我的终端。它通常会杀死分叉进程并返回到我的终端提示。为什么会发生阻止分叉的情况?
编辑
$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Run Code Online (Sandbox Code Playgroud)
. script_path或通过脚本的符号链接来调用脚本。我找到了几个文件,列出了带有非打印字符的 bash 提示符的一些功能(例如 \E[33;44m 在蓝色背景上打印黄色文本),但是我到处看,我只找到非常具体的例子,并且没有对这些特殊字符的真正解释,或这些字符可能发生的所有事情的完整列表。
有时,示例使用 \033[ 前缀,有时使用 \E[,两者之间有区别吗?
到目前为止,我知道以下是可能的:
使用颜色:\E[33;44m
将光标移动到特定位置(第 10 行,第 20 列):\033[10;20H
隐藏光标:\E[?25l
显示光标:\E[?25h]
还有其他神奇的组合吗?我在哪里可以找到这些特殊字符的完整列表以及如何使用它们?
我编写了一个 bash shell 脚本(下面提供了代码),它为用户提供了 4 个选项。但是,我在代码方面遇到了一些麻烦。现在,当他们选择选项 3 以显示日期时。它一遍又一遍地循环。我必须关闭终端窗口才能停止它,因为它是一个无限循环。我将如何防止这种情况?退出似乎也不起作用。
如果有人能帮我一下,谢谢。
#!/bin/bashe
echo -n "Name please? "
read name
echo "Menu for $name
1. Display a long listing of the current directory
2. Display who is logged on the system
3. Display the current date and time
4. Quit "
read input
input1="1"
input2="2"
input3=$(date)
input4=$(exit)
while [ "$input" = "3" ]
do
echo "Current date and time: $input3"
done
while [ "$input" = "4" ]
do
echo "Goodbye $input4"
done
Run Code Online (Sandbox Code Playgroud)