Skip to content

Linux 基础

linux知识繁杂多样,建议一边仔细阅读,一边尝试敲命令

要注意点、下划线、空格、横杠等等符号,它们都不是多余的

探索命令行

Linux 命令行中的命令使用格式都是相同的:

bash
命令名称 参数1 参数2 参数3 ...

参数之间用任意数量的空格分开。关于命令行,可以先阅读一些基本常识(建议从如何简单操作?开始看,通常我们只用得到简单的命令,前面的内容用不到)

然后我们介绍最常用的一些命令:

  • (重要)首先教一个命令 sudo 代表用root账户执行(敲完之后会让你敲当前登录账户的密码,密码敲的过程中没有*****这种传统敲密码的提示 为 linux 传统艺能 其实是敲进去了)。因为本身普通账户没什么权限,会出现处处的权限提示

  • ls 用于列出当前目录 (即"文件夹") 下的所有文件 (或目录). 目录会用蓝色显示。ls -l 可以显示详细信息。

  • pwd 能够列出当前所在的目录。

  • cd DIR 可以切换到 DIR 目录。在 Linux 中,每个目录中都至少包含两个目录:. 指向该目录自身,.. 指向它的上级目录。文件系统的根是 /.

  • touch NEWFILE 可以创建一个内容为空的新文件 NEWFILE, 若 NEWFILE 已存在,其内容不会丢失。

  • cp SOURCE DEST 可以将 SOURCE 文件复制为 DEST 文件; 如果 DEST 是一个目录,则将 SOURCE 文件复制到该目录下。

  • mv SOURCE DEST 可以将 SOURCE 文件重命名为 DEST 文件; 如果 DEST 是一个目录,则将 SOURCE 文件移动到该目录下。

  • mkdir DIR 能够创建一个 DIR 目录。

  • rm FILE 能够删除 FILE 文件; 如果使用 -r 选项则可以递归删除一个目录。删除后的文件无法恢复,使用时请谨慎!

警告

无论出于什么理由,都不要执行rm -rf /或者rm -fr /,这会导致系统所有文件被删除

网上会有些梗诱导你这么做,注意这都是整活,这条命令唯一的作用就是删除整个系统

在 Linux 下编写程序输出 Hello World

提示

即使你现在不会任何编程语言也没有关系,在这一章先对这教程敲就行

Linux 中用户的主目录是 /home/用户名称, 例如你的用户名是 user, 你的主目录就是 /home/user. 用户的 home 目录可以用波浪符号 ~ 替代,例如桌面目录 /home/user/Desktop 可以简写为 ~/Desktop

让我们先切换到主目录,新建一个子目录,名字也请写纯英文

bash
cd ~
mkdir example

创建成功后,使用cd命令切换到刚才新建的目录。

bash
cd example

注意

你可能会经常要在终端里输入类似于这样的命令

cd AVeryVeryLongFileName

你一定觉得非常烦躁。

回顾上面所说的原则之一:如果你感到有什么地方不对,就一定有什么好办法来解决

试试只打前几个字母,然后按一下 tab 键吧(大小写要正确)

Shell 中有很多这样的小技巧,你也可以使用其他的工具提供的更丰富好用的功能。总之,尝试和改变是最重要的

进入正确的目录后就可以编辑文件了,linux主流的两大编辑器是 vi(m) [1]emacs, 更常用的是vim

bash
sudo apt install vim

这两款编辑器都需要一定的时间才能上手,它们共同的特点是需要花较多的时间才能适应基本操作方式 (命令或快捷键), 但一旦熟练运用,用起来就非常流畅

进入了正确的目录后,输入相应的命令就能够开始编辑文件

例如输入下面的命令就能开启一个文件编辑

bash
vim hello.c

例如可以键入如下代码 (对于首次使用的同学,输入代码可能会花一些时间,在编辑的同时要大量查看资料):

c
#include <stdio.h>
int main(void) {
  printf("Hello, Linux World!\n");
  return 0;
}

提示

写完代码之后不知道怎么保存退出?

不用担心,这个是正常的,毕竟上面提到的两个文本编辑器都是以入门时的学习曲线及其陡峭而著称

先按 ESC 返回 NORMAL 模式(具体处于那个模式可以观察窗口左下角,输入模式会有-- INSERT --的字样,而NORMAL 模式是空白的),再输入 :wq 来保存并退出(注意英文冒号:是输入的一部分)(:q 仅退出 :q! 不保存退出

想学更多?可以看看vim galore的中文翻译版(初步了解即可,学太多真的用处不大)

保存后就能够看到 hello.c 的内容了。终端中可以用 cat hello.c 查看代码的内容。如果要将它编译,可以使用 gcc 命令:

bash
gcc hello.c -o hello

gcc-o 选项指定了输出文件的名称,如果将 -o hello 改为 -o hi, 将会生成名为 hi 的可执行文件。如果不使用 -o 选项,则会默认生成名为 a.out 的文件
在命令行输入

bash
./hello

就能够运行该程序。命令中的 ./ 代表了当前目录,而 ./hello 则表示当前目录下的 hello 文件。与 Windows 不同,Linux 系统默认情况下并不查找当前目录,这是因为 Linux 下有大量的标准工具 (如 test 等), 很容易与用户自己编写的程序重名,这样做减少了命令的歧义

学习更多

正如开头所说,linux内容繁多,对于我们的任务只需要简单了解即可,如果还想学习更多,可以去看中科大写的这本Linux 101

注意

不需要全部看,尤其是第四五六九章,对普通用户意义不大

任务

至此,你应该可以完成任务1-1了。

说明

确保先阅读任务要求


  1. Vim由Vi改进而来,因此它们用起来区别不大,可以放在一起说 ↩︎