标签: bash

使 zsh 历史搜索的行为类似于 bash reverse-i-search

  • bash中,按[CTRL]+[r]将打开reverse-i-search提示符。
  • 如何以类似的方式搜索 zsh 历史记录?

注意:搜索查询将仅命中完整命令的中间,而不是正常 zsh 搜索所需的开头匹配。

search bash zsh command-history

5
推荐指数
1
解决办法
4756
查看次数

为什么 htop 不只为我的本地计算机显示颜色?

TL;DR: macOS 11.0.1 上的 htop 3.0.4 在本地计算机上运行时不显示颜色,但如果通过 ssh 进入远程系统,从那里运行 htop 会毫无问题地显示颜色。


我在 macOS 11.0.1 上使用 htop 3.0.4 时遇到了一些奇怪的问题。应用程序本身的颜色根本不显示:

应用程序本身的颜色根本不显示

在 htop 设置中,“颜色”选项设置为“默认”:

“颜色”选项设置为“默认”

但是,退出 htop 可以在我常用的终端提示符和其他应用程序中正确显示颜色。此外,如果我通过 ssh 进入远程系统并通过同一终端会话使用 htop,颜色显示完全正常:

颜色在远程系统中显示得很好

问题在 iTerm 2 和终端中都可以重现,并且仅在此本地系统上使用 zsh 和 bash。$TERM=xterm-256color

msgcat在 iTerm 2 中运行了颜色测试,一切似乎都按顺序进行:

msgcat --颜色测试

我尝试通过自制软件重新注入 htop 包,但没有得到不同的结果。我检查了 htop GitHub,没有看到任何与此问题相关的错误,因此我首先假设我的本地计算机出现问题,在此询问。

为什么 htop 不只为我的本地计算机显示颜色?

terminal bash zsh colors htop

5
推荐指数
1
解决办法
2133
查看次数

`ssh-add <key>` 不会将我的密钥添加到代理中

我启动一个新的 shell(新的终端窗口),然后这是我运行的所有命令:

user@host :~ $ eval "$(ssh-agent -s)"
Agent pid 1413341
user@host :~ $ ssh-add -vvv ~/.ssh/keys/<mykey>
Enter passphrase for /home/mate/.ssh/keys/<mykey>: 
user@host :~ $ ssh-add -l
The agent has no identities.
Run Code Online (Sandbox Code Playgroud)

ssh-add不返回任何输出,但经过验证后,返回错误代码1(重试ssh-add ...一次echo $?)。但是,它实际上不会在 stderr 上打印任何输出。

命令后正确设置了环境变量 $SSH_AGENT_PID 和 $SSH_AUTH_SOCK eval "$(ssh-agent -s)"

PS:也尝试过完整操作eval "$(ssh-agent)",没有效果。

PS:除非我错过了什么,否则关于 stackoverflow、superuser 和 unix.stackexchange 的所有问题都在处理另一种特定情况,例如ssh-add单独运行(因此仅考虑标准关键位置)或未正确启动代理的人ETC...

linux ssh bash

5
推荐指数
1
解决办法
1951
查看次数

如何在 Git Bash 终端上自定义快捷键 (Windows 10)

如何在 Git Bash 终端上自定义快捷键?

当我使用选项 -> 键时,它只允许打开或关闭功能。我想要的是改变组合键。这是我的设置:

Git Bash 终端

Shift供您参考, +组合Insert不适用于我的特定笔记本电脑。当我按Shift+时Insert,这就是我得到的:

Shift + 插入

keyboard terminal keyboard-shortcuts bash git

5
推荐指数
1
解决办法
6227
查看次数

Windows 10 WSL:挂载创建 9p 文件系统而不是 drvfs

我想将 Windows C: 驱动器安装到 WSL 中的 /mnt/c 作为 drvfs 文件系统,但如果我指定 drvfs 作为文件系统类型,我会得到 9p 文件系统。

我输入了这些命令:

