LINUX OS

LINUX OS

三月 22, 2022

Linux系统基础

  1. MBR:主引导记录

  2. grub2引导 (grub「grand unified bootloader 宏大的统一引导启动程序」:幼虫,搜寻)

    1. boot.img
    2. core.img
    3. *.mod
    4. grub.cfg a. 未独立/boot:/boot/grub2/grub.cfg b. 独立/boot:/grub2/grub.cfg
    5. grun2-setpassword:设置引导密码
  3. init:PID=1(进程号)

    1. centos7第一个进程:systemd(配置文件:/usr/system/systemd/)
    2. 执行登录 /bin/login
  4. demesg | less:“|”管道符,左侧命令输出作为右侧的输入

  5. /dev:设备 –> 文件

  6. /usr:unix shared resources(共享资源)「类似win的Program Files」

  7. /src:原文件

  8. /tmp:临时文件

  9. /var(variable):日志文件、打印机脱机工作文件、缓冲区

  10. /opt(option):选项文件

  11. /mnt(mount):挂载

  12. cd:change directory

  13. 文件类型:

    1. d:目录
    2. l:链接
    3. b:块设备
    4. c:字符设备文件
    5. -:普通文件
  14. 文件权限:

    1. 用户组:U / G / A
    2. 九位字母表示法:d[文件类型] rwx[文件属主] r-x[同组用户] r–[其他用户]
  15. cat快速编辑:

    1. cat>test
    2. [输入字符]
  16. tail & head:查看后十行,前十行 //-n num : 指定行数

  17. mdir [ -m ] [ -p 目录名 ]

  18. rmdir(remove dir):用于删除空目录

    1. rm -r
  19. touch:修改时间属性 * (不存在)创建文件

  20. 软链接:ln -s

  21. 硬链接:ln

    1. 以文件副本形式存在,不占用实际控件
    2. 不允许目录硬链接
    3. 只有在同一个文件系统才允许硬链接
  22. 查找类:which、whereis、find、grep

  23. 文件重定向:

    • /dev/stdin:标准输入文件
    • /dev/stdout:标准输出文件
    1. 输出重定向

      1. “>”:文件存在,覆盖
      2. “>>”:文件存在,添加内容到文件末尾
    2. 输入重定向

      1. “<”
    3. 管道符重定向:“|” 左输出为右输入

      yum包管理

  • centos镜像源文件的目录默认路径:
    /etc/yum.repos.d/

  • 备份:
    cp /etc/yum.repos.d/CentOS-Linux-BaseOS.repo /etc/yum.repos.d/CentOS-Linux-BaseOS.repo.bak

