Articles of bash

Linuxterminal鼠标报告 – 基本问题

我用一个shell脚本做了一个简单的,鼠标控制的任务栏。 它工作得很好,并使用rxvt-unicode来制作“graphics”。 不幸的是,我把这个脚本从我的上网本移到我的笔记本电脑上,当我改变了terminal窗口的大小并更新了代码时,我发现我的鼠标报告在第95列之后停止工作(它总是返回!不pipe它在哪里被点击超过95)。 我发现在第95列有一个鼠标报告的“限制”。我的程序现在需要123列,在这之前它正好在95以下。 我查了一下这个问题,只发现了一个引用95列的限制。 我发现的大部分实际上是指223列的限制。 如果我有223的限制,我会很好,但我不明白如何让它切换。 基本上,我不明白的问题来适用我在谷歌阅读。 通常我可以自己钓鱼,但是这个问题让我感到困扰。 我使用本指南告诉我使用什么转义序列(我select了X10,点击,报告或转义序列\ 033 [?9h)。 如何在bash中获取MouseMove和MouseClick? 我发现这提到了95列的限制,但没有多大意义: Emacs,unicode,xterm鼠标转义序列和宽端 我正在使用小代码片断,或多或less基于此: http : //www.imbe.net/bizen?Linux/Mouse_In_A_Terminal 我发现其他的其他人不是223,而是255.我的代码似乎没有受到这种变化的影响。

我是否可以检测到从长期运行的后台进程中提前退出?

我正在尝试改进群集环境中运行的多个服务器的启动脚本。 服务器进程应该无限期运行,但偶尔在启动时会失败,例如, Address already in useexception。 我希望启动脚本的退出代码能够反映出这些早期的终止,比如等待1秒,并告诉我服务器是否已经开始好了。 我还需要服务器PID回显。 这是迄今为止我的最佳射门: $ cat startup.sh # start the server in the bg but if it fails in the first second, # then kill startup.sh. CMD="start_server -option1 foo -option2 bar" eval "($CMD >> cc.log 2>&1 || kill -9 $$ &)" SERVER_PID=$! # the `kill` above only has 1 second […]

创build一个C ++守护进程并保持环境

我试图创build一个在Red Hat 6.3平台上运行的c ++守护进程,并且无法理解libc daemon()调用, daemon shell命令, startproc , start-stop-daemon和大约六种其他方法谷歌build议创build守护进程。 我已经看到了需要两个forksbuild议,但是只有一个daemon 。 为什么需要第二个叉子? 如果我编写init.d脚本来调用bash daemon ,c代码是否仍然需要调用daemon ? 我实现我的应用程序来调用c daemon()函数,因为它似乎是最简单的解决scheme,但我遇到了我的环境variables似乎被丢弃的问题。 我如何防止这种情况? 我还需要以特定的用户身份运行守护程序,而不是以root身份运行。 创buildC ++守护进程的最简单的方法是保持其环境variables,作为特定用户运行,并在系统启动时启动?

邮件格式收到时更改

我有file.out日志文件,其中包含纯文本和格式为 1abcdefghijklmnopqrstuvwxyz 2abcdefghijklmnopqrstuvwxyz 3abcdefghijklmnopqrstuvwxyz <——————– 4abcdefghijklmnopqrstuvwxyz 5abcdefghijklmnopqrstuvwxyz 6abcdefghijklmnopqrstuvwxyz 我的问题是,当我收到它在我的邮箱格式改变 在MAILBOX中输出 1abcdefghijklmnopqrstuvwxyz 2abcdefghijklmnopqrstuvwxyz 3abcdefghijklmnopqrstuvwxyz <————— 4abcdefghijklmnopqrstuvwxyz 5abcdefghijklmnopqrstuvwxyz 6abcdefghijklmnopqrstuvwxyz 第一个1,2,3不应该在一行中。 而4,5,6保持原样。 该文件最初由perl脚本使用Mail:Sendmail模块发送,但我也尝试通过邮件发送命令来testing。 cat file.out | mail -s reportfile email@email.com cat file.out | mail -s reportfile email@email.com得到了同样的结果。 我也检查文件,没有多余的空格或字符。

Linux重命名不在utf-8中的多个文件

我有旧的桑巴服务器文件,在文件名中不显示像ä,ö,ü,õ这样的特殊字符。 他们显示为? 标记。 因为我的客户无法打开这些文件或文件夹。 他们看到的文件和文件夹,但他们的名字是空白的。 在服务器中,它们是这样显示的:例如T?tunnid.doc。 一旦我用mv命令对它们进行了重命名,那么我的客户端就可以打开文件夹和文件。 有谁知道任何脚本,我可以用来重命名所有的文件? 在他们标记。 所以他们展示 – 而是。 我想重命名特定文件夹中的文件,例如/ samba / documents / …

使用bash而不是select语句

我想知道是否有可能使用bashpipe道,而不是在tab seperated value(tsv) – fileselect语句tab seperated value(tsv) – file 我的tsv文件具有以下结构: CREATE TABLE movies (title VARCHAR, full_name VARCHAR, type VARCHAR, ep_num VARCHAR, suspended BOOLEAN, year INT); 如果我想检索: How many movies were produced in 2013? 我会说在sql : SELECT COUNT(*) FROM movies WHERE year='2013'; 然而,我怎么会说,在pipe道打击(使用cat , grep或wc )? 这甚至有可能吗? 我真的很感谢你的回答!

更聪明,更浓缩的方法来匹配shell脚本中的inputvariables?

我有一个包含众多独特项目的文件,在这个例子中我使用了用户ID。 我的脚本的起始部分应该向运行脚本的用户显示列表,并允许他们select其中一个ID。 然后,脚本应该交叉检查用户对原始文件所作的select,如果匹配,则应该提供一条build议匹配的消息并继续执行脚本。 如果不匹配,脚本应该build议用户并退出。 我目前的脚本确实如此,但我想知道是否有任何方法使它变得更智能/更浓缩,也许使用数组? 当前脚本: 这是我在这个网站上的第一篇文章,所以我对发布过程中发生的任何错误深表歉意。 FILE=testfile IDLIST="$(awk '{print $1}' $FILE)" echo "$IDLIST" echo "\nSelect one of the options" read input OUTPUT="$(for i in $IDLIST do if [[ $i = $input ]] then echo "Matched." fi done)" if [[ -z $OUTPUT ]] then echo "Invalid choice." exit 0 else ID=$input fi echo "It is […]

获取pkill杀死的所有进程的PID?

我在做: pkill -9 -f stringMatch 如果成功或者不成功,则将任何内容发送到STDOUT。 任何人都可以提出一种便携的方式来返回被杀死的进程的PID?

删除指定时间以前的所有文件并logging其function

我一直在努力这一段时间,经过大量的search决定是时候从专家的帮助。 我试图删除目录中的所有文件/filestodelete并在/filestodelete文件中记下他们,到目前为止,我已经想出了: find /filestodelete -mtime +93 -exec sh -c 'rm -rfv {}' > "/something/deletions.log" 当我尝试运行这个时,收到的错误是: find: missing argument to `-exec' (我把/something/deletions.log放在引号中,因为它实际上可能有空格 – 它被另一个bash脚本调用)。 在此先感谢您的帮助。

For循环打印两个$值而不是一个

我有一个bash数组循环的问题。 下面的代码,而不是单独打印每个值,join两个值,并打印它们,如果它们是一个。 #!/bin/bash declare -a array=( 'sf052' 'to060' 'pw' 'qb099' 'pw22' 'wp039' 'wx12' 'wx11' ) for i in "${array[@]}"; do echo $i done 输出: sf052 to060 pw qb099 pw22 wp039 wx12 wx11 预期产出: sf052 to060 pw qb099 pw22 wp039 wx12 wx11 运行bash –version提供 GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu) 和uname -a : Linux server1 3.11.0-12-generic #19-Ubuntu […]