安装新软件后,使用 zsh 已打开的终端将不知道新命令,也无法为这些命令生成自动完成。显然打开一个新终端可以解决这个问题,但是可以重建索引(或任何你称之为的东西)以便自动完成可以在旧终端上工作吗?
我试过了,compinit但这没有帮助。另外,有没有一种不依赖于shell的方法?很高兴有一种方法来验证答案(除了卸载并重新安装它)。
我的意思是在输入命令名称的几个字符后,我可以按Tab,然后zsh应该做剩下的工作来调出全名。
grep --before-context 5 在比赛前显示 5 行。
我想在比赛前展示一切。
这样做grep --before-context 99999999会工作,但它不是很......专业。
如何显示匹配的所有文件?
是否有比以下更紧凑的杀死后台作业的形式:
for i in {1..5}; do kill %$i; done
Run Code Online (Sandbox Code Playgroud)
此外,{1..5} 显然有一个硬编码的幻数,我怎样才能使它成为“N”,而 N 是正确的数字,而不做:
$(jobs | wc -l)
Run Code Online (Sandbox Code Playgroud)
我实际上在 PS1 中使用 \j 来获取托管作业的数量,这是否等效?
我想从一行中删除最后一个字符:
[root@ozzesh ~]#df -h | awk '{ print $5 }'
Use%
22%
1%
1%
59%
51%
63%
5%Run Code Online (Sandbox Code Playgroud)
预期结果:
Use
22
1
1
59
51
63
5Run Code Online (Sandbox Code Playgroud) 当我在时tmux只显示一部分文本。如果我尝试向上或向下滚动,控制台会向上滚动而不是实际文本。如果我按 CTRL+b 后跟[,我会在状态栏中看到*tmux,如果我按向上或向下箭头,我实际上可以逐行向上/向下移动文本。当我按下时,q我会在状态行中看到bash。
当我CTRL+b跟随Page UP或Page控制台上升或下降但不是文本时。
如何一次向上或向下滚动多行文本?
我有一个 PEM 格式的 SSL CRT 文件。有没有办法可以从命令行中的证书中提取通用名称 (CN)?
我有一个 bash 脚本,我想从各个目录中删除文件。通常,它们不会在那里,因为它们不是生成的,这很好。有没有办法让脚本不报告该错误,但如果 rm 有其他一些输出来报告该错误?
或者,是否有更好的命令来删除噪音较小的文件?
我有一个 64 位(amd64 aka x86_64)Debian 或 Ubuntu 安装。我偶尔需要运行 32 位 (i386/i686) 程序,或者为 32 位系统编译程序。我怎样才能做到这一点,而不是大惊小怪?
奖励:如果我想使用较旧或较新版本的发行版运行或测试怎么办?
man 5 crontab 关于如何使用 crontab 在启动时运行脚本非常清楚:
These special time specification "nicknames" are supported, which replace the 5 initial time and date
fields, and are prefixed by the `@` character:
@reboot : Run once after reboot.
Run Code Online (Sandbox Code Playgroud)
所以我很高兴地在我的 crontab 中添加了一行(在我的用户帐户下,而不是 root 下):
@reboot /home/me/myscript.sh
Run Code Online (Sandbox Code Playgroud)
但出于某种原因,myscript.sh 不会在机器重新启动时运行。(如果我从命令行调用它,它运行良好,所以这不是权限问题)
我错过了什么?
更新以回答@Anthon 的问题:
/home 是挂载分区。看起来这就是问题所在。我该如何解决这个问题?myscript.sh仅将文本消息回显到/home/me.rm ×2
32bit ×1
64bit ×1
autocomplete ×1
bash ×1
certificates ×1
cron ×1
debian ×1
executable ×1
files ×1
openssl ×1
reboot ×1
shebang ×1
shell-script ×1
ssh ×1
terminal.app ×1
tmux ×1
ubuntu ×1
zsh ×1