小编Pra*_*tic的帖子

“sh 兼容”是什么意思?

我已经看到通常在提到 shell 时使用的短语“sh compatible”。我不确定它是否也适用于可能在 shell 中运行的程序。

shell 或其他程序“sh 兼容”是什么意思?“sh不兼容”是什么意思?

编辑:这个问题询问 bash 和 sh 之间的区别非常相关: Difference between sh and bash

我仍然想直接回答“sh 兼容”的含义。一个合理的预期可能是“sh 兼容”意味着“实现了 Shell 命令语言”,但是为什么有这么多“sh 兼容”的 shell,它们为什么不同呢?

shell compatibility

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

配置中的反向 ssh 隧道

如何使用我的 ./ssh/config 文件建立反向 ssh 隧道?

我正在尝试重现此命令

ssh -R 55555:localhost:22 user@host
Run Code Online (Sandbox Code Playgroud)

在我的 .ssh/config 文件中,这样当我输入时,ssh host我会以用户身份和反向隧道通过 ssh 连接到主机。配置文件接受的命令是命令行标志的更详细的对应物。根据 ssh 手册页和 ssh_config 手册页,似乎相应的设置是 BindAddress。

在我的 .ssh/config 文件中,我有:

Host host
     Hostname host
     User user
     BindAddress 55555:localhost:22
Run Code Online (Sandbox Code Playgroud)

当我尝试时,这个和轻微的变化导致连接被拒绝

ssh localhost -p 55555
Run Code Online (Sandbox Code Playgroud)

一旦登录到主机。如果我在第一次 SSH 到主机时在顶部明确给出命令,同样的工作正常。我的配置文件在没有反向隧道命令的情况下也能工作;ssh host我以用户身份登录到主机。

ssh configuration ssh-tunneling

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

识别文件中的重复文本块

是否有一种方便的方法来识别文件中重复或接近重复的文本块?

我想用它来识别代码重复。看起来有具有此功能的专业程序,但我不打算参与其中。

我希望有一个类似于 diff 的工具可以做一种“文件内”差异。更好的是在单个文件中使用 vimdiff。

diff text-processing vimdiff

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

updateb 怎么比 find 快这么多?

怎么updatedb比 快这么多find

这是执行看似相似任务updatedbfind命令之间的定时比较。

比较.sh

#!/usr/bin/env bash

cmd="sudo updatedb"
echo $cmd
time eval $cmd

cmd="sudo find / \
    -fstype ext4 \
    -not \( \
        -path '/afs/*' -o \
        -path '/net/*' -o \
        -path '/sfs/*' -o \
        -path '/tmp/*' -o \
        -path '/udev/*' -o \
        -path '/var/cache/*' -o \
        -path '/var/lib/pacman/local/*' -o \
        -path '/var/lock/*' -o \
        -path '/var/run/*' -o \
        -path '/var/spool/*' -o \
        -path '/var/tmp/*' -o \
        -path '/proc/*' \
    \) &>/dev/null" …
Run Code Online (Sandbox Code Playgroud)

find locate updatedb

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

tarring 文件可以提高压缩率吗?

使用标准工具(例如 gzip、bzip2、xz)将一堆文件打包在一起是否可以提高压缩率?

我一直认为是这种情况,但从未测试过。如果我们将相同的 20Mb 随机字节文件的 2 个副本打包在一起,那么一个聪明的压缩程序可以将整个 tarball 压缩到几乎 20Mb。

我刚刚尝试使用 gzip、bzip2 和 xz 来压缩 1) 一个随机字节文件,2) 该文件的两个副本的 tarball,以及 3) 该文件的两个副本的猫。在所有情况下,压缩都不会减小文件大小。这是案例 1 的预期结果,但对于案例 2 和 3,最佳结果是一个 40Mb 的文件可以缩小到接近 20Mb。对于压缩程序来说,这是一个很难看到的见解,尤其是因为冗余是遥远的,所以我不期望一个完美的结果,但我仍然认为会有一些压缩。

测试:

dd if=/dev/urandom of=random1.txt bs=1M count=20
cp random1.txt random2.txt
cat random1.txt random2.txt > random_cat.txt
tar -cf randoms.tar random1.txt random2.txt
gzip -k random* &
bzip2 -k random* &
xz -k random* &
wait
du -sh random*
Run Code Online (Sandbox Code Playgroud)

结果:

20+0 records in
20+0 records out
20971520 bytes (21 MB) copied, 1.40937 s, 14.9 MB/s …
Run Code Online (Sandbox Code Playgroud)

tar compression

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

“文件描述符”中“描述符”的词源

描述词的选择总是让我觉得奇怪。“索引”或“id”似乎是更明显的选择。选择“描述符”这个词是否有已知的理由?

我猜“描述符”理解为它在概念上通常比数字更关键,但有时它确实非常数字,因此猜测似乎很弱。

file-descriptors history

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

测试命令是否接受特定选项

测试命令是否采用选项的首选方法是什么?有哪些注意事项?

作为一个激励示例,在登录时,我的 shell 别名 grep 以添加几个 --exclude-dir 选项,但此选项并非在我访问的所有机器上都可用。

grep options shell-script portability

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

`open()`、`mmap()` 是更基本的函数,还是两者都不是?

在 Linux 内核中, 是访问文件的更基本方式open()mmap()还是两者都不是?通过“基本的”,我的意思是“最终调用另一个还是调用另一个的简单辅助函数?”。

关于这两个函数的性能问题,堆栈网络上有很多问题。这个问题的希望是先验地了解 Linux 内核内部发生了什么。是否open()调用mmap()或一些基本实现的辅助函数mmap()?或者,是否mmap()调用open()或调用了一些本质上实现的辅助函数open()

问题的要点是这两个系统调用是否有根本的不同,或者一个是另一个的“便利功能”。

linux c files

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