admin管理员组

文章数量:1579346

imooc-Linux达人养成计划 I

第1章 Linux简介

1-1 Linux简介

  • Linux发展史
    • Minix
  • 版本
    • Linux内核版本
      • Linux内核官网:www.kernel
      • 内核版本说明:2.6.18
        • 2:主版本(如果更新发生了很大的质变化)
        • 6:此版本(如果更新比较大,累计到了一定的程度,就更新次版本)
        • 18:末版本(如果更新不重要,比较小,就修改末版本)
      • 目前最新的内核版本:3.16
    • Linux发行版本
      • 不同的发行版本,使用的内核是基本一致的,都是有内核官网提供,然后加入自己的理解
      • redhat,CentOS,fedora,SuSE,ubuntu,debian …
        • 服务器领域redhat更加常见
        • Ubuntu的图形界面更加常用
        • fedora是redhat公司开发的“个人版”,有图像化界面
        • centos和redhat的版本功能一样

1-2 开源软件简介

  • 开源:开放源代码(未经编译的)

    • Apache:网站服务的搭建软件

      • 服务器端使用Apache将写好的网站发布到互联网上,客户端通过浏览器访问
    • NGINX:和Apache一样

      • 占用的服务器更少
      • 可以支持更大的并发环境
    • MySQL,PHP

      Linux+Apache+MySQL+PHP 是一套经典的服务器架构体系

    • MongoDB:nosql的数据库

    • python:一种脚本语言

    • Samba,Ruby,sphinx

  • 开源软件

    • 使用的自由(绝大多数开源软件免费)
    • 研究的自由(可以获得软件源代码)
    • 散布及改良的自由(可以自由传播,改良甚至销售)

1-3 练习题

Linux严格区分大小写

1-4 Linux应用领域

  1. 基于Linux的企业服务器
  2. 嵌入式应用
    • ssh:Linux与Linux之间,进行远程安全管理的协议
    • 安卓的底层实现是Linux,mac的底层实现是Unix
  3. 其他应用:机顶盒,小米盒子,智能电视,3D效果的制作……

1-5 练习题

CentOS是RedHat系列的Linux

Debian是由社区开发和维护的Linux

Ubuntu是一个以桌面应用为主的Linux

AIX是IBM开发的Unix

1-6 Linux学习方法

  • 应该如何提问?
    • 先要尝试自己解决
      • Linux的帮助文档
      • 网络示例
    • 提问的智慧
      • 问题详尽
      • 报错信息截图

1-7 Linux与windows的不同

  • Linux严格区分大小写(windows下dos)

  • Linux中所有内容以文件形式保存,包括硬件

  • Linux不靠扩展名区分文件类型(通过权限区分)

    有些约定俗成的后缀:

    • 压缩包:".gz"、".bz2"、".tar.bz2"、".tgz"等
    • 二进制软件包:".rpm"
    • 网页文件:".html"、".php"
    • 脚本文件:".sh"
    • 配置文件:".conf"
  • windows下的程序不能直接在Linux中安装和运行

    • Linux当中有windows模拟器,装了模拟器之后可以执行windows程序
    • 好处:windows中的病毒不会被执行
    • 坏处:linux中的软件都必须专门编写

1-8 字符界面的优势

  1. 字符界面占用的系统资源更少
  2. 字符界面减少了出错、被攻击的可能性

1-9 练习题

第2章 Linux系统安装

2-1 虚拟机的安装

  1. VMware简介
    • VMware是一个虚拟PC的软件,可以在现有的操作系统上虚拟出一个新的硬件环境,相当于模拟出一台新的PC,以此来实现在一台机器上真正同时运行两个独立的操作系统
    • VMware主要特点:
      1. 不需要分区或重新开机就能在同一台PC上使用两种以上的操作系统
      2. 本机系统可以与虚拟机系统网络通信
      3. 可以设定并随时修改虚拟机操作系统的硬件环境
      4. 快照功能:记录当前状态并使用恢复
  2. 建议的VMware配置
    • CPU:建议主频为1GHz以上
    • 内存:建议1GB以上
    • 硬盘:建议分区空闲空间8GB以上
  3. 安装VMware

2-2 虚拟机的使用

VMware Install Cleaner 彻底删除虚拟机

(直接删除安装路径删除不干净,会有大量系统垃圾残留)

  1. 新建虚拟机
  2. 虚拟机硬件设置
    • centos6.3至少需要628MB才能启动图形化界面
  3. 虚拟机网络设置
    • 桥接(推荐):虚拟机和真实机之间通信利用真实的本地网卡
      • 好处:配置简单;
      • 缺点:虚拟机需要占用真实机网段中的IP
      • 只要选择桥接可以直接进行虚拟机和真实机之间的通信
      • 不仅可以和真实机通信,还可以和该网段下的其他主机或网络设备进行通信
    • NAT:虚拟机利用VMware8这块网卡与真实机之间进行通信
      • 虚拟机可以实现上网
    • HostOnly:虚拟机利用VMware1网卡与真实机之间进行通信
      • 虚拟机不能上网,只能在本地使用
      • 选择NAT或HostOnly后,虚拟机只能跟真实机进行通信,而不能和局域网内其他的网络设备通信
  4. 虚拟机使用技巧
    • 快照:将当前状态进行保存,以后可以恢复
    • 克隆:将当前状态进行复制,建立一个新的虚拟机
      • 链接克隆:只占用很小的空间,完全的模拟另一台机器;删除原始镜像后克隆也不存在
      • 完整克隆:克隆虚拟机和原始虚拟机一模一样,互不影响

