相关疑难解决方法(0)

重定向到 /dev/null

我正在阅读一个示例 bash shell 脚本:

#!/bin/bash

# This script makes a backup of my home directory.

cd /home

# This creates the archive
tar cf /var/tmp/home_franky.tar franky > /dev/null 2>&1

# First remove the old bzip2 file.  Redirect errors because this generates some if the archive
# does not exist.  Then create a new compressed file.
rm /var/tmp/home_franky.tar.bz2 2> /dev/null
bzip2 /var/tmp/home_franky.tar

# Copy the file to another host - we have ssh keys for making this work without intervention.
scp …
Run Code Online (Sandbox Code Playgroud)

shell-script null

227
推荐指数
4
解决办法
54万
查看次数

检查多个目录的存在

我想检查工作目录中是否存在多个目录,例如dir1dir2dir3

我有以下

if [ -d "$PWD/dir1" ] && [ -d "$PWD/dir2" ] && [ -d "$PWD/dir3" ]; then
    echo True
else
    echo False
fi
Run Code Online (Sandbox Code Playgroud)

但我怀疑有一种更优雅的方式来做到这一点。不要假设目录名称中存在模式。

目标是检查几个目录的存在和其他目录的不存在。

我正在使用 Bash,但首选可移植代码。

shell directory shell-script files control-flow

10
推荐指数
4
解决办法
7424
查看次数

> /dev/null 2>&1 是如何工作的?

我了解重定向输出如何> /dev/null导致它不打印到屏幕。

但由于某种原因,这并不总是足够的,有些东西仍然会被打印出来。

在这些情况下> /dev/null 2>&1就会达到预期的结果。

然而这让我有点困惑。有人能详细解释一下这是如何工作的吗?

特别令人困惑的是这&1部分。如果我看到,&我会想到“在后台运行”。不知道1是什么意思,如果是2呢?

linux io-redirection shell-script stdout stderr

0
推荐指数
1
解决办法
6417
查看次数