标签: bash

如何在Bash脚本中迭代参数

我有一个复杂的命令,我想制作一个shell/bash脚本.我可以$1轻松地写出来:

foo $1 args -o $1.ext
Run Code Online (Sandbox Code Playgroud)

我希望能够将多个输入名称传递给脚本.什么是正确的方法呢?

当然,我想处理其中包含空格的文件名.

bash command-line

838
推荐指数
8
解决办法
58万
查看次数

在OS X上设置环境变量

在OS X中修改PATH等环境变量的正确方法是什么?

我在Google上看了一下,发现要编辑的三个不同文件:

  • 的/ etc /路径
  • 〜/ .profile文件
  • 〜/ .tcshrc文件

我甚至没有这些文件,我很确定.tcshrc是错误的,因为OS X现在使用bash.这些变量,尤其是PATH,在哪里定义?

我正在运行OS X v10.5(Leopard).

macos bash path environment-variables

837
推荐指数
21
解决办法
70万
查看次数

如何在Linux/Unix上永久设置$ PATH?

我正在尝试将路径添加到我的路径中,因此它始终位于我的Linux路径中.我试过了:

export PATH=$PATH:/path/to/dir
Run Code Online (Sandbox Code Playgroud)

这是有效的,但是每次我退出终端并启动一个新的终端实例时,这个路径都会丢失,我需要再次运行export命令.

我怎么能这样做才能永久设置?

unix linux bash zsh path

818
推荐指数
15
解决办法
150万
查看次数

如何执行shell命令?

在shell脚本中,如何回显所有调用的shell命令并展开任何变量名?例如,给定以下行:

ls $DIRNAME
Run Code Online (Sandbox Code Playgroud)

我希望脚本运行该命令并显示以下内容

ls /full/path/to/some/dir
Run Code Online (Sandbox Code Playgroud)

目的是保存所有调用的shell命令及其参数的日志.也许有更好的方法来生成这样的日志?

bash shell trace posix sh

812
推荐指数
11
解决办法
66万
查看次数

使用Unix工具解析JSON

我正在尝试解析从curl请求返回的JSON,如下所示:

curl 'http://twitter.com/users/username.json' |
    sed -e 's/[{}]/''/g' | 
    awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}'
Run Code Online (Sandbox Code Playgroud)

以上将JSON拆分为字段,例如:

% ...
"geo_enabled":false
"friends_count":245
"profile_text_color":"000000"
"status":"in_reply_to_screen_name":null
"source":"web"
"truncated":false
"text":"My status"
"favorited":false
% ...
Run Code Online (Sandbox Code Playgroud)

如何打印特定字段(用-v k=text?表示)?

bash parsing json

794
推荐指数
25
解决办法
87万
查看次数

如何从"查找"中排除所有"权限被拒绝"的消息?

我需要隐藏所有被拒绝的权限消息:

find . > files_and_folders
Run Code Online (Sandbox Code Playgroud)

我正在尝试这样的消息出现.我需要收集所有不会出现的文件夹和文件.

是否可以将权限级别定向到files_and_folders文件?

如何同时隐藏错误?

error-handling bash file-permissions find

778
推荐指数
11
解决办法
47万
查看次数

在bash shell脚本中传播所有参数

我正在编写一个调用另一个脚本的非常简单的脚本,我需要将参数从当前脚本传播到我正在执行的脚本.

例如,我的脚本名称是foo.sh和调用bar.sh

foo.sh:

bar $1 $2 $3 $4
Run Code Online (Sandbox Code Playgroud)

如何在不明确指定每个参数的情况下执行此操作?

bash command-line-arguments

769
推荐指数
10
解决办法
39万
查看次数

在Bash脚本中获取当前目录名称(没有完整路径)

如何在bash脚本中获取当前工作目录名称,甚至更好,只需一个终端命令.

pwd给出了当前工作目录的完整路径,例如/opt/local/bin但我只想要bin

bash shell

765
推荐指数
15
解决办法
64万
查看次数

什么是特殊的美元符号shell变量?

在Bash中,似乎有几个变量具有特殊的,一致意义的值.例如,

./myprogram &; echo $!
Run Code Online (Sandbox Code Playgroud)

将返回后台进程的PID myprogram.我知道其他人,比如$?我认为是目前的TTY.还有其他人吗?

bash environment-variables dollar-sign

751
推荐指数
3
解决办法
30万
查看次数

给定两个目录树,如何找出哪些文件有所不同?

如果我想找到两个目录树之间的差异,我通常只执行:

diff -r dir1/ dir2/
Run Code Online (Sandbox Code Playgroud)

这准确地输出了相应文件之间的差异.我有兴趣只获取内容不同的相应文件列表.我假设这只是一个传递命令行选项的问题diff,但我在手册页上找不到任何内容.

有什么建议?

unix linux bash shell diff

743
推荐指数
7
解决办法
48万
查看次数