AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页

unix

Martin Hope
terdon
Asked: 2023-08-17 00:08:44 +0800 CST

现在解析 GNU ls 的输出是否安全?

  • 26

过去几十年来公认的观点是,解析ls( [1] , [2] ) 的输出从来都不是一个好主意。例如,如果我想将文件的修改日期及其名称保存到 shell 变量中,则这不是正确的方法:

$ ls -l file
-rw-r--r-- 1 terdon terdon 0 Aug 15 19:16 file
$ foo=$(ls -l file | awk '{print $9,$6,$7,$8}')
$ echo "$foo"
file Aug 15 19:16

只要文件名稍有不同,该方法就会失败:

$ ls -l file*
-rw-r--r-- 1 terdon terdon 0 Aug 15 19:16 'file with spaces'
$ foo=$(ls -l file* | awk '{print $9,$6,$7,$8}')
$ echo "$foo"
file Aug 15 19:16

如果文件的修改日期与今天不接近,情况会变得更糟,因为这可能会更改时间格式:

$ ls -l
total 0
-rw-r--r-- 1 terdon terdon 0 Aug 15 19:21  file
-rw-r--r-- 1 terdon terdon 0 Aug 15  2018 'file with spaces'

然而,较新版本的 GNU coreutilsls有两个选项,可以组合起来设置特定的时间格式并生成 NULL 界定的输出:

      --time-style=TIME_STYLE
              time/date format with -l; see TIME_STYLE below
[...]
     --zero end each output line with NUL, not newline
[...]
       The TIME_STYLE argument can be full-iso,  long-iso,  iso,  locale,  or
       +FORMAT.   FORMAT  is  interpreted like in date(1).  If FORMAT is FOR‐
       MAT1<newline>FORMAT2, then FORMAT1 applies  to  non-recent  files  and
       FORMAT2  to recent files.  TIME_STYLE prefixed with 'posix-' takes ef‐
       fect only outside the POSIX locale.  Also the  TIME_STYLE  environment
       variable sets the default style to use.

