Linux笔记 (Linux Notes)

Linux笔记

内容:主要讲解常用命令

2015年12月

时空

Linux概述

Linux的内核版本

38页1.2.5

Linux发行版

目前Linux主要分为两大分支:

  • Debian

  • 使用dpkg方式安装软件,包括Debian, Ubuntu(Linux Mint)

  • 全球最高份额,deb包非常方便

  • deb包

  • sudo dpkg -i 软件包

  • sudo dpkg -r 软件名

  • Red Hat

  • 使用RPM方式安装软件,包括Red Hat(CentOS), Fedora, SuSE

  • 只有中国份额较高。因为进入中国比较早,很多人不愿意换

  • rpm包

开源许可证

45页1.3.3

Linux的安装

开机流程

两种启动方式:BIOS和UEFI

  • 以前:BIOS启动

  • 对应MBR磁盘,MBR分区表

  • 只有4个主分区

  • 现代:UEFI启动

  • 对应GPT磁盘,GUID分区表

  • 无限主分区

  • Mac默认使用GPT

MBR方式开机流程

72页3.2.4

磁盘分区

初学:在硬盘尾部安装,全部使用逻辑分区

挂载点 容量 格式
/ 剩下的空间 ext4
swap 与内存大小相同 swap

正常:

挂载点 容量 格式
/boot 100M ext4
/ 相当于系统盘 ext4
/home 剩下的空间 ext4
swap 与内存大小相同 swap

常用命令

X Window热键

X Window与文字模式的切换:[Ctrl] + [Alt] + [F1]~[F6]

重启X Window:Ctrl+Alt+Backspace

基础命令和热键

列出文件

1
2
3
$ ls
$ ls -l
$ ll # Ubuntu可以用

显示日期与时间

1
$ date

日历

1
2
3
$ cal
$ cal 2015
$ cal 12 2015

计算器

1
$ bc

热键

  • Tab 命令补齐、文件补齐
  • Ctrl+C 停止程序
  • Ctrl+D EOF、离开

在线求助

1
$ man 要查询的命令

超简单文本编辑器:nano

1
$ nano test.txt

数据同步写入磁盘

1
$ sync

关机

1
# shutdown -h now

重启

1
2
# reboot
# shutdown -r now

切断电源(不建议)

1
# halt

切换执行等级:init

1
2
# init 0 # 关机
# init 6 # 重启

设置当前用户的密码

1
$ passwd

Linux文件操作

Windows中的文件夹在Linux中叫目录。

特殊的目录
. 代表此层目录
..代表上层目录
- 代表前一个工作目录
~ 代表当前用户主目录
~account 代表account这个用户主目录

目录相关操作

切换目录:cd

1
$ cd [相对路径或绝对路径]

显示当前目录:pwd

1
$ pwd

新建目录:mkdir

1
$ mkdir test # 新建一个名为test的目录

删除空目录:rmdir

1
$ rmdir test

环境变量:$PATH

使用echo显示$PATH

1
$ echo $PATH

文件操作命令

查看文件与目录:ls

1
2
3
$ ls
$ ls -l
$ ls -al

复制:cp

1
$ cp 源文件 目标文件

删除:rm

1
2
$ rm 文件或目录
$ rm -r 递归删除,删掉目录中所有文件和目录

移动、重命名:mv

1
$ mv 源文件 目标文件

文件内容查阅

直接查看一个文件的内容:cat

1
$ cat test.txt

反向查看:tac

1
$ tac test.txt

添加行号打印:nl

1
$ nl test.txt

翻页查看:more

1
$ more test.txt

上下翻页查看:less

1
$ less test.txt

只看前面几行:head

1
2
$ head test.txt # 默认10行
$ head -n 20 test.txt

只看后面几行:tail

1
2
$ tail test.txt
$ tail -n 20 test.txt

查看非纯文本文件:od

1
$ od test.txt

修改文件时间或创建新文件:touch

1
2
3
$ touch new.txt # 创建一个名为new.txt的文件
$ touch -d "2 days ago" test.txt
$ touch -t 1512251200 test.txt

查看文件类型:file

1
2
3
$ file test.txt # ASCII text
$ file /usr/bin/passwd
$ file /var/lib/mlocate/mlocate.db # data

文件的查找

188页7.5.2

寻找执行文件

1
2
$ which ifconfig
$ which cd

在数据库中寻找特定文件:whereis, locate

1
2
$ which test.txt
$ locate test.txt

扫描硬盘查找:find

1
2
3
4
$ find [PATH] [option] [action]
$ find / -user root
$ find / -name passwd
$ find / -mtime 0

Linux目录配置标准:FHS

152页

可分享的(shareable) 不可分享的(unsharealbe)
不变的(static) /usr (软件放置处) /etc (配置文件)
/opt (第三方软件) /boot (开机与内核文件)
可变动的(variable) /var/mail(用户邮件信箱) /var/run (程序相关)
/var/spool/news(新闻组) /var/lock (程序相关)

Linux的文件权限

用户与用户组

139页6.1

文件所有者,用户组,其他人

root是万能的

查看文件权限

1
$ ls -al

文件类型与权限

可读、可写、可执行

1
2
-rwxrwxrwx 4 root root 4096 Sep 8 14:06 test.txt
drwxrwxrwx 9 root root 4096 Jan 6 10:57 hello

