【未完成】Linux & Windows 小技巧(3)

本文 ID:96ce21a0-74dc-11ea-9710-f933b352a768

Windows 下的 cat 和 grep

lscatgrep这三个命令,往往是 Linux 初学者最先了解、日常使用 Linux 时不可或缺的。对于 Windows 系统而言,同样有三个命令可以完成上述工作:dirtypefindstr

例如,用 type 显示文件内容:

或者用 findstr 结合管道匹配先前程序输出内容中的字符串:

也可以结合正则表达式:

当然,如果你不满足于系统命令的显示效果,你也可以尝试下面两款开源于 Github 的工具:

peco

项目链接:https://github.com/peco/peco

peco可以实现对管道输入的文本进行快速搜索、排序、多行选择等功能,使用 Golang 编写。目前仍不支持中文编码(GBK),且不支持默认的 Windows Powershell 终端(你需要使用传统的命令提示符,或者更先进的终端程序,比如 Hyper 或者 Windows Terminal)。该项目仍在活跃开发中,合理的使用可以提升效率。

bat

项目链接:https://github.com/sharkdp/bat

bat是一款替代 cat/type 的工具,使用 Golang 编写。加入了代码高亮、Git 增删标识、不可打印字符显示等功能。

使用参数 -A 可以显示所有不可打印字符:

软连接、硬链接

在 Linux 下,软连接(即符号链接)和硬链接的使用是非常普遍的。我们经常需要使用 ln 命令来进行创建。

创建硬链接的命令是:

1
ln [Target] [Link name]

创建软连接,只需要再加上参数 -s 即可。既然是“链接”,那么说明对链接指向的文件进行修改实际上就是对源文件本身进行修改。

硬链接与源文件必须处于同一文件系统内,且源文件必须真实存在。且硬链接的源文件必须是单一文件,不能是目录,因为这样会造成硬链接包含地狱。软连接的源文件则可以是文件,也可以是目录,且无需实际存在。源文件不存在的软连接成为死链接。软连接具有自己的权限与文件属性。软连接可以跨文件系统链接。删除硬链接和软连接均不会对源文件产生影响。

Windows 下 NTFS 文件系统中也有类似的概念,且 Windows 中也提供了对应的创建链接的命令。

创建软链接的命令是:

1
mklink [Link] [Target]

这个命令 Powershell 中是没有的,因此依然需要使用传统的命令提示符。同时注意,Link 和 Target 的顺序是相反的(这也导致我总是记错)。如果创建硬链接,加参数 /H 即可。

同时要注意,对于目录的软连接与符号链接有稍许不同。目录符号连接与 Linux 下的目录软链接基本等同,具有独立的文件属性,在移动时仍保持相对或绝对路径的链接关系,在复制时创建源文件的副本(同 Linux 下使用 cp 直接复制软连接。Linux 下的 cp -d 可以将软连接复制为软连接,而不是将软连接复制为文件)。而 Win 下的目录软链接在移动时,会在目标位置创建同名文件夹,并把源目录内的所有文件移动至新的目录。

创建目录符号连接的命令:

1
mklink /D [Link] [Target Dir]

创建目录软连接的命令:

1
mklink /J [Link] [Target Dir]

rm 删除除指定文件外的其他文件

Linux 下,删除一个文件 / 文件夹,或删除该文件夹下所有文件等操作都很简单。但如果想保留文件夹下某一个或某几个文件,同时删除其他文件,该如何操作?

可以结合 lsgrepxargs

1
ls | grep -vE ""

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×