这里再次是设置了这些选项的文件(每行输出末尾的零被替换为#换行符,以稍微提高可读性):

$ ls -l --zero --time-style=long-iso -- *
-rw-r--r--+ 1 terdon terdon 0 2023-08-16 21:35 a file with a
newline#
-rw-r--r--+ 1 terdon terdon 0 2023-08-15 19:16 file#
-rw-r--r--+ 1 terdon terdon 0 2018-08-15 12:00 file with spaces#

ls有了这些可用的选项,我可以做许多传统上有害的事情。例如:

  1. 将最近修改的文件名放入变量中:

    $ touch 'a file with a'$'\n''newline'
    $ last=$(ls -tr --zero | tail -z -n1)
    bash: warning: command substitution: ignored null byte in input
    $ printf -- 'LAST: "%s"\n' "$last"
    LAST: "a file with a 
    newline"
    
  2. 引发这个问题的例子。另一个问题,在 Ask Ubuntu 上,OP 想要打印文件名和修改日期。有人使用和 一个巧妙的技巧发布了答案,如果我们添加到,它似乎非常强大:lsawk--zerols

    $ output=$(ls -l --zero --time-style=long-iso -- * | 
               awk 'BEGIN{RS="\0"}{ t=index($0,$7); print substr($0,t+6), $6 }')
    $ printf 'Output: "%s"\n' "$output"
    Output: "a file with a
    newline 2023-08-16"
    

我找不到一个可以打破这两个例子的名字。所以,我的问题是:

  1. 是否存在上述两个示例之一会失败的情况?也许有一些奇怪的地方?
  2. 如果不是,这是否意味着现代版本的 GNUls实际上可以安全地使用任意文件名?
shell
  • 3 个回答
  • 3946 Views
Martin Hope
Evan Carroll
Asked: 2023-07-30 05:04:18 +0800 CST

什么是“霍克吉”?

  • 35

内核中有很多常量以HORKAGE,

  • ATA_HORKAGE_ZERO_AFTER_TRIM
  • ATA_HORKAGE_NODMA
  • ATA_HORKAGE_ATAPI_MOD16_DMA
  • ATA_HORKAGE_NO_DMA_LOG
  • ATA_HORKAGE_NO_ID_DEV_LO
  • ATA_HORKAGE_NO_LOG_DIR
  • ATA_HORKAGE_WD_BROKEN_LPM

然而,这些并没有真正记录在案

根据 libata.force 强制 horkage 并抱怨它。为了与链路选择保持一致,15 号设备选择连接到主机链路的第一个设备。

"horkage" 是什么意思?

linux
  • 4 个回答
  • 5564 Views
Martin Hope
Sebastian Carlos
Asked: 2023-07-06 15:17:35 +0800 CST

为什么“yes&”会使我的 Bash 会话崩溃?

  • 30

“是的,而且……”是即兴喜剧中的一个很棒的经验法则。在 UNIX 世界中则不然。

当我运行这个公认的愚蠢yes&命令时,我无法中断它。终端崩溃或陷入循环。

我希望该yes进程立即暂停,因为如果尝试写入标准输出,后台的任何进程都应该暂停,但情况似乎并非如此,我想知道为什么。

bash
  • 2 个回答
  • 4866 Views
Martin Hope
Patrick Bucher
Asked: 2023-04-05 14:45:11 +0800 CST

我应该(仍然)为我的所有服务器使用 UTC 吗?

  • 28

我的雇主位于欧洲 (CET),因此我们使用夏令时,这需要每年两次前后移动一个小时。我们的服务器在不同位置的云中运行。设置所有基础设施的员工不在了。他决定在所有服务器(目前是 Ubuntu 18.04、20.04 和 22.04)上使用 UTC 作为系统时区。

这并不理想,因为您必须在日志文件中看到的每个日期都在心理上增加 1/2 小时,具体取决于一年中的时间(夏季 +2 小时,冬季 +1 小时)。一些 cronjobs 的时间也需要每年调整两次,因为任务应该在 CET 中午运行。

是否有充分的理由(仍然)使用 UTC 作为系统的时区?或者我应该改用 CET,以便我的 cronjobs 和日志文件更好地与挂钟保持一致?

linux
  • 4 个回答
  • 4574 Views
Martin Hope
Ole Tange
Asked: 2023-03-22 06:10:14 +0800 CST

rsync 文件`a`b

  • 27

是的,我知道你在想什么:“到底是谁命名他们的文件`a`b?”

但是让我们假设您确实有一个名为`a`b(可能是由疯狂的 Mac 用户制作的 - 显然不是您制作的)的文件,并且您想要rsync那个。显而易见的解决方案:

rsync server:'./`a`b' ./.;
rsync 'server:./`a`b' ./.;

给出:

bash: line 1: a: command not found
rsync: [sender] link_stat "/home/tange/b" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1865) [Receiver=3.2.7]
rsync: [Receiver] write error: Broken pipe (32)

甚至:

$ rsync 'server:./\`a\`b' ./.;
bash: line 3: a\: command not found
rsync: [sender] link_stat "/home/tange/\b" failed: No such file or directory (2)
:

rsync我应该运行的命令是什么?

$ rsync --version
rsync  version 3.2.7  protocol version 31
rsync
  • 3 个回答
  • 1557 Views
Martin Hope
Damn Vegetables
Asked: 2023-03-20 11:31:18 +0800 CST

为什么 Gnome 分数缩放是 1.7518248558044434 而不是 1.75?

  • 26

如果我在 Gnome 设置中设置 175% 缩放比例,该值将保存1.7518248558044434为~/.config/monitors.xml:

