小编For*_*ker的帖子

\e 和 ^[ 的区别

吉尔斯写道

字符 27 = 033 = 0x1b = ^[=\e

德米泽写道

^[ 只是 ESCAPE 的表示,而 \e 被解释为实际的 ESCAPE 字符

然后我还从TechRepublic 文章中找到了这一行

确保将键序列写为 \e[24~ 而不是 ^[[24~。这是因为 ^[ 序列等价于 [Esc] 键,在 shell 中用 \e 表示。因此,例如,如果键序列是 ^[[OP,则要使用的结果绑定代码将是 \e[OP。

但我一直在使用使用 ^[ 而不是 \e 的映射。

那么它们可以互换吗?我什么时候需要使用一个而不是另一个?

shell escape-characters key-mapping

17
推荐指数
1
解决办法
6807
查看次数

find 时使用 print0 选项输出较少?

我已经阅读了手册页和其他参考资料,但我仍然对 find 和-print0option的行为感到困惑。

-print0      This primary always evaluates to true.  It prints the pathname of
             the current file to standard output, followed by an ASCII NUL
             character (character code 0).
Run Code Online (Sandbox Code Playgroud)

第一条命令:

$ find /some/path/ -iname "*intro*jpeg" -o -iname "*intro*jpg" 2> /dev/null
/some/path//asdf199Intro-5kqlw.jpeg
/some/path/199intro-2jjaj.JPEG
/some/path/199intro-3.jpg
/some/path/wuer199intro-4.JPG
/some/path/xbzf199INTRO-1.jpg
Run Code Online (Sandbox Code Playgroud)

第二个命令:

$ find /some/path/ -iname "*intro*jpeg" -o -iname "*intro*jpg" 2> /dev/null -print0
/some/path/136intro-3.jpg/some/path/wuer136intro-4.JPG/some/path/xbzf136INTRO-1.jpg
Run Code Online (Sandbox Code Playgroud)

我可以看到第二个命令中的文件名是空字符分隔的,但是为什么我得到 3 个输出而不是上面的 5 个?

find

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

查看shell函数的当前定义

所以我一直在编辑 bashrc,并且我打开了一个带有工作函数定义的终端,尽管 bashrc 已经用错误的函数定义进行了更新。(因为在我获取更新的 bashrc 之前定义不会改变)在这种情况下如何查找工作函数定义?例如,如果我输入:

alias function_name
Run Code Online (Sandbox Code Playgroud)

我可以看到该别名的定义是什么。是否有类似功能的命令?如果没有,是否有命令可以输出当前终端正在使用的整个 bashrc?

function bashrc

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

内置命令何时加载到内存中

假设我cd在 shell 中输入。cd那一刻是从内存中加载的吗?我的直觉是这些内置命令是在内核加载后预加载到系统内存中的,但有人坚持认为只有在我实际调用命令时才加载它们(在 shell 上按 Enter 键)。你能告诉我是否有解释这个的参考资料吗?

shell-builtin

11
推荐指数
2
解决办法
534
查看次数

查找标志:-exec rm -rf vs -delete

我认为我在问题中提到的标志是相同的,但是我收到了前者的以下消息,但后者没有任何消息:

$ find . -mindepth 1 -type d -exec rm -rf {} \;
find: `./practice4': No such file or directory
find: `./practice10': No such file or directory
find: `./practice7': No such file or directory
find: `./practice9': No such file or directory
find: `./practice1': No such file or directory
find: `./practice5': No such file or directory
find: `./practice3': No such file or directory
find: `./practice6': No such file or directory
find: `./practice2': No such file or directory
find: `./practice8': No such …
Run Code Online (Sandbox Code Playgroud)

bash directory find rm

7
推荐指数
1
解决办法
7872
查看次数

终结符 ctrl-tab 键绑定

ctrl-tab终结符与按 具有相同的效果tab,但是当我看到设置中的键绑定时,没有任何内容映射到ctrl-tab,那么为什么要ctrl-tab保留?

现在,如果我使用 xterm,我知道解决这个问题的方法。所以基本上我想看看是否有类似的解决方法。解决方案是这样的,

将以下行添加到 .Xresources:

*vt100.translations: #override \n\
    Ctrl ~Shift <Key>Tab: string(0x1b) string("[27;5;9~") \n \
    Ctrl Shift <Key>Tab: string(0x1b) string("[27;6;9~") \n
Run Code Online (Sandbox Code Playgroud)

重新加载

xrdb ~/.Xresources
Run Code Online (Sandbox Code Playgroud)

并添加以下几行。在这里,我尝试使用 ctrl-tab 和 ctrl-shift-tab 循环浏览屏幕窗口

# Ctrl-Tab
bindkey "^[[27;5;9~" next

# Ctrl-Shift-Tab
bindkey "^[[27;6;9~" prev
Run Code Online (Sandbox Code Playgroud)

key-mapping gnome-terminator

6
推荐指数
1
解决办法
3395
查看次数

命令行上的猛拉文本存储在哪里?

当您使用 readline 命令删除命令行上的字符时(例如Ctrl-U,您可以使用 粘贴Ctrl-y,但它存储在哪里?它似乎根本不使用 X11 剪贴板。

command-line keyboard-shortcuts readline

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

为什么在 xargs -I 传递给 sh 的参数之前需要双破折号才能正常工作?

这是有问题的命令

 find . -name "*.txt" | xargs -Ifile sh -c 'echo $(basename $1) ' -- file
Run Code Online (Sandbox Code Playgroud)

因此,如果没有双破折号,file则不会传递给sh然后被识别为$1. 这是为什么?我知道这会--阻止随后的参数被识别为命令行选项。但是由于file没有以破折号开头,因此似乎没有理由将其识别为命令行选项。

shell bash arguments

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

密码保护系统文件?(例如/etc/resolv.conf)

我试图通过 OpenDNS 限制网络访问来控制自己。OpenDNS 帐户密码将交给值得信赖的人。现在,我想对 /etc/resolv.conf 进行一些限制,可能使用密钥或密码,而不是 root 密码。我也不想损害内核的可访问性。这可能吗?

password permissions dns encryption access-control

4
推荐指数
1
解决办法
507
查看次数

反转文件匹配的顺序作为参数

我有一个按特定顺序读取文件的程序。对于这个例子,它们都有相同的扩展名,txt

{program_name} {input 1...} {output}
Run Code Online (Sandbox Code Playgroud)

我碰巧将输出文件名命名为“a.txt”,因此它是我调用时的第一个结果ls,它显示了提供给此命令的文件的顺序:

{program_name} *.txt
Run Code Online (Sandbox Code Playgroud)

我希望第一个结果显示为最后一个。如何颠倒星号匹配的顺序?如果我需要使用管道,正确输入参数以便正确引用任何特殊字符或空格的语法是什么?

ls bash pipe shell-script

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

删除所有以括号开头的文件

我在一个以括号开头的目录中有很多文件。由于冲突,它们由 Dropbox 生成。转义的任何组合似乎都无济于事:

rm -rf "(*"
rm -rf "\(*"
rm -rf \(*
Run Code Online (Sandbox Code Playgroud)

正如froschutz所提到的,它们似乎不是ASCII字符。我怎样才能知道是否是这种情况,以及有什么解决办法?

character-encoding escape-characters

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