换源

  • 下载国内常用的镜像源并重命名为CentOS-Linux-BaseOS.repo,将其作为当前系统的镜像源

    +【阿里源】

    1
    2
    ##CentOS 8
    wget -O /etc/yum.repos.d/CentOS-Linux-BaseOS.repo http://mirrors.aliyun.com/repo/Centos-8.repo
    • 在使用阿里云的 centos8 的 yum 时报错:由于centos8 在2022年停止服务,后继版本为8-steam

      1
      2
      ##CentOS 8-stream
      wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
      1
      curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
    • 【网易源】

      1
      wget -O /etc/yum.repos.d/CentOS-Linux-BaseOS.repo  http://mirrors.163.com/.help/CentOS8-Base-163.repo
    • 『添加epel源』

      1
      wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo
    • 『清华源』:Guide

  • 清理缓存

    yum的缓存文件的存放目录是以下路径下:/var/cache/yum 直接清空给目录,或者使用一下命令均可

    1
    yum clean all
  • 重新生成缓存

    1
    yum makecache

    常用操作

    1
    2
    3
    4
    5
    6
    yum update
    yum makecache
    yum clean all
    yum info [pagename]
    yum list
    yum search

    SHELL

  1. shell概念

    • shell程序就是一个包含若干行shell或者linux命令的文件.
    • 像编写高级语言的程序一样,编写一个shell程序需要一个文本编辑器.如ⅥM等.
    • 在文本编辑环境下,依据shell的语法规则,输入一些shell/linux命令行,形成一个完整的程序文件.
    • 执行shell程序文件有三种方法
      1. #chmod +x file(在/etc/profile中,加入export PATH=${PATH}:~/yourpath,就可以在命令行下直接运行,像执行普通命令一样)
      2. #. file
      3. #sh file
      4. #source file
    • 在编写shell时,第一行一定要指明系统需要那种shell解释你的shell程序(如:#! /bin/bash,#! /bin/csh,/bin/tcsh,还是#! /bin/pdksh .)
    • 接口概念:在计算机体系结构中,操作系统是最接近硬件的软件部分,其更侧重从软件和功能的角度出发去描述部件,所以称之为设备控制器;而在计算机组成原理中,研究的重点在于硬件组成部分,其更青睐于从硬件的角度出发去描述部件,所以称之为I/O接口

各类Shell

1
2
3
echo $SHELL
echo $0
cat /etc/shells
  1. bash

  2. zsh

    • zshell简介:Zsh(Z-shell)是一款用于交互式使用的shell,也可以作为脚本解释器来使用。其包含了 bash,ksh,tcsh 等其他shell中许多优秀功能,也拥有诸多自身特色。

    • zshell发展历史:Zsh初版由原作者保罗·弗斯塔德(Paul Falstad)于1990年在普林斯顿大学求学时编写 [3] 。其名称zsh源于普林斯顿大学助教的邵中(Zhong Shao,现任耶鲁大学教授)——保罗将邵中的用户名”zsh”作为此Shell的名称

    • zsh美化

      SHELL文件类型

      / vim test1.sh

      1
      2
      chmod +x test1.sh
      ./test1.sh
      1
      sh test1.sh

      SHELL基本操作

  3. 变量赋值调用

    1
    echo $0 $1 $2 
    1
    2
    sh echotest1.sh 0 1 2 3
    #output:0 1 2
  4. expr:数值计算

    • “+、-、\、/、%”

    • 用法:“ $ () ”、“$ []”

      1
      2
      expr 2 + 3
      # output:5
  5. shell脚本

    1
    2
    3
    4
    cd /home
    touch test1
    mkdir test1
    mv test1 /test1
    1. 判断语法(a[]、test ?)

      1. 文件类判断

        • -e filename #如果 filename为目录,则为真
        • -f filename #如果 filename为常规文件,则为真
        • -L filename #如果 filename为符号链接,则为真
        • -r filename #如果 filename可读,则为真
        • -w filename #如果 filename可写,则为真
        • -x filename #如果 filename可执行,则为真
        • -s filename #如果文件长度不为0,则为真
        • -h filename #如果文件是软链接,则为真
      2. 数值比较判断

        • -eq:等于为真
        • -ne:不等于为真
        • -lt:小于为真
        • -le:小于等于为真
        • -gt:大于为真
        • -ge:大于等于为真
      3. 字符串判断

        • str:str非空,真
        • s1 = s2
        • s1 != s2
        • -n str:str不为0,真
        • -z str:str为0,真
      4. 组合语法

        • !:逻辑非
        • -a:逻辑与
        • -o:逻辑或
        • ( ):表达式分组,优先级区分
      • #如果==文件夹==不存在,则创建文件夹

        1
        2
        3
        4
        tempPath="/home/parasaga/blank"
        if [ ! -d "$tempPath" ];
        then mkdir $blankPath
        fi
      • #如果==文件==不存在,则创建文件

        1
        2
        3
        4
        tempFile="/home/parasaga/blank/error.log"
        if [ ! -f "$tempFile" ];
        then touch $tempFile
        fi
        1
        2
        3
        4
        5
        if [ ! -f test1 ]
        then echo "flase"
        else
        echo "true"
        fi
      • 演示示例

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        read s1
        if [ $s1 == 1 ]
        then echo 123
        mkdir shell1
        elif [ $s1 == 2 ]
        then echo 321
        mkdir shell2
        else
        echo finding
        if [ -d shell1 ]
        then rm -r shell1
        echo ok1
        fi
        if [ -d shell2 ]
        then rm -r shell2
        echo ok2
        else
        echo false
        fi
        fi
    2. 函数定义

      1
      2
      3
      functionname
      {
      }
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      function getSum(){
      SUM=$[$n1+$n2]
      echo "sum=$SUM"
      }

      read -p "请输入第一个参数n1:" n1
      read -p "请输入第二个参数n2:" n2

      # 调用 getSum 函数
      getSum $n1 $n2
    3. 循环语句

      • while

        1
        2
        3
        4
        while 条件(为真时执行)
        do
        语句
        done
      • until:测试发生在循环末尾,因此循环至少执行一次

        1
        2
        3
        4
        until 条件
        do
        语句
        done
      • for

        1
        2
        3
        4
        for 变量名 [ in 数值列表 ]
        do
        语句
        done
      • exit 0