Articles of bash

如何从两台服务器上存在的rsync中排除目录?

这是我的文件结构: Server_A Server_B ============== ============== /path/dir1/ /path/dir1/ logA.txt logA.txt logB.txt logB.txt /path/dir2/ /path/dir2/ fileC.txt fileC.txt fileD.txt fileC.txt 我需要rsyncpath/ dir2从服务器A到B,但不是path/ dir1。 我的rsync命令如下所示: rsync -arv –exclude '/dir1' /path/ root@server_b:/path 但每次运行时,结果都会显示dir1: sending incremental file list ./ dir1/ dir1/logA.txt dir1/logB.txt sent 52147 bytes received 23342 bytes 14405.50 bytes/sec total size is 215619123 speedup is 2851.02 我错过了什么?

Bash概念问题

我是linux和bash的新手,我正在研究一些不同的脚本,但是我有一些概念性的问题需要回答,以帮助我find最好的方法来实现我想要做的。 将数据存储在bash脚本中的最有效的方法是什么,并将其另存为文件,以便另一个脚本可以快速parsing? 丰富多彩的bash菜单的一些很好的例子是什么? 如何在bash中有多列菜单? 我可以在bash中显示图像,还是将图像信息发送给我们,让我们说一个通知发送,并让它显示任何图像? 谢谢。

在文件中每出现一个字符就插入一些东西

我有一个包含查询的文件,每个查询以“;”结尾,我想添加一个“COMMIT; BEGIN;” 每100个查询。 查询可能需要超过1行。 例如: INSERT INTO table VALUES(…); DELETE FROM table WHERE …; UPDATE table SET …; 所以我想每100个取代一次“;” 以“COMMIT; BEGIN”开始 (我知道我必须添加一个BEGIN;在文件的开头,最后做一些事情,但是很简单) 我需要在shell脚本中这样做,但我不是Linux专家,使用sed或awk(文件大小可能像4GB那样大)会更好吗? 我知道这些命令的基础知识,但我不知道我是否可以在这里做我想做的事情… 谢谢!

在返回接地和子处理期间的可变访问性

我有以下两个脚本: “scr1.sh” #!/bin/sh func_in_scr1() { echo func_in_scr1 var is $var } var=7645 func_in_scr1 & ( func_in_scr1 ) ./scr2.sh “scr2.sh” echo in scr2 var is $var 这是输出: func_in_scr1 var是7645 func_in_scr1 var是7645 在scr2 var是 题: 当scr1.sh中的函数在bg和subshel​​l中运行时,它可以访问$ var的值。 但是scr2.sh无法访问$ var的值。 我的印象是,一个subprocess(subprocess)只能访问导出的variables而不能导出variables,所以我特别被#1惊讶。 有人可以解释这个结果吗?

将数据作为字节发送到bash中的pipe道

我最近花了一些时间试图写一些数字作为字节pipe道使用bash(例如10为0xA ,而不是0x310x30 )。 不幸的是,我无法做到这一点,不得不将脚本重写为Python。 是否有任何方式发送数据作为bash脚本中的字节而不是字符?

Linux脚本 – 扩展保留

我是一个linux脚本的新手,并有一个脚本,我从networking上,正在尝试修改的问题。 这是脚本 #!/bin/bash if (($# ==0)) then echo "Usage: flvto3gp [flv files] …" exit fi while (($# !=0 )) do ffmpeg -ss 00:00:10 -t 1 -s 400×300 -i $1 -f mjpeg /home/zavids/rawvids/thumbs/$1.jpg shift done echo "Finished" echo "\"fakap all those nonsense!\"" echo "" 所以我从video抓取截图并将其保存为jpeg。 问题是video文件的扩展是保留的,所以完成的文件是video.flv.jpg(例如)。 我怎样才能摆脱video扩展?

多个SSHlogin/注销

我正在处理ssh,我的任务是以非交互式(?)模式多次login到另一个控制台,所以我特别以这种模式login计算机,我必须键入CTRL-D才能注销,而且此操作重复。 #!/bin/bash for i in `seq 100` do ssh test@macintel sleep 1 done 有什么办法,所以我不必手动键入CTRL-D注销? 运行任何命令,如ssh test@macintel './command.sh'不适用于我。 我想通过它的PID杀死它,或者用一些文件描述符来调用它,但是我仍然通过调用的ssh连接阻止了本地会话。

如何在每个Bash命令的开头添加一些内容?

我想改变我的Bashconfiguration,所以当我在命令提示符下input某些东西(例如foo bar )时,它确实会执行h foo bar 。 我想这样做,因为我经常使用hilite (别名为h )以红色标记stderr,并且我想使此行为永久。 我看到的其他用途将与Git交互,因为我写了很多命令,如: git status git add … git commit … 我想我可以使用preexec_invoke_exec执行一些命令运行之前,但我不知道如何改变命令或阻止它执行。 有任何想法吗?

Beaglebone inittab问题

我正在开发一个beaglebone应用程序。 我想添加启动脚本到我的Beaglebone,但我找不到/ etc / inittab。 我使用的图像:Angstrom-Cloud9-IDE-GNOME-eglibc-ipk-v2012.05-beaglebone-2012.06.18.img.xz 我认为在以前版本的映像中有/ etc / initab,但是对于新的发行版我找不到inittab:/ 我想申请这个: 在Angstrom Linux上自动login,但是我不能,因为没有/ etc / inittab。 新发行版中的inittab在哪里? 当我写uname时,它给出:3.2.23 问候

bash:$ _在cronjob中是空的

cd some_dir && php some_crone.php || echo "$? $_" | xargs ./some_handler.php 所以当我从控制台运行这段代码时,我得到了正确的值$? 和$ _ $? – 退出状态$ _ – 给上一个命令的最后一个参数。 在shell启动时,它给出正在执行的shell脚本的绝对文件名。 但是当我把这个代码cronjob: crontab -e */1 * * * * cd some_dir && php some_crone.php || echo "$? $_" | xargs ./some_handler.php 我有一个空的$ _。 请帮忙。 我不明白是什么问题?