我在备份shell脚本的部分有以下命令: tar -cjf site1.bz2 /var/www/site1/ 当我列出档案的内容时,我得到: tar -tf site1.bz2 var/www/site1/style.css var/www/site1/index.html var/www/site1/page2.html var/www/site1/page3.html var/www/site1http://img.dovov.comimg1.png var/www/site1http://img.dovov.comimg2.png var/www/site1/subdir/index.html 但是我想从档案中的目录和文件名删除部分/var/www/site1 ,以简化提取并避免无用的常量目录结构。 永远不知道,以防万一我会提取备份网站的网站数据不存储在/var/www 。 对于上面的例子,我想有: tar -tf site1.bz2 style.css index.html page2.html page3.html images/img1.png images/img2.png subdir/index.html 所以,当我提取时,文件在当前目录中提取,我不需要以后移动提取的文件,并保留子目录结构。 关于tar和备份在web上的其他地方已经有很多关于tar和备份的问题了,但是大多数的问题是要求删除整个子目录结构(拼合),或者只是添加或者删除最初的/不知道在提取时它究竟发生了什么变化),但没有更多。 阅读了一些在这里和那里find的解决scheme以及手册后,我试着: tar -cjf site1.bz2 -C . /var/www/site1/ tar -cjf site1.bz2 -C / /var/www/site1/ tar -cjf site1.bz2 -C /var/www/site1/ /var/www/site1/ tar -cjf site1.bz2 […]
一旦我点击bash上的标签,错误信息会出现,怎么了? symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success symlink-hook: error retrieving current directory: getcwd: […]
我有一个shell脚本,我想运行而不使用“sh”或“bash”命令。 例如: 而不是: sh script.sh 我想使用: script.sh 我怎样才能做到这一点? PS(我)我不使用shell脚本,我试着读别名,但我不明白如何使用它们。 (ii)我还阅读了有关将脚本与PATHvariables中的另一个文件链接的信息。 我正在使用我的大学服务器,我没有权限在这些位置创build文件。
我正在build立一个新的Mac工作。 我在全球安装了Grunt&Grunt CLI。 然后,我做了一个npm install在一个项目文件夹内安装所有的依赖项。 到目前为止没有问题,但只要我试图运行sass:dist任务,我得到这个警告: Warning: You need to have Ruby and Sass installed and in your PATH for this task to work. More info: https://github.com/gruntjs/grunt-contrib-sass Use –force to continue. 我的理解是,我需要将Ruby和Sass安装在更全局的层面上才能运行此任务。 由于我在terminal上工作还很新,所以我做了一个快速的search,找出PATH是什么 – 看起来像是它存储重要数据的一些系统path(可以改变)。 这是否意味着我可以简单地做一个sudo grunt install contrib-sass -g来解决这个问题? 那么Ruby怎么样 – 我一直认为它已经安装在OS X上?
如何在Bash中不使用临时文件来区分两个pipe道? 假设你有两个命令pipe道: foo | bar baz | quux 而你想在他们的输出中finddiff 。 一个解决办法显然是: foo | bar > /tmp/a baz | quux > /tmp/b diff /tmp/a /tmp/b 有没有可能在Bash中使用临时文件? 您可以通过在其中一个pipe道中pipe道来摆脱一个临时文件来区分: foo | bar > /tmp/a baz | quux | diff /tmp/a – 但是,你不能同时把两个pipe道同时pipe入diff(至less没有任何明显的方式)。 涉及/dev/fd有没有使用临时文件做这个巧妙的伎俩?
我有这样的脚本 genhash –use-ssl -s $IP -p 443 –url $URL | grep MD5 | grep -c $MD5 我想要得到一个variablesgenhash生成的stream。 我如何redirect到一个variables$hash比较里面的条件? if [ $hash -ne 0 ] then echo KO exit 0 else echo -n OK exit 0 fi
通常我会开始一个类似的命令 longcommand &; 我知道你可以通过做类似的东西来redirect它 longcommand > /dev/null; 例如摆脱输出或 longcommand 2>&1 > output.log 捕捉输出。 但是我有时会忘记,并且想知道事实之后是否有办法捕获或redirect。 longcommand ctrl-z bg 2>&1 > /dev/null 或类似的东西,所以我可以继续使用terminal,而无需在terminal上popup消息。
我想执行一些命令,但不希望将它们存储在命令历史logging中。 所以没有人能够在.bash_history文件中search它。 有没有办法如何执行这样的bash命令?
如何在单独的行上打印Bash数组的数组元素? 这个工作,但肯定有一个更好的方法: $ my_array=(one two three) $ for i in ${my_array[@]}; do echo $i; done one two three 试过这一个,但它没有工作: $ IFS=$'\n' echo ${my_array[*]} one two three
如何移动除一个以外的所有文件? 我正在寻找像这样的东西: 'mv ~/Linux/Old/!Tux.png ~/Linux/New/' 在那里我把旧东西移动到除Tux.png之外的新东西 – 文件Tux.png 。 ! – 表示否定。 有工作的工具吗?