<monitors version="2">
  <configuration>
    <logicalmonitor>
      <x>0</x>
      <y>0</y>
      <scale>1.7518248558044434</scale>
      <primary>yes</primary>
      <monitor>
        <monitor spec>
          <connector>DP-3</connector>

为什么会这样?起初,我认为这可能是由于浮点舍入误差引起的,但 1.75 是那些可以表达精确值的快乐数字之一。

侏儒韦兰 43.3

gnome
  • 2 个回答
  • 7516 Views
Martin Hope
user356126
Asked: 2022-12-22 18:15:43 +0800 CST

内核如何知道它正在从休眠中恢复,而不是引导?

  • 30

当 Linux 系统休眠并从休眠中恢复时,我认为内核需要知道它正在恢复,而不是引导。否则,内核将启动通常的引导过程,并且不会加载交换的数据。内核如何知道它正在恢复?

起初,我以为GRUB(或其他引导加载程序)通过内核参数告诉内核。但是只要我查看/proc/cmdline,内核参数就和平时一样了。内核是否有任何机制知道它正在恢复?

linux-kernel
  • 1 个回答
  • 2194 Views
Martin Hope
Ian Christy
Asked: 2022-07-06 13:12:02 +0800 CST

为什么 awk -F 适用于大多数字母,但不适用于字母“t”?

  • 39
 July 2022      mac os Monterey V12.1 
   awk --version 20200816
   GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin21)

为什么awk -F对大多数字母有效,但对字母无效t?我有解决方案,但我想了解为什么 awk 对 letter 失败t。

# Count 'e's
% echo "tweeter" | awk -F "e" '{print NF-1}'
3

# Count 'r's
% echo "tweeter" | awk -F "r" '{print NF-1}'
1

# (Attempt to) count 't's
% echo "tweeter" | awk -F "t" '{print NF-1}'
0   <=== ????

# Use gsub()
% echo "tweeter" | awk '{print gsub(/t/, "")}'
2
awk macos
  • 2 个回答
  • 6945 Views
Martin Hope
manuel
Asked: 2022-05-28 05:12:56 +0800 CST

无法以 root 身份删除此文件 [重复]

  • 25
这个问题在这里已经有了答案:
无法删除文件,即使以 root 身份运行 3 个答案
为什么我不能以 root 身份删除此文件? (2 个回答)
5 个月前关闭。

我无法rm -rf /home/wordpress/testDomain.com从我的 Linux 机器中删除文件。Operation not permitted我得到一个错误,而不是文件被删除。我怎样才能解决这个问题?

$ cd /home/wordpress/testDomain.com/wp-content/plugins/sitepress-multilingual-cms/vendor/otgs
$ sudo rm -f annmanagement
rm: cannot remove 'annmanagement': Operation not permitted
$ ls -al
total 3308
drwxr-xr-x 2 www-data www-data    4096 May 27 13:43 .
drwxr-xr-x 3 www-data www-data    4096 May 27 13:46 ..
-r-------- 1 root     root     3375768 Dec 27  2016 annmanagement

$ sudo find . -inum 535255 -exec rm -i {} \;**
rm: remove regular file './annmanagement'? y
rm: cannot remove './annmanagement': Operation not permitted


$ lsattr
----i---------e----- ./annmanagement

$ stat annmanagement
  File: annmanagement
  Size: 3375768         Blocks: 6600       IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 535255      Links: 1
Access: (0400/-r--------)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-05-27 09:02:30.650849241 +0200
Modify: 2016-12-27 10:48:37.000000000 +0100
Change: 2022-03-15 07:59:42.524922372 +0100
 Birth: -

跟踪输出:

