我在 Windows 7 上的 VirtualBox 上运行 OpenBSD 5.7,以了解有关 Unix 的更多信息,但我无法使用sudo我的密码。我已经设置了一个名为的用户,adminvpn但是当我尝试使用sudo它运行任何命令时,它告诉我我的密码错误!
我已经尝试过我的 root 密码和我的用户密码,我 100% 确定它们是正确的,它们只是字母......我已经重新安装了 OpenBSD 3 次,这让我发疯。
当我尝试使用“adminvpn”密码时,我得到
adminvpn 不在 sudoers 文件中。此事件将被报告。
我可以使用 root 登录并使用我的 root 密码。我几乎要放弃与用户一起运行它了。
尝试创建一个if语句来检查文件是否是有效的符号链接(意味着它也存在)。
我试过:
[ -h "$1" -a ! -e "$1" ]
Run Code Online (Sandbox Code Playgroud)
...但这不起作用。如果文件不是有效的符号链接,或者根本不存在,我想执行代码。
我试图让我的 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 部分使用什么?
我正在尝试在循环中使用 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
我正在尝试在 docker 容器中进行健康检查。我发现这个命令:
\n\nwget --quiet --tries=1 --spider http://localhost:6077 || exit 1\nRun 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) 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 个字符。
我想在这里做的是只允许字符,而不是数字或符号,而是无限长度。
什么是正确的语法?谢谢
我想检查一个文件是否存在,不为空并且等于另一个文件。如果是这样,什么都不做。
如果它们不相等,则用cat "some text".
如果它们不存在或为空,则还创建文件 cat some text
我尝试了一些解决方案,但是每当我得到一个条件正确时,它就会使另一个失败,或者在不存在文件时失败。
解决这个问题的最干净的方法是什么?所有这些都使用 bash?
我想从 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 脚本创建文件