标签: bash

运行 shell 脚本时“找不到命令”。我打破了什么?

我在 OSX Snow Leopard 上。

以下是全文grr.sh

#!/bin/sh

echo wow
Run Code Online (Sandbox Code Playgroud)

当我尝试从终端运行它时:

$ grr.sh
-bash: grr.sh: command not found
$ /bin/sh grr.sh
wow
$ sh grr.sh
wow
$ bash grr.sh
wow
Run Code Online (Sandbox Code Playgroud)

好的。很公平。我会给它可执行权限,然后再试一次:

$ chmod +x grr.sh
$ grr.sh
-bash: grr.sh: command not found
$ chmod 755 grr.sh
$ grr.sh
-bash: grr.sh: command not found
Run Code Online (Sandbox Code Playgroud)

嗯。如果我明确使用 bash,也许它会起作用?我将文件的内容更改为:

#!/bin/bash

echo wow
Run Code Online (Sandbox Code Playgroud)

我得到了完全相同的结果。我能打破什么?!

最后一件事!如果你很好奇...

$ which sh
/bin/sh
Run Code Online (Sandbox Code Playgroud)

terminal bash macos

8
推荐指数
3
解决办法
6万
查看次数

在 xargs 中扩展 globs

我有一个这样的目录

mkdir test
cd test
touch file{0,1}.txt otherfile{0,1}.txt stuff{0,1}.txt
Run Code Online (Sandbox Code Playgroud)

我想在目录中的某些类型的文件上运行一些命令,例如 ls ,并将 * (glob) 扩展到文件名的所有可能性。

echo 'file otherfile' | tr ' ' '\n' | xargs -I % ls %*.txt
Run Code Online (Sandbox Code Playgroud)

此命令不会扩展 glob 并尝试查找文字“file*.txt”

我如何编写一个类似的命令来扩展 globs?(我想使用 xargs 以便该命令可以并行运行)

linux unix bash xargs macos

8
推荐指数
2
解决办法
4907
查看次数

BASH:延迟异步运行命令

实际上,我试图完成的是以下内容,其中 cmd1 需要一段时间才能运行(~1 分钟),而 cmd2 几乎在每次运行时立即返回:

  1. cmd1 启动
  2. 稍等片刻(~10 秒)
  3. cmd2 运行
  4. 再等一会儿
  5. cmd2 再次运行
  6. 过了一段时间
  7. cmd1 结束

必须编写脚本,因为它必须进入一个相当大的循环,该循环使用许多不同的参数运行 cmd1,然后对其他几个长时间运行的命令再次执行相同的操作。

我怎样才能做到这一点?

bash delay

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

双引号内的通配符是否通配符?

在“标准 BASH”上,双引号内是否有通配符?例如:

$ touch abc
$ ls "*abc*"
Run Code Online (Sandbox Code Playgroud)

会,还是不会在 bash 上工作?

有人告诉我 Ubuntu 附带了一个不符合 POSIX 或 BASH 的 bash 变体。真的吗?

bash globbing

8
推荐指数
1
解决办法
4940
查看次数

使用 Bash 脚本删除整个目录中的所有文件(四个最新的除外)

我正在寻找一个 Bash 脚本,该脚本将进入目录列表并删除除最近创建的四个文件之外的所有文件。

我怎样才能做到这一点?

linux bash bash-scripting

8
推荐指数
1
解决办法
6193
查看次数

较少模拟 TTY 以保留管道颜色输出

当您通过管道less传输某些内容时,程序通常会丢弃颜色代码,因为它不会输出到 TTY。因此,您必须添加--color=always选项才能使其工作。

ls -l --color=always | less
grep -R asdf --color=always | less
Run Code Online (Sandbox Code Playgroud)

更糟糕的是,有时甚至不支持该选项,因此实际上无法强制将颜色输出到管道。

有没有(相对)简单的方法来减少对 TTY 的模拟,这样我就不必--color=always在通过管道传输到每个程序时指定每个程序,并且它会在可能的情况下自动显示颜色输出?

bash colors tty less pipe

8
推荐指数
1
解决办法
4055
查看次数

为什么使用括号而不是反引号来执行“原位”命令?

我最近开始将我的 shell 脚本从使用反引号转移到括号来原位执行命令并在其他地方使用结果。例如:

for line in `cat file`
do
    echo "$line"
done
Run Code Online (Sandbox Code Playgroud)

现在我使用括号,替换为:

for line in $(cat file)
...
Run Code Online (Sandbox Code Playgroud)

这两种方法之间的实际区别是什么,为什么认为括号替换比反引号更好?

bash shell-script backticks

8
推荐指数
1
解决办法
3898
查看次数

iTerm2 上的 tmux 和 shell 拆分选项之间的区别?

我目前为我的开发环境切换到 iTerm2 + VIM。我注意到 iTerm2 的最新版本支持tmux并且有人使用tmux将窗口拆分为多个会话。我还注意到 iTerm2 具有开箱即用的选项,可以将窗口拆分为多个会话。例如,您可以通过使用 CMD+D 来垂直和水平拆分任意数量的会话。所以对我来说,您似乎可以使用这些选项完成相同的功能。我可能完全错了。

我的问题是:tmux在 iTerm2 上使用拆分选项有区别/好处吗?

bash shell iterm tmux macos

8
推荐指数
1
解决办法
3458
查看次数

+x 和 0755 的 Chmod 等价

只是好奇,这两个是完全等价的吗?

chmod +x file
chmod 0755 file
Run Code Online (Sandbox Code Playgroud)

bash shell

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

rc文件的全名是什么?例如bashrc?

可能重复:
vimrcscreenrc,是什么rc意思?

linux里面有很多rc文件?

.bashrc .vimrc .gvimrc 等等

我很好奇 rc 是什么意思?我在 google 或 wiki 中找不到任何信息

linux bash

8
推荐指数
1
解决办法
2312
查看次数

标签 统计

bash ×10

linux ×3

macos ×3

shell ×2

backticks ×1

bash-scripting ×1

colors ×1

delay ×1

globbing ×1

iterm ×1

less ×1

pipe ×1

shell-script ×1

terminal ×1

tmux ×1

tty ×1

unix ×1

xargs ×1