Articles of shell

有没有任何标准的机制或约定来防止Bash环境variables名称冲突?

这个网站http://www.tldp.org/LDP/abs/html/gotchas.html#PARCHILDPROBREF表明一个脚本不能改变它的父母的环境variables。 所以,(除非是脚本来源),脚本不会在其父环境中意外地更改一个命名的环境variables。 但是,如果程序依赖于声明的环境variables,则可能会发生名称空间冲突。 例如,假设我不知道vim使用环境variables名称“VIMRUNTIME”。 而巧合的是,我碰巧把这个环境variables名称用于我自己的无关的目的。 然后vim会从VIMRUNTIME环境variables中获取垃圾。 是否有任何机制或标准,众所周知的命名约定来避免这种types的命名空间冲突? 当然,我可以做一些像使用某种前缀命名所有环境variables的东西。 但是我想知道是否有这方面的知名的正式标准。 或者,在Bash中有没有find某种名称空间机制? 鼓励在其他相关陷阱的意见。

如何将目录复制到使用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美元永远不会得到解释。 我意识到我可以做$@ ,但是这给了我所有的参数。 ….你得到的图片 任何帮助,将不胜感激!

简单的shell脚本来复制文件和文件夹,并执行一个命令

我以前没有写过任何Shell脚本,但是我必须编写一个简单的shell脚本来执行以下操作; 我将把所有需要的文件保存在一个文件夹中,并将其作为一个tar文件与这个shell脚本捆绑在一起; 所以当用户运行shell脚本时,需要将各自的文件复制到各自的目的地。 复制的执行如下: 将plugin.so文件复制到/ usrlib / mozilla / plugins / 将.so库文件复制到/ usr / local / lib / 将一些头文件目录(文件夹)复制到/ usr / local / include / 最后,需要做ldconfig。

如何删除一个shell脚本中的string的所有发生的点?

例如hostname =“test.test.test”,那么去除结果后应该像“testtesttest”

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过滤标题。

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

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

获取Outlook约会(.msg)的文件图标

我读过Shell和其他类似post使用的获取文件图标 – 已经使用SHFileInfo来获取任何给定的扩展名的关联图标,这很好。 但是,Outlook使用“.msg”作为邮件和约会项目(如果拖动电子邮件并将事件拖放到桌面上,则生成的图标将不同)。 我注意到如果使用registry方法,标准信封图标位于C:\ WINDOWS \ Installer {90120000-0011-0000-0000-0000000FF1CE} \ outicon.exe的索引17(在运行Outlook 2007的XP机器上) – 而且足够方便,约会图标位于索引18处。我可以在提取图标时硬编码18,但这听起来很脆弱。 给定一个电子邮件或约会的文件名(但不是实际的文件),并知道这是一个电子邮件或约会,有没有人知道如何获得正确的图标,通过壳或通过registry? 当然,如果我有方便的实际文件,我可以使用Icon.ExtractAssociatedIcon,但在我正在工作的系统中,我们正在显示存储在其他地方的文件列表,事先下载它们是不可能的。

在Windows上使用echoclosurescmd.exe

我想知道如何启动一个cmd.exe窗口与回声已经closures。 例如,我有以下命令行: start cmd /k test.exe 在新的cmd窗口中启动test.exe 。 但在这个cmd窗口中,回显是打开的。 是否有可能在一个新的cmd窗口启动test.exe回声closures?

Windows批处理脚本从文件名删除括号中的文本?

我在一个文件夹中有一堆文件,我想通过一个.bat或.vbs脚本(或类似的)复制和重命名。 这些文件被命名为: ABC-DE-(XXX)SomeNameHere.dat 我想复制这些文件并重命名它们,删除(XXX)部分,只留下: ABC-DE-SomeNameHere.dat 有一种类似的问题在这里回答,但我不能修改它为上述文件名模式工作,也只是重命名文件,不复制它们。 任何帮助深表感谢! 非常感谢。 编辑:张贴( 可怕的! )下面的代码。 可能最好忽略这个; _; @ECHO OFF FOR %%F IN ("ABC-DE-(*)*.dat") DO CALL :process "%%F" GOTO :EOF :process SET oldname=%1 SET "newname=%~nx1" SET "newname=%newname:*] =%" RENAME %oldname% "%newname%"