小编wef*_*fa3的帖子

CTRL+4(和 CTRL+\)在 bash 中有什么作用?

我只是偶然发现CTRL+ 4 关闭stdin从命令行读取输入的程序。

这是我 在程序阅读中键入CTRL+4CTRL+时的样子/stdin

$ cat
wefwef
wefwef
^\Quit
$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
^\Quit
$
Run Code Online (Sandbox Code Playgroud)

我得到^\Quit显示,然后程序关闭。这与使用^Cor相比有什么区别^D?有什么作用^\Quit

编辑:发现CTRL+\做了同样的事情。

command-line shell terminal input special-characters

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

如何在 shell 中以不同方式显示控制字符(^C、^D、^[、...)

当您在 shell 中键入控制字符时,它们会使用所谓的“插入符号”显示出来。例如,Escape 以^[插入符号表示。

我喜欢自定义我的 bash shell 以使其看起来很酷。例如,我已经改变了我的PS1PS2变得彩色。我现在希望控制字符也能获得独特的外观,使它们与普通字符更容易区分。

$ # Here I type CTRL-C to abort the command.
$ blahblah^C
          ^^ I want these two characters to be displayed differently
Run Code Online (Sandbox Code Playgroud)

有没有办法让我的 shell 以不同的方式突出显示控制字符?

是否可以使其以粗体显示它们,或者使它们以与常规文本不同的颜色显示?

我在这里使用bash shell,但我没有标记问题,bash因为也许有一个适用于许多不同 shell 的解决方案。

请注意,我不知道在什么级别突出显示控制字符。我一开始以为是外壳本身。现在我听说它是readline控制控制字符在像bash这样的外壳中的方式。所以这个问题现在被标记为readline,我仍在寻找答案。

colors bash special-characters readline display

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

在文件名中使用哪些字符是有效的?

我似乎可以使用几乎任何有效字符在 unix 中创建文件名。

touch \; &&
touch \\ &&
touch \" &&
touch $'\n' &&
touch $'\t' &&
touch $'\v' &&
touch $'\23' &&
touch $'\13' &&
echo "DONE!"
Run Code Online (Sandbox Code Playgroud)

我发现唯一不起作用的字符是/NUL

touch /
touch $'\0'
Run Code Online (Sandbox Code Playgroud)

文件名中是否还有其他无效或无法使用的字符?

filesystems filenames files namespace

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

删除输入中前 N 行的命令

背景

我正在运行一个 SSH 服务器,并且我想删除这个用户。我无法删除此用户,因为他当前正在运行一些我需要先杀死的进程。

这是我当前使用的管道,用于查找我当前使用的用户的所有进程 ID:

ps -u user | awk '{print $1;}'
Run Code Online (Sandbox Code Playgroud)

输出如下所示:

PID
2121
2122
2124
2125
2369
2370
Run Code Online (Sandbox Code Playgroud)

我想通过管道kill -9来杀死所有进程,这样我就可以像这样删除这个愚蠢的用户:

ps -u user | awk '{print $1;}' | sudo xargs kill -9
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为PID标题:

kill: failed to parse argument: 'PID'
Run Code Online (Sandbox Code Playgroud)

问题

我认为必须有一个简单的 Unix 命令来删除第一行输入。

我知道我可以使用tail它,但我不想计算输入包含多少行来确定我想要显示多少行。

我正在寻找类似headtail但反转的东西(而不是显示流的第一/最后部分,它显示除流的开始/结束之外的所有内容)。

笔记

我设法通过简单地| grep [[:digit:]]在我的awk命令之后添加来解决这个问题,但我仍在寻找一种方法来删除文件的第一行,因为我认为在其他情况下会非常有用。

command-line sed awk tail head

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

在shell中间接扩展变量

我需要在bashshell 中间接引用一个变量。

我基本上想make通过写作来做你可以做的事情$($(var))

我曾尝试使用${$var}哪个是最直接的解决方案,bash但随后出现此错误:

bash: ${$var}: bad substitution
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

我想要做的是使用迭代变量将所有参数 ( $1, $2, $3, ...) 迭代到程序中,如果没有间接,我无法做到这一点。

shell bash environment-variables arguments variable

10
推荐指数
2
解决办法
3200
查看次数

检查用户登录的时间

是否可以检查用户登录的时间?或者当用户登录到 Unix/Linux 系统时?

不久前我在我的系统上以另一个用户身份登录,现在我想知道该用户已登录多长时间。

linux users login time

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

是否有 Unix 命令来引用输入行?

我想知道是否有一个过滤器命令来引用输入行。

所以当管道:

line number 1
line number 2
line number 3
Run Code Online (Sandbox Code Playgroud)

到它,你得到:

"line number 1"
"line number 2"
"line number 3"
Run Code Online (Sandbox Code Playgroud)

我需要这个命令来通过管道传输行以xargs确保xargs将其line number 1视为一个参数而不是三个参数。我相信它还有许多其他用途。

有这样的命令吗?这叫什么?

shell bash xargs command

4
推荐指数
2
解决办法
1374
查看次数

CTRL+4 是否等于 ^4 或 ^$ 以插入符号表示?

这是我一直在思考的问题。

这个维基百科页面建议Ctrl+{Symbol} 使用{Symbol}当用插入符号编写时的移位变体。

这表明,CTRL+\成为^|(而不是^\在插入符表示法)和CTRL+4^$(代替^4)。

但这假设是美式键盘布局。这如何适用于具有不同布局的其他国家/地区的键盘布局?

我想知道是否有一种标准的方法来用 Caret 符号编写符号。当您考虑带有英语键盘使用的其他符号位置的键盘布局时,插入符号似乎没有多大意义。

keyboard-shortcuts standard

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

如何模拟通过终端程序发送击键?

我需要将按键虚拟发送到终端程序(如viemacs)。

我想做这样的事情:

echo -e 'iHello, world!\e' | vi
Run Code Online (Sandbox Code Playgroud)

然后使用此缓冲区打开一个vi会话:

Hello, world!
~
~
~
~
~
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为vi不通过stdin读取击键。

我收到此错误:

ex/vi: Vi's standard input and output must be a terminal
Run Code Online (Sandbox Code Playgroud)

如何将一些文本字符串发送到终端程序,就像直接在键盘上键入字符串一样?

terminal keyboard input input-method

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