文件权限 连接数 文件所有者 文件所属用户组 文件大小 修改时间 文件名

文件权限分为文件类型和3组权限

  • 文件类型

  • d表示目录

  • -表示文件

  • l表示连接文件

  • b表示接口设备

  • ```
    c

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19

    表示串口设备



    - 3组权限

    - 第一组:文件所有者的权限

    - 第二组:同用户组的权限

    - 第三组:其他非本用户组的权限

    > 142-144页例题练习

    ### 改变文件属性与权限

    改变所属用户组:chgrp

chgrp root test.txt

1
2
3

改变文件所有者:chown

chown root:root dir

1
2
3
4
5

chown -R 表示递归

改变文件的权限:chmod

$ chmod 777 test.txt
$ chmod 755 test.txt

1
2
3
4
5
6
7
8
9

- `r`:4
- `w`:2
- `x`:1

> 146页例题

符号类型改变权限

$ chmod u/g/o/a +/-/= r/w/x 文件或目录
$ chmod u=rwx,go=rx test.txt
$ chmod a-x test.txt
$ chmod a+w test.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

不要随便用chmod的递归

### 目录与文件的权限意义

权限对文件的重要性

- `r`: 可读取
- `w`: 可编辑、新增、修改,不包括删除
- `x`: 可执行

权限对目录的重要性

- `r`: 可读取(可以列出)
- `w`: 可写入
- 新建新的文件与目录
- 删除已经存在的文件与目录
- 重命名
- 转移该目录内的文件、目录位置
- `x`: 可进入

> 148-149页例题

### Linux文件种类

- 普通文件(regular file): `r`
- 目录(directory): `d`
- 连接(link): `l`
- 设备(device)
- 块(block)设备: `b`
- 字符(character)设备文件: `c`
- 套接字(sockets): `s`
- 管道(FIFO, pipe): `p`

### 文件的默认权限与隐藏权限

> 180-181页例题

默认权限:`umask`,在原权限基础上减去权限

$ umask #查看
$ umask -S
$ umask 002 #设置
$ umask 022

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

隐藏属性:略(自学)

> 183页7.4.2
> 设置文件的隐藏属性:`chattr`
> 查看文件的隐藏属性:`lsattr`

### 权限相关习题

> 194页情景模拟题

## Linux文件系统

### 磁盘与目录容量

> 210页8.2.1

列出文件系统的整体磁盘使用量:`df`

$ df -h

1
2
3

评估文件系统的磁盘使用量:`du`

$ du
$ du -a # 同时列出文件容量
$ du -sm # s: 只列出总量 m: MB

1
2
3
4
5

### 连接文件:ln

hard link(硬链接或实际连接)

$ ln /etc/crontab .
$ ll -i

1
2
3
4
5
6

- 无法做“目录”的链接
- 删掉其中一个,另一个可用

symbolic link(符号连接)

$ ln -s /etc/crontab crontab2
$ ll -i /etc/crontab ./crontab2

1
2
3
4
5
6
7
8
9
10
11
12
13

- 相当于Windows的快捷方式,删除源文件会不可用

### 磁盘的分区、格式化、检验与挂载

略(自学)

## 压缩与打包

### 单一文件压缩命令

gzip, zcat

$ gzip file
$ zcat file.gz
$ gzip -d file.gz

1
2
3

bzip2, bzcat

$ bzip2 -z file
$ bzcat file.bz2
$ bzip2 -d file.bz2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

### 打包命令:tar

打包同时可以压缩,tar的参数:

`-z`: gzip方式压缩/解压缩
`-j`: bzip2方式压缩/解压缩
`-c`: 新建打包文件
`-x`: 解打包或解压缩
`-v`: 显示过程
`-f`: 跟要被处理的文件名
`-p`: 保留原本权限与属性

打包

$ tar -zcvf dir.tar.gz dir
$ tar -jcvf dir.tar.bz2 dir
$ tar -cvf dir.tar dir

1
2
3

解包

$ tar -zxvf dir.tar.gz
$ tar -jxvf dir.tar.bz2
$ tar -zxvf dir.tar.gz -C /tmp

1
2
3

备份

tar -zpcvf etc.tar.gz /etc

tar -jpcvf etc.tar.bz2 /etc

1
2
3

查看

$ tar -ztvf dir.tar.gz
$ tar -jtvf dir.tar.bz2

1
2
3
4
5

## vim编辑器

### 进入vim

$ vim 文件名

1
2
3

### 新建文档

$ vim 新文件名

1
2
3
4
5

不保存则不生成新文件

### 进入插入模式

i, I, a, A, o, O

1
2
3
4
5
6
7
8
9
10
11
12

`i`光标位置插入
`I`行首插入
`o`当前行后插入新行
`O`当前行前插入新行
`a`光标位置后插入
`A`行末尾插入

### 行号

显示行号

:set nu
:set number
:set nonu
:set nonumber

1
2
3

不显示行号

:set nu
:set number
:set nonu
:set nonumber

1
2
3

### 跳转

:数字
数字G

1
2
3
4
5

最后一行`G`

### 删除行、剪切

dd
数字dd

1
2
3

### 复制行

yy
数字yy

1
2
3

### 粘贴

p

1
2
3

### 块选择

Ctrl+v

1
2
3
4
5

### 预设行号

编辑`~`下的.vimrc文件,写入

set nu
```