在 bash ( \bash --noprofile --norc
) 中,当插入符/回车符/光标 ( |
) 位于单词 ( ) 的中间时l|!@#asdf
,您可以双击 Tab 以显示ls
插入符 ( l
) 之前的单词的建议(对于此示例)。但在 zsh ( \zsh -f
) 中它根本不起作用——你必须在插入符号后有一个空格才能自动完成插入符号 ( l| !@#asdf
) 之前的单词。
这是 bash 擅长的几件事之一。谁能告诉我 zsh 中是否有启用此功能的设置?
在 bash ( \bash --noprofile --norc
) 中,当插入符/回车符/光标 ( |
) 位于单词 ( ) 的中间时l|!@#asdf
,您可以双击 Tab 以显示ls
插入符 ( l
) 之前的单词的建议(对于此示例)。但在 zsh ( \zsh -f
) 中它根本不起作用——你必须在插入符号后有一个空格才能自动完成插入符号 ( l| !@#asdf
) 之前的单词。
这是 bash 擅长的几件事之一。谁能告诉我 zsh 中是否有启用此功能的设置?
如果有人知道有关 Windows 更新操作的任何信息,请分享。
我目前正在运行 Pop!_OS 22.04(和其他几个临时发行版)并通过 rEFInd 引导到它。所以,我听到很多关于 Windows 破坏 GRUB 的评论,但我不知道那到底是什么意思。它会擦除EFI分区吗?它会从 EFI 分区中删除非 Windows 内容吗?也许别的什么?
我知道 rEFInd 基本上在 EFI 分区中有自己的文件夹,它会自动检测已安装的操作系统,您可以在同一文件夹中创建自定义启动项。这意味着 rEFInd 比 GRUB 更清晰(我记得 GRUB 还在/boot/
发行版的目录中存储了一些文件)。但我认为它没有解决“Windows 更新破坏了我的 GRUB (rEFInd)”问题。或者是吗?
由于 rEFInd 是一个独立的文件夹(实际上),因此可能无法通过 Windows(如果我有的话)启动 Pop 并删除引导加载程序的文件夹(无需通过 live CD 重新创建 rEFInd)。
PS 我只是对此感到好奇,我没有任何问题(因为我不再安装 Windows — 这让我松了一口气)。
我正在研究一个键盘映射脚本(将键从一种语言键盘布局映射到另一种键盘布局)。在努力让一切正常运行之后,我发现不同的字符在所有程序(perl、python)中的处理方式都不同。然后我在终端(kitty、gnome-terminal — 没关系)中运行一个简单的测试脚本(现在已简化):
python -c 'import sys;print(len(sys.argv[1]))' テスト
并得到了预期的结果:
3
但是如果我在 sh/bash (unix&utf-8) 文件中运行它:
#!/usr/bin/env bash
# or
#!/bin/sh
python -c 'import sys;print(len(sys.argv[1]))' テスト
我得到(./test.sh
):
9
这就是所有这些编码/解码/升级/降级 UTF-8 的东西在 Perl 中不起作用的原因(如果我从终端手动运行命令,它可能会在没有所有这些额外的编码功能的情况下工作)。
现在我有一个问题:为什么完全相同的命令会根据执行环境(终端仿真器与 shell 脚本)给出不同的结果?我怎样才能解决这个问题?
更新:
我忘了我的:
alias python='python3'
因此,对于 Python,python3
显式运行可以使两种情况下的一切都一样。但另一方面,对于 Perl:
echo 'print length $ARGV[0];' | perl -l -- - テスト
这工作相同,但在这两种情况下它输出9
。对于 Perl,没有不同的版本,我的版本是 5.30.0(在两种情况下打印的完全相同)。我是否必须在 Perl 本身中添加一些代码以使其像 Python3 一样工作(1 个 Unicode 字符的长度是 1 而不是 1-3 个字节)?