小编jam*_*lin的帖子

如何为公钥ssh授权而不是密码授权解锁帐户?

ssh 不允许我登录,因为帐户已锁定。我想在我的服务器上解锁用户以通过 ssh 进行公钥授权,但不启用密码登录。

我试过了:

# passwd -u username
passwd: unlocking the password would result in a passwordless account.
You should set a password with usermod -p to unlock the password of this account.
Run Code Online (Sandbox Code Playgroud)

身份验证日志条目:

Mar 28 00:00:00 vm11111 sshd[11111]: User username not allowed because account is locked
Mar 28 00:00:00 vm11111 sshd[11111]: input_userauth_request: invalid user username [preauth]
Run Code Online (Sandbox Code Playgroud)

password ssh

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

是否可以在 nano 中的制表符和空格之间轻松切换?

通常我想nano用空格替换制表符,所以我set tabstospaces在我的.nanorc文件中使用。有时,我想对nano需要真正制表符的 makefile 进行快速编辑。

有没有办法动态切换tabstospaces?大多数其他选项都有切换它们的键,但我找不到相关的东西。我也试过使用^I(默认情况下绑定到tab函数)来插入一个选项卡,但这尊重tabstospaces设置。

我目前的解决方法是set tabstospaces取出我的.nanorc文件并添加 shell 别名:

 alias nanotabs="$(which nano)"
 alias nano="$(which nano) --tabstospaces"
Run Code Online (Sandbox Code Playgroud)

nano

12
推荐指数
1
解决办法
5696
查看次数

使用 CDPATH=".:/some/path" 时,如何禁止打印子目录的完整路径?

我想使用 bashCDPATH指向我经常访问的目录的符号链接目录。但是,这样做:

export CDPATH="~/symlinks"
Run Code Online (Sandbox Code Playgroud)

导致cd SUBDIR停止工作,如果./SUBDIR~/symlinks/SUBDIR同时存在; CDPATH目录优先于当前工作目录。

我尝试使用以下方法解决此问题:

export CDPATH=".:~/symlinks"
Run Code Online (Sandbox Code Playgroud)

这确实解决了优先级问题,但现在cd到子目录总是打印其完整路径:

$ pwd
/foo/bar
$ cd baz
/foo/bar/baz
Run Code Online (Sandbox Code Playgroud)

这有点烦人。我知道我可以通过执行抑制所有cd输出alias cd='> /dev/null cd',但我确实喜欢为其他CDPATH条目(或执行cd -)打印的路径。有什么我可以做的更好的吗?

bash cd-command

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

如何永久纠正上一个 bash 命令中的拼写错误?

在 bash 交互式 shell 中输入命令时出现拼写错误的情况并不罕见。我希望能够纠正 bash 历史记录中的拼写错误,以便错误的命令不会污染它并导致我稍后意外地重新执行它。特别是,我想编辑最后一个命令。

很多 问题 询问如何防止意外编辑bash 历史记录 。我想要相反:我想明确编辑历史记录。

根据参考问题的一些解释,我尝试这样做:

$ echo foo
Run Code Online (Sandbox Code Playgroud)

Up,将其更改为:

$ echo foobar
Run Code Online (Sandbox Code Playgroud)

Down,但这没有任何作用,如果我然后按Enter,它将执行修改后的命令并保留两者

echo foo
echo foobar
Run Code Online (Sandbox Code Playgroud)

在我的历史中。

我知道我可以使用 手动删除历史记录条目history -d,但我还没有设计出一种方便使用它的好方法。我不想创建一个 shell 函数来无条件删除最后一个历史条目,因为我仍然希望能够使用它Up来加载最后一个条目,以便我可以更正它。我可以进行更正,然后删除倒数第二个历史条目,但这感觉很笨拙,而且对于长时间运行的命令来说尤其烦人,因为我要么需要记住稍后执行额外的步骤,要么需要暂时暂停执行这些步骤,然后继续。

我想要的是:

  • 理想情况下,我希望能够做的是按Up,对之前的命令进行更正,然后按一些特殊的键绑定或向命令行添加一些魔术标记,以使其在执行时替换历史记录条目。

  • 也可以接受的是按其他按键序列从历史记录中检索和编辑命令(类似于 Ctrl+R),该命令在执行时会覆盖历史记录条目。

  • 删除倒数第二个历史条目的强大shell函数是可以接受的,但并不理想。

我想其他人肯定也会犯错,并且当这些命令污染他们的历史时也会同样感到恼火。其他人做什么?

bash command-history readline

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

标签 统计

bash ×2

cd-command ×1

command-history ×1

nano ×1

password ×1

readline ×1

ssh ×1