2-3 系统分区之分区与格式化

  1. 磁盘分区
    • 磁盘分区是使用分区编译器在磁盘上划分几个逻辑部分。碟片一旦划分成数个分区,不同类的目录与文件可以存储进不同的分区。
    • 分区类型(Linux和windows下都一样)
      • 主分区:最多只能有4个
        • 由硬盘的结构决定,硬盘划分成若干个扇区,每个扇区是512个字节,其中446个字节用于记录启动信息,剩下64个字节用来进行分区表示;64个字节当中,每16个字节表示一个分区
      • 扩展分区:
        • 将一块主分区作为扩展分区
        • 最多只能有1个
        • 主分区+扩展分区最多有4个
        • 不能写入数据,只能包含逻辑分区
        • 逻辑分区最多可以划23个(AB为软驱的盘,C为主分区1的盘,剩下23个字母)
  2. 格式化
    • 格式化(高级格式化)又称逻辑格式化,它是根据用户选定的文件系统(如TAE16,FAT32,NTFS,EXT2,EXT3,EXT4等),在磁盘的特定区域写入特定数据,在分区中划出一片用于存放文件分配表、目录表等用于文件管理的磁盘空间
      • 文件系统:越新的文件系统越先进
        • windows中:
          1. FAT16:最大只能支持2GB的分区
          2. FAT32:单个的文件大小不能超过4G,能支持2T的分区
          3. NTFS:目前windows中最先进的文件系统,支持更大的分区,更大的单个文件
        • Linux中:EXT2,EXT3,EXT4
          • centos中,默认的文件系统是EXT4
    • 格式化的根本目的是为了写入文件系统
    • 磁盘格式化是为了更好的放入和查找数据
    • 格式化将分区分隔成等大小的数据块(block),每个数据块默认大小为4KB
      • 默认的数据块大小是存储文件的最小空间
      • 一个文件的大小超过默认数据块大小时,会将文件放到多个数据块中,这些数据块不一定连续
      • 一个数据库放置了一个文件的一部分后还有空余,也不可以再存放其他文件
      • 在分区列表中建立二维表格,写入:文件的ID号(I结点-INode),修改时间,权限,数据在块中的存放位置
      • 格式化会将分区清空!

2-4 分区之分区设备文件名与挂载

  1. 硬件设备文件名

    • windows只要分区,格式化,分配盘符就可以使用;

      Linux需要给每个分区,格式化,给每个分区起一个设备文件名,然后再分配盘符

    硬件设备文件名
    IDE硬盘/dev/hd[a-d]
    SCSI/SATA/USB硬盘/dev/sd[a-p]
    光驱/dev/cdrom或/dev/hdc
    软盘/dev/fd[0-1]
    打印机(25针)/dev/lp[0-2]
    打印机(USB)/dev/usb/lp[0-15]
    鼠标/dev/mouse
    • “/”-根目录;“dev"-一级目录,专门用来存放硬件
    • 分区设备文件名
      • 设备文件名(Linux系统自动分配)
        • /dev/hda1(IDE硬盘接口)
        • /dev/sda1(SCSI硬盘接口、SATA硬盘接口)
          • hd,sd代表硬盘接口
          • a代表第一个硬盘,bcd以此类推
          • 1代表第一个分区(1234只能给主分区使用,扩展分区从5开始)
      • 接口
        • IDE硬盘接口:现在的光驱使用的接口,传输速度比较慢,理论传输速度最大达到133Mbps
        • SCSI硬盘接口:老式的服务器硬盘传输接口,理论传输速度可达到200Mbps
        • SATA硬盘接口:目前硬盘使用最新式,最标准的接口。串口硬盘,分为SATA1,SATA2,SATA3,SATA3的传输速度可达到500Mbps
  2. 挂载:给分区分配盘符的过程(挂载点——盘符)

    Linux中不是以abc作为挂载点,而是以目录作为挂载点

    • 必须分区

      • /:根分区

      • swap分区(虚拟内存):交换分区,一般为内存2倍,(实验条件下)不超过2GB

        • 当内存<4G时,swap分区大小=2*内存大小;

          内存>4G时,swap分区大小=内存大小

        • swap分区没有挂载点!不是给用户使用的,而是系统内核操作的

    • 推荐分区

      • /boot:启动分区,200MB
    • 文件系统结构

      • / - > /dev/sda3(从硬盘空间来看)
        • /boot - > /dev/sad1
        • /etc
          • passwd
          • shadow
          • group
        • /home - > /dev/sda2

2-5 练习题

常用分区类型:主分区,扩展分区,逻辑分区

根分区不常用

2-6 Linux系统安装

虚拟机第一次启动时会自动从光盘启动,真实机需要手动修改!

  1. 安装欢迎界面

    • “Install or upgrade an existing system”:安装或升级现有系统

    • “Install system with basic video driver”:安装过程采用基本的显卡驱动

      如果显卡不支持,不能被检测,该选项可以保证最基本的图形界面

    • “Rescue installed system”:进入系统修复模式

      主要进行Linux的报错修复

    • “Boot from local drive”:退出安装从硬盘启动

      当硬盘中有操作系统时可以选择

    • “Memory test”:存储介质检测

      看看内存够不够

ctrl+alt+enter - > 虚拟机全屏

  1. 密码原则

    • 复杂性
      • 八位字符以上,大小写字母,数字,符号
      • 不能是英文单词
      • 不能是和用户相关的内容
    • 易记忆性
    • 时效性
  2. 软件包选择

    • Desktop(桌面)

    • Minimal Desktop(最小化桌面)

    • Minimal(最小化)

      一般在服务器安装,然后需要什么软件装什么软件

    • Basic Server(基本服务器)

      常见的功能都有安装

    • Database Server(数据库服务器)

    • Web Server(网页服务器)

    • Virtual Host(虚拟主机)

    • software development workstation(软件开发工作站)

  3. 安装日志

    • /root/install.log:存储了安装在系统中的软件包及其版本信息
    • /root/install.log.syslog:存储了安装过程中留下的时间记录
    • /root/anaconda-ks.cfg:以Kickstart配置文件的格式记录安装过程中设置的选项信息

2-7 练习题

  1. CentOS 6.x 的默认文件系统类型是ext4
  2. Linux安装时至少划分根分区和/SWAP分区才能正常安装使用

2-8 XShell的安装和使用

  • setup工具
    • 红帽专有图形化工具setup设置IP地址
    • 使用XShell前先来配置IP地址

第3章 命令基本格式及文件处理命令

3-1 Linux命令格式

  • 命令提示符

    • [root@localhost ~]#

      • root:当前登录用户

        Linux中的管理员是root(windows是admin)

      • localhost:主机名(默认主机名)

        windows在一个局域网内不能使用同一主机名

      • ~:当前所在目录(家目录)

        • 对管理员来讲,根目录是最高级目录 /root
        • 普通用户:/home/user1/
      • #:超级用户的提示符(普通用户的提示符是$)

  • 命令格式:命令 [选项] [参数]

    • 中括号代表可选
    • 个别命令使用不遵守此格式
    • 当有多个选项时,可以写在一起
    • 约定选项是调整命令的功能结构,简化选项与完整选项 -a 等于 --all
    • 不加参数时只在当前目录进行操作
  • 查询目录中内容:ls [选项] [文件或目录]

    选项:

    • -a:显示所有文件,包括隐藏文件

      Linux当中隐藏文件都以.开头命名

      隐藏文件:该文件是系统文件,除非必要不要改动,避免误操作

    • -l:显示详细信息

      -rw-r–r--. 1 root root 1207 1月 14 18:18 install.log

      • 第一列代表文件权限

        -rw-r–r--.

        • 文件类型(- 文件 d目录 l软链接文件);特殊文件:块设备文件、字符设备文件、套接字文件和管道文件
        • rw-,r–,r–

        u所有者,g所属组,o其他人

        • 所有者,所属组指代的都是用户和文件之间的关系
        • 用户组:相同权限或者相同身份的人所组成的组
        • r读,w写,x执行
        • .代表ACL权限
      • 第二列数字:引用计数,代表这个文件被调用几次,只在硬链接当中有

      • 第三列:代表文件的所有者

      • 第四列:代表文件的所属组

      • 第五列数字:代表文件的大小,单位是字节

      • 第六列日期:表示文件的最后一次修改时间

      • 第七列:文件名

    • -d:查看目录属性

    • -h:人性化显示文件大小(以M,K为单位)

    • -i:显示inode

      Linux当中每个文件都有一个id号,系统在查找文件的时候都是通过id号进行查找的文件所在位置

3-2 Linux目录处理命令(上)

  • 建立目录:mkdir -p [目录名]
    • -p 递归创建(先建立上级目录,再在新目录下创建目录)
    • 命令英文原意:make directories
  • 切换所在目录:cd [目录]
    • 命令英文原意:change directory
    • 简化操作:
      • cd ~ :进入当前用户的家目录
      • cd :进入当前用户的家目录
      • cd - :进入上次目录
      • cd … :进入上一级目录
      • cd . :进入当前目录
    • 路径
      • 相对路径:参照当前所在目录,进行查找
      • 绝对路径:从根目录开始指定,一级一级递归查找。在任何目录下都能进入指定位置
  • 查询所在目录位置:pwd
    • 命令英文原意:print working directory

ctrl + L - > 清屏

Tab键可以进行目录补全,命令补全

3-3 Linux目录处理命令(下)

  • 删除空目录:rmdir [目录名]

    • 命令英文原意:remove empty directories
    • 只能删除空白目录
  • 删除文件或目录:rm -rf [文件或目录]

    • 命令英文原意:remove

    • 选项:

      • -r:删除目录(不加-r时删除目录报错)

      • -f:强制(不加-f时删除每一个文件时都会询问“是否删除”)

        没有GUI的Linux是不会有回收站的

    • rm -rf /:格式化,可以在运行时直接进行格式化

  • 复制命令:cp [选项] [原文件或目录] [目标目录]

    • 命令英文原意:copy
    • 若目标目录后不加文件名,则为原名复制;添加文件名,即为改名复制
    • 选项:
      • -r:复制目录
      • -p:连带文件属性复制
        • 不带-p复制时,复制文件的时间为复制操作执行的时间,而不是原文件的最后修改时间
      • -d:若源文件是链接文件,则复制链接属性
      • -a:相当于 -pdr
  • 剪切或改名命令:mv [原文件或目录] [目标目录]

    • 命令英文原意:move
    • 在剪切文件和目录都不需要加-r
    • 原文件和目标文件在同一个目录下为改名指令:cp [原文件名] [新文件名]

ll 相当于ls -l

3-4 Linux中常见目录作用

  • /:根目录
  • /bin:命令保存目录(普通用户就可以读取的命令)
  • /sbin:命令保存目录(超级用户才能使用的目录)
  • /usr:系统软件资源目录
    • /usr/bin:系统命令(普通用户)
    • /usr/sbin:系统命令(超级用户)
  • /home:普通用户的家目录;/root:超级用户的家目录
  • /boot:启动目录,启动相关文件
  • /dev:设备文件保存目录
  • /etc:配置文件保存目录
  • /lib:系统库保存目录
  • /mnt,/media,/misc:三个空目录,用来挂载
    • /mnt:系统挂载目录,用来挂载U盘,移动硬盘
      • (习惯)创建cdroom来挂载光盘,创建usb来挂载U盘;因为老式的Linux下没有media和misc
    • /media:挂载目录,用来挂载光盘
    • /misc:挂载目录,用来挂外接的磁带机
  • /tmp:临时目录
  • /proc,/sys:这两个目录不能直接操作,保存的是内存的过载点,内容都是写入内存的
  • /var:系统相关文档内容

Linux中每个一级目录都有特定作用

可以在家目录root或home,以及tmp目录下随便放东西

3-5 Linux链接命令

  • 链接命令:ln -s [原文件] [目标文件]
    • 命令英文原意:link
    • 功能描述:生成链接文件
    • 选项:-s:创建软链接
      • 注意:创建软链接时,原文件一定要写绝对路径!
  • 硬链接特征:
    1. 拥有相同的i节点和存储block块,可以看做是一个文件
    2. 可通过i节点识别
    3. 不能跨分区
    4. 不能针对目录使用
  • 软连接特征:
    1. 类似windows的快捷方式
    2. 软链接拥有自己的I节点和Blick块,但是数据块中只保存原文件的文件名和I节点号,并没有实际的文件数据
    3. Irwxrwxrwx I 软链接
      • 软链接文件权限都为rwxrwxrwx
      • 实际的文件权限还是由原文件进行限定
    4. 修改任意文件,另一个都改变
    5. 删除原文件,软链接不能使用

第4章 文件搜索命令

4-1 Linux中文件搜索命令locate

  • locate命令格式

    • locate 文件名

      在后台数据库中按文件名搜索,搜索速度更快

    • /var/lib/mlicate:locate命令所搜索的后台数据库(不是实时更新的,而是按天更新)

    • updatedb强制更新数据库

  • 优点:跟find相比搜索速度较快

  • 缺点:只能按照文件名搜索,而不能搜索更加复杂的命令

  • 默认情况下不搜索/tmp下文件

    • /etc/updatedb.conf配置文件
      • PRUNE_BIND_MOUNTS=“yes”:开启搜索限制
      • PRUNEFS=“…":搜索时,不搜索的文件系统
      • PRUNENAMES="…":搜索时,不搜索的文件类型
      • PRUNEPATHS="…":搜索时,不搜索的路径

4-2 Linux中命令搜索命令

  • 搜索命令的命令whereis

    • whereis 命令名:搜索命令所在路径及帮助文档所在位置
    • 选项:
      • -b:只查找可执行文件
      • -m:只查找帮助文件
    • 只能搜索命令,不能搜索文件
  • 搜索命令的命令which

    • which 文件名:搜索命令所在路径及别名
  • PATH环境变量

    • 定义的是系统搜索命令的路径

    • Linux当中要想执行文件,脚本只能通过绝对路径

    • []# echo $PATH
      /usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
      
    • Linux执行命令时,是通过PATH环境变量,在其下每个目录中查找命令,找到才执行(Windows也是)

    • 若想要自己写的命令能够不打绝对路径执行,需放到PATH的目录中

  • whereis和which

    • 都无法找到shell本身自带的命令(如:cd),都只能看到外部安装的外来命令
    • 都遵守/etc/updatedb.conf配置文件

4-3 Linux中find命令

  • 优点:功能强大

  • 缺点:选项多,比较耗费资源

  • find [搜索范围] [搜索条件]:搜索文件

    • find / -name install.log

      • 避免大范围搜索,会非常耗费系统资源
      • find是在系统当中搜索符合条件的文件名。如果需要匹配,使用通配符匹配,通配符是完全匹配(一模一样)
    • Linux中的通配符:

      • *:匹配任意内容
        • find /root -name “*”:展示当前目录下的所有文件(包括隐藏文件)
      • ?:匹配任意一个字符
      • []:匹配任意一个中括号内的字符
    • find /root -iname install.log:不区分大小写

    • find /root -user root:按所有者搜索

    • find /root -nouser:查找没有所有者的文件

      • Linux当中没有所有者的文件一般是垃圾文件,手动清除
        1. 文件是由内核产生的,内核直接调用不通过系统目录,它产生的文件可能没有所有者(在proc,sys目录中的很有可能)
        2. 外来文件,文件在windows中建立,由U盘拷入Linux(windows忽略了所有者的概念)
    • find /var/log/ -mtime +10:查找10天前修改的文件

      • -10:10天内修改的文件
      • 10:10天当天修改的文件
      • +10:10天前修改的文件
      • atime:文件访问时间
      • ctime:改变文件属性
      • mtime:修改文件内容
      • time的默认时间是天
    • find . -size 25k:查找文件大小时25KB的文件

      • . :当前目录
      • -25k:小于25KB的文件
      • 25k:等于25KB的文件
      • +25k:大于25KB的文件
      • 默认的单位是数据块,千字节小写k,兆字节大写M
    • find . -inum 262422:查找i节点是262422的文件

    • find /etc -size +20k -a -size -50k

      查找/etc/目录下,大于20KB并且小于50KB的文件

      • -a :and 逻辑与,两个条件都满足
      • -o : or 逻辑或,两个条件满足一个即可
    • find /etc -size +20k -a -size -50k -exec ls -lh {} ;

      查找/etc/目录下,大于20KB并且小于50KB的文件,并显示详细信息

      • -exec用来连接两个操作,第二个操作需要对第一个操作的结果可以操作
      • 有-exec就要有{} ;
      • -exec/ok 命令 {} ; :对搜索结果执行操作

4-4 Linux中grep命令

  • 搜索字符串命令grep
    • grep [选项] 字符串 文件名:在文件当中匹配符合条件的字符串
      • 选项:
        • i:忽略大小写
        • -v:排除指定字符串
  • find命令与grep命令的区别
    • find命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
    • grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配

第5章 帮助命令

5-1 Linux中帮助命令

  • man 命令:获取指定命令的帮助
    • 英文原意:manual
    • /-x:寻找文档中第一个出现-x的位置
  • man的级别
    • 1:查看命令的帮助
    • 2:查看可被内核调用的函数的帮助
    • 3:查看函数和函数库的帮助
    • 4:查看特殊文件的帮助(主要是/dev目录下的文件)
    • 5:查看配置文件的帮助
    • 6:查看游戏的帮助
    • 7:查看其它杂项的帮助
    • 8:查看系统管理员可用命令的帮助
    • 9:查看和内核相关文件的帮助
  • 查看命令拥有哪个级别的帮助
    • man -f 命令 相当于 whatis 命令
  • 查看和命令相关的所有帮助
    • man -k 命令 相当于 apropos 命令
    • 查出所有包含命令关键字的帮助文档

5-2 Linux中其他帮助命令

  • 选项帮助

    • 命令 --help:获取命令选项的帮助
  • shell内部命令帮助

    • shell是Linux命令解释器,是用户和计算机交互的一个接口

      • shell本身就是一个管理窗口(操作平台),会自带一些非常简单的命令,能执行一些简单的操作
    • help shell内部命令:获取shell内部命令的帮助

    • 例:

      whereis cd
      #确定是否是shell内部命令
      help cd
      #获取内部命令帮助
      
  • 详细命令帮助info

    • info 命令
      • 回车:进入子帮助页面(带有*号标记)
      • -u:进入上层页面
      • -n:进入下一个帮助小节
      • -p:进入上一个帮助小节
      • -q:退出

第6章 压缩命令

6-1 Linux中压缩命令1

  • windows中常见的压缩格式:.zip,.rar,.7z
    • .rar不能在linux中解压缩
  • Linux当中常用压缩格式:.zip,.gz,.bz2,.tar.gz,.tar.bz2
  • .zip格式压缩
    • windows和linux中的.zip是可以互相通用的
    • zip 压缩文件名 源文件:压缩文件
    • zip -r 压缩文件名 源目录:压缩目录
    • unzip 压缩文件:解压缩.zip文件
  • .gz格式压缩
    • linux当中的.gz格式是可以在windows当中解压缩的
    • gzip 源文件:压缩为.gz格式的压缩文件,源文件会消失
    • gzip -c 源文件 > 压缩文件:压缩为.gz格式,源文件保留
      • 命令 > 文件:把命令的结果写入文件
    • gzip -r 目录:压缩目录下所有的子文件(分别压缩),但是不能压缩目录
    • gzip -d 压缩文件:解压缩文件
    • gunzip 压缩文件:解压缩文件
  • .bz2格式压缩
    • bzip2 源文件:压缩为.bz2格式,不保留源文件
    • bzip2 -k 源文件:压缩之后保留源文件
    • 注意:bzip2命令不能压缩目录
    • bzip2 -d 压缩文件:解压缩,-k保留压缩文件
    • bunzip2 压缩文件:解压缩,-k保留压缩文件

压缩文件不一定比原文件小,因为压缩文件需要写入压缩格式

6-2 Linux中压缩命令2

  • 打包命令tar
    • tar -cvf 打包文件名 源文件
      • 选项:
        • -c:打包
        • -v:显示过程
        • -f:指定打包后的文件名
    • 可以解决gz,bz2不能压缩目录的问题
    • tar -xvf 打包文件名:解打包命令
      • x:解打包
  • .tar.gz压缩格式
    • 其实.tar.gz格式是先打包为.tar格式,再压缩为.gz格式
    • tar -zcvf 压缩包名.tar.gz 源文件
      • 选项
        • -z:压缩为.tar.gz格式
        • -t:只查看其中的文件不解压
    • tar -zxvf 压缩包名.tar.gz
      • 选项:-x:解压缩.tar.gz格式
  • .tar.bz2压缩格式
    • tar -jcvf 压缩包名.tar.bz2 源文件
      • 选项:-z:压缩为.tar.bz2格式
    • tar -jxvf 压缩包名.tar.bz2
      • 选项:-x:解压缩.tar.bz2格式
    • 压缩包前加目录可以指定生成文件的位置
    • 可以同时压缩多个文件目录,中间用空格隔开

第7章 关机与重启命令

7-1 Linux中关机与重启命令

  1. shutdown命令
    • # shutdown [选项] 时间
      • 选项
        • -c:取消前一个关机命令
        • -h:关机
        • -r:重启
      • 时间
        • now
        • 1h/
        • 05:30 &
          • &:将本条命令放到后台执行
    • 关机和重启时最好使用shutdown命令,因为会正确保存当前的状态
    • 服务器关机的时候,一定要关闭当前的服务
  2. 其他关机命令
    • []# halt
    • []# poweroff
    • []# init 0
    • 这几种关机命令都不太安全
  3. 其他重启命令
    • []# reboot
    • []# init 6
    • reboot相对安全
  4. 系统运行级别
    • 0:关机
    • 1:单用户
      • 类似windows当中的图形安全模式:启用最小的程序,用在windows出现问题进行修复的时候
      • 启动最小的程序(不会有图形界面的!)
      • 进去主要是为了进行系统修复
    • 2:不完全多用户,不含NFS服务
      • NFS是Linux中的文件共享服务
    • 3:完全多用户
    • 4:未分配
    • 5:图形界面(装过图形界面才可以使用)
    • 6:重启
    • []# init 0-6:来启动运行级别
    • []#cat /etc/inittab:修改系统默认运行级别
      • id:3:initdefault:
      • Linux当中大写X代表图形界面
      • 默认级别不可以设为0或6!!!
    • []# run level:查询系统运行级别
      • 第一个数字为上一个级别,第二个数字为当前级别
      • N表示null空级别,即开机前
  5. 退出登录命令:# logout

第8章 其他常用命令

8-1 Linux中挂载命令

  1. 查询与自动挂载

    • []# mount:查询系统中已经挂载的设备
    • []# mount -a:依据配置文件/etc/fstab的内容,自动挂载
      • /etc/fstab-Linux当中的自动挂载文件
        • /,/boot,/home,swap开机自动挂载(写在~文件内)
        • 只要写入该文件的分区都会自动挂载(不建议将U盘等挂载点写入,因为不一定每次开机的时候都需要执行)
  2. 挂载命令格式

    • []# mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点

      • 挂载点(盘符):已经存在的空白目录

      • 选项:

        • -t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统

        • -o 特殊选项:可以指定挂载的额外选项

          参数说明
          atime/noatime更新/不更新访问时间。访问分区文件时,是否更新文件的访问时间,默认为更新
          async/sync异步/同步。默认为异步
          auto/noauto自动/手动,mount -a命令执行时,是否会自动安装/etc/fstab文件内容挂载,默认为自动
          defaults定义默认值,相当于rw,suid,dev,exec,auto,nouser,async这七个选项
          exec/noexec执行/不执行,设定是否允许在文件系统中执行课执行文件,默认是exec允许
          remount重新挂载已经挂载的文件系统,一般用于指定修改特殊权限
          rw/ro读写/只读,文件系统挂载时,是否就有读写权限,默认是rw
          suid/nosuid具有/不具有SUID权限,设定文件系统是否具有SUID和SGID的权限,默认是具有
          user/nouser允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,默认是不允许,只有root可以挂载分区
          usrquota写入代表文件系统支持用户磁盘配额,默认不支持
          grpquota写入代表文件系统支持组磁盘配额,默认不支持
          • 如果修改了系统分区的权限,记得修改回来,不然会影响系统启动

          linux当中#开头都是注释

          但是"#!/bin/bash"作起始行,代表下面的内容都是脚本文件

  3. 挂载光盘

    • []# mkdir /nt/cdrom/#建立挂载点
      []# mount -t iso9660 /dev/cdrom /mnt/cdrom/
      #挂载光盘
      []# mount /dev/sr0 /mnt/cdrom/
      
      • /dev/cdrom - > sr0 软链接
      • 挂载光盘时,iso9660可以不写,linux系统默认
    • []# cd /mnt/cdrom
      []# ls
      #读取光盘内文件内容
      
  4. 卸载命令

    • []# umount 设备文件名或挂载点
    • 在光盘内需要先退出才能卸载
  5. 挂载U盘

    • []# fdisk -l
      #查看U盘设备文件名
      []# mount -t vfat /dev/sdb1 /mnt/usb/
      
      • vfat指的是windows中的fat32系统

      • Linux默认是不支持NTFS文件系统的,所以移动硬盘不能在Linux当中直接挂载

        1. 重新编译linux内核,把NTFS的文件系统类型选上
        2. 在系统中安装NTFS-3g,但是只能读

        linux把能用到的驱动全部放到内核中,把它认为一些用不到的驱动不加载

