多年来我一直在错误使用这8个核心的Linux命令
像所有长期使用 Linux 的用户一样,我已经记住了各种终端快捷键和命令,并且反复使用它们。但我也意识到,我并不总是充分利用这些工具。因此,这里介绍了正确使用它们的方法。
从文件列表中移除隐藏的快捷方式
Linux 上的隐藏文件既强大又方便,主要是因为它们非常简单。以句点(.)开头的文件是隐藏文件。默认情况下,它不会在终端列表和文件管理器中显示。
当你需要查看隐藏文件时,只需使用 -a 选项,一切就好,对吧?
ls -a
不过,最终,“.” 和 “..” 可能会开始让你感到烦。 这些特殊文件只是当前目录及其父目录的快捷方式。虽然它们非常有用,但每次列出文件时你并不需要每次都了解它们。
幸运的是,有一个简单的解决方案:-a 选项有一个对应的 -A,它会显示隐藏文件,但会隐藏这些快捷方式:
ls -A你可能想为这个命令或这里提到的其他命令设置一个别名。然后你可以像以前一样继续使用 ls,同时放心,你再也不需要看到“.”或“..”了。
递归地使用 grep 而不通过管道
我经常会使用 find 的 exec 选项来 grep 某些内容。这是一种模拟“在文件中查找”任务的基本方法:
find . -exec grep 'hello' {} \;但是这个命令很长,而且学习 find 的晦涩语法确实一点也不好玩。当我发现 grep 内置了对递归搜索的支持时,我感到很傻,但我仍然很高兴我学会了!这个命令方便得多,而且很容易学习:
grep -r 'hello'用一条命令创建多级目录
时不时地,你会发现自己想要创建像这样的深层目录结构:
mkdir blog/2024/09/16但是,令人沮丧的是,如果 blog、blog/2024 或 blog/2024/09 目录尚不存在,此命令将会失败:
错误信息甚至没有清楚地说明问题是什么!有用的是,一个简单的选项可以创建任何缺失的目录,尽管你可能会想为什么它不是默认选项。要创建一个目录,包括任何尚不存在的中间目录,只需使用 -p :
mkdir -p blog/2024/09/16
你可以通过将“p”记作“path”(路径)或“parents”(父节点)的缩写来记住这一点。
在两个目录之间 instant 切换
如果你经常使用命令行,你会习惯用 cd 来导航目录。你可能也习惯在两个目录之间切换,在一个目录运行命令,在另一个目录检查文件,来回操作。也许你甚至会使用 history 命令来重复之前的操作。
到现在,你不会惊讶地发现有更好的方法。这张光盘有几个秘密,但最有用的捷径之一是“cd -”形式:
每次运行“cd -”时,它都会在你之前访问的两个目录之间切换,使得来回移动变得非常快速和容易。
“cd -” 会打印它切换到的目录路径,即使你的提示符中已经显示了当前目录。
以最大保真度复制目录
你可能已经知道如何使用 cp -R 复制目录:
cp -R docs backup-docs此命令允许你复制整个目录结构,生成目录及其所有内容的完整副本,包括文件和其他子目录。它是备份文件或创建大型项目副本以进行工作的好方法。
然而,你可能会注意到这些副本并不完全与原件相同。它们的修改时间、所有者和权限可能都不同。例如,在以下情况下,副本的修改时间就与原件不同:
这些时间只相差一分钟,但问题可能更大。解决方法很简单:使用 -a(表示“归档”)而不是 -R:
用一个命令提取 tar.gz 文件
Tar 文件仍然是 Linux 上分发文件集合的最流行方式之一,尤其是源代码。它们通常使用 gzip 压缩,以减小下载或存储时的大小。如果你整个 Linux 生涯都使用过这两个程序,你可能已经习惯于闭着眼睛就能完成这种操作:
gunzip archive.tar.gz
tar xvf archive.tar它将首先解压 gzip 文件,然后解开其中的 tar 文件。但是,得益于现代方法,tar 可以使用 z 标志一次性完成这两个步骤,而不必使用 x:
tar zvf archive.tar.gz这种方法更方便,也不易出错。更重要的是,tar 的最新版本会自动检测 gzip 文件并自动解压!所以你可以直接跳到:
tar xvf archive.tar.gz使用 cat 快速查看文件
cat 命令之所以这样叫,是因为它可以连接——合并——文件。但你可能习惯于仅用它来查看文件内容。如果是这样,你可能不知道有几个有用的选项可以让使用 cat 查看文件变得更加方便。
首先,cat -s 会将多个空行合并在一起,使某些文件格式在终端中更容易查看。
其次,cat -b 会在输出中添加行号,但只对非空行有效。当你需要引用行号时,这会非常有用。
将它们一起使用,比如 cat -sb,你可以将 cat 用作一个简单的文件查看器,而无需使用像 less 这样的分页工具。
获取简明磁盘使用情况
了解目录占用多少空间在春季大扫除时非常有用。但 du 的默认行为会产生大量输出,因为它报告了整个层级结构中每个目录的大小。因此,你可能会多次执行该命令,将输出路由到 grep,重定向到临时文件,等等。
为了减轻你的困难,试着减少输出量。--max-depth 选项允许你指定 du 将报告多少级目录的内容。你仍然可以获得准确的总大小,只是关于目录树中每个目录的详细信息会少一些。例如,使用以下命令检查仅直接子目录的总大小:
du --max-depth 1您将看到当前目录及其直接子目录的结果,而不会看到它们下面每个目录的大小:
如果你想更多地了解如何掌握命令行,可以查看我们关于终端错误输入的指南,这些错误应该尽一切可能避免。









