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