Linux基础

Linux的两大分支

基于Debian: Debian、Ubuntu、Corel、Kali等

基于RedHat: Red Hat、CentOS、Fedora Core等

Linux 目录结构

dev 是设备(device)的英文缩写,Linux 沿袭 Unix 的风格,将所有设备认成是一个文件

设备文件分为两种:块设备文件(b)和字符设备文件(c)

设备 设备在Linux内的文件名
SCSI/SATA/IDE设备 /dev/sd*
U盘 /dev/sd*(与SATA相同)
USB块设备 /dev/ub*
软驱 /dev/fd[0-1]
打印机 25针: /dev/lp[0-2] USB: /dev/usb/lp[0-15]
鼠标 USB: /dev/usb/mouse[0-15] PS2: /dev/psaux 当前:/dev/mouse
光盘设备 /dev/cdrom => /dev/sr*
磁带机 IDE: /dev/ht0 SCSI: /dev/st0
软RAID设备 /dev/md[0-31]
本地回环设备 /dev/loop[0-7]
内存 /dev/ram[0-15]
Nvidia图形设备(比如显卡) /dev/nvidia*
DRI显卡 /dev/dti/card*
虚拟终端 /dev/tty[0-63]
控制台 /dev/console
串口 /dev/ttyS[0-3]
并口 /dev/lp[0-3]

对于SCSI设备,/dev/tape 指向 /dev/st* ,而 /dev/cdrom 指向 /dev/sr* ;而 /dev/cdwriter/dev/scanner 分别指向对应的 /dev/sg*(sg 代表 scsi + generic(通用))

其他:

/dev/null:无限数据接收设备,相当于黑洞

/dev/zero:无限零资源

/dev/fb[0-31]:帧缓冲设备

/dev/nb*:网络块设备

/dev/modem:调制解调器(猫) => /dev/ttyS*

/dev/random:真随机数设备

/dev/urandom:伪随机数设备

几个重要的目录,注意不要误删或随意修改内部文件

/etc 系统配置文件,如果被修改系统可能会不能启动

/bin,/sbin,/usr/bin,/usr/sbin 系统预设的执行文件存放目录

/var 程序日志文件存放,具体在/var/log

常用命令

文件操作

ls [-ald] <文件或目录路径> : 显示目录文件

mkdir [-p] <目录全路径名> : 创建新目录

cd <目录路径> : 切换目录

pwd : 显示当前目录路径

rmdir <目录名> : 删除空目录

cp [-rp] <原路径> <目标路径> : 复制文件

mv <原路径> <目标路径> : 剪切文件、改名

rm [-rf] <文件或目录> : 删除文件

touch <文件名> : 创建空文件

cat [-n] <文件名> : 显示文件内容

tac [文件名] : 显示文件内容(反向显示)

more <文件名> : 分页显示文件内容

less <文件名> : 分页显示文件内容(可向上翻页)

head [-n] <文件名> : 显示文件前几行

tail [-nf] <文件名> : 显示文件后面几行

ln [-s] <原文件> <目标文件> : 生成链接文件

权限管理

chmod <[{u|g|o|a}{+|-|=}{r|w|x}][{4|2|1}]> [-R] <文件或目录> : 修改权限

chown <用户> <文件或目录> : 改变文件或目录的所有者

chown <用户>:<用户组> <文件或目录> : 改变文件或目录的所有者和所属组

chgrp <用户组> <文件或目录> : 改变文件或目录的所属组

umask [-S] : 显示、设置文件的缺省权限

查找帮助

find <搜索范围目录> [选项] <匹配条件> : 文件搜索

选项和匹配条件:

locate <文件名> : 在文件资料库中查找文件

which [命令] : 搜索命令所在目录及别名信息

whereis <命令> : 搜索命令所在目录及帮助文档路径

grep [-iv] <字符串> <文件> : 在文件中搜寻字符串匹配的行并输出

man <命令或配置文件> : 获得帮助信息

help <命令> : 获得Shell内置命令的帮助信息

用户管理

useradd <用户名> : 添加新用户

passwd <用户名> : 设置用户密码

who : 查看登录用户信息

w : 查看登录用户详细信息

write <用户名> : 给用户发信息,以Ctrl+D保存结束

打包压缩

