Linux基础

Linux的基本介绍,以及基本的快捷方式等

Linux基础

1、冯·诺依曼体系结构

存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存

冯·诺依曼理论的要点:

数字计算机的数制采用二进制,bit 位, byte 字节 1 byte =8 bit
计算机应该按照程序顺序执行
计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成

Unix哲学思想

①一切都是一个文件(包括硬件)

②小型,单一用途的程序
③链接程序,共同完成复杂的任务
④避免令人困惑的用户界面
⑤配置数据存储在文本中

2、Linux镜像下载

CentOs

  • https://wiki.centos.org/Download
    http://mirrors.aliyun.com
    http://mirrors.sohu.com
    http://mirrors.163.com
    https://mirrors.tuna.tsinghua.edu.cn/centos/

Ubuntu

  • http://cdimage.ubuntu.com/releases/ Server版
    https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cdimage/releases/
    http://releases.ubuntu.com/ Desktop版
    http://mirrors.aliyun.com/ubuntu-releases/
    https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/
  • Ubuntu20.04下载:http://mirrors.aliyun.com/ubuntu-releases/20.04.1/ubuntu-20.04.1-live-server-amd64.iso

3、设置主机名

临时生效

  • hostname NAME

永久生效(只支持centos7和Ubuntu18.04以上版本)

  • hostnamectl set-hostname NAME
  • 修改配置文件vim /etc/hostname

注意:

主机名不支持使用下划线,但支持横线,可使用字母,横线或数字组合
有些软件对文件名有特殊要求

4、命令提示符prompt

通过修改PS1变量实现个性化提示符定制,加以区分

默认提示符格式

  • centos:[root@localhost ~]#
  • Ubuntu:root@ubuntu1804:~#
  • #:表示管理员
    $:表示普通用户

显示提示符格式

  • echo $PS1

修改提示符格式

  • 写入配置文件中,退出当前bash界面重新打开之后就可以显示自定义的提示符格式了
  • 提示符格式说明:
    \e 控制符\033
    \u 当前用户
    \h 主机名简称
    \H 主机名
    \w 当前工作目录
    \W 当前工作目录基名
    \t 24小时时间格式
    \T 12小时时间格式
    ! 命令历史数

5、执行命令

shell中可执行命令分类

  • 别名
  • 内部命令:由shell自带的,而且通过某命令形式提供, ,用户登录后自动加载并常驻内存中
  • 外部命令:在文件系统路径下有对应的可执行程序文件,当执行命令时才从磁盘加载至内存中,执行
    完毕后从内存中删除

内部命令或外部命令的查看

  • 通过type命令进行查看
    如果是内部命令显示is a shell builtin
    如果是外部命令显示相应的文件路径
    -a 参数可以查看全部,像echo既是内部命令,也是外部命令(不同的shell的内部命令不同,所以为了防止有些shell的内部命令中没有echo,所以也会提供外部命令的echo)
  • 通过help命令查看内部命令
  • 通过enable管理内部命令
    • enable cmd 启用内部命令
      enable –n cmd 禁用内部命令
      enable –n 查看所有禁用的内部命令
  • 通过which查看外部命令路径
  • HASH缓存表
    • 当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行,如果不存在,将会去PATH路径下寻找,利用hash缓存表可大大提高命令的调用速率。
    • hash命令常见用法:
      hash 显示hash缓存
      hash -l 显示hash缓存,可作为输入使用
      hash -p path name 将命令全路径path起别名为name
      hash -t name 打印缓存中name的路径
      hash -d name 清除name缓存
      hash -r 清除缓存

别名

  • 作用:对于经常执行的较长命令,可以将其定义成较短的别名,以方便执行
  • alias命令显示当前shell进程所有可用别名
  • 定义别名
    • 通过alias NAME=‘VALUE’ 当前shell进程有效的别名
    • 永久有效
    • 当前用户有效
    • 所有用户有效
    • 注意:写入后都需要退出当前的bash重新打开才能生效
  • 撤销别名
    • 通过unalias进行撤销

注意:

  • 如果别名与系统内部命令外部命令同名,此时执行的是别名定义的命令。所以执行行命令的优先顺序:别名>内部命令>外部命令
  • 如果此时想执行该名字的原始命令可使用以下方式
    • \ALIASNAME
      “ALIASNAME”
      ‘ALIASNAME’
      command ALIASNAME
      /path/commmand  #只适用于外部命令

6、命令格式

COMMAND [OPTIONS…] [ARGUMENTS…]

COMMAND [COMMAND] [COMMAND] ….

选项(options):用于启用或关闭命令的某个或某些功能

  • 短选项:UNIX 风格选项,-c 例如:-l, -h
    长选项:GNU风格选项,–word 例如:–all, –human
    BSD风格选项: 一个字母,例如:a,使用相对较少

参数(arguments):命令的作用对消,比如:文件名,用户名等

注意:

多个选项以及多参数和命令之间使用空白字符分隔
取消和结束命令执行:Ctrl+c,Ctrl+d
多个命令可以用 “;” 符号分开
一个命令可以用\分成多行

7、常见命令

