Articles of bash

如何将目录复制到使用bash安装的目录中?

假设嵌套的目录foo/bar和一个空目录dest 。 我想调用像install foo dest这样的dest包含目录foo/bar 。 我已经尝试了以下内容: install foo dest => install:省略目录“foo” install -d foo dest =>没有任何反应

将引用的parameter passing给shell脚本并保持引用

我试图重新使用发送到我的脚本的参数作为我在脚本中执行的命令的参数。 看下面的例子,我执行mailx 。 庆典 $./myscript.sh "My quoted Argument" myscript.sh mailx -s $1 这最终被执行为: mailx -s My Quoted Argument 。 我尝试了"$1" ,但我的报价被扔掉了。 (错误的语句,请阅读下面的答案) 我试过""$1""但是我的报价被扔掉了。 我试图做'$1'但这是强烈的引用,所以1美元永远不会得到解释。 我意识到我可以做$@ ,但是这给了我所有的参数。 ….你得到的图片 任何帮助,将不胜感激!

GNU并行的“find”和“ls”

我正在尝试使用GNU parallel将大量文件发布到Web服务器。 在我的目录中,我有一些文件: file1.xml file2.xml 我有一个如下所示的shell脚本: #! /usr/bin/env bash CMD="curl -X POST -d@$1 http://server/path" eval $CMD 脚本中还有一些其他的东西,但这是最简单的例子。 我试图执行以下命令: ls | parallel -j2 script.sh {} 这是GNU parallel页面显示的“正常”方式来操作目录中的文件。 这似乎将文件的名称传递到我的脚本,但curl抱怨说,它不能加载传入的数据文件。但是,如果我这样做: find . -name '*.xml' | parallel -j2 script.sh {} 它工作正常。 ls和find是如何将parameter passing给我的脚本的? 或者我需要在脚本中另外做些什么?

输出pipe道可以着色到更多吗?

我有ls和grep别名为'ls –color = auto'和'grep –color = auto'来实现彩色输出,但是当我input更多颜色时会丢失。 似乎也没有什么可以让他们的输出变色的参数。 有没有办法做到这一点?

错误:ld.so:对象LD_PRELOAD无法预加载:忽略

我使用的是Ubuntu 12.04。 每当我开始我的bashterminal,每当我input一个命令(并按回车),我得到这个消息: 错误:ld.so:LD_PRELOAD中的对象'/usr/lib/liblunar-calendar-preload.so'无法预加载:忽略。 真奇怪。 那么LD_PRELOAD使用的环境variables是什么? 现场发生了什么? 谢谢。

发生错误时如何自动重新运行“curl”命令

有时当我用curl命令执行一个bash脚本来将一些file upload到我的ftp服务器时,它会返回一些错误,如: 56 response reading failed 我必须find错误的行并手动重新运行它们。 我想知道是否可以在错误发生时自动重新运行。 我的脚本是这样的: #there are some files(A,B,C,D,E) in my to_upload directory, # which I'm trying to upload to my ftp server with curl command for files in `ls` ; do curl -T $files ftp.myserver.com –user ID:pw ; done 但是有时候A,B,C会被成功上传,只有D被留下了“错误56”,所以我不得不手动重新运行curl命令。 此外,正如威尔·比克福德所说,我更喜欢不需要确认,因为在脚本运行的时候,我总是睡着了。 🙂

如何完全复制一个文件夹

我正在尝试为我正在编程的设备复制一个文件系统。 经过这么多时间,试图找出为什么我安装的文件系统无法正常工作,我发现cp没有完成任务。 我使用du -s来检查原始文件系统的大小,以及用cp -r复制的文件系统的大小,结果大约相差150字节。 有些东西告诉我符号链接或某种内核对象没有被正确地复制。 是否有可能完全复制文件夹/文件系统? 如果是的话,我将如何去呢?

curl“写出”特定标题的值

我目前正在写一个bash脚本,我正在使用curl。 我想要做的是获得一个特定的响应头。 基本上我想要这个命令的工作: curl -I -w "%{etag}" "server/some/resource" 不幸的是,-w,–write-out选项似乎只有一组支持的variables,不能打印任何属于响应的头部。 我是否需要自己分析curl输出以获取ETag值,还是有办法让curl打印特定头文件的值? 显然有点像 curl -sSI "server/some/resource" | grep 'ETag:' | sed -r 's/.*"(.*)".*/\1/' 做的伎俩,但它会更好,有curl过滤标题。

如何在bash中优雅地存储和回显多行?

我试图把一块文本捕捉到一个variables中,保持新行,然后回显它。 但是,当我捕捉文本或显示文字时,换行符似乎不被保留。 任何想法如何我可以做到这一点? 例: #!/bin/bash read -d '' my_var <<"BLOCK" this is a test BLOCK echo $my_var 输出: 这是一个testing 期望的输出: 这个 是 一个 testing

Shell脚本,在回显消息后在同一行上读取

跟着我正在执行的shell脚本 #!/bin/sh echo "Enter [y/n] : " read opt 它的输出是 Enter [y/n] : Y 我希望这个variables应该像下面一样在同一行上读取 Enter [y/n] : Y 应该是简单的我猜,但我是新来的bash脚本。