tar <-zxcvfru> <压缩后文件名.tar.gz> <目录> : 打包目录

zip [-r] <压缩后文件名.zip> <文件或目录> : 压缩文件或目录

unzip <压缩文件> : 解压.zip的压缩文件

bzip2 [-k] <文件> : 压缩文件,文件格式为:.bz2

bunzip2 [-k] <压缩文件.bz2> : 解压.bz2文件

网络相关

ping [-c] <地址> : 测试网络连通性

ifconfig [网卡名] [选项] : 查看和配置网卡信息

mail <用户名> : 查看发送电子邮件

last : 列出目前与过去登入系统的用户信息

lastlog <-u UID> : 检查某特定用户上次登录的时间

traceroute : 显示数据包到主机间的路径

netstat [选项] : 显示网络相关信息

设备管理

free [-mtV] : 显示内存

lsblk [-fml] : 查看块设备,块设备有硬盘,闪存盘,CD-ROM等

mount [-fnrsvw] [-t文件系统类型] [-o 选项] <设备文件名> <目录> : 挂载设备

umount <目录> : 卸载挂载的设备

shutdown <-chr> <时间> [“提示信息”] : 关机重启

haltpoweroffinit 0 : 关机

rebootinit 6 : 重启

系统运行级别:0关机,1单用户,2不完全多用户,不含NFS服务,3完全多用户,4未分配,5图像界面,6重启

logout : 退出登录

VI/VIM基础

打开文件

vi 文件名
vim 文件名

vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)

命令模式:

启动 vi/vim 时便是命令模式,此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。

在另外两种模式按 Esc 可进入命令模式。

常用命令:

a:光标字符后输入,i:光标字符前输入,o:光标下插入新行并进入输入模式

x:删除光标处的,nx:删除光标起n个字符 (vi/vim 的删除都会将内容保存到寄存器中)

yy:复制当前行,nyy:复杂n行

dd:剪切当前行,ndd:剪切n行

p粘贴到光标后,P:粘贴到贯标前

gg: 到首行, G: 到末行

w , W: 下一个单词

b , B: 前一个单词

n : 查找下一处,N : 查找上一处

rR 替换

u:恢复

ZZ:保存退出

输入模式:

底线命令模式

命令模式下按下:(英文冒号)就进入了底线命令模式

:w:保存,:wq:保存退出

:q:退出,:q!:强制退出

:n:新建文件

:X:跳到X行

:set nu:显示行号,:set nonu:取消行号

本地源配置

Debian 分支

Debian 分支使用 aot-get 管理 deb 软件包

