203 lines
8.2 KiB
Markdown
203 lines
8.2 KiB
Markdown
|
|
# Linux 命令:你必须牢记的 10 个命令
|
|||
|
|
|
|||
|
|
> 原文:[https://python.land/the-unix-shell/basic-linux-commands](https://python.land/the-unix-shell/basic-linux-commands)
|
|||
|
|
|
|||
|
|
通过学习一些基本的 shell Linux 命令,您可以显著提高您的工作效率并加深对操作系统的理解。本教程中的 Linux 命令在 Bash 中工作,Bash 是 Linux 和 MacOS 上最常见的 shell。然而,替代 shells 大多与 Bash 兼容,因此它们应该在任何地方都可以工作!
|
|||
|
|
|
|||
|
|
如果您非常熟悉这些 linux 命令,请跳到下一节来学习一些更高级的命令和 shell 脚本。例如,学习[如何创建 Bash 脚本](https://python.land/the-unix-shell/creating-bash-scripts),或者在 Bash 中做[多重处理!](https://python.land/the-unix-shell/bash-multiprocessing)
|
|||
|
|
|
|||
|
|
目录
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
* [pwd:返回工作目录名](#pwd_%E2%80%8Areturn_working_directory_name "pwd: return working directory name")
|
|||
|
|
* [Linux 中的 ls 命令:列出目录内容](#ls_command_in_Linux_%E2%80%8AList_directory_contents "ls command in Linux: List directory contents")
|
|||
|
|
* [Linux 中的 cd 命令:改变目录](#cd_command_in_Linux_%E2%80%8AChange_directory "cd command in Linux: Change directory")
|
|||
|
|
* [cp Linux 命令:复制一个文件](#cp_Linux_command_%E2%80%8ACopy_a_file "cp Linux command: Copy a file")
|
|||
|
|
* [Linux 中的 mv 命令:Move](#mv_command_in_Linux_%E2%80%8AMove "mv command in Linux: Move")
|
|||
|
|
* [mkdir Linux 命令:制作目录](#mkdir_Linux_command_%E2%80%8AMake_directory "mkdir Linux command: Make directory")
|
|||
|
|
* [rmdir 命令:删除目录](#rmdir_command_Remove_directory "rmdir command: Remove directory")
|
|||
|
|
* [rm 命令:移除东西](#rm_command_remove_stuff "rm command: remove stuff")
|
|||
|
|
* [猫,少,尾,头命令:查看内容](#cat_less_tail_head_commands_View_contents "cat, less, tail, head commands: View contents")
|
|||
|
|
* [control+r:找到你之前的命令](#controlr_Find_your_previous_command "control+r: Find your previous command")
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
## pwd:返回工作目录名
|
|||
|
|
|
|||
|
|
让我们从知道一旦你打开你的终端你在哪里开始。这是通过 *pwd* Linux 命令完成的:
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
$ pwd
|
|||
|
|
/Users/erik
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
我在我的主目录里(在 Mac 上),你在哪里?
|
|||
|
|
|
|||
|
|
## Linux 中的 ls 命令:列出目录内容
|
|||
|
|
|
|||
|
|
现在让我们看看当前目录中有什么:
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
$ ls
|
|||
|
|
AndroidStudioProjects VirtualBox VMs
|
|||
|
|
Applications Desktop
|
|||
|
|
Documents flutter
|
|||
|
|
Downloads...
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
这里有很多因为我是一个乱七八糟的家伙,所以我截断了一点。ls 命令有许多方便的选项;这三个我一直在用:
|
|||
|
|
|
|||
|
|
* `-l`:(小写字母“ell”。)长格式列表。(见下文。)所有文件大小的总和在长列表之前的一行上输出
|
|||
|
|
* `-h`:与-l 选项一起使用,将文件大小改为更易读的大小,比如 10G、42M。在我的脑海里,我把它翻译成“人类可读的”
|
|||
|
|
* `-a`:‘所有’的简称;包括名称以点(.)
|
|||
|
|
|
|||
|
|
您可以根据需要任意组合,如下所示:
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
$ ls -lha
|
|||
|
|
total: 32
|
|||
|
|
drwxr-xr-x+ 85 erik staff 2.7K May 27 11:11 .
|
|||
|
|
drwxr-xr-x 6 root admin 193B Sep 29 2019 ..
|
|||
|
|
-rw-r--r-- 1 erik staff 2.1K Apr 15 11:06 .gitignore
|
|||
|
|
-rw-r--r-- 1 erik staff 25M May 26 15:44 image.zip
|
|||
|
|
...
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
您在这里看到的是访问权限、所有者和组、文件大小、文件的最后修改数据以及文件名本身。
|
|||
|
|
|
|||
|
|
在前两行,您可能会注意到一些奇怪的事情:两个名为`.`和`..`的文件:
|
|||
|
|
|
|||
|
|
* `.`是当前目录。它甚至有一个大小,这取决于目录中文件的数量
|
|||
|
|
* `..`是底层目录,当前目录是其中的一部分
|
|||
|
|
|
|||
|
|
这些便捷的快捷键可以在每个命令中使用。如果您想查看底层目录的内容,请使用`ls ../`。你也可以重复这个,所以如果你想下两个目录,可以用`ls ../../`。
|
|||
|
|
|
|||
|
|
## Linux 中的 cd 命令:改变目录
|
|||
|
|
|
|||
|
|
现在你知道你在哪里,有什么目录,你想四处导航。假设您的项目存储在项目文件夹中。您可以通过键入以下 Linux 命令来实现:
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
$ cd Projects
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
大多数 shells 支持自动完成。只需键入以下命令进行尝试:
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
$ cd Pro<TAB key>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
您的 shell 将自动补全单词,或者,如果多个目录与您键入的内容匹配,它通常会向您显示所有选项。
|
|||
|
|
|
|||
|
|
Thank you for reading my tutorials. I write these in my free time, and it requires a lot of time and effort. I use ads to keep writing these *free* articles, I hope you understand! **Support me by disabling your adblocker on my website** or, alternatively, **[buy me some coffee](https://www.buymeacoffee.com/pythonland)**. It's much appreciated and allows me to keep working on this site!
|
|||
|
|
|
|||
|
|
## cp Linux 命令:复制一个文件
|
|||
|
|
|
|||
|
|
您可能想要拷贝或复制一些文件。Linux 中的 cp 命令就是这么做的:它复制一个文件。它通过创建一个新文件并将所有内容复制到该文件来实现这一点。要将`file1.txt`复制到第二个文件,例如备份,使用:
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
$ cp file1.txt file1.txt.bak
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
要将文件复制到另一个目录,您可以使用:
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
$ cp file1.txt ./backups/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
`./`表示“当前目录”,所以`./backups`位于当前工作目录。
|
|||
|
|
|
|||
|
|
## Linux 中的 mv 命令:Move
|
|||
|
|
|
|||
|
|
如果需要移动文件,请使用 mv 命令。请注意,移动文件等同于重命名文件。事实上,Bash 命令行上没有 rename 命令。用 mv 和 cp 区别不大。要重命名/移动文件:
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
$ mv file1.txt file1.txt.bak
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
要将文件移动到另一个目录,例如当前工作目录中的备份文件夹:
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
$ mv file1.txt backups/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## mkdir Linux 命令:制作目录
|
|||
|
|
|
|||
|
|
这个 Linux 命令将简单地创建一个目录。要创建存储项目的目录,请使用:
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
$ mkdir Projects
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
这个命令有一个非常方便的参数,`-p`。当您使用它时,任何尚不存在的中间目录也将被创建。如果您想在一个名为`Projects`的目录中创建您的第一个项目,您可以使用:
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
$ mkdir -p Projects/my_first_project
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## rmdir 命令:删除目录
|
|||
|
|
|
|||
|
|
mkdir 的反义词是 rmdir:它删除一个目录。它甚至允许相同的`-p`参数。
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
$ rm Projects
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
要删除项目目录和我们刚刚创建的第一个项目:
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
$ rmdir -p Projects/my_first_project
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
移除目录**仅在该目录为空**时有效。如果您想删除一个目录,包括它的内容,请参见下面的 rm 命令!
|
|||
|
|
|
|||
|
|
## rm 命令:移除东西
|
|||
|
|
|
|||
|
|
现在我们进入了一个危险的领域。这个 Linux 命令非常强大,有可能*破坏您的文件系统*。小心使用。
|
|||
|
|
|
|||
|
|
让我们从删除 Linux 中的一个文件开始:
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
$ rm file1.txt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
噗!它不见了。没有你在其他操作系统中可能已经习惯的“垃圾桶”。
|
|||
|
|
|
|||
|
|
现在让我们删除我们的*项目*目录中所有以`.txt`结尾的文件。您需要一个所谓的 glob 模式来匹配多个文件:
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
$ rm Projects/*.txt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
如果要删除所有文件,请使用:
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
$ rm Projects/*
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
全球模式`*`匹配一切!
|
|||
|
|
|
|||
|
|
如果您想谨慎行事,请使用`-i`选项,它会强制您确认删除操作。
|
|||
|
|
|
|||
|
|
现在,作为压轴戏,让我们删除整个目录和文件树。为此,您需要参数`-r`,递归的简称。`rm -r`有时会拒绝删除特殊文件,或者不断要求确认。你可以使用强制选项`-f`清除它能清除的一切;不问任何问题。让我们删除所有项目:
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
$ rm -rf Projects
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
噗!你所有的工作都一去不复返了。就像我说的,小心处理!
|
|||
|
|
|
|||
|
|
## 猫,少,尾,头命令:查看内容
|
|||
|
|
|
|||
|
|
您经常想要快速检查文件的内容。有几个 Linux 命令可以帮助您做到这一点。选择一个符合您的使用案例的:
|
|||
|
|
|
|||
|
|
* 打印屏幕上的所有内容
|
|||
|
|
* 允许你在文件中滚动,甚至在里面搜索
|
|||
|
|
* `tail`:类似 cat,但只打印最后 10 行(默认)
|
|||
|
|
* `head`:类似 cat,但只显示前 10 行(默认)
|
|||
|
|
|
|||
|
|
尾部和头部都使用`-n <num>`选项来改变它显示的行数。
|
|||
|
|
|
|||
|
|
## control+r:找到你之前的命令
|
|||
|
|
|
|||
|
|
很容易忘记,所以快速找到您昨天或上周使用的 Linux 命令不是很好吗?你可以的!只需在键盘上点击`control` + `r`,开始输入你记得的那部分命令。这可以是任何部分!如果你找到的不完全是你要找的,通过反复点击`control` + `r`继续搜索。它会从你的命令历史中不断给你匹配。
|