在非图形控制台 (<Ctrl><Alt><F...>) 和 X 会话之间复制/粘贴的最快方法是什么?
现在 :
有没有更简单的方法来做到这一点?非 X 控制台和 X 会话的主要选择是否可以合并?理想情况下,我想在控制台中选择文本,然后切换到 X 会话并粘贴它(单击鼠标中键)。这可以做到吗?
获取以下文件:
$ 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 的第一行的所有行:mno
sed
$ 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 …
简短版本(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
计算过十六进制的差异。看起来 :
f1
结束于c2 a0 55 53 44 0a
f2
结束于 20 55 53 44 0a
有人知道这里发生了什么事吗?有什么区别,更重要的是,它来自哪里?以下是包含这两个文件的 zip 文件的链接以及结果的屏幕截图dhex
。
我有以下文件:
\n$ cat test\nVilles visit\\U000000e9es\n
Run Code Online (Sandbox Code Playgroud)\n我如何解释这些\\UXXXXXXXX
代码,例如我如何得到:
$ cat test | pipe into something\nVilles visit\xc3\xa9es\n
Run Code Online (Sandbox Code Playgroud)\n 我正在使用| 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)
有没有办法在替换表达式中使用量词?
如何从以下文件(第 2 行和第 4 行)中删除所有包含def
ANDjkl
的行?我希望匹配也适用于字段的子字符串匹配。文件中的字段以空格分隔。
$ 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'
,但没有任何效果。
我知道它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) 同一分区挂载两次,在每个挂载点上显示不同的内容。这怎么可能?
# 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) 我遇到了这个解决方案来反转文件的内容:
$ cat f1
abc
def
ghi
jkl
$ perl -ne 'push @arr,$_;}{print reverse @arr;' f1
jkl
ghi
def
abc
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下大括号是如何工作的吗?我很困惑,右括号在左括号之前。
我有以下 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) 我读了一些关于真实用户 ID 和有效用户 ID 之间的区别的文章。我以为我明白了,但我有一个疑问:根据我的理解,在下面的示例中,命令$ id -un
应该返回root
为有效用户,而不是jack
:
$ 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)\nbashroot
已经 setuid 并属于root
,所以根据我的理解我预计$ id -un
会返回root
,而不是jack
。
我想念什么?
\n[编辑]\n更具体地说,既然两者都有 setuid ,为什么/usr/bin/bashroot
行为不像?/usr/bin/passwd
$ 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) 太长了;
在 EXT4 术语中,“块组”和“范围”是同一件事吗?
[编辑] 建议的“范围”功能在 Linux 的 ext4 文件系统中做什么?讨论并不能回答这个问题。虽然它清楚地解释了“范围”是什么,但它没有谈论“块组”,以及它是否是同一件事(它不是:请参阅下面的答案)。
细节
在这篇文章中,他们讨论了块组的结构:
根据维基百科,范围是块的范围。
这两个概念是同一件事,只是使用不同的名称吗?