写给对 GNU/Linux 操作系统有初步需求的人使用.

1. 基本概念——路径

路径是Linux用户最基础的概念,但也是令很多新手最头疼的概念。因为Windows中尽其所能弱化了这个概念,但对Linux却十分关键。 Linux中文件以目录树(见下面的示意图)的结构来存储文件,以反斜杠"/“来区分不同的目录等级.
请在下面的目录结构中找到: /home/user_name/Desktop

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
/  
|--bin  
|--lib  
|--home  
    |--user_name  
        |--Desktop          <---- 它在这里
        |--Documents  
        |--Music  
|--usr(全称: Unix Software Resource)   
|--...(etc.)  

1.1 特殊的路径符号

符号 含义 举例
/ 单个反斜杠 特指 根目录,其它反斜杠是目录层级的分隔符 /
~ 波浪号 特指 用户的家目录,即 ~ = /home/user_name ~/Downloads
. 单个点号 特指 当前目录,可用pwd(Full: Present Work Directory)命令查看 ./bin/mg5
.. 两个点号 特指 上一级目录,如当前目录为/home/user_name,则../ = /home/ ../../

1.2 绝对路径与相对路径

绝对路径 从根目录出发的路径,以/~ 开头 /home/user_name = ~
相对路径 以” . or .. “开始的路径称为相对路径 ./file.txt

2. 三个初级命令 ls|cd|vi

Linux中的命令运行永远都是一个操作 , 跟(或者不跟)被操作的对象. 被操作的对象可以没有,也可以有多个.

如: ls './' "/home/user_name" 可以同时列出当前目录和家目录中的文件. 列出就是这里的操作,后面两个目录就是被操作的对象. 这里的引号是为了区分两个目录, 也可以省去.

2.1 查看文件

1
ls [参数] [路径]

备注:中括号代表可选参数,可以有,也可以没有

ls:(Full: List)是Linux中最常用命令,没有之一。用于列出目录下的文件。

  • 用法:直接使用 | 加参数 | 加路径
  • ls: 显示当前目录下的文件
  • ls -a -l: -l = –long 的作用是完整显示文件信息; -a = –all 显示包含隐藏文件的信息
  • ls /home: 列出 “/home” 目录下的文件

2.2 更改工作目录

1
cd 路径

cd: (Full: Change Directory)改变当前工作目录(pwd)
用法:
cd /home/user_name = cd ~ : 都是进入用户的家目录(绝对路径与相对路径)

2.3 编辑文件

1
2
vi ./file.txt
gedit ./file.txt        # 备用方案,并不是所有的 Linux 上都有 gedit

vi 是一款功能与性能都十分出色的文本编辑器,其快捷键可以实现纯键盘操作,熟练以后就可以体会到无鼠标编辑的速度及乐趣。

另一个重要的特性是,当使用ssh登录远程主机时,vi的稳定性及轻量化成为远程编辑文件的首选工具。vim 是vi编辑器的功能增强版,支持不同语言的高亮显示等特性。

如果想要学习vi,可以从官方教程开始(当然,这里面的东西学会就足够了)。在命令行中运行 vimtutor ,就可以开始学习了。

当然,vi 的熟练并非一朝一夕之事,开始时需要有意识地去使用vi。

2.4 扩充命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 文件操作
mkdir 新目录名                 # 新建目录
cp 源文件 新命名的文件          # 复制文件
mv 源文件 新命名的文件          # 移动文件
rm -rf 目录名或文件名          # 删除目录或文件
tar -xzvf **.tar.gz           # 解压压缩包

# 系统更新(仅用于 Debian,Ubuntu,LinuxMint 等发行版)
sudo apt update                 # 更新系统软件库 索引 ,并不更新软件
sudo apt upgrade                # 更新系统中所有可以更新的软件
sudo apt install package-name   # 安装软件

3. 基本概念——文件属性

Linux下面一切皆是文件的思想可以自行百度其强大之处。文件作为一个Object, 自然有其属性. 文件属性就如同粒子的量子数般,我们通过这些属性来区分它们,并且这些属性也支配着它们的行为。

文件的属性有:文件名 | 权限 | 所属用户 | 所属用户组 | 大小 | 修改时间
这些信息可以用ls -al来查看。

3.1 文件权限

这里重点说一下权限。用上面的命令查看到的权限由10列组成,如drwxrwxrwx
wdDTUg.jpg

其中第一列表示文件类型,- = plain text file | d=directory | l=link
后9列三三组成三组,分别表示所有者权限,所属用户组权限,其它人权限。
每个人的权限又分成 r=read | w=write | x=execute
读写不用说了,可执行权限决定了这个文件是否可以成为一个命令, 以./file.py的形式去执行它。

3.2 修改权限

权限大小的定义:r=4 | w=2 | x = 1

1
2
3
4
chmod 777 file.py   # -rwxrwxrwx  
chmod 771 file.py   # -rwxrwx--x  
chmod 600 file.py   # -rw-------  
chmod 002 file.py   # --------w-    Never Do This!!!  

4. Linux远程登录

4.1 什么是远程主机

远程主机,就是一台需要通过网络连接的电脑。从硬件上说,就是从你当前所使用电脑的网线出发,中间不管经历了什么设备,但总是可以连接到的另一台电脑。硬件的连通是远程登录的必要条件,但还不充分,还需要软件的支持。

4.2 远程登录协议

远程登录的软件需要遵循国际通用的一些协议来实现通讯。 常用的远程登录服务协议有:ssh | ftp | sftp
所谓协议,就是两台电脑,以及中间网络设备之间通信的规则,大家商量好,以后都按照这个规则来传输信息。Linux的命令行具有网络传输量小,延迟低,稳定性高等特性,是远程登录的必选良方。

ssh协议是最常用的远程登录协议,其默认使用22端口,但是为了安全起见,学院服务器的端口设成了1362,所以我在这里多说一句。使用方法如下(例子就是我们学院服务器的登录方法):

1
ssh -p port user_name@host_ip 		# ssh -p 1362 usr_00@202.114.36.19

ftp协议主要用于文件传输,而sftp是ftp与ssh两个协议的结合版,目前学院的服务器只能使用sftp协议传输文件(另外还有scp命令)。

1
sftp -P port user_name@host_ip          # sftp -P 1362 usr_00@202.114.36.19

以上命令注意大小写(ssh是小写p,sftp是大写P)。

Sftp登录完成以后,可以使用 ls | cd | get | put 四个命令来完成上传与下载。
ls and cd 我就不再说了。

1
2
> get file.txt			# 下载文件
> put file.txt			# 上传文件