Articles of bash

壳GNU-Screen -X的东西问题

OPTIONS="java -Xms1024M -Xmx1024M -jar craftbukkit.jar" PROCESS=server01 screen -dmS $PROCESS $OPTIONS nogui # Starting the application screen -x $PROCESS -X stuff `printf "stop\r"` # Closing the application screen -x $PROCESS # Attaching to the terminal of the application 应用程序在一开始工作正常,但是我得到的问题stuff 'printf "stop/r"'我刚启动似乎不工作,等待一段时间,然后尝试用上面的命令停止它。 但奇怪的是,如果我做了screen -x $PROCESS并分离( ctrl-A & ctrl-D ),然后使用Stop命令,它确实可以工作。 所以有没有办法来stuff printf没有screen -x $PROCESS ?

为什么在按Ctrl + C时Linux总是输出“^ C”?

我一直在研究Linux的信号。 我已经完成了一个testing程序来捕获SIGINT。 #include <unistd.h> #include <signal.h> #include <iostream> void signal_handler(int signal_no); int main() { signal(SIGINT, signal_handler); for (int i = 0; i < 10; ++i) { std::cout << "I'm sleeping…" << std::endl; unsigned int one_ms = 1000; usleep(200* one_ms); } return 0; } void signal_handler(int signal_no) { if (signal_no == SIGINT) std::cout << "Oops, you […]

如何在不修改FreeBSD,OpenBSD和Linux的情况下使用bash脚本?

对不起,标题可能有点刺激,但我什么都不知道。 无论如何,我想要一个bash脚本在FreeBSD,OpenBSD和Linux上工作,而不用修改它,但是bash不在Linux和BSD中的相同位置。 所以,如果我写#!/bin/bash那么它将不能在BSD上工作,因为bash shell位于/usr/local/bin/bash中。 有什么解决scheme让这个脚本同时工作吗? 还是我真的需要运送两个不同path的脚本…?

如何轻轻地杀死Linux / OS X上的Firefox进程

我使用Firefox做了一些自动化操作,虽然我可以从shell打开Firefox窗口,但我无法正确终止它。 如果我用kill -3或者kill -2命令kill Firefox进程,那么下次我打开一个新的Firefox窗口时,会询问我是否想以安全模式运行。 我明白,调用kill -9可能会混淆Firefox,所以它会尝试运行在安全模式,但-3应该没问题。 你有什么想法如何轻轻地告诉Firefox正确closures?

在bash脚本中使用条件来检查string参数

我正在尝试编写我的shell脚本thing.sh ,以使它成为一个可执行文件,并使用单个字母“A”运行它,如下所示: $ ./thing.sh A 我得到输出 A 如果参数1不是A,我需要输出 Not A 这是我的代码到目前为止: #!/bin/bash if [ "$1" -eq "A"] then echo "A" else echo "Not A" fi 无论我input什么, ./thing.sh: line 3: [:missing `]' Not A 我正在尝试我希望检查一个或几个字母的东西,并将其与字母A进行比较; 有人能告诉我什么,我错过了这个工作? 谢谢

如何列出目录树中的所有二进制文件扩展名?

我需要build立目录树中二进制文件的所有文件扩展名列表。 主要问题将是如何区分一个文本文件和二进制文件,其余的应该是蛋糕。 编辑 :这是我得到的最接近,有更好的想法? find . -type f|xargs file|grep -v text|sed -r 's:.*\.(.*)\:.*:\1:g'

在命令行启动后捕获进程的STDIN / STDERR / STDOUT?

谢谢! 我的用户:我开始了一个冗长的交互式“configuration”过程(比如在'屏幕'下面),然后意识到我需要总是回答“否”,直到我看到一个特定的关键字。 似乎浪费时间做手工(不是说我可以轻易地错过关键字..) 因此,似乎我想pipe(复制)STDERR / STDOUT到一个filter,也能够注入到一个(控制台)进程的STDIN,它已经启动后,使用命令行? 有没有现成的解决scheme? 以下工具看起来很有帮助。 要捕获输出,请使用 strace -ewrite -p $PID 这不是那么干净(显示行如:写(#)),但工程! 但是,它说UTF8处理正确吗? 要redirect输出,请执行类似操作 printf '..input..' >/dev/pts/33 但目前还不清楚如何find合适的设备

检查参数是否是bash shell中的有效date

我正在Linux中编写一个bash shell脚本,这个程序将接受一个date(mm-dd-yyyy)作为参数。 我想知道是否有一个简单的方法来检查date是否有效? 有没有运营商,我可以用testing来检查?

Bash:将string添加到文件的末尾而不换行

如何在没有换行符的情况下将string添加到文件末尾? 例如,如果我使用>>它将添加到换行符的文件的末尾: cat list.txt yourText1 root@host-37:/# echo yourText2 >> list.txt root@host-37:/# cat list.txt yourText1 yourText2 我想在yourText1之后添加yourText2 root@host-37:/# cat list.txt yourText1yourText2

一个Linux守护进程和STDIN / STDOUT

我正在一个Linux守护进程,并与标准input/标准输出有一些问题。 通常由于守护进程的性质,你没有任何标准input或标准输出。 但是,我的守护进程中有一个函数,当守护进程第一次运行时指定守护进程成功运行所需的不同参数。 当这个函数被调用时,terminal变得如此迟钝,我不得不启动一个单独的shell并杀死顶端的守护进程以获得响应提示。 现在我怀疑这与closuresstdin / stdout的分叉进程有关,但是我不太清楚如何解决这个问题。 如果你们可以对最受赞赏的情况进行阐述。 谢谢。 编辑: int main(argc, char *argv[]) { /* setup signal handling */ /* check command line arguments */ pid_t pid, sid; pid = fork(); if (pid < 0) { exit(EXIT_FAILURE); } if(pid > 0){ exit(EXIT_SUCCESS); } sid = setsid(); if(sid < 0) { exit(EXIT_FAILURE); } umask(027); /* […]