$ sudo strace rm -f annmanagement**
execve("/bin/rm", ["rm", "-f", "annmanagement"], 0x7ffc24e45690 /* 13 vars */) = 0
brk(NULL)                               = 0x55cd820a2000
arch_prctl(0x3001 /* ARCH_??? */, 0x7ffe7894d320) = -1 EINVAL (Invalid argument)
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=42697, ...}) = 0
mmap(NULL, 42697, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f8c5d386000
close(3)                                = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300A\2\0\0\0\0\0"..., 832) = 832
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
pread64(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32, 848) = 32
pread64(3, "\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\30x\346\264ur\f|Q\226\236i\253-'o"..., 68, 880) = 68
fstat(3, {st_mode=S_IFREG|0755, st_size=2029592, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8c5d384000
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
pread64(3, "\4\0\0\0\20\0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0", 32, 848) = 32
pread64(3, "\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\30x\346\264ur\f|Q\226\236i\253-'o"..., 68, 880) = 68
mmap(NULL, 2037344, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f8c5d192000
mmap(0x7f8c5d1b4000, 1540096, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x22000) = 0x7f8c5d1b4000
mmap(0x7f8c5d32c000, 319488, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19a000) = 0x7f8c5d32c000
mmap(0x7f8c5d37a000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e7000) = 0x7f8c5d37a000
mmap(0x7f8c5d380000, 13920, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f8c5d380000
close(3)                                = 0
arch_prctl(ARCH_SET_FS, 0x7f8c5d385580) = 0
mprotect(0x7f8c5d37a000, 16384, PROT_READ) = 0
mprotect(0x55cd80c6a000, 4096, PROT_READ) = 0
mprotect(0x7f8c5d3be000, 4096, PROT_READ) = 0
munmap(0x7f8c5d386000, 42697)           = 0
brk(NULL)                               = 0x55cd820a2000
brk(0x55cd820c3000)                     = 0x55cd820c3000
openat(AT_FDCWD, "/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=3035952, ...}) = 0
mmap(NULL, 3035952, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f8c5ceac000
close(3)                                = 0
ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
newfstatat(AT_FDCWD, "annmanagement", {st_mode=S_IFREG|0400, st_size=3375768, ...}, AT_SYMLINK_NOFOLLOW) = 0
unlinkat(AT_FDCWD, "annmanagement", 0)  = -1 EPERM (Operation not permitted)
openat(AT_FDCWD, "/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=2996, ...}) = 0
read(3, "# Locale name alias data base.\n#"..., 4096) = 2996
read(3, "", 4096)                       = 0
close(3)                                = 0
openat(AT_FDCWD, "/usr/share/locale/en_US.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en_US.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en_US/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en_US.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en_US/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, "rm: ", 4rm: )                     = 4
write(2, "cannot remove 'annmanagement'", 29cannot remove 'annmanagement') = 29
openat(AT_FDCWD, "/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en_US.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en_US.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, ": Operation not permitted", 25: Operation not permitted) = 25
write(2, "\n", 1
)                       = 1
lseek(0, 0, SEEK_CUR)                   = -1 ESPIPE (Illegal seek)
close(0)                                = 0
close(1)                                = 0
close(2)                                = 0
exit_group(1)                           = ?
+++ exited with 1 +++
files permissions
  • 1 个回答
  • 1905 Views
Martin Hope
Fajela Tajkiya
Asked: 2022-05-04 13:57:12 +0800 CST

使用 cat 创建文件时,我必须输入两次 ctrl+d 才能完成输入,这是预期的吗?[复制]

  • 29
这个问题在这里已经有了答案:
Ctrl+D 用于结束终端行输入 2 个答案
5 个月前关闭。

我刚刚学会了一个使用命令创建新文件的技巧cat。通过我的测试,如果最后一行没有换行,我必须键入ctrl+d两次才能完成输入,如下所示。

[root@192 ~]# cat > test
一个
b
ctrl+d[root@192 ~]# cat > test
一个
b ctrl+dctrl+d[root@192 ~]#

这是预期的吗?为什么会有这种行为?

cat newlines
  • 2 个回答
  • 2480 Views
Martin Hope
Fravadona
Asked: 2022-04-14 00:25:04 +0800 CST

如何防止自动附加到 .bashrc 生效?

  • 27

我正在寻找一种方法来消除某些附加代码以.bashrc自动强制加载其环境的安装程序的不良行为。这个问题出现了几次,主要是在 Conda 上,在某些情况下,用户最终会使用一个损坏的帐户阻止他们再登录。

我试图在 .bashrc 的末尾添加一个未关闭的 here-document,如下所示:

# .bashrc

#...

: <<'__END__'

哪个有效,但会产生解析错误烦人的警告。

什么是一种干净的方法(不使 .bashrc 只读)?

bash
  • 3 个回答
  • 1677 Views
Martin Hope
user149408
Asked: 2022-04-04 05:29:21 +0800 CST

将端口转发添加到正在运行的 SSH 会话

  • 23

OpenSSH 客户端有一个用于端口转发的命令行选项,使用如下:

ssh -L localport:server:serverport user@host

它将连接到hostas user,同时在localport客户端上重定向到serverporton server(可以是host或任何可host通过网络访问的东西)。

现在假设我已经通过 SSH 完成host了

ssh user@host

在会话中间我意识到我忘了转发端口。唉,我在做某事,所以我不只是想注销并通过端口转发重新建立 SSH 连接。

有没有办法将端口转发添加到正在运行的 SSH 会话中?

openssh port-forwarding
  • 2 个回答
  • 2242 Views
Martin Hope
DEKKER
Asked: 2022-04-01 06:40:04 +0800 CST

当 Linux 的驱动器字母用完时会发生什么?

  • 35

假设我有 50 个 USB 闪存驱动器。

我想他们会/dev/sda去/dev/sdz。之后是什么/dev/sdz?

linux filesystems
  • 1 个回答
  • 4480 Views
Martin Hope
Michael
Asked: 2022-02-16 11:40:33 +0800 CST

Linux上的Ctrl-Alt-Del等效?[复制]

  • 32
这个问题在这里已经有了答案:
Linux 桌面死机时该怎么办? (9 个回答)
8 个月前关闭。

我愚蠢地开始了一份工作,结果变得如此庞大和忙碌,以至于一切都冻结了。我希望我可以键入一个 kill 命令或使用 xkill,但系统没有响应,除了声音交换。在 Windows 上,Ctrl-Alt-Del 在这些情况下会有所帮助;Linux 有办法进入过载的系统吗?

刚看到这个,忍不住分享:

xkcd:和弦键盘

centos kill
  • 5 个回答
  • 5353 Views
Martin Hope
ks1322
Asked: 2022-01-23 03:03:53 +0800 CST

为什么重定向输出时'ping'不输出摘要?

  • 29

我可以 ping google.com几秒钟,当我按Ctrl+C时,底部会显示一个简短的摘要:

$ ping google.com
PING google.com (74.125.131.113) 56(84) bytes of data.
64 bytes from lu-in-f113.1e100.net (74.125.131.113): icmp_seq=2 ttl=56 time=46.7 ms
64 bytes from lu-in-f113.1e100.net (74.125.131.113): icmp_seq=3 ttl=56 time=45.0 ms
64 bytes from lu-in-f113.1e100.net (74.125.131.113): icmp_seq=4 ttl=56 time=54.5 ms
^C
--- google.com ping statistics ---
4 packets transmitted, 3 received, 25% packet loss, time 3009ms
rtt min/avg/max/mdev = 44.965/48.719/54.524/4.163 ms

但是,当我使用 将相同的重定向输出重定向到日志文件时tee,不会显示摘要:

$ ping google.com | tee log
PING google.com (74.125.131.113) 56(84) bytes of data.
64 bytes from lu-in-f113.1e100.net (74.125.131.113): icmp_seq=1 ttl=56 time=34.1 ms
64 bytes from lu-in-f113.1e100.net (74.125.131.113): icmp_seq=2 ttl=56 time=57.0 ms
64 bytes from lu-in-f113.1e100.net (74.125.131.113): icmp_seq=3 ttl=57 time=50.9 ms
^C

使用 重定向输出时,我也可以获得摘要tee吗?

linux signals
  • 2 个回答
  • 2683 Views
Martin Hope
Boris Kalinin
Asked: 2022-01-11 03:24:34 +0800 CST

为什么 tar 存档比文本文件大得多,10240 字节?

  • 34

我已经检查了这两个问题(问题一,问题二),但它们对我理解没有帮助。我有一个file.txt包含 40 行Hello World!字符串的文件。ls -l显示其大小为 520 字节。现在我将这个文件存档tar -cvf file.tar file.txt,当我ls -l再次存档时,我看到它file.tar是 10240 字节。为什么?

我已经阅读了一些手册,并且了解归档和压缩是不同的事情。但是有人可以解释一下它是如何工作的吗?

tar
  • 2 个回答
  • 5519 Views
Martin Hope
IsaIkari
Asked: 2022-01-04 07:38:55 +0800 CST

为什么要避免在 bash 脚本中使用“&&”?

  • 45

我正在编写一个 bash 脚本,其中包含一个带有两个条件的简单 if 部分:

  if [[ -n $VAR_A ]] && [[ -n $VAR_B ]]; then
    echo >&2 "error: cannot use MODE B in MODE A" && exit 1
  fi

一位高级工程师查看了我的代码并评论说:

当您可以简单地在后续行中执行这两个命令时,请避免使用 &&。

他没有进一步解释。但出于好奇,我想知道这是否属实,以及避免使用&&.

bash shell
  • 5 个回答
  • 13782 Views
Martin Hope
Thomas
Asked: 2021-11-16 02:24:50 +0800 CST

如何在无法使用 sudo 的情况下恢复损坏的 sudoers 文件?

  • 29

我收到以下错误sudo:

$ sudo ls
sudo: /etc/sudoers is owned by uid 1000, should be 0
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

当然chown,root如果不使用sudo. root我们的帐户也没有密码。

老实说,我不知道系统是如何陷入这种混乱的,但现在由我来解决它。

通常我会启动到恢复模式,但系统是远程的,只能在正常启动时通过 VPN 访问。出于同样的原因,从 Live CD 或 USB 记忆棒引导也是不切实际的。

系统是Ubuntu 16.04(EOL以后,别问了),不过问答可能比较笼统。

linux sudo
  • 3 个回答
  • 6101 Views
Martin Hope
cas
Asked: 2021-10-18 20:06:44 +0800 CST

/proc/*/cmdline 是世界可读的有什么原因吗?

  • 30

也许我今天还没有喝足够的咖啡,但我不记得或想不出为什么/proc/PID/cmdline应该是世界可读的——毕竟,/proc/PID/environ不是。

使其只能由用户(当然也可能是组和 root)可读,可以防止作为命令行参数输入的密码被随意暴露。

当然,它会影响其他用户的运行ps等等htop——但这是一件好事,对吧?那将是不使其具有世界可读性的关键。

linux permissions
  • 2 个回答
  • 6296 Views
Martin Hope
Kahn
Asked: 2021-10-08 05:08:44 +0800 CST

echo 0>file.txt 和 echo 0>file.txt 有什么区别?

  • 28

我看到这有以下行为:

[root@divinity test]# echo 0 > file.txt
[root@divinity test]# cat file.txt
0
[root@divinity test]# echo 0> file.txt

[root@divinity test]# cat file.txt

我还注意到,如果我包含""then 它会按预期工作:

[root@divinity test]# echo 0""> file.txt
[root@divinity test]# cat file.txt
0

我想这只是 IO 重定向的一部分,但我不太明白echo 0>在做什么。

shell io-redirection
  • 2 个回答
  • 3515 Views

Sidebar

Stats

  • 问题 200806
  • 回答 265436
  • 最佳答案 132718
  • 用户 66935
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve