Linux云计算之Linux基础3——Linux系统基础2

1、终端

  1. 终端(terminal):人和系统交互的必要设备,人机交互最后一个界面(包含独立的输入输出设备)
    • 物理终端(console):直接接入本机器的键盘设备和显示器
    • 虚拟终端(tty):通过软件方式虚拟实现的终端。它可以提供命令行界面,也可以提供桌面的用户界面(UI环境)。
      • 通过组合键(例如【Ctrl+Alt+F1到F6】)在不同的虚拟终端之间切换。
    • 模拟终端(pts):图形桌面开启的字符终端,或者通过远程连接到系统时使用的终端界面。当用户通过SSH或其他远程连接工具连接到Linux系统时,他们会使用模拟终端来与系统进行交互。
  2. 查看当前是哪个终端,命令【tty
  3. 终端对应的 UI 接口:GNOME 图形桌面环境、CLI 字符界面

2、shell

  1. 人机交互(翻译)程序,Shell 是一种用户与操作系统进行交互的程序。它接收用户的命令并将其发送到操作系统进行执行,然后将结果返回给用户。
    1. 图形界面:shell (GUI)、gnome
      1. 在图形界面中,用户与操作系统交互通常通过图形用户界面(GUI)进行,如 GNOME 桌面环境。
      2. 开启图形界面 【startx】 命令
    2. 字符界面:
      1. 在字符界面中,用户与操作系统交互通过字符用户界面(CLI)进行,如 Bash shell。
      2. 常见的命令行 shell 包括 bsh、csh、tcsh、ksh、bash、zsh等。其中,Bash 是遵循 GPL 协定的一种常见 shell。
      3. 要查看当前正在使用的 shell,使用命令 【echo $SHELL
  2. shell 提示符
    1. 在 shell 中,提示符是一个特殊的字符或字符串,用于指示用户可以输入命令。

    2. 管理员(root用户):提示符【#

    3. 普通用户:提示符【$

    4. 提示符的格式:【当前登录用户名@主机名 当前的工作目录】# 或 $

    5. ~ 】当前登录用户的家目录

      1. 家目录:用户登录后默认的起始目录,用户在这个目录下可以存储个人文件、配置文件和其他数据。
      2. 每个用户的家目录通常由系统管理员在用户创建时自动分配,并且具有与用户名称相同的名称。例如,对于用户名为 "user1" 的用户,家目录通常是 "/home/user1"。
    6. 显示当前的提示符样式:【echo $PS1

    7. 定制不同风格的提示符,通过设置环境变量:PS1="xxxxxxxxxxxxx"
      1.

      Kotlin 复制代码
      # 设置一个简单的提示符,只包含 $
      PS1="$ "
      
      # 设置一个包含用户名和当前工作目录的提示符
      PS1="\u@\h:\w $ "
      
      # 设置一个更加复杂的提示符,包含颜色和其他信息
      PS1="\[\e[01;32m\]\u@\h\[\e[00m\]:\[\e[01;34m\]\w\[\e[00m\] $ "
      
      \u 表示用户名
      \h 表示主机名
      \w 表示当前工作目录
      通过在 PS1 中设置不同的格式和包含不同的特殊字符,可以定制出适合自己喜好的命令行提示符样式。
      在设置 PS1 时,在包含颜色等控制字符时,需要使用特殊的转义序列(比如 \e[01;32m),以确保显示效果正确。
      1. 【PS1="\[\e[01;32m\]\u@\h\[\e[00m\]:\[\e[01;34m\]\w\[\e[00m\] $ "】

        1. \[\e[01;32m\]:这是一个颜色设置序列,用来设置命令行提示符的颜色。具体来说,\e[01;32m 表示设置颜色为亮绿色。其中 \e 是转义字符,表示 ASCII 控制序列的开始,[01;32m 是颜色设置的具体指令。在这个指令中,01 表示亮色,32 表示绿色。

        2. \u@\h:这个部分是命令行提示符中显示的内容。\u 表示当前用户名,\h 表示当前主机名。

        3. \[\e[00m\]:这是另一个颜色设置序列,用于恢复默认的文本颜色。具体来说,\e[00m 表示将文本颜色重置为终端的默认颜色。

        4. :这是分隔符,用于分隔用户名和主机名部分与工作目录部分。

        5. \[\e[01;34m\]:这是第二个颜色设置序列,用于设置工作目录部分的颜色。具体来说,\e[01;34m 表示设置颜色为亮蓝色。

        6. \w:这个部分是命令行提示符中显示的工作目录。\w 表示当前工作目录。

        7. \[\e[00m\]:这是另一个颜色设置序列,用于恢复默认的文本颜色,与第一个颜色设置序列对应。

        8. $:这是命令行提示符的最后一部分,通常表示普通用户权限。

3、设置主机名

  1. hostname NAME 】、【hostnamectI set-hostname NAME

    1. 注意:错误的主机名可能会导致某些服务无法启动
  2. 确定 shell 提示符进行敲命令 (包括内部命令和外部命令)

    1. 程序=指令+数据;指令是程序的执行逻辑,数据是程序操作的对象。

    2. 广义程序=指令.ELF+库文件+配置文件+帮助文档

      1. 广义程序包括可执行文件(指令)以及程序运行所需的其他资源。
      2. 指令是程序的执行逻辑,通常以 ELF(Executable and Linkable Format)格式存储。
      3. 库文件是程序调用的函数库,用于提供额外的功能和服务。
      4. 配置文件包含程序的配置信息,用于调整程序行为。
      5. 帮助文档提供了程序的使用说明和帮助信息。
    3. 注意:指令和库文件是二进制文件,配置文件和帮助文档是文本文件

    4. 命令一般都要调用库文件,否则程序可能无法正常运行

    5. ldd 】 命令可以查看一个可执行程序调用的共享库文件。
      1.

      Kotlin 复制代码
      ldd /bin/ls
  3. 命令路径:

    1. which 】 查找指定命令的可执行文件路径。
    2. whereis 】 查找指定命令的可执行文件路径以及帮助文档的路径
    Kotlin 复制代码
    which ls
    whereis ls
  4. 内部命令:当前 Shell 内置的命令,可以直接在 Shell 中执行。

  5. 外部命令:额外安装的可执行程序命令,通常是存储在系统的某个目录中的二进制文件。

  6. 使用【enable 】命令启用或禁用 Shell 内置命令,区分是否为内部或外部命令
    1.

    Kotlin 复制代码
    //启用内置命令
    enable -n command_name
    //例如,要启用 echo 内置命令,可以执行以下命令
    enable -n echo
    
    //禁用内置命令
    enable command_name
    //例如,要禁用 echo 内置命令,可以执行以下命令
    enable echo

    一般情况下,内置命令都是默认启用的,因此很少需要使用 enable 命令来手动启用或禁用内置命令。这个命令主要用于特殊情况下的调试或测试。
    2. 在 Bash shell 中,"echo" 命令用于将文本输出到标准输出。实际上内置命令是不会被禁用的,因为它们对 shell 的功能至关重要。内置命令通常被设计为与 shell 紧密集成,以确保 shell 的正常操作。

4、Linux 系统中的文件和目录

  1. 文件:磁盘空间上的一段数据流,根据文件名进行定位和访问。

    1. 数据+元数据(文件的权限、所有者、修改时间等信息。)
  2. 目录:相当于 windows 中的文件夹,实现对文件的路径映射和组织管理。

  3. Linux 文件名在同一个目录,必须唯一,严格区分大小写。

  4. 命令:【basename 基名】 用于从给定的文件路径中提取基本文件名(不包括路径)。(最右侧文件或目录名)
    1.

    Kotlin 复制代码
    basename /path/to/file.txt
  5. 命令:【dirname 路径名】用于从给定的文件路径中提取目录部分(不包括最右侧的文件名)。(左侧的目录名)
    1.

    Kotlin 复制代码
    dirname /path/to/file.txt

5、三大基本命令

  1. 【cd】、【ls】、【pwd】

    1. cd:进入指定的工作目录
    2. ls:打印指定目录下的清单(如果不接后面参数 代表打印当前工作目录的清单)
    3. pwd:查看当前所在的工作目录的完整路径。
    Kotlin 复制代码
    cd /path/to/directory
    ls /path/to/directory
    pwd
  2. 用户家目录:超级用户 【(/root)】,普通用户 【(/home)】

    1. 在 Linux 系统中,每个用户都有一个默认的家目录,其中包含其个人文件和配置文件。
    2. 超级用户的家目录通常位于 /root 目录下。
    3. 普通用户的家目录通常位于 /home 目录下,其中每个用户都有一个单独的子目录。

6、linux 命令通用格式

  1. 命令字 [选项] [参数], 中括号表示可有可无

    1. 命令字是要执行的具体命令的名称,比如 lscdmkdir 等;在命令行中,命令字通常是第一个单词,用于指示要执行的操作。
    2. 选项:实现差异化的功能。控制命令行命令行为的标志,它们可以修改命令的默认行为。可以分为短格式选项和长格式选项
      1. 短格式选项:以**【-】** 来传递,后面跟着一个字母或一串字母,用于指定具体的选项。
        1. 例如,【ls -l】 中的 【-l】 就是一个短格式选项
      2. 长格式选项:以**【--】** 来传递,后面跟着一个或多个单词,用于指定更具描述性的选项。
        1. 例如:【--help -all】、【ls --human-readble】;通常不可以连用
    3. 参数:命令的操作对象,是命令需要操作的目标对象或数据。指定命令的具体操作对象。
    Kotlin 复制代码
    ls -l /root/
    
    #ls 是命令字,用于列出目录内容。
    #-l 是短格式选项,表示要以长格式显示文件列表。
    #/root/ 是参数,指定了要列出内容的目录路径。

7、Linux文件系统及目录结构

  1. 倒状树形结构,一切文件都以根目录 【/】 为起点向下延伸
  2. 在 Linux 中,目录结构的组织是层次化的,允许用户按照逻辑方式组织和管理文件。
  3. 文件:是存储在存储设备上的数据的逻辑单元,每个文件由两部分组成:元数据和数据。
    1. 元数据:包含了文件的信息,如文件名、权限、所有者、修改时间等。
    2. 数据:是文件实际包含的内容
  4. 注意事项:
    1. Linux 文件系统对文件名严格区分大小写,因此 file.txtFile.txt 被视为两个不同的文件。
    2. 文件名中不能使用特殊字符 /,因为 / 用于分隔文件路径。
    3. 文件名也不能太长,具体的限制取决于文件系统
    4. 以 【. 】开头的文件被视为隐藏文件,它们在默认情况下不会显示在文件列表中。

8、Linux的相对路径和绝对路径

  1. 相对路径是相对于当前工作目录的路径,而绝对路径是从根目录 / 开始的完整路径。

  2. 相对路径不需要从根目录开始,而是相对于当前目录的位置来描述目标位置。

  3. 【pwd】 命令显示当前工作目录的路径。路径的起始点始终为根【/】,路径分隔符为【/】 (windows 的路径分隔符为【\】)

  4. 相对路径之【.】【..】

    1. 相对路径前面不要加上【/】,否则会认为在以绝对路径根下发起
    2. 【.】当前路径/目录
    3. 【..】父目录(上级目录)
    Kotlin 复制代码
    cd ../   # 进入上级目录

9、Linux 特点及哲学思想(重点)

  1. 一切皆文件:Linux 将硬件、驱动、系统参数等都视为文件来管理。
  2. 组合目的的单一的小程序完成复杂的任务,一个程序只做一件事,且做好
  3. 尽量避免跟用户交互(一般情况,执行操作没有消息就是最好的消息)
  4. 使用文本文件保存配置信息:Linux 喜欢使用文本文件来保存系统配置和设置,这样用户可以通过编辑文本文件来配置系统,而不需要复杂的图形界面。

10、Linux 命令帮助

  1. Linux 操作系统的使用主要以命令的方式基于 shell来进行操作,Linux 命令太多,在涉及到相关详细功能的时候,可以了解如何查看命令的帮助文档

    1. 内部命令的帮助文档查看:【help COMMAND】
      1.

      Kotlin 复制代码
      help cd
    2. 外部命令的帮助文档查看:【COMMAND --help】
      1.

      Kotlin 复制代码
      ls --help
    3. 命令的通用使用内部手册:【man COMMAND】(内命令跳转到内部命令的帮助文档)
      1.

      Kotlin 复制代码
      man ls
    4. 命令的信息页查看帮助:【info COMMAND】
      1.

      Kotlin 复制代码
      info ls
    5. 每个程序几乎都有自己的帮助文档,通常存放在 /usr/share/doc 目录下,也可以通过访问程序官方网站来获取文档。

    6. 查看红帽官方的命令帮助文档 ,对于RHEL(Red Hat Enterprise Linux)和CentOS(CentOS)发行版,可以查看红帽官方的命令帮助文档。

  2. man 文档帮助详解(文档工程师进行编写)

    1. man 手册所在系统的存放位置**【/usr/share/man】** ,基本都是基于压缩之后的手册文件

    2. man 1---8

      1. man 1:命令普通帮助
      2. man 2:系统调用
      3. man 3:库调用
      4. man 4:设备文件和特殊文件
      5. man 5:配置文件相关帮助
      6. man 6:游戏
      7. man 7:杂项
      8. man 8:管理类命令
      Kotlin 复制代码
      man 1 ls   # 查看 ls 命令的帮助文档
  3. 进入 man 手册后的相关操作

    1. 使用【空格】或者【B】键可以上下翻屏查看,【d】键翻半屏
    2. 【/】或者【?】搜索内容
    3. 【q】键退出

11、结合帮助文档基于三大命令的详细使用

  1. **【cd】:**用于改变当前工作目

    Kotlin 复制代码
    cd           # 进入当前用户的家目录
    cd ~         # 进入当前用户的家目录(另一种方式)
    cd ~/xxx/xxx # 进入当前用户的子目录
    cd ~USER     # 进入某个普通用户的家目录(超级用户权限)
    cd -         # 切换到上次目录(来回切换)
  2. **【ls】:**用于列出指定目录中的文件和子目录的清单

    1. 选项:

      1. 【-a】:显示目录下的所有文件 (包括隐藏文件)

      2. 【-l】:长格式显示文件信息(查看文件的基本属性)

      3. 【-d】:只显示目录的本身属性,需要和【-l】连用

      4. 【-h】:以人类通俗易懂的方式显示文件相关信息

      5. 【-r】:逆序显示指定路径下的内容

      6. 【-R】:递归显示目录及其子目录内的所有内容

      7. 【-t】:根据时间清单列表出来

      Kotlin 复制代码
      ls -a   # 显示所有文件,包括隐藏文件
      ls -l   # 以长格式显示文件信息
      ls -lh  # 以人类通俗易懂的方式显示文件相关信息
      ls -d   # 只显示目录的本身属性
      ls -r   # 逆序显示指定路径下的内容
      ls -R   # 递归显示目录及其子目录内的所有内容
      ls -t   # 根据时间清单列表出来
  3. 【pwd】:打印当前工作路径

    1. 【cat】 命令,显示文本文件内部的内容

      1. 格式【cat [option] file...】

      2. 【-n】:输出文本内容的行数标号

      3. 【-E】:显示文本文件内容的每行的结束符

      4. 【/etc】:目录下面有一个文本文件 【my.cnf】

      Kotlin 复制代码
      cat file            # 显示文本文件的内容
      cat -n file         # 输出文本内容的行数标号
      cat -E file         # 显示文本文件内容的每行的结束符
    2. 【nano】 命令,小型文本编辑器(好用)

      1. 格式【nano file】:如果文本文件不存在,即创建新的文本文件
      2. 【ctrl+o】:写入,回车保存
      3. 【Ctrl+x】:退出
      Kotlin 复制代码
      nano file.txt       # 打开文本文件进行编辑
    3. 【gedit】 图形化的文本编辑器,需要图形界面支持,通常用于在桌面环境下编辑文本文件。

12、Linux 命令所在的路径和命令历史信息

  1. 所有的命令归根结底就是一个特定的二进制程序,基于 ELF (可执行与链接格式)格式存在 Linux 文件系统内。

  2. 执行命令时,系统会在PATH环境变量所指示的路径下查找对应的二进制程序。
    1.

    Kotlin 复制代码
    echo $PATH   # 查看当前bash的PATH环境变量
    1. PATH环境变量是一个用于指定可执行程序所在路径的环境变量。在Linux系统中,当用户输入一个命令时,系统会在PATH环境变量所列出的路径中查找对应的可执行程序,并且执行找到的第一个匹配的程序。
  3. 命令在 shell 的 PATH 环境变量中使用后会被缓存下来,**【hash】**命令记录缓存次数,缓存命中可能不会真实反映命令位置。

  4. 【hash -r】 # 清除命令缓存

    1. 当命令被执行时,它们的路径会被缓存起来以提高执行效率。但有时候,如果命令的路径发生了变化,需要清除缓存以确保使用的是最新的命令。清除命令缓存

13、【history】

  1. 用于显示当前用户在命令行中执行过的所有命令记录。(每个不同的终端,记录的命令都不一样)

  2. 命令记录保存在当前用户的家目录下的隐藏文件**【 .bash_history】** 中。

  3. 以下命令不会对命令历史文件内容发生任何更改

    1. 【history】:命令历史查询
    2. 【history -c】:清除命令历史
    3. 【history -a】:追加当前会话的命令历史到命令历史文件【.bash_history】之中
    4. 【history -d】:删除指定的命令历史条目
    Kotlin 复制代码
    history -d 100    # 删除序号为100的命令历史条目

14、Linux 的文件类型

  1. 普通文件:【-】,【f】

    1. 通常情况下以无色表示,但可执行文件(绿色)、压缩文件、破损文件(红色) 除外
    Kotlin 复制代码
    ls -l file.txt
  2. 目录文件:用于存储其他文件和目录的路径映射【d】,通常情况下以蓝色显示
    1.

    Kotlin 复制代码
    ls -l /path/to/directory
  3. 链接文件(符号链接):软连接【l】,指向另一个文件或目录的链接,相当于Windows中的快捷方式,作用为链接到背后真实文件,通常情况下以青色表示
    1.

    Kotlin 复制代码
    ls -l symlink
  4. 设备文件:用于表示系统中的硬件设备,

    1. 字符设备:【c】 (线性数据存储或展示设备)
    2. 块设备:【b】通常情况下以黄色显示
    Kotlin 复制代码
    ls -l /dev/sda
  5. 套接字文件:【s】,主要实现程序进程和端口套接的临时文件,通常情况下以紫色显示,【ip:port】 跨主机通信进程地址
    1.

    Kotlin 复制代码
    ls -l /path/to/socket
  6. 命名管道文件:【p】,主要实现程序管道连接抽象出来的文件,通常情况下以暗黄色表示
    1.

    Kotlin 复制代码
    ls -l /path/to/fifo
相关推荐
眠修2 分钟前
Web技术与Nginx网站环境部署
运维·服务器
为美好的生活献上中指10 分钟前
java每日精进 4.29【框架之自动记录日志并插入如数据库流程分析】
java·linux·数据库
mljy.22 分钟前
Linux《进程概念(中)》
linux
JhonKI32 分钟前
【Linux网络】深入解析I/O多路转接 - Select
linux·运维·网络
伤不起bb32 分钟前
Nginx 核心功能
linux·服务器·nginx
The-Dog1 小时前
Linux命令使用记录(自用)
linux
识途老码1 小时前
什么是单臂路由
运维·服务器·网络·单臂路由
Linux运维老纪2 小时前
Ansible 铸就 Linux 安全之盾(Ansible Builds Linux Security Shield)
linux·服务器·网络·安全·云计算·ansible·运维开发
唐青枫2 小时前
Linux apropos 命令使用详解
linux
刘大猫.2 小时前
Centos Ubuntu RedOS系统类型下查看系统信息
linux·ubuntu·centos·ip·ifconfig·redos·查询系统信息