查看硬件信息

  • 查看cpu
    • lscpu命令
    • cat /proc/cpuinfo命令
  • 查看内存大小
    • free命令
    • cat /proc/meminfo命令
  • 查看硬盘和分区情况
    • lsblk命令
    • cat /proc/partitions命令

查看系统版本信息

  • 查看系统架构
    • arch命令
  • 查看内核版本
    • uname -r命令
  • 查看操作系统发行版本
    • centos
    • cat /etc/os-release命令
    • lsb_release -a 命令
    • cat /etc/redhat-release命令
    • Ubuntu
    • cat /etc/os-release
    • lsb_release -a
    • cat /etc/issue

日期和时间

  • 系统时钟:有Linux内核通过cpu的工作频率进行
    • 查看系统时间:date命令
  • 硬件时钟:主板
    • 查看硬件时间:clock(hwclock)命令
    • -s, –hctosys #以硬件时钟为准,校正系统时钟
      -w, –systohc #以系统时钟为准,校正硬件时钟
  • 时区
    • 装系统时候默认时区是美国
    • 查看当前时区
    • timedatectl status
    • 查看时区表
    • timedatectl list-timezones
    • 修改时区
    • timedatectl set-timezone Asia/Shanghai
  • 显示日历
    • cal命令

关机和重启

  • 关机命令
    • halt
    • poweroff
  • 重启命令
    • reboot
    • -f:强制,不调用shutdown
    • -p:切断电源
  • 关机或重启命令
    • shutdown
    • shutdown [OPTION]… [TIME] [MESSAGE]
    • -r: reboot
      -h: halt
      -c:cancel
      TIME:无指定,默认相当于+1(CentOS7)
      now: 立刻,相当于+0
      +#: 相对时间表示法,几分钟之后;例如 +3
      hh:mm :绝对时间表示,指明具体时间

用户登录信息查看命令

  • whoami: 显示当前登录有效用户
  • who: 系统当前所有的登录会话
  • w: 系统当前所有的登录会话及所做的操作

文本编辑命令

  • vim(后续有一节专门介绍)

会话管理

  • screen
    • 作用:可以实现会话管理。不会因为客户端的关闭影响程序的运行如:新建会话,共享会话等
      注意:CentOS7 来自于base源,CentOS8 来自于epel源
    • screen命令常见用法:
      创建新screen会话
      screen –S [SESSION]
      加入screen会话
      screen –x [SESSION]
      退出并关闭screen会话
      exit
      剥离当前screen会话
      Ctrl+a,d
      显示所有已经打开的screen会话
      screen -ls
      恢复某screen会话
      screen -r [SESSION]
    • 场景模拟:
    • 用ping来模拟一个文件传输的过程
    • 再打开一个终端查看进程
      • 发现有ping这个进程
    • 此时关闭发起ping命令的终端,再次查看进程
      • 发现ping的进程已经终止了
    • 此时使用screen,执行ping操作
    • 再次关闭终端
      • 发现ping的进程依旧在运行
  • tmux
    • Tmux 是一个终端复用器(terminal multiplexer),类似 screen,但是更易用,也更强大

