Tag: bash

如何在shell脚本中删除文件名的扩展名?

下面的代码有什么问题? name='$filename | cut -f1 -d'.'' 就这样,我得到了string'$ filename | 切-f1 -d'。 但如果我删除引号,我什么都没有得到。 同时打字 "test.exe" | cut -f1 -d'.' 在一个shell给我我想要的输出,“testing”。 我已经知道$ filename已被分配正确的值。 我想要做的是分配一个variables的文件名没有扩展名。

阅读shell脚本中的JSON数据

在shell中,我有一个要求,我必须阅读以下格式的JSON响应: { "Messages": [ { "Body": "172.16.1.42|/home/480/1234/5-12-2013/1234.toSort", "ReceiptHandle": "uUk89DYFzt1VAHtMW2iz0VSiDcGHY+H6WtTgcTSgBiFbpFUg5lythf+wQdWluzCoBziie8BiS2GFQVoRjQQfOx3R5jUASxDz7SmoCI5bNPJkWqU8ola+OYBIYNuCP1fYweKl1BOFUF+o2g7xLSIEkrdvLDAhYvHzfPb4QNgOSuN1JGG1GcZehvW3Q/9jq3vjYVIFz3Ho7blCUuWYhGFrpsBn5HWoRYE5VF5Bxc/zO6dPT0n4wRAd3hUEqF3WWeTMlWyTJp1KoMyX7Z8IXH4hKURGjdBQ0PwlSDF2cBYkBUA=", "MD5OfBody": "53e90dc3fa8afa3452c671080569642e", "MessageId": "e93e9238-f9f8-4bf4-bf5b-9a0cae8a0ebc" } ] } 在这里,我只关心“身体”的财产价值。 我做了一些不成功的尝试,如: jsawk -a 'return this.Body' 要么 awk -vk="Body" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]} 但是这还不够。 谁能帮我这个?

如何用前缀/后缀重命名?

我怎么做mv original.filename new.original.filename没有重新input原始文件名? 我会想象能够做一些像mv -p=new. original.filename mv -p=new. original.filename或者也许mv original.filename new.~或者什么 – 但是看到man mv / info mv页面后我看不到这样的东西。 当然,我可以编写一个shell脚本来做到这一点,但是没有一个现有的命令/标志呢?

BASH:回应最后的命令运行

我正在试图回应在bash脚本中运行的最后一个命令。 我find了一个方法来处理一些history,tail,head,sed ,当从命令行parsing器的angular度来看,我的脚本中的某个特定行代表了一个特定的行。 但是,在某些情况下,我不会得到预期的输出,例如,当命令插入到case语句中时: 剧本: #!/bin/bash set -o history date last=$(echo `history |tail -n2 |head -n1` | sed 's/[0-9]* //') echo "last command is [$last]" case "1" in "1") date last=$(echo `history |tail -n2 |head -n1` | sed 's/[0-9]* //') echo "last command is [$last]" ;; esac 输出: Tue May 24 12:36:04 CEST 2011 last […]

BASH数组中包含空格

我想在我的相机的文件名的bash-shell中构造一个数组: FILES=(2011-09-04 21.43.02.jpg 2011-09-05 10.23.14.jpg 2011-09-09 12.31.16.jpg 2011-09-11 08.43.12.jpg) 正如你所看到的,每个文件名的中间都有一个空格。 我已经尝试用引号将每个名字包装起来,并用反斜杠将空间转义出来,两者都不起作用。 当我尝试访问数组元素时,它将继续将空间视为元素分隔符。 我怎样才能正确捕捉名称内的空间的文件名?

Node.js Shell脚本和参数

我需要在node.js中执行一个bash脚本 基本上,脚本将在系统上创build用户帐户。 我遇到了这个例子 ,让我知道如何去做。 但是,脚本本身需要像用户名,密码和用户真实姓名这样的参数。 我仍然无法弄清楚如何将这些parameter passing给脚本,如下所示: var commands = data.toString().split('\n').join(' && '); 有没有人有一个想法,我可以通过这些参数,并通过SSH连接在node.js中执行bash脚本。 谢谢

在OSX中永久设置PATH环境variables

我已经阅读了几个关于如何在OSX上永久设置环境variables的答案。 首先,我试过这个, 如何在Linux / Unix上永久设置$ PATH? 但我有一个错误消息说no such file and directory ,所以我想我可以尝试~/.bash_profile而不是~/.profile但它没有工作。 其次,我find了这个解决scheme如何设置$ OSH的应用程序使用的$ PATH ,其中的build议进行更改 〜/ .MacOSX / environment.plist 但我又no such file and directory错误。 我需要一种方法来设置这些variables,以便每次打开新的terminal会话时都不需要重复设置这些variables。

如何将一个string拆分成bash shell中的多个variables?

我一直在寻找一个解决scheme,并发现类似的问题,只是他们试图拆分与他们之间的空格句子,答案不适合我的情况。 目前一个variables被设置为这样一个string: ABCDE-123456 我想分解成2个variables,同时消除“ – ”。 即: var1=ABCDE var2=123456 怎么可能做到这一点? 这是为我工作的解决scheme: var1=$(echo $STR | cut -f1 -d-) var2=$(echo $STR | cut -f2 -d-) 是否有可能使用不带分隔符的剪切命令(每个字符都被设置为variables)? var1=$(echo $STR | cut -f1 -d?) var2=$(echo $STR | cut -f1 -d?) var3=$(echo $STR | cut -f1 -d?) etc.

在Bash中从$ PATHvariables中删除path的最优雅的方法是什么?

或者更一般地说,我如何从Bash环境variables中的冒号分隔的列表中删除项目? 我以为我曾经见过一个很简单的方法,使用更高级的Bashvariables扩展forms,但是如果是这样,我已经失去了它的踪迹。 谷歌的快速search出乎意料地less了相关的结果,没有,我会称之为“简单”或“优雅”。 例如,两个分别使用sed和awk的方法: PATH=$(echo $PATH | sed -e 's;:\?/home/user/bin;;' -e 's;/home/user/bin:\?;;') PATH=!(awk -F: '{for(i=1;i<=NF;i++){if(!($i in a)){a[$i];printf s$i;s=":"}}}'<<<$PATH) 没有直接的存在吗? 在Bash中有没有类似split()的函数? 更新: 看来我要为我故意模糊的问题道歉, 我对解决一个具体的使用案例不感兴趣,而不是激起良好的讨论。 幸运的是,我明白了! 这里有一些非常聪明的技巧。 最后,我将以下三个函数添加到了我的工具箱中。 这个神奇的发生在path_remove中,主要是基于Martin York聪明地使用awk的RSvariables。 path_append () { path_remove $1; export PATH="$PATH:$1"; } path_prepend () { path_remove $1; export PATH="$1:$PATH"; } path_remove () { export PATH=`echo -n $PATH | awk -v RS=: […]

()中的错误的含义

我找不到任何一个简单直接的资源来说明下面这个BASH shell错误的含义和修复方法,所以我把它发现后发现了。 错误: -bash: [: too many arguments Google友好的版本: bash open square bracket colon too many arguments 。 上下文:在单个方括号中使用简单的比较运算符(如等于,大于等)的if条件,例如: VARIABLE=$(/some/command); if [ $VARIABLE == 0 ]; then # some action fi