小编Fre*_*edo的帖子

为什么我不能在 OpenBSD 上使用 sudo?

我在 Windows 7 上的 VirtualBox 上运行 OpenBSD 5.7,以了解有关 Unix 的更多信息,但我无法使用sudo我的密码。我已经设置了一个名为的用户,adminvpn但是当我尝试使用sudo它运行任何命令时,它告诉我我的密码错误!

我已经尝试过我的 root 密码和我的用户密码,我 100% 确定它们是正确的,它们只是字母......我已经重新安装了 OpenBSD 3 次,这让我发疯。

当我尝试使用“adminvpn”密码时,我得到

adminvpn 不在 sudoers 文件中。此事件将被报告。

我可以使用 root 登录并使用我的 root 密码。我几乎要放弃与用户一起运行它了。

sudo openbsd

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

检查符号链接是否损坏或不存在

尝试创建一个if语句来检查文件是否是有效的符号链接(意味着它也存在)。

我试过:

[ -h "$1" -a ! -e "$1" ]
Run Code Online (Sandbox Code Playgroud)

...但这不起作用。如果文件不是有效的符号链接,或者根本不存在,我想执行代码。

shell-script symlink test

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

如何在使用 @ 的服务后使用 systemd

我试图让我的 systemd 服务在wireguard 之后启动,但我不知道该怎么做,因为wireguard 使用systemd @ 格式。

find /etc -name *wg-quick*                                                                                                                                                                                               
/etc/systemd/system/multi-user.target.wants/wg-quick@wg0.service 
Run Code Online (Sandbox Code Playgroud)

我在 systemd 的 after 部分使用什么?

systemd

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

如果文件名包含括号,则查找失败

我正在尝试在循环中使用 find 来创建一个变量,该变量包含一个与文件名 + 所需字符串匹配的文件

例子:

file1.en.srt
file1.mkv
file1.pt.srt
Run Code Online (Sandbox Code Playgroud)

这是代码的相关部分:

shopt -s nullglob
shopt -s nocaseglob

if [ -d "$1" ]; then
    for file in "${1%/}/"*mkv; do
        # Get filename to match against subs and audios
        filename="$(basename "$file" .mkv)"

        # Find matching subtitle file
        engsubs="$(find . -name "$filename*en.srt*" | sed -e 's,^\./,,')"   

        # Find matching audio file
        engaudio="$(find . -iname "$filename*en.ac3" -o -iname "$filename*en.eac3" -o -iname "$filename*en.dts" | sed -e 's,^\./,,')" 
    done
fi
Run Code Online (Sandbox Code Playgroud)

如果文件不包含括号,它会起作用,但find命令找不到名称包含括号的文件的任何内容。为什么会发生这种情况?我想创建一个像$en这样包含的变量file1.en.srt

bash find shell-script filenames

2
推荐指数
1
解决办法
1520
查看次数

wget --spider 失败并显示 404,但无需 --spider 即可工作

我正在尝试在 docker 容器中进行健康检查。我发现这个命令:

\n\n
wget --quiet --tries=1 --spider http://localhost:6077 || exit 1\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题是,当容器运行时,如果我在不带 --spider 的情况下运行 wget,我会得到 HTTP 200 代码,但如果使用 --spider,则会返回 404。

\n\n

为什么会发生这种情况?

\n\n
$ wget --tries=1  http://localhost:6077\n--2019-04-22 04:20:12--  http://localhost:6077/\nResolving localhost (localhost)... 127.0.0.1, ::1\nConnecting to localhost (localhost)|127.0.0.1|:6077... connected.\nHTTP request sent, awaiting response... 200 OK\nLength: 436 [application/xml]\nSaving to: \xe2\x80\x98index.html.1\xe2\x80\x99\n\n\n$ wget --tries=1 --spider  http://localhost:6077\nSpider mode enabled. Check if remote file exists.\n--2019-04-22 04:21:46--  http://localhost:6077/\nResolving localhost (localhost)... 127.0.0.1, ::1\nConnecting to localhost (localhost)|127.0.0.1|:6077... connected.\nHTTP request sent, awaiting response... 404 Not Found\nRemote file does not …
Run Code Online (Sandbox Code Playgroud)

wget

2
推荐指数
1
解决办法
4575
查看次数

Case 语句只允许字母字符?

case "$1" in
all)
  echo "$1"
  ;;
[a-z][a-z][a-z][a-z][a-z][a-z])
  echo "$1"
  ;;
*)
  printf 'Invalid: %s\n' "$3"
  exit 1
  ;;
esac
Run Code Online (Sandbox Code Playgroud)

有了这个,唯一接受的输入是全部和 6 个字符。它不会接受 4 个字符或超过 6 个字符。

我想在这里做的是只允许字符,而不是数字或符号,而是无限长度。

什么是正确的语法?谢谢

bash case

1
推荐指数
2
解决办法
3282
查看次数

检查文件是否存在,不为空且等于另一个

我想检查一个文件是否存在,不为空并且等于另一个文件。如果是这样,什么都不做。

如果它们不相等,则用cat "some text".

如果它们不存在或为空,则还创建文件 cat some text

我尝试了一些解决方案,但是每当我得到一个条件正确时,它就会使另一个失败,或者在不存在文件时失败。

解决这个问题的最干净的方法是什么?所有这些都使用 bash?

scripting files

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

创建扩展一个变量但不扩展另一个变量的文件

我想从 bash 脚本创建一个文件。但是我需要扩展一些变量并从字面上打印其他变量这可能吗?

cat <<EOF >  file.sh
$EXPAND
$PRINTLITERALLY
EOF
Run Code Online (Sandbox Code Playgroud)

此外,我正在尝试创建一个非常大的文件,当我尝试将其粘贴到终端中进行测试时,出现如下错误:

-bash: urlencode: command not found
Run Code Online (Sandbox Code Playgroud)

所以看起来我可能有 bash 正在解释的东西,在运行它时会影响我的 bash 脚本吗?我觉得必须有更好的方法来从我的 bash 脚本创建文件

shell-script cat

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

标签 统计

shell-script ×3

bash ×2

case ×1

cat ×1

filenames ×1

files ×1

find ×1

openbsd ×1

scripting ×1

sudo ×1

symlink ×1

systemd ×1

test ×1

wget ×1