标签: shell

为 rm 命令设置别名并使其更安全的最佳实践

前段时间我错误地删除了我的主文件夹,因为我rm -rf *在错误的终端上运行了 a ,其工作目录是主文件夹!

我希望我有一个rm命令的别名,但事实并非如此。

现在,我打算制作一个脚本作为rm.

你有什么最佳实践建议吗?

谢谢。

unix script bash shell rm

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

以黑色背景显示的红色文件名是什么意思?

我有一个编译问题,当我检查我的 lib/ 目录时,我从“ls”得到这个输出:

ls 输出

红/黑组合是什么意思?

我按照此处的建议检查了“dircolors -p”的输出(文件名以红色背景显示是什么意思),但我找不到答案。

此外,权限/用户/大小/时间戳位置的问号是什么意思?

谢谢你的帮助

bash shell ls

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

如何在shell中测试一个变量是否等于一个数字

我有这个无法正常工作的 shell 脚本。

输入:

Server_Name=1
if [ $Server_Name=1 ]; then  
echo Server Name is 1  
else
echo Server Name is not 1
fi
Run Code Online (Sandbox Code Playgroud)

输出:

Server Name is 1
Run Code Online (Sandbox Code Playgroud)

但是,如果我改变Server_Name=2,输出是:

Server Name is 1
Run Code Online (Sandbox Code Playgroud)

当我更改Server_Name为 时2,我希望它说:Server Name is 2

我知道这是if [ $Server_Name=1 ];一部分。

我如何解决它?

linux bash shell shell-script

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

如何在 Mac OS X 中设置我的 shell?

我知道我可以在终端首选项中设置“Shells open with”,但我很好奇是否有任何系统范围的设置方式(类似于在某些 Unix 中更新 /etc/passwd )。

mac terminal shell macos

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

Linux命令查找最近n秒内更改的文件

我想要一个 Linux 命令来查找在最后n几秒钟更改的文件。

是否有可以从命令行界面或 GUI 运行的 shell 脚本或其他工具?

linux bash shell find

21
推荐指数
5
解决办法
4万
查看次数

编写可在任何 shell 上运行的 shell 脚本(使用多个 shebang 行?)

我刚刚开始更深入地研究 shell 脚本,我总是把我的脚本放在一个文件中,标记它chmod +x然后完成/path/to/script.sh并让任何默认的解释器使用它,我认为它是 zsh,因为这就是我用于我的外壳。显然,它似乎只是/bin/sh默认情况下,即使我从 zsh 提示符执行脚本,因为我开始将特定于 zsh 的东西放入我的脚本中,除非我运行zsh /path/to/script.sh.

为了切入正题,以下是我的问题:

  1. #!/path/to/shell开头没有 shebang 行 ( )时,哪个 shell 执行脚本?我假设/bin/sh但我无法确认。
  2. 在编写可在任何平台上运行的 shell 脚本方面,什么被认为是“最佳实践”?(好吧,这是一种开放式)
  3. 如果 zsh 不可用,是否可以编写一个尝试使用 zsh 并回退到 bash 的脚本?我试过放置两条shebang行,如下所示,但是bad interpreter: /bin/zsh: no such file or directory如果我在没有zsh的机器上尝试它只会出错。

    #!/bin/zsh

    #!/bin/bash

bash zsh shell shell-script bash-scripting

21
推荐指数
1
解决办法
7820
查看次数

从另一个目录运行脚本

很多时候,我想要执行的脚本不在我当前的工作目录中,我真的不想离开它。

从另一个目录运行脚本(BASH、Perl 等)是一个好习惯吗?他们通常会找到正常运行所需的所有东西吗?

如果是这样,运行“远程”脚本的最佳方法是什么?是吗

. /path/to/script
Run Code Online (Sandbox Code Playgroud)

或者

sh /path/to/script
Run Code Online (Sandbox Code Playgroud)

以及sudo在这种情况下如何使用?例如,这不起作用:

sudo . /path/to/script
Run Code Online (Sandbox Code Playgroud)

linux script bash shell command-line

21
推荐指数
3
解决办法
11万
查看次数

如何逃脱“!” 和 docker 环境变量中的“&”

我有一个 docker 容器,我想运行它并把它交给一些密码。一个带有感叹号!,另一个带有&符号&。所以我想运行这个:

docker run -i -t --rm \
-e "LDAP_FILTER=(&(objectCategory=person)(objectClass=user)" \
-e "LDAP_PASS=Secret!Password" \
user-prefix/container-name
Run Code Online (Sandbox Code Playgroud)

那行不通。&被替换为{LDAP_FILTER}并被!截断。我很确定我必须逃避这些。但是\!\&没有成功。

shell escape-characters escaping docker

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

在 .zshrc 中设置 $PATH 变量的正确方法是什么

当我第一次安装 Zsh(使用 Oh My Zsh)时,~/.zshrc默认情况下该文件具有以下注释行:

# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

作者在这里想说什么?Bash 是 macOS 和 Linux 上的默认 shell,所以是的,我来自 Bash。他们是想说我应该取消对第二行的注释吗?或者他们是说我应该做一些我应该在互联网上寻找的其他设置?

欢迎任何精通的人解释$PATH当我第一次在装有 OS X 10.11 El Capitan 的 MacBook 上安装 Zsh 时我应该如何配置正确的方式。

zsh shell

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

$@ 作为 bash 脚本函数参数是什么意思

$@作为 bash 脚本函数参数是什么意思?

例子:

function foo()
{
    echo "$@" 1>&2;
}
Run Code Online (Sandbox Code Playgroud)

bash shell

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