$ sudo umount /mnt/c
$ sudo mount -t drvfs C: /mnt/c/
$ mount -l
...
C: on /mnt/c type 9p (rw,relatime,dirsync,aname=drvfs;path=C:;symlinkroot=/mnt/,mmap,access=client,msize=65536,trans=fd,rfd=3,wfd=3)
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,类型是 9p 而不是指定的 drvfs。

windows linux mount bash windows-subsystem-for-linux

5
推荐指数
1
解决办法
5137
查看次数

在 sshfs 之后似乎没有考虑 Makefile 中的 cd

我有一个 Makefile,其中包含一个sshfs命令,后跟一个cd命令:

mr: # mount-remote
        sshfs -p 5022 -o nonempty myname@myssh.serveur.fr:mnt /home/julien/myworking_path
        cd ./working_directory_mwe1/wk_subd_mwe2/
Run Code Online (Sandbox Code Playgroud)

第一个命令 sshfs 就像一个魅力一样,可以正确安装两个端点。但是,cd 命令不会更改目录。然后我必须手动重新输入。如果我手动输入,它就可以工作,但我希望在输入命令时完成mr

我尝试了以下操作,但记住这可能是因为我在执行时连接了终端 2 秒,sshfs但这也不起作用。我尝试cd每秒重新运行一次,直到它起作用。

mr: # mount-remote
        sshfs -p 5022 -o nonempty myname@myssh.serveur.fr:mnt /home/julien/myworking_path
        until cd ./working_directory_mwe1/wk_subd_mwe2/ ; do sleep 1 ; done
Run Code Online (Sandbox Code Playgroud)

感谢您的热心帮助 :)

编辑:我忘记指定我尝试的最小工作目录cd正是端点处的目录,实际上,我意识到我的目标是:

mr: # mount-remote
        sshfs -p 5022 -o nonempty myname@myssh.serveur.fr:mnt /home/julien/myworking_path
        cd /home/julien/myworking_path/some_sub_dir1/som_sub_dir2
Run Code Online (Sandbox Code Playgroud)

linux bash command-line sshfs makefile

5
推荐指数
1
解决办法
5301
查看次数

每次打开终端时都会出现“命令未找到:完成”消息

我正在按照 Youtube 上的视频并运行命令后在 Ubuntu 20.04 上设置开发环境

$ echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.zshrc

每次我打开终端时都会出现消息:

/home/gustavo/.asdf/completions/asdf.bash:80:找不到命令:完成

有谁知道我可能做错了什么以及如何解决它?

只是指出,我是初学者。

linux terminal bash zsh ubuntu-20.04

5
推荐指数
2
解决办法
7227
查看次数

使用bash手动发送ARP包

如何使用 bash 或某些 Linux 实用程序将 ARP 数据包发送到 LAN 上的指定 IP?

linux bash arp utility

5
推荐指数
1
解决办法
6463
查看次数

向远程机器发送打印字符串命令

我想向远程计算机中运行的所有打开的终端进程打印一些字符串。目前我正在使用 ssh 连接远程计算机,然后将我的字符串回显到wall命令中:

local> ssh me@1.2.3.4
(prompt to provide credentials)
remote> echo "123" | wall 
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以在一个命令中完成所有操作,无需用户交互即可运行?

linux remote-desktop ssh bash command-line

5
推荐指数
1
解决办法
1277
查看次数

如何同时打印和管道日志文件?

我用它来检查日志文件的日志行,直到发生特定事件(取自此答案“监视文件直到找到字符串”):

(tail -f -n 0 test.log &) | grep -q 'SPEFICIC LOG MESSAGE'
Run Code Online (Sandbox Code Playgroud)

这可行,但我还希望在等待事件时将日志行打印到标准输出。我正在寻找类似的东西tee,但我想同时打印和管道。

我尝试了这个答案来管道并观察管道输出?, 导致:

(tail -f -n 0 test.log &) | tee /dev/fd/2 | grep -q 'SPEFICIC LOG MESSAGE'
Run Code Online (Sandbox Code Playgroud)

但随后该命令永远不会退出,大概是因为在找到匹配项时grep无法中断,因此继续将数据传送到?tailtailtee

bash grep tee

5
推荐指数
1
解决办法
1506
查看次数