小编Che*_*tar的帖子

如何在控制台和 X 会话之间复制/粘贴?

在非图形控制台 (<Ctrl><Alt><F...>) 和 X 会话之间复制/粘贴的最快方法是什么?

现在 :

  • 我用鼠标在控制台上选择文本(我已经安装了 gpm)
  • 然后我将文本粘贴到临时文件中
  • 最后我切换到 x 会话,打开临时文件,然后复制/粘贴其内容

有没有更简单的方法来做到这一点?非 X 控制台和 X 会话的主要选择是否可以合并?理想情况下,我想在控制台中选择文本,然后切换到 X 会话并粘贴它(单击鼠标中键)。这可以做到吗?

x11 tty clipboard console virtual-consoles

13
推荐指数
4
解决办法
2454
查看次数

sed :有一个范围以最后一次出现的模式结束(贪婪范围)

获取以下文件:

$ cat f1
stu vwx yza
uvw xyz abc
abc def ghi
def ghi jkl
ghi jkl mno
jkl mno pqr
mno pqr stu
pqr stu vwx
stu vwx yza
Run Code Online (Sandbox Code Playgroud)

要打印从包含GNU的第一行abc到包含GNU 的第一行的所有行:mnosed

$ sed -n '/abc/,/mno/p' f1
uvw xyz abc
abc def ghi
def ghi jkl
ghi jkl mno
Run Code Online (Sandbox Code Playgroud)

我怎样才能打印所有行,直到最后一行包含mno,例如我怎样才能得到以下结果:

uvw xyz abc
abc def ghi
def ghi jkl
ghi jkl mno
jkl mno pqr
mno pqr stu
Run Code Online (Sandbox Code Playgroud)

换句话说,有没有办法让GNU …

sed awk text-processing ed

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

shell 脚本未将空格用作参数分隔符(有人可以解释一下这个小文件差异吗?)

简短版本(TL;DR)

\n

我有 2 个小的单行文件,看起来相同:

\n
$ cat f1 f2\n./cconv.sh 100 EUR\xc2\xa0USD\n./cconv.sh 100 EUR USD\n
Run Code Online (Sandbox Code Playgroud)\n

但它们不是,大小有 1 个字节的差异:

\n
$ ls -l f1 f2\n(...) 24 oct.  30 16:19 f1\n(...) 23 oct.  30 16:19 f2\n\n$ diff f1 f2\n1c1\n< ./cconv.sh 100 EUR\xc2\xa0USD\n---\n> ./cconv.sh 100 EUR USD\n
Run Code Online (Sandbox Code Playgroud)\n

我曾经dhex计算过十六进制的差异。看起来 :

\n
    \n
  • f1结束于c2 a0 55 53 44 0a
  • \n
  • f2结束于 20 55 53 44 0a
  • \n
\n

有人知道这里发生了什么事吗?有什么区别,更重要的是,它来自哪里?以下是包含这两个文件的 zip 文件的链接以及结果的屏幕截图dhex

\n …

diff shell-script arguments hex

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

解释文本文件中的 \UXXXXXXXXXX Unicode 代码

我有以下文件:

\n
$ cat test\nVilles visit\\U000000e9es\n
Run Code Online (Sandbox Code Playgroud)\n

我如何解释这些\\UXXXXXXXX代码,例如我如何得到:

\n
$ cat test | pipe into something\nVilles visit\xc3\xa9es\n
Run Code Online (Sandbox Code Playgroud)\n

unicode

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

如何在 sed 替换表达式中使用量词?

我正在使用| sed缩进某些命令的结果(让我们$ echo something在此示例中使用简单的内容)。我想在结果前加上 10 个空格。以下工作正常:

$ echo something | sed 's/^/         /'
         something
Run Code Online (Sandbox Code Playgroud)

但是没有办法在| sed表达式中使用量词吗?

我试过例如

$ echo something | sed 's/^/ {10}/'
 {10}something
Run Code Online (Sandbox Code Playgroud)

但显然它不起作用。{10}不被解释为量词。

用反斜杠保护大括号也不起作用:

$ echo something | sed 's/^/ \{10\}/'
 {10}something
Run Code Online (Sandbox Code Playgroud)

有没有办法在替换表达式中使用量词?

sed regular-expression

7
推荐指数
4
解决办法
623
查看次数

删除包含两个字符串匹配项的行

如何从以下文件(第 2 行和第 4 行)中删除所有包含defANDjkl的行?我希望匹配也适用于字段的子字符串匹配。文件中的字段以空格分隔。

$ cat test2.txt 
1. abc def ghi
2. def ghi jkl
3. jkl mno pqr
4. jkl def stu
5. vwx yza bcd
Run Code Online (Sandbox Code Playgroud)

我设法使用布尔值OR( \|)来做到这一点:

$ sed '/def.*jkl\|jkl.*def/d' test2.txt 
1. abc def ghi
3. jkl mno pqr
5. vwx yza bcd
Run Code Online (Sandbox Code Playgroud)

有没有更简单的 boolean 语法AND,比如$ sed '/defANDjkl/d'

我试过sed '/def&jkl/d', sed '/def&&jkl/d',sed '/def\&jkl/d'sed '/def\&\&jkl/d',但没有任何效果。

text-processing

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

为什么即使是终端,mawk 的输出 (STDOUT) 也会被缓冲?

