Articles of bash

如何将git命令的输出存储在variables中?

我想要的是将一个git命令的输出(如git status)存储在shell脚本中的一个variables中。 当我说输出时,我正在讨论在terminal执行某个命令时返回的文本,例如:在我的repo之外做一个git状态: fatal: Not a git repository (or any of the parent directories): .git 我试过这个: var=$(git status) 但'var'没有存储任何东西。

Bash,find文件并执行命令

我有很多rar档案在个人文件夹结构,并希望脚本拆包全部。 我很难弄清楚应该怎么做,需要一些帮助。 #!/bin/bash ## For all inodes for i in pwd; do ## If it's a directory if [ -d "$i" ] then cd $i ## Find ".rar" file for [f in *.rar]; do ./bin/unrar x "$f" # Run unrar command on filename cd .. done done done 我不熟悉bash脚本,我认为代码错误不止一次。 但我想这应该是基本结构

在Sh / Bash和php中parsingconfiguration参数的最佳/最简单的方法

我得到了每个PHP项目(大约25!),一些sh脚本,可以帮助我进行部署,回购同步,数据库导出/导出等常规任务。 sh脚本对于我pipe理的所有项目都是相同的,所以必须有一个configuration文件来存储依赖项目的不同参数: # example conf, the sintaxys only needs to be able to have comments and be easy to edit. host=www.host.com administrator_email=guill@company.com password=xxx 我只需要find一个干净的方式,从sh脚本中读取(parsing)这个configuration文件,同时也可以从我的PHP脚本中读取相同的参数。 无需使用XML。 你知道这个好的解决scheme吗? 吉列尔莫

如何使用curl从Linux命令行发送数据?

我试图通过无线连接从embedded式Linux设备传输数据。 我有curl和wget在设备上。 如何使用curl或wget将数据传输出设备? 任何指针欢迎。

查看上次触摸文件的过程

在一个有一些进程定期更改目录和文件权限的Linux机器上,大致每天。 这不是我设置的过程,我不知道它是什么。 我有根访问权限,我可以很容易地手动更改权限来获取访问权限,但有点烦人。 有没有办法看到上次触摸文件的进程列表? 或者,我该如何去处理文件上的日志过程活动。

HUP什么时候停止发送,我该怎么办?

早在我年轻的时候,Unix就是新事物,创build一个在注销时不会被杀的进程是一个挑战。 我们使用nohup命令来保护HUP信号中的持续进程。 如果我们不小心,当我们注销时,我们的进程就会被杀死,甚至closures我们启动它们的shell。 快进到今天,我发现我很惊讶,默认情况恰恰相反。 在Ubuntu和Red Hat系统上,我发现我几乎可以在后台放置任何进程,杀死父shell,注销,任何事情,只是继续下去。 我看到与Bash脚本,Python脚本和C程序相同的行为。 我从xterm或ssh会话中获得相同的行为。 例如,在xterm或ssh窗口中input: while [ 1 ]; do date; sleep 10; done > /tmp/out & 现在从另一个窗口运行 tail -f /tmp/out 看它每10秒打印一次date,然后用Ctrl-Dclosures原来的父shell。 仍在运行。 注销并返回。仍在运行。 发送一个HUP信号,它立即死亡。 我可以展示与Python脚本或C程序相同的行为。 睡或不要紧。 例如,这个丑陋的C程序行为相同: #include <stdio.h> void main() { while(1) { printf("*\n"); fflush(stdout); int i, j, k = 0; for(i=0; i < 10000; i++) { for(j=0; j […]

使用bash按第5列对csv文件进行sorting

该文件看起来像 5.1,3.5,1.4,0.2,Banana 4.9,3.0,1.4,0.6,Apple 4.8,2.8,1.3,1.2,Apple 我需要拥有它 4.9,3.0,1.4,0.2,Apple 4.8,2.8,1.3,1.2,Apple 5.1,3.5,1.4,0.2,Banana 我一直在尝试使用 sort -t, -k5 file.csv > sorted.csv 它所做的就是做到这一点 5.1,3.5,1.4,0.2,Banana 4.8,2.8,1.3,1.2,Apple 4.9,3.0,1.4,0.6,Apple 我如何做到这一点? 它似乎没有把它sorting。

如何检查sed命令是否replace了一些string?

这个命令用旧的stringreplace旧的string(如果存在的话)。 sed "s/$OLD/$NEW/g" "$source_filename" > $dest_filename 我如何检查replace是否发生? (或者发生了多less次?)

列出目录1中但不是目录2中的文件,反之亦然?

嘿,我开始bash shell脚本,我试图做一个脚本分配,当你进入两个目录,它会检查它们是否存在,并根据错误信息显示,如果两个目录存在,它会列出之间的差异当前目录。 $ cd dir-1 $ myshellscript . dir-2 (comparing . aka dir-1 against dir-2) 输出: Files that are in . but not in dir-2 -rw——- 1 ddddd users 1 2011-03-1 01:26 123123123 Files that are in dir-2 but not in . -rw——- 1 ddddd users 1 2011-03-1 01:26 zzzzzzzzzzzz 我到目前为止似乎没有检测到目录是否存在,也没有列出差异: dir-1=$1 dir-2=$2 if [ […]

在Bash中以stringforms执行命令

我正在testing一个简短的bash脚本。 我想执行一个string作为命令。 #!/bin/bash echo "AVR-GCC" $elf=" main.elf" $c=" $main.c" $gcc="avr-gcc -mmcu=atmega128 -Wall -Os -o $elf$c" eval $gcc echo "AVR-GCC done" 我知道这是丑陋的,但不应该执行avr-gcc命令? 错误如下: ./AVR.sh: line 4: = main.elf: command not found ./AVR.sh: line 5: = .c: command not found ./AVR.sh: line 6: =avr-gcc -mmcu=atmega128 -Wall -Os -o : command not found