Articles of bash

错误: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脚本。

安装rvm结果bash:没有这样的文件或目录

我已经安装了cygwin的bash,curl等最新的二进制文件。 每次我运行命令curl -L https://get.rvm.io | bash -s stable curl -L https://get.rvm.io | bash -s stable ,我得到相同的结果: % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 184 100 184 0 0 114 0 0:00:01 0:00:01 –:–:– 136 100 22726 100 22726 0 0 12556 0 0:00:01 […]

git在Windows上:致命的:协议错误:坏行字符:@ –

我在Windows上使用SourceTree + Git没有任何问题。 我能够从命令(terminal/ BASH)使用git命令。 我更喜欢用git推/拉等terminal。不幸的是,重新安装我的机器(服务器/ git是相同的)后,我得到这个痛苦的错误。 在新机器上,我安装了Git 1.9.5(Git-1.9.5-preview20141217.exe),并configuration为只使用BASH,并使用正确的SSH密钥文件进行plink。 我可以做git log我的仓库,但是git pull或者git push会给出这个错误: me@NEW-MACHINE /c/Workspace/project (master) $ git pull fatal: protocol error: bad line length character: @- ERROR: Problem parsing the command line arguments. 当然,我search了很多关于“致命的:协议错误:坏行长度”的文章。 但是,找不到任何线索。 有趣的是,在SourceTree上,我可以做成git pull或push 。 我只在BASHterminal得到这个错误。 请注意,SourceTree不使用embedded式的git。 以下是我的调查到目前为止: 我安装了旧版本的git(1.8.x),仍然出现错误。 移动.bashrc,但不好。 显然,SourceTree并不像SourceTree那样使用embedded式Git。 服务器在Github(企业,私人)。 我在使用相同的git存储库/服务器的Linux上使用任何git命令没有问题。 我的线索是从错误消息中的<newline>@-<newline> 。 这更像是一个Windows / BASH特定问题。 我不知道是什么原因导致“@ – ”。 […]

不能在bash中的双括号中执行命令

为了保持一致,我试图在所有if语句中使用双括号[[]]。 但是当我要检查我想运行的命令的返回值时,我确实遇到了一个问题。 在testing几种创buildif语句的方法之后,我发现只有没有括号才能执行命令。 以下不起作用: if [[ $command ]] ; then echo "something" fi if [[ $(command) ]] ; then echo "something" fi if [[ ${command} ]] ; then echo "something" fi 上面的代码使if循环成为真,即使命令没有运行。 因为上面的代码不能使用大括号它不能使用这个: [[ $command ]] || echo "failed" 而且它不能在子shell中工作。 以下工作: if $command ; then echo "something" fi if $(command) ; then echo "something" fi […]

如何从Unixterminal的任何path运行.sh脚本?

我知道如何运行我创build的脚本。 但是,我需要通过terminal改变目录并运行我的脚本,这是一个痛苦的问题。 我需要运行到桌面的slowloris脚本,现在改变目录到桌面并运行。 然后我有另一个根; 现在将目录更改为root并运行该目录。 我的问题是: 如何通过从任何pathinput./script来运行任何shell脚本,就像我们从任何path启动Metasploit一样,通过从任何path给予msfconsole 。