apt-get {<install|reinstall|remove|search> <软件包名>}|{update|upgrade|dist-upgrade|clean}
  1. 准备ISO文件、或光盘(本例从Debian的官网下载了3个ISO镜像文件,将其挂载到虚拟机)。

  2. 创建挂载目录:

    sudo mkdir -r /mnt/ISO1
    sudo mkdir -r /mnt/ISO2
    sudo mkdir -r /mnt/ISO3
    
  3. 查看光盘的设备文件和挂载目录

    lsblk

    sr*的为光盘的设备文件

  4. 若文件未被挂载则将文件挂载到目录

    sudo mount -t iso9660 /dev/sr0 /mnt/ISO1
    sudo mount -t iso9660 /dev/sr1 /mnt/ISO2
    sudo mount -t iso9660 /dev/sr2 /mnt/ISO3
    

    如果硬盘空间足够可以将挂载的几个光盘内的内容分别复制到几个目录中,然后更改配置文件,就可将这几个目录固定为apt源库。

    如果ISO文件在Linux磁盘中可用:sudo mount -o loop -t iso9660 /home/iso/debain-DVD-1.iso /mnt/ISO1将文件挂载到目录。

  5. 备份默认的配置文件
    sudo cp /etc/apt/sources.list /etc/apt/spurces.list.bak

  6. 修改配置文件
    sudo vim /etc/apt/sources.list

    deb file:///mnt/ISO1/ stretch main contrib non-free
    deb file:////mnt/ISO1/ stretch-updates main contrib non-free
    deb file:///mnt/ISO1/ stretch-backprts main contrib non-free
    deb-src file:///mnt/ISO1/ stretch main contrib non-free
    deb-src file:////mnt/ISO1/ stretch-updates main contrib non-free
    deb-src file:///mnt/ISO1/ stretch-backprts main contrib non-free
    
    deb file:///mnt/ISO2/ stretch main contrib non-free
    deb file:////mnt/ISO2/ stretch-updates main contrib non-free
    deb file:///mnt/ISO2/ stretch-backprts main contrib non-free
    deb-src file:///mnt/ISO2/ stretch main contrib non-free
    deb-src file:////mnt/ISO2/ stretch-updates main contrib non-free
    deb-src file:///mnt/ISO2/ stretch-backprts main contrib non-free
    
    deb file:///mnt/ISO3/ stretch main contrib non-free
    deb file:////mnt/ISO3/ stretch-updates main contrib non-free
    deb file:///mnt/ISO3/ stretch-backprts main contrib non-free
    deb-src file:///mnt/ISO3/ stretch main contrib non-free
    deb-src file:////mnt/ISO3/ stretch-updates main contrib non-free
    deb-src file:///mnt/ISO3/ stretch-backprts main contrib non-free
    

    档案类型:

    deb 二进制预编译软件包

    deb-src 编译二进制软件包的源代码

    仓库地址:

    http://……https://……ftp://……file://……

    发行版代号:

    Debiand的版本及稳定版代号: 9(stretch)、8(jessie)、7(wheezy)、6(squeeze)等,可指定库:代号-库名(updates、backports)

    Ubuntu的版本及稳定版代号:18.04(bionic)(Bionic Beaver)、17.10(artful)(Artful Aardvark)、17.04(zesty)(Zesty Zapus)等,可指定库:代号-库名(updates、backports、security)

    软件包分类:

    Debian:

    main 符合DFSG指导原则自由软件包,这些软件包依赖于符合DFSG指导原则的软件包

    contrib 符合DFSG自由软件包,这些软件包不依赖min分类中的软件包

    non-free 不符合DFSG指导原则的自由软件包

    Ubuntu:

    min 官方支持的自由软件

    restricted 官方支持的分完全自由的软件

    universe 社区维护的自由软件

    multiverse 非自由软件

  7. 更新源信息
    sudo apt-get update

RedHat 分支

RedHat 使用 yum 管理 rpm 软件包

yum {<install|remove|search> <软件包>}|{update|list|updates|clean all}
  1. 准备ISO文件、或光盘(可将文件直接放到Linux磁盘,本例为将ISO文件挂载到虚拟机)

  2. 创建挂载目录
    sudo mkdir /mnt/ISO

  3. 查看光盘的设备文件和挂载目录
    lsklb
    光盘设备文件为sr*

  4. 若没有挂载就将其挂载到创建的目录
    sudo mount -t iso9660 /dev/sr0 /mnt/ISO
    若磁盘空间运行可以将挂载目录中读取到的文件复制到一个固定的目录。作为yum源仓库目录。
    也可将linux磁盘内的ISO文件直接挂载到目录:sudo mount -o loop -t iso9660 /home/iso/redhat-DVD.iso /mnt/ISO

  5. 备份配置文件
    sudo cp /etc/yum.repos.d/***.repo /etc/yum.repos.d/***.repo.bak

    或新建建一个cdrom.repo文件(CentOS有一个默认的本地yum配置文件:CentOS-Media.repo)

  6. 修改配置文件内容

    将redhat.repo的内容全删除替换上本地源的配置内容。
    或直接在cdrom.repo内添加。

    [CDROM]
    name=isofile
    baseurl=file:///mnt/ISO/
    enabled=1
    gpgcheck=0
    gpgke=file:///mnt/ISO/RPM-GPG-KEY-redhat-release
    

    [serverid]:serverid是用去区别各个不同源的,必须独一无二的的名称,重复了会被覆盖
    name=name:对源的描述
    baseurl=url1
    url2
    url3
    :指定源的路径,可以指定多条,http://……https://……ftp://……file://……
    enabled=[1/0]:启用(1)或禁用(0)源
    gpgcheck=[1/0]:启用(1)或禁用(0)gpg校验
    gpgke=url:若启用gpg校验,则调用gpgkey的地址

  7. 清理旧缓存,刷新源

    sudo yum clean all
    sudo yum repolist
    # 或
    sudo yum malecache
    # 或
    sudo yum list