小编Shu*_*hum的帖子

unix,以“/”和“//”开头的路径之间的区别

在 unix/linux 中,路径中任意数量的连续正斜杠通常等效于单个正斜杠。例如。

$ cd /home/shum
$ pwd
/home/shum
$ cd /home//shum
$ pwd
/home/shum
$ cd /home///shum
$ pwd
/home/shum
Run Code Online (Sandbox Code Playgroud)

然而由于某种原因,绝对路径开头的两个正斜杠被特殊对待。例如。

$ cd ////home
$ pwd
/home
$ cd ///
$ pwd
/
$ cd //
$ pwd
//
$ cd home//shum
$ pwd
//home/shum
Run Code Online (Sandbox Code Playgroud)

补丁中任何其他地方的任何其他数量的连续正斜杠都会被截断,但开头的两个将保留,即使您随后在相对于它的文件系统中导航。

为什么是这样?/... 和 //... 之间有什么区别吗?

linux bash slash filenames

57
推荐指数
3
解决办法
2万
查看次数

如何使补丁忽略已应用的帅哥

我有一个非常大的补丁文件,我正试图将其应用到我的代码中。问题是,我的补丁中的一些更改已经存在于代码中。有没有办法让补丁优雅地忽略已经应用的更改?

该-N选项不符合我的要求。如果它遇到一个已经应用的大块,它将生成一个拒绝文件,并且不会再向该文件应用任何大块。我希望它忽略那个大块头并继续应用补丁的其余部分。我希望它生成 .rej 文件的唯一时间是无法应用大块头并且似乎尚未应用。

有没有办法做到这一点?

patch

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

有人可以解释不同类型的 unix 域套接字吗?

如果我运行netstat --all | grep ^unix一些输出的套接字路径,则前面带有一个“@”,而一些则没有。我注意到浏览文件系统时,前面带有“@”的那些不会出现,ls但其余的会出现。

这两种socket是什么,它们有什么区别?

socket

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

使 vimdiff 将不同的行显示为不同的行(不是部分不同的)

vimdiff 有一个恼人的习惯,就是将两条几乎完全不同的行显示为相同的部分不同的行,仅仅因为它们在开头或结尾共享一个共同的字符。

例如:

foo.txt包含:The quick brown fox jumps over the lazy dog。 bar.txt包含:This is a completely different line。

vimdiff foo.txt bar.txt并排显示这两行Th,除了开头之外的所有内容都突出显示。

有没有办法禁用此行为并仅将不同的行显示为不同的行?

vim vimdiff

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

如何恢复损坏/部分删除的 git 存储库

我不小心rm -r在我的 .git 目录上运行了一个。幸运的是,rm当它到达一个写保护的文件时停止了,但我仍然在我的 .git 中丢失了一些东西。

我还有的文件:

FETCH_HEAD
ORIG_HEAD
config
gitk.cache
logs/
objects/
Run Code Online (Sandbox Code Playgroud)

我丢失的文件:

HEAD
description
hooks/
index
info/
packed-refs
refs/
Run Code Online (Sandbox Code Playgroud)

据我所知,我失去的唯一无法重新克隆的东西是我的暂存区和我的裁判的变化。我准备失去我的暂存更改,但我真的需要恢复我的 HEAD 和我的分支。有没有办法做到这一点?比如说,通过查找没有子项的提交,检查它们以查看它们是什么并为它们创建分支?目前 git 甚至不再将我的存储库识别为存储库。

git data-recovery

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

可以加载“不同意符号版本”的内核模块

我下载了我的内核的源代码,应用了一个补丁并重建了它,现在我有一个内核模块,当我尝试时insmod,它会抱怨“模块中的未知符号”并dmesg给出错误“不同意符号的版本......” .

无需寻找此模块的源代码并针对我的内核重建它,是否有可能以某种方式强制内核接受此模块?

我意识到这很危险,但如果可能的话,我会冒险。

linux kernel kernel-modules

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

复制目录,但如果目标文件已存在则失败

cp -a foo/* bar/会将 foo 的内容复制到 bar 中,替换任何已存在的文件。我可以使用 -n 标志来cp不覆盖现有文件或-i使其以交互方式询问是否覆盖文件。

问题

  • cp如果文件已经存在,有没有办法使失败并返回错误代码?
  • 如果没有,是否可以使用rsync其他常用工具?

cp rsync

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

标签 统计

linux ×2

bash ×1

cp ×1

data-recovery ×1

filenames ×1

git ×1

kernel ×1

kernel-modules ×1

patch ×1

rsync ×1

slash ×1

socket ×1

vim ×1

vimdiff ×1