Articles of shell

添加.env可变参数以运行给定的命令

我有一个.env文件中的variables就像这样: HELLO=world SOMETHING=nothing 有一天我发现了这个很棒的脚本,这些脚本将这些variables放到当前会话中,所以当我运行这样的东西的时候 $(cat ./.env | grep -v ^# | xargs) && node test 然后我可以访问test.js节点文件中的variables。 console.log(process.env.HELLO) console.log(process.env.SOMETHING) 问题在于,该命令将.envvariables放在整个会话中,所以当我运行node test而没有使用$(cat ./.env | grep -v ^# | xargs)后,它仍然可以访问对于这些variables,我正在编写一个node.jstesting来说明这些variables,我希望能够在没有这些.envvariables的情况下运行相同的命令,而不必担心它们是否仍在会话中。 理想情况下,我想跑 put-env-variables-for-this-command-first-command node test && node test 并且只有在testing脚本第一次运行时才能使用envvariables。

需要root在运行时通过应用程序执行shell命令“input keyevent <#>”?

我试图执行adb shell命令input keyevent 5来通过我的应用程序在运行时接听电话。 如果我这样做: Runtime.getRuntime().exec("input keyevent 5"); 它似乎并没有执行(没有任何事情正在发生)。 但是当我这样做: Runtime.getRuntime().exec(new String[] {"su", "-c", "input keyevent 5"}); 在屏幕上的答案button上的预期的模拟点击发生。 哪个好。 然而,一个问题是,在一些使用超级用户进行了根的设备上,该命令需要一段时间才能获得超级用户的权限。 它适用于具有Chainfire的SuperSU su二进制文件的设备。 我的问题是:是否有可能在运行时通过Java代码没有根执行此命令? 提前致谢!

退出smbclient的代码

我对samba的命令行命令“smbclient”有疑问。 我写了一个脚本从Windows共享下载文件。 这里是这个脚本的部分。 smbclient //CNAME/SNAME -I0.0.0.0 -N -c "case_sensitive; cd folder; prompt; mget file" echo $? 我的问题是退出代码。 如果文件被完全下载,则退出代码为0(OK)如果文件不能被下载,则退出代码为1(OK)如果testmaschine由于下载文件而失去与共享的连接,则退出代码为0不好),但错误(“失去连接…等)”被写入控制台。 (好) 我试了两个不同的版本。 samba-3.0.32 samba-3.6.19两者相同。 有人知道一个很好的解决方法(或smbclient参数)让我的脚本知道,下载失败? PS。 我检查了smbclient的来源。 看起来他们忘了设置退出码。 因为每次有另一个错误设置ErrorMessage并做一个(例如退出(1))。 但是对于超时,他们只设置ErrorMessage。 先谢谢你!

在大文本文件中查找重复的logging

我在一台Linux机器上(Redhat),我有一个11GB的文本文件。 文本文件中的每行包含单个logging的数据,行的前n个字符包含logging的唯一标识符。 该文件包含超过2700万条logging。 我需要validation文件中没有多个具有相同唯一标识符的logging。 我还需要在一个80GB的文本文件上执行这个过程,所以任何需要将整个文件加载到内存中的解决scheme都是不实际的。

期待脚本中的sudo问题

我正在运行以下脚本 #!/usr/bin/expect -f set user [lindex $argv 0] set pass [lindex $argv 1] set PATH [lindex $argv 2] set INV_PATH [lindex $argv 3] spawn ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $user@localhost expect "assword: " send "$pass\r" expect "$ " send "echo $pass | /usr/local/bin/sudo -S $INV_PATH/orainstRoot.sh\r" expect "$ " send "cd $PATH/bin\r" expect "$ " send […]

使用来自PHP / CGI不良做法的shell命令?

shell命令是否被认为是合法的编程接口? 特别是,从PHP页面或CGI文件在linux应用程序服务器上执行bash shell命令有什么问题吗? 这是否会引入效率或安全问题? 谢谢

Shell编程:同时执行两个应用程序

我有两个应用程序,让我们打电话给他们APP1和APP2。 我希望这两个在我的机器上并行执行。 他们没有必要在同一时间开始,但应该在大致相同的时间开始。 一个初步的想法是有一个shell脚本,如下所示: ./APP1& ./APP2 这是诀窍还是我需要插入一个等待语句,以确保在一定的时间框架内启动APP2? 谢谢

在Shell脚本中parsingDiff的结果

我想比较两个文件,看看他们是否相同或不在我的shell脚本,我的方式是: diff_output=`diff ${dest_file} ${source_file}` if [ some_other_condition -o ${diff_output} -o some_other_condition2 ] then …. fi 基本上,如果他们是相同的$ {diff_output}应该不包含任何内容,上面的testing将评估为true。 但是,当我运行我的脚本,它说 [: 争论太多 在if […]行上。 有任何想法吗?

Python脚本和linux shell之间的交互

我有一个Python脚本,需要通过命令行与用户进行交互,同时logging输出的内容。 我目前有这样的: # lots of code popen = subprocess.Popen( args, shell=True, stdin=sys.stdin, stdout=sys.stdout, stderr=sys.stdout, executable='/bin/bash') popen.communicate() # more code 这就像在terminal中inputshell命令一样执行shell命令(例如adduser newuser02),包括交互行为。 这很好。 现在,我想从Python脚本中logging出现在屏幕上的所有内容。 但我似乎无法使这部分工作。 我已经尝试了使用subprocess.PIPE的各种方法,但是这通常会使交互性紊乱,就像不输出提示string一样。 我也尝试过不同的方法来直接改变sys.stdout的行为,但是当subprocess直接写入sys.stdout.fileno()时,这一切都没有用。

shell脚本中的`set -o errtrace`会执行什么?

set -o errtrace shell脚本中的上述语句将执行什么? 特别是-o命令?