我已经看到通常在提到 shell 时使用的短语“sh compatible”。我不确定它是否也适用于可能在 shell 中运行的程序。
shell 或其他程序“sh 兼容”是什么意思?“sh不兼容”是什么意思?
编辑:这个问题询问 bash 和 sh 之间的区别非常相关: Difference between sh and bash
我仍然想直接回答“sh 兼容”的含义。一个合理的预期可能是“sh 兼容”意味着“实现了 Shell 命令语言”,但是为什么有这么多“sh 兼容”的 shell,它们为什么不同呢?
如何使用我的 ./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我以用户身份登录到主机。
是否有一种方便的方法来识别文件中重复或接近重复的文本块?
我想用它来识别代码重复。看起来有具有此功能的专业程序,但我不打算参与其中。
我希望有一个类似于 diff 的工具可以做一种“文件内”差异。更好的是在单个文件中使用 vimdiff。
怎么updatedb比 快这么多find?
这是执行看似相似任务updatedb的find命令之间的定时比较。
比较.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) 使用标准工具(例如 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) 描述词的选择总是让我觉得奇怪。“索引”或“id”似乎是更明显的选择。选择“描述符”这个词是否有已知的理由?
我猜“描述符”理解为它在概念上通常比数字更关键,但有时它确实非常数字,因此猜测似乎很弱。
测试命令是否采用选项的首选方法是什么?有哪些注意事项?
作为一个激励示例,在登录时,我的 shell 别名 grep 以添加几个 --exclude-dir 选项,但此选项并非在我访问的所有机器上都可用。
在 Linux 内核中, 是访问文件的更基本方式open(),mmap()还是两者都不是?通过“基本的”,我的意思是“最终调用另一个还是调用另一个的简单辅助函数?”。
关于这两个函数的性能问题,堆栈网络上有很多问题。这个问题的希望是先验地了解 Linux 内核内部发生了什么。是否open()调用mmap()或一些基本实现的辅助函数mmap()?或者,是否mmap()调用open()或调用了一些本质上实现的辅助函数open()?
问题的要点是这两个系统调用是否有根本的不同,或者一个是另一个的“便利功能”。