输出信息echo命令

  • 基本用法
    • 功能:显示字符,echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号($)
    • 语法:echo [-neE][字符串]
    • 选项:
      -E (默认)不支持 \ 解释功能
      -n 不自动换行
      -e 启用 \ 字符的解释功能
    • 启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出
      \a 发出警告声
      \b 退格键
      \c 最后不加上换行符号
      \e escape,相当于\033
      \n 换行且光标移至行首
      \r 回车,即光标移至行首,但不换行
      \t 插入tab
      \ 插入\字符
      \0nnn 插入nnn(八进制)所代表的ASCII字符
      \xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)
    • 显示变量:
      echo “$VAR_NAME”  #用变量值替换,弱引用
      echo ‘$VAR_NAME’  #变量不会替换,强引用
  • 高级用法
    • 功能:在终端中,ANSI定义了用于屏幕显示的Escape屏幕控制码具有颜色的字符
    • 格式:”\033[字符背景颜色;字体颜色m字符串\033[0m”
    • \033[30m — \033[37m 设置前景色
      \033[40m — \033[47m 设置背景色
      • #字符背景颜色范围: 40–47       
        40:黑         
        41:红          
        42:绿          
        43:黄          
        44:蓝          
        45:紫          
        46:深绿         
        47:白色           

#字体颜色: 30–37
30: 黑
31: 红
32: 绿
33: 黄
34: 蓝
35: 紫
36: 深绿
37: 白色

    - 加颜色只是以下控制码中的一种,下面是常见的一些ANSI控制码:

        - \033[0m  关闭所有属性 
        \033[1m  设置高亮度 
        \033[4m  下划线 
        \033[5m  闪烁 
        \033[7m  反显 
        \033[8m  消隐 
        \033[nA  光标上移n行 
        \033[nB  光标下移n行 
        \033[nC  光标右移n列 
        \033[nD  光标左移n列 
        \033[x;yH 设置光标位置x行y列 
        \033[2J  清屏 
        \033[K  清除从光标到行尾的内容 
        \033[s  保存光标位置 
        \033[u  恢复光标位置 
        \033[?25l  隐藏光标 
        \033[?25h  显示光标
        \033[2J\033[0;0H 清屏且将光标置顶

8、命令行扩展和被括起来的集合

命令行拓展:“和$()

  • 把一个命令的输出打印给另一个命令的参数,放在“和$()中的一定是有输出信息的命令
    • 比较 “ ” ,‘ ’, “三者区别
    • 单引号:强引用,六亲不认,变量和命令都不识别,都当成了普通的字符串,”最傻”
      双引号:弱引用,不能识别命令,可以识别变量,”半傻不精”
      反向单引号:里面的内容必须是能执行的命令并且有输出信息,变量和命令都识别,并且会将反向单引号的内容当成命令进行执行后,再交给调用反向单引号的命令继续,”最聪明”
    • 虽然反引号使用的时候方便,但是会出现多次引用的时候会出现无法正确闭合的问题,所以此时可以灵活的使用$()

括号扩展:{}

  • 可以实现打印重复字符串的简化形式
    • {元素1,元素2,元素3}
      {元素1..元素2}
    • 关闭和开启{}的拓展功能(默认开启)

9、命令行历史

history命令

  • 格式:
    history [-c] [-d offset] [n]
    history -anrw [filename]
    history -ps arg [arg…]
  • 常用选项:
    -c: 清空命令历史
    -d offset: 删除历史中指定的第offset个命令
    n: 显示最近的n条历史
    -a: 追加本次会话新执行的命令历史列表至历史文件
    -r: 读历史文件附加到历史列表
    -w: 保存历史列表到指定的历史文件
    -n: 读历史文件中未读过的行到历史列表
    -p: 展开历史参数成多行,但不存在历史列表中
    -s: 展开历史参数成一行,附加在历史列表后

10、bash快捷键

Ctrl + l 清屏,相当于clear命令

Ctrl + o 执行当前命令,并重新显示本命令
Ctrl + s 阻止屏幕输出,锁定
Ctrl + q 允许屏幕输出,解锁
Ctrl + c 终止命令
Ctrl + z 挂起命令
Ctrl + a 光标移到命令行首,相当于Home
Ctrl + e 光标移到命令行尾,相当于End
Ctrl + f 光标向右移动一个字符
Ctrl + b 光标向左移动一个字符
Ctrl + xx 光标在命令行首和光标之间移动
Alt + f 光标向右移动一个单词尾
Alt + b 光标向左移动一个单词首
Ctrl + u 从光标处删除至命令行首
Ctrl + k 从光标处删除至命令行尾
Alt + r   删除当前整行
Ctrl + w 从光标处向左删除至单词首
Alt + d 从光标处向右删除至单词尾
Alt + Backspace 删除左边单词
Ctrl + d 删除光标处的一个字符
Ctrl + h 删除光标前的一个字符
Ctrl + y 将删除的字符粘贴至光标后
Alt + c 从光标处开始向右更改为首字母大写的单词
Alt + u 从光标处开始,将右边一个单词更改为大写
Alt + l 从光标处开始,将右边一个单词更改为小写
Ctrl + t 交换光标处和之前的字符位置
Alt + t 交换光标处和之前的单词位置
Alt + # 提示输入指定字符后,重复显示该字符#次

11、获得帮助

whatis

  • 作用:使用数据库来显示命令的简短描述
  • 注意:此工具在系统刚安装后,不可立即使用,需要制作数据库后才可使用
    • 执行下面命令生成数据库:

    CentOS 7 版本以后

    mandb

    CentOS 6 版本之前

    makewhatis

查看命令的帮助

  • 内部命令帮助
    • help COMMAND
    • man bash
  • 外部命令及软件帮助
    • COMMAND –help(COMMAND -h)
    • 显示用法总结和参数列表,大多数命令适用,但并非所有的
      • 格式说明:
        [] 表示可选项
        CAPS或 <> 表示变化的数据
        … 表示一个列表
        x |y| z 的意思是“ x 或 y 或 z ”
        -abc的 意思是 -a -b –c
        { } 表示分组
    • man COMMAND
    • info COMMAND
    • man常用于命令参考 ,GNU工具 info 适合通用文档参考
      • 方向键,PgUp,PgDn 导航
        Tab键 移动到下一个链接
        d 显示主题目录
        Home 显示主题首部
        Enter进入 选定链接
        n/p/u/l 进入下/前/上一层/最后一个链接
        s 文字 文本搜索
        q 退出 info
    • 百度
  • man命令
    • man 提供命令帮助的文件,手册页存放
      在/usr/share/man
      几乎每个命令都有man的“页面”
      中文man需安装包
      man-pages
      man-pages-zh-CN
    • man页面分组
    • 不同类型的帮助称为不同的“章节”,统称为Linux手册,man 1 man
      • 1:用户命令
        2:系统调用
        3:C库调用
        4:设备文件及特殊文件
        5:配置文件格式
        6:游戏
        7:杂项
        8:管理类的命令
        9:Linux 内核API