假设我有这些文件:
foo/bar/baz/test.js
foo/bar/baz/test.min.js
如果我运行:
shopt -s globstar
shopt -s extglob
echo foo/bar/**/*!(.min).js
...但它仍然与test.min.js
文件匹配。
我该如何忽略它?
假设我有这些文件:
foo/bar/baz/test.js
foo/bar/baz/test.min.js
如果我运行:
shopt -s globstar
shopt -s extglob
echo foo/bar/**/*!(.min).js
...但它仍然与test.min.js
文件匹配。
我该如何忽略它?
我最近与一家新的托管公司建立了 Debian 12 VPS。它有:
/media/cdrom -> cdrom0/
/media/cdrom0/
并在/etc/fstab
:
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
我以前的托管公司的 Debian VPS 没有这个功能。新的托管公司是知名且有信誉的,但我感到惊讶,因为它向客户保证仅使用纯 debian 映像,而不进行修改。
为什么VPS要安装cdrom设备?我想删除它;恢复过程之类的事情是否需要它?
(或者也许我的旧主机禁用了 cdrom,而新主机正确地提供了库存 debian?)
我正在使用 bash。假设我有一个名为 的文件filelist
,其中包含文件列表:
stuff/**/*.csv # to keep it simple (without loops), assume just one entry
#*.txt
#foo.md
#bar.bin
我想扩展一下:
ls $(cat filelist)
我得到:
ls: 无法访问 'stuff/**/*.csv': 没有这样的文件或目录
我想要的是将其扩展为一个文件列表,我可以将其传输到我的主应用程序进行处理。我怎样才能做到这一点?
基于该scratch
镜像的 docker 容器缺少 shell。
那么它如何运行我放入其中的二进制文件呢?
术语“文件权限”和“文件模式”经常互换使用。但是,一些工具专门使用一个或另一个术语。有趣的是,这个古老的chmod
工具特指“文件模式”。
它们之间是否存在技术或历史差异?
我的 VPS 托管公司将“额外”注入新的 Debian(和其他)VPS 图像——脚本、网络配置、遥测等。
我如何将新的 VPS 与官方图像进行比较,以查看托管公司进行了哪些更改?
我将要部署的文件上传到远程目录。该远程服务器有一个脚本可以监视目录中的新文件:
inotifywait --monitor --event create --format '%f' --quiet /foo
当检测到新文件时,部署过程开始。
问题是上传需要时间 - 文件一开始写入就会被检测到。因此部署失败,因为它尝试使用部分文件。
有没有办法去抖动,inotifywait
所以它只有在完全创建后才报告新文件?
是否flatpak
有类似的卸载“清除”选项apt
?
目的:卸载应用程序和所有配置文件。
用于终止某个端口上的服务器的脚本:
#!/bin/bash
PORT="$1"
SIGNAL="$2"
if [ "${SIGNAL}" != "" ]; then SIGNAL=" -${SIGNAL}"; fi
lsof -i:"${PORT}" |\
grep -e "localhost:${PORT}" -e TCP -e LISTEN |\
tr -s ' ' |\
cut -d' ' -f2 |\
tee /dev/tty |\
xargs --no-run-if-empty kill "$SIGNAL"
作品:killbyport 4242
但是,如果我想做 akill -9
我会做: killbyport 4242 9
,并且错误:
kill: (-9): No such process
xargs
和不合作 - 我该kill
如何解决?
(PS:我想修复此脚本,而不是将其更改为其他内容。它几乎可以工作。)
我希望 tmux 在 ssh 登录时启动。
典型的建议是将其添加到~/.bashrc
:
if [ -z "$TMUX" ] && [ -n "$SSH_TTY" ] && [[ $- =~ i ]]; then
tmux attach-session -t mysession 2>/dev/null || tmux new-session -s mysession
fi
但是当我登录时,我从 tmux 收到此错误:
服务器丢失
...然后我像往常一样在 bash 中。
更新
当我添加睡眠时:
if [ -z "$TMUX" ] && [ -n "$SSH_TTY" ] && [[ $- =~ i ]]; then
tmux attach-session -t mysession 2>/dev/null || $(sleep 1 && tmux new-session -s mysession)
fi
...然后它的工作原理。奇怪的!是什么原因?
我添加了这个来~/.bashrc
提供彩色尾巴:
tailc () {
tail $@ | ccze
}
我可以这样运行它:tailc -f -n 10 foo/log.txt
但我不能在特权文件上使用它:
sudo tailc -f -n 10 /var/log/syslog
错误:
bash:tailc:找不到命令
我知道我可以这样做:sudo bash -i -c '...'
但我想知道是否可以在没有更复杂的语法的情况下运行它。我能做些什么才能打字sudo tailc ...
?
顺便说一句,我也添加了该功能/root/.bashrc
,但这也无济于事。
我是 iptables 的新手,多年来对 CLI 的变化感到困惑。我看到很多例子似乎做同样的事情,但语法不同。
这些是否完全相同,或者它们之间是否存在细微差别:
-p tcp -m state --state NEW
-p tcp -m conntrack --ctstate NEW
-p tcp -m tcp --syn
/-p tcp --syn
如果它们完全相同,我将使用-p tcp --syn
,这将简化/缩短我的配置。
我正在从 ufw 转移到 iptables。
ufw 中有一个默认的“限制”规则,如果一个 IP 地址在 30 秒内启动了 6 个以上的连接(sudo ufw limit ssh
),该规则就会生效。我对 SSH 流量(端口 22)使用该限制规则。
我已经在 iptables 中阅读了很多不同的方法来做到这一点,这只是令人困惑。我不确定是否使用connlimit
orlimit
或其他一些模块。
将此规则 1:1 映射到 iptables 的最简单方法是什么?
我不使用 snap,也从不安装 snap 包。
在新的 Ubuntu Server 18.04 上,snap list
显示:
尚未安装任何快照。
删除它是否安全?
我不确定后台发生了什么奇怪的依赖关系——所以我不想现在或将来意外破坏系统。(我想确定,因为在 ubuntu 桌面上,即使我不使用 snap,操作系统本身也会使用。)