认识 Linux
Why Linux
Windows 可能给了你电脑启蒙,但在服务器领域里,Linux 的地位可能比 Windows 更加重要,没有 Linux 就没有现在的互联网生态。
迄今为止,80% 以上的智能手机,都使用着基于 Linux 内核的 Android 系统;全球排名前 500 的超级计算机中,98% 在用 Linux;绝大部分你所使用的互联网产品,也都运行在 Linux 系统的服务器上。
与 Windows 相比,Linux 可能没那么容易上手,但却是用来学习计算机技术最好的工具。进程、线程是什么?文件是如何管理的?网络如何互联?书本上的解释始终是云里雾里,但通过亲手在 Linux 中操作,你会恍然大悟:原来这些概念是这么回事。
Linux 提供了一个驱动力,让你去接触和掌握计算机的核心秘密。在 Linux 出现以前,这些秘密只有极少数精英才能掌握,现在变成了全世界每个人都可以平等享用的盛宴。
同时 Linux 是一个安全、稳定、自由的系统,你可以把它定制成任何你想要的样子。在企业里,非常多的 IT 技术工程师都会用 Linux 作为开发机,也会把 Linux 打造成 Web 或数据库服务器等。
进入实验环境
实验桌面上的程序包括下面几类:
Xfce 终端:Linux 中控制电脑的窗口,打开它你可以通过 Linux 命令控制电脑的一切。Linux 中很多操作都需要输入命令来进行,这一点与 Windows 上依靠鼠标操作是不同的,这个输入命令的入口就叫「终端」。
Firefox 浏览器:浏览器,可以用在需要前端界面的课程里。
GVim:一款好用的 Vim 编辑器,具体用法可参考课程 Vim 编辑器。
gedit、Sublime:同样是代码编辑器,如果你对 gvim 的使用不熟悉,可以用这两个作为代替。
双击桌面上的 Xfce 终端 打开终端,依次点击菜单上的 编辑 - 首选项, 可以修改终端的背景、字体、字号、光标样式等属性,右下角的输入法图标可以切换输入法:
提示:如果右下角没有出现切换输出法的图标,你需要先双击桌面的 Sogou 输入法图标来启动。
Linux 目录操作
首先我们来学习 Linux 目录的常用操作命令。
Linux 的目录类似于 Windows 系统中的文件夹。我们看一下刚刚打开的终端界面,它的第一行开头是:
shiyanlou:~/ $
这就代表着你当前所处的目录位置:打开终端后,会默认从当前的用户目录开始操作,这就好比你打开“我的电脑”,会默认显示所有磁盘的目录。
shiyanlou 代表你当前的用户名,如果你的用户名叫 tony,就会显示 tony:~/ $。后面的美元符号 $ 是「命令提示符」,提示你:请在它后面输入命令。
查看目录中的内容:ls
我们来输入第一个命令:在终端里输入 ls ,可查看当前目录下的文件和目录。
可以看到当前目录下,有 Code 和 Desktop 两个目录。(蓝色字代表是目录,白色字代表是文件)
进入目录:cd
使用 cd 命令可进入其他目录,如果想进入 Code 目录,请输入:
cd Code
注意这里使用的是相对路径,即进入你当前所在的目录下的 Code 目录。如果这个目录下没有这个 Code 目录,则会报错。相关内容在后面的小节会提到。
快捷操作
常用快捷键:
按按键盘的上下方向键,可快速选择前面输过的命令。
输入 cd .. 可以回到上一级目录,类似 Windows 的「向上」。
cd ..
cd - 表示回到上一次所在的目录,类似 Windows 的「后退」。
cd -
cd ~ 表示回到当前用户的主目录,类似 Windows 的「回到桌面」。
cd ~
cd / 表示进入根目录,它是一切目录的父目录
cd /
注意:上面的快捷操作,符号都必须是英文符号,否则会报错。
查看目录结构:tree
使用 tree 命令,可以列出一个文件夹下的所有子文件夹和文件(以树形结构来进行列出)。
tree
下图为 Linux 操作系统目录结构的简介,最左边就是根目录:
还记得怎么进入根目录吗?我们来点刺激的,输入:
cd /
再输入:
tree
执行指令后,终端会像走马灯一样,遍历出系统里的所有目录和文件,这时按下 ctrl + c 键即可停止。
绝对路径
Linux 进入目录的方式有 绝对路径 和 相对路径 两种。
之前我们都是用 相对路径 进入目录的,这相当于你在 Windows 系统下,在当前文件夹中点击下一个文件夹进入。
而 绝对路径 是一个以根目录 / 为起点的完整路径,如: /home/shiyanlou/Code,可以类比 Windows 上的 C:\Users
使用 pwd 命令可以获取当前目录的绝对路径:
有了绝对路径后,不管你当前在哪个目录下,都可以通过指令进入指定目录:
cd /home/shiyanlou/Code
提示:如果忘记了目录名、文件名或命令,可使用 Tab 键自动补全,还可避免输入错误;连续按两次 Tab 可以显示全部候选结果。
新建目录
使用 mkdir 命令可创建目录,mkdir mycode 的意思就是新建一个名为 mycode 的目录。
先输入 cd ~ 返回用户主目录,然后练习一下:
还可以在 mkdir 后加入 -p 参数,一次性创建多级目录,如:
Linux 文件操作
下面是 Linux 中对文件的常用操作,包含新建、复制、删除等。
新建空白文件
使用 touch 命令可以新建文件,比如我想在新建一个名为 hello 的文件,可输入:
touch hello
hello 文件就被创建出来了,用 ls 命令查看一下:
注意:touch 命令重复使用不会覆盖已有同名文件,而是更改这个文件的时间戳。
复制
使用 cp 命令(Copy)复制文件到指定目录下,比如要把 hello 文件复制到 one/two 这个目录下:
cp hello one/two/
$ tree one
one
└── two
├── hello
└── three
2 directories, 1 file
如果要复制目录,需要在 cp 后加上 -r:
mkdir test
cp -r test one/two
$ tree one
one
└── two
├── hello
├── test
└── three
3 directories, 1 file
上面的操作中,我们先新建了一个 test 目录,然后把它复制进了 one/two 这个目录中,再通过 tree one 命令直接查看 one 的目录结构。
删除
使用 rm 命令删除文件:
rm hello
ls
删除目录要加上 -r 选项,类似 cp -r 拷贝目录,会删除目录和目录下的所有内容:
mkdir test
rm -r test
ls
移动文件 / 目录与重命名
使用 mv 命令可以移动文件或目录。
首先,我们进入到 /home/shiyanlou 目录,使用 touch 创建空文件 test1:
cd ~
touch test1
然后,我们创建一个新目录 dir1,ls 查看一下
mkdir dir1
ls
使用 mv 命令 将 test1 移动到 dir1 目录,代码如下:
mv test1 dir1
然后进入 dir1 目录查看一下
cd dir1
ls
mv 命令还可以用来重命名,如 mv test1 test2, 会把 test1 重命名为 test2:
mv test1 test2
ls
查看文件内容
使用 cat 命令,可以将文件中的内容打印到屏幕上,使用方法是 cat 加上文件路径。
现在还没有文件,我们先从其他地方复制过来一个:
cp /etc/passwd passwd
ls
这样就把 passwd 文件从 /etc 目录拷贝到了当前目录中,然后我们用 cat passwd 显示文件中的内容:
shiyanlou:dir1/ $ cat passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
使用 cat -n 可以带行号地打印文件内容:
$ cat -n passwd
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
5 sync:x:4:65534:sync:/bin:/bin/sync
6 games:x:5:60:games:/usr/games:/usr/sbin/nologin
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
编辑文件
写代码需要用到文本编辑器,这里给新手推荐两个简单、好用的编辑工具:gedit 和 Sublime 。
Sublime Text
Sublime Text 是一套跨平台的文本编辑器,支持基于 Python 的插件,支持语法高亮,具有轻量、入门简单等特点。
实验环境中内置了 Sublime Text2 编辑器,点击实验环境左下角应用程序菜单 - 开发 - sublime 即可打开:
启动 sublime 后,依次点击菜单栏的 File - New File 或 按下 ctrl + n,可以新建文件,然后在 sublime 中写入以下内容:
hello shiyanlou
然后按 ctrl + s 保存文件到桌面,命名为 hello
在终端中查看一下:
测试成功!
gedit
gedit 是 Linux 系统自带的文本编辑器,比 Sublime 更简单,我们会在以后介绍。
有一定基础的同学,也可以使用 Vim 编辑器:
Vim 编辑器是功能强大的跨平台文本文件编辑工具,支持 Linux / Mac OS X / Windows 系统。Vim 素有编辑器之神的称号,但学习曲线陡峭,需要系统学习才能使用好它。
帮助命令
在 Linux 环境中,如果你遇到困难,可以使用 man 命令,它是 Manual pages 的缩写。例如输入 man cat ,可以获取 cat 命令的详细的帮助文件。进入到 man 的页面后,按 q 可以退出 man。
有些命令可以使用 --help 选项查看帮助文档。
挑战:创建代码文件
介绍
在这个挑战中,你需要在指定的目录下创建一个代码文件,然后拷贝到指定的目录。
目标
请在 /home/shiyanlou 目录下创建 shiyanlou.py 文件
在文件中输入以下内容:
print('hello shiyanlou')
进入 Code 目录,新建名为 test 的目录,然后将 shiyanlou.py 复制到目录 /home/shiyanlou/Code/test 中