我知道它STDOUT通常由mawk(但不是gawk)、grep、等命令缓冲sed,除非与适当的选项(即mawk --Winteractive、 或grep --line-buffered、 或sed --unbuffered)一起使用。但是当STDOUT是终端/tty时不会发生缓冲,在这种情况下它是行缓冲的。

现在,我不明白的是为什么 STDOUT在循环之外缓冲发送到管道,即使最终目的地是终端。

一个基本的例子:

$ while sleep 3; do echo -n "Current Time is ";date +%T; done | mawk '{print $NF}'
^C
Run Code Online (Sandbox Code Playgroud)

很长时间没有任何反应,因为mawk似乎正在缓冲它的输出。

我没想到。mawk的输出是终端,那么为什么它是STDOUT缓冲的?

实际上,使用该-Winteractive选项,输出每 3 秒渲染一次:

$ while sleep 3; do echo -n "Current Time is ";date +%T; done | mawk -Winteractive '{print $NF}'
10:57:05
10:57:08
10:57:11 …
Run Code Online (Sandbox Code Playgroud)

shell awk buffer stdout

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

这怎么可能:同一个分区挂载两次,每次挂载显示不同的内容?

同一分区挂载两次,在每个挂载点上显示不同的内容。这怎么可能?

# mkdir /mnt/tmp
# mount -t ext4 -o noatime /dev/block/sda1 /mnt/tmp/

# mount | grep sda1
/dev/block/sda1 on /data type ext4 (rw,seclabel,noatime)
/dev/block/sda1 on /mnt/tmp type ext4 (rw,seclabel,noatime)

# ll /data
drwx------  2 root     root       4096 2021-08-19 18:34 adb
drwxrwxr-x  2 system   system     4096 2021-08-19 18:34 anr
drwxrwx--x  8 system   system     4096 2021-08-21 22:42 app
(...)
drwx--x--x  2 system   system     4096 2021-08-19 18:34 user
drwx--x--x  3 system   system     4096 2021-08-19 18:34 user_de
drwxrwx--x  3 root     root       4096 2021-08-19 18:34 …
Run Code Online (Sandbox Code Playgroud)

mount

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

Perl - 右大括号位于左大括号之前。它是如何工作的?

我遇到了这个解决方案来反转文件的内容:

$ cat f1
abc
def
ghi
jkl

$ perl -ne 'push @arr,$_;}{print reverse @arr;' f1
jkl
ghi
def
abc
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下大括号是如何工作的吗?我很困惑,右括号在左括号之前。

perl

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

带有基本名称的 find -exec 命令选项

我有以下 JPEG 文件:

$ ls -l
-rw-r--r-- 1 user group 384065 janv. 21 12:10 CamScanner 01-10-2022 14.54.jpg
-rw-r--r-- 1 user group 200892 janv. 10 14:55 CamScanner 01-10-2022 14.55.jpg
-rw-r--r-- 1 user group 283821 janv. 21 12:10 CamScanner 01-10-2022 14.56.jpg
Run Code Online (Sandbox Code Playgroud)

我用来$ img2pdf将每个图像转换为 PDF 文件。要做到这一点 :

$ find . -type f -name "*.jpg" -exec img2pdf "{}" --output $(basename {} .jpg).pdf \;
Run Code Online (Sandbox Code Playgroud)

结果 :

$ ls -l *.pdf
-rw-r--r-- 1 user group 385060 janv. 21 13:06 CamScanner 01-10-2022 14.54.jpg.pdf
-rw-r--r-- 1 …
Run Code Online (Sandbox Code Playgroud)

find options basename

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

有效与真实用户 ID :为什么在我的示例中它不返回 root 作为有效 ID?

我读了一些关于真实用户 ID 和有效用户 ID 之间的区别的文章。我以为我明白了,但我有一个疑问:根据我的理解,在下面的示例中,命令$ id -un应该返回root为有效用户,而不是jack

\n
$ sudo cp /usr/bin/bash /usr/bin/bashroot\n$ sudo chmod u+s /usr/bin/bashroot\n$ ls -l /usr/bin/bashroot \n-rwsr-xr-x 1 root root 1234376 oct.  25 15:42 /usr/bin/bashroot\n\n$ bashroot\n\n$ id -un\njack\n\n$ id -unr\njack\n
Run Code Online (Sandbox Code Playgroud)\n

bashroot已经 setuid 并属于root,所以根据我的理解我预计$ id -un会返回root,而不是jack

\n

我想念什么?

\n

[编辑]\n更具体地说,既然两者都有 setuid ,为什么/usr/bin/bashroot行为不像?/usr/bin/passwd

\n
$ ls -l /usr/bin/passwd \n-rwsr-xr-x 1 root root 63960 f\xc3\xa9vr.  7  2020 /usr/bin/passwd\n\n$ ls -l …
Run Code Online (Sandbox Code Playgroud)

root setuid

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

在EXT4中,“范围”和“块组”是同一件事吗?

太长了;

在 EXT4 术语中,“块组”和“范围”是同一件事吗?

[编辑] 建议的“范围”功能在 Linux 的 ext4 文件系统中做什么?讨论并不能回答这个问题。虽然它清楚地解释了“范围”是什么,但它没有谈论“块组”,以及它是否是同一件事(它不是:请参阅下面的答案)。

细节

这篇文章中,他们讨论了块组的结构:

块组

根据维基百科,范围是块的范围。

这两个概念是同一件事,只是使用不同的名称吗?

ext4

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