8-2 Linux中用户登录查看命令

  • 查看用户登录信息:w

    • 第一行内容:
      • 系统时间,本次运行时间,当前登录的用户数
      • 系统在过去的1分钟,5分钟,15分钟之前的平均负载
        • 平均负载:CPU和内存的栈的负载压力
        • 值越高代表系统的压力越大
    • 命令输出:
      • USER:登陆的用户名
      • TTY:登陆终端
        • tty1代表本机终端(即虚拟机内登陆的
        • pts/0代表第一个远程终端
      • FROM:从哪个IP地址登陆
      • LOGIN@:登陆时间
      • IDLE:用户闲置时间
      • JCPU:指的是和该终端链接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间
      • PCPU:是指当前进程所占用的时间
        • JCPU,PCPU越大,代表当前的操作越耗费CPU资源
      • WHAT:当前正在运行的命令
  • 查看登录用户信息:who

    • 命令输出:

      • 用户名
      • 登录终端
      • 登录时间(登录来源IP地址)

      登录中

  • 查询当前登录和过去登录的用户信息:last

    • last命令默认是读取/var/log/wtmp文件数据
    • 命令输出:
      • 用户名
      • 登录终端
      • 登录IP
      • 登录时间
      • 推出时间(在线时间)
  • 查看所有用户的最后一次登录时间:lastlog

    • lastlog命令默认是读取/var/log/lastlog文件内容
    • 命令输出:
      • 用户名
      • 登录终端
      • 登录IP
      • 最后一次登录时间

第9章 Shell基础

9-1 shell概述

  1. shell是什么
    • shell是一个命令行解释器,它为用户提供了一个向linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序
    • shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。shell是解释执行的脚本语言,在shell中可以直接调用linux系统命令
  2. shell的分类
    • Bourne Shell
      • 从1979起Unix就开始使用Bourne Shell
      • Bourne Shell的主文件名为sh
      • 不支持历史命令(↑不能查看历史命令)
    • C Shell
      • C Shell主要在BSD版的Unix系统中使用
      • 其语法和C语言相类似而得名
    • Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容
      • Bourne家族主要包括sh、ksh、Bash、psh、zsh
      • C家族主要包括:csh、tcsh
        • 主要给Unix使用
    • Bash:Bash与sh兼容,现在使用的Linux就是使用Bash作为用户的基本Shell(不分版本)
  3. Linux支持的shell
    • /etc/shells
    • []# sh可以将当前使用的shell切换成sh
      • sh相对比较古老,但在Linux当中的一些特殊模式(单用户模式,系统的光盘修复模式)下使用
      • 占用的资源更少
      • exit退出
    • 一个shell中可以调用其他shell,一个shell当中可以调用其他子shell

9-2 脚本执行方式

  1. echo输出命令

    • echo [选项] [输出内容]

      • 输出内容一旦有空格就需要加双引号
    • 选项:

      • -e:支持反斜线控制的字符转换

      • 控制字符

        控制字符作用
        \a输出警告音
        \b退格键,也就是向左删除键
        \n换行符
        \r回车键
        \t制表符,也就是Tab键
        \v垂直制表符
        \0nn按照八进制ASCII码表输出字符。其中0位数字零,nnn是三位八进制数
        \xhh按照十六进制ASCII码表输出字符。其中hh是两位十六进制数
        • 主要用来调整输出格式
        • \e代表调用颜色,[1;代表开启颜色选项,\e[0m代表关闭颜色
          • #30m=黑色,#31m=红色,32m=绿色,33m=黄色,34m=蓝色,35m=杨红,36m=轻奢,37m=白色
  2. 第一个脚本

    []# vim hello.sh
    #!/bin.bash
    #The first program
    echo -e "hello world!\n"
    
    • #!/bin/bash:不是注释,也不是可有可无的
      • 当脚本语言中,包含了除shell以外的语言,不含该行会报错
  3. 脚本执行

    • 赋予执行权限,直接运行
      • chmod 755 hello.sh
      • 相对路径./hello.sh或绝对路径/root/hello.sh
    • 通过Bash调用执行脚本
      • bash hello.sh

9-3 别名与快捷键

  • 别名的作用:当原命令很长的时候,起一个别名可以简化操作
  • 查看与设定别名
    • alias:查看系统中所有的命令别名
    • alias 别名=‘原命令’:设定命令别名
  • 别名永久生效与删除别名
    • vi ~/.bashrc:写入环境变量配置文件
      • 每个用户的家目录下都有.bashrc配置文件
      • 写入文件之后需要用户重新登录才可以生效或者执行source .bashrc
    • unalias 别名:删除别名
      • 临时删除
  • 命令生效顺序
    • 第一顺位执行用绝对路径或相对路径执行的命令
    • 第二顺位执行别名
      • 一旦有了别名,原始命令就会失效
    • 第三顺为执行Bash的内部命令
    • 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
  • 常用快捷键
    • ctrl+c:强制终止当前命令
    • ctrl+l:清屏
      • 清空命令:clear
    • ctrl+a:光标移动到命令行首
    • ctrl+e:光标移动到命令行尾
    • ctrl+u:从光标所在位置删除到行首
    • ctrl+z:把命令放入后台
    • ctrl+r:在历史命令中搜索

9-4 历史命令

  1. 历史命令
    • history [选项] [历史命令保存文件]
      • 选项:
        • -c:清空历史命令
          • 不是同步的,执行后还能查看,需要重启才可以
        • -w:把缓存中的历史命令写入历史命令保存文件~/.bash_history
          • 每个用户都有自己的历史命令保存文件,防止冲突
          • 当前用户正确退出了,从新登录开始执行的命令都在缓存中,并没有写出来
      • 历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改
    • 历史命令的调用
      • 使用上、下箭头调用以前的历史命令
      • 使用”!n“重复执行第n条历史命令
      • 使用“!!”重复执行上一条命令
      • 使用“!字串”重复执行最后一条以该字串开头的命令
  2. 命令与文件补全
    • 在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按“Tab”键就会自动进行补全
      • 命令的补全是依靠 P A T H 路 径 , 系 统 在 PATH路径,系统在 PATHPATH下目录进行寻找命令
      • 文件补全依靠的是路径
      • 一个加快输入,一个防止错误

9-5 输出重定向

  1. 标准输入输出

    设备设备文件名文件描述符类型
    键盘/dev/stdin0标准输入
    显示器/dev/sdtout1标准输出
    显示器/dev/sdterr2标准错误输出
  2. 输出重定向

    类型符号作用
    标准输出重定向命令 > 文件以覆盖的方式,把命令的正确输出输出到指定的文件或设备中
    命令 >> 文件以追加的方式,把命令的正确输出输出到指定的文件或设备中
    标准错误输出重定向错误命令 2>文件以覆盖的方式,把命令的错误输出输出到指定的文件或设备中
    错误命令 2>>文件以追加的方式,把命令的错误输出输出到指定的文件或设备中
    正确输出和错误输出同时保存命令 > 文件 2>&1以覆盖的方式,把正确输出和错误输出都保存到一个文件当中
    命令 >> 文件 2>&1以追加的方式,把正确输出和错误输出都保存到一个文件当中
    命令 &>文件以覆盖的方式,把正确输出和错误输出都保存到一个文件当中
    命令 &>>文件以追加的方式,把正确输出和错误输出都保存到一个文件当中
    命令>>文件1 2>>文件2将正确的输出追加到文件1中,把错误的输出追加到文件2中
    • 把本身直接输出的命令放入文件中,相当于记录了一个日志
      • 如果文件不存在,则会新建一个文件;否则直接修改文件
    • 标准输出重定向只会保存正确命令的输出结果,错误命令会直接打印出来
    • 注意:正确输出> 文件之间有空格,错误输出>文件之间没有空格
    • 命令 >> 文件 2>&1:如果命令正确,直接写入文件;如果文件错误,将命令写入2,再将2写入1
    • 命令 &>/dev/null:将命令结果直接丢入“黑洞”(相当于回收站);既不会在文件中,也不会直接打印
  3. 输出重定向

    • []# wc [选项] [文件名]
      • 选项:
        • -c:统计字节数
        • -w:统计单词数
        • -l:统计行数
    • []# wc<文件:把文件作为命令输入
    • []# wc<<标识符:标识符把标识符之间内容作为命令的输入

9-6 管道符

  1. 多命令顺序执行

    多命令执行符格式作用
    命令1;命令2多个命令顺序执行,命令之间没有任何逻辑联系
    &&命令1&&命令2逻辑与
    当命令1正确执行,命令2才会执行
    当命令1执行不正确,命令2不会执行
    ||命令1||命令2逻辑或
    当命令1执行不正确,命令2不会执行
    当命令1正确执行,命令2才会执行
    • date;命令;date:可以测试命令的执行时间
    • ;分号分隔,不管中间有无报错,都会顺畅执行完毕全部操作
    • 命令 && echo yes|| echo no:可以判断命令有无正确执行
  2. 管道符

    • 命令格式:[]# 命令1 | 命令2
      • 命令1的正确输出作为命令2的操作对象
      • 命令1执行错误时,命令2不会执行

9-7 通配符

  1. 通配符

    通配符作用
    匹配一个任意字符
    *匹配0个或多个任意字符,也就是可以匹配任何内容
    []匹配中括号中任意一个字符
    [-]匹配中括号中人任意一个字符,-代表一个范围
    [^]逻辑非,表示匹配不是中括号内的一个字符
    • 用于匹配文件名或目录名的匹配,文件内容的匹配需要正则表达式
  2. Bash中其他特殊符号

    符号作用
    ‘’单引号,在单引号中所有的特殊符号都没有特殊含义
    “”双引号,在双引号中特殊符号都没有特殊含义,但是“$”、“`”和”\“是例外,拥有”调用变量的值“、”引用命令“和”转义符“的特殊含义
    ``反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和 ( ) 作 用 一 样 , 不 过 更 推 荐 使 用 ()作用一样,不过更推荐使用 ()使(),因为反引号非常容易看错
    $()和反引号作用一样,用来引用系统命令
    #在Shell脚本中,#开头的行代表注释
    $用于调用变量的值
    \转移符,跟在\之后的特殊符号将失去特殊含义,变为普通字符

本文标签: 达人计划imoocLinux