Linux,全称GNU/Linux,是一套免费使用和自由传播的类UNIX操作系统 , 其内核由林纳斯·本纳第克特·托瓦兹于1991年第一次释出 , 它主要受到MinixUnix思想的启发 , 是一个基于POSIXUnix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想 , 是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版 , 如基于社区开发的debianarchlinux,和基于商业开发的Red Hat Enterprise LinuxSUSEoracle linux等。

1. 终端

Linux中通过各种不同的终端设备连接Linux系统 , 实现对Linux的操作。通过同时操作不同的终端实现Linux多任务,多用户管理。

  • 终端分为以下几种类型:

    • 物理终端(/dev/console): 通过特定的设备或者模式(救援模式)实现。

    • 虚拟终端(/dev/tty#) :共有6个,其中通过Ctrl+Alt+F(1-6)按键方式在六个终端中切换

    • 图形终端(/dev/tty7) :Centos6中默认Ctrl+Alt+F7表示切换至图形终端;Centos 7中表示在哪个终端启动,即位于哪个虚拟终端。另外可以使用starx或者xwindows切换至图形化界面

    • 串行终端(/dev/ttyS#)

      • 主板上任一串口通过特定速率进行通信,需要有特定的串行线。

    • 伪终端(/dev/pts/#):通过SSH远程链接

tty命令查看终端设备

2. linux 哲学思想

  1. 一切皆文件:把所有资源统统抽象为文件形式 : 包括硬件设备 , 甚至通信接口等 :

  2. 由众多功能单一的程序组成 : 一个程序只做一件事 , 并且做好 ; 组合小程序 , 完成复杂任务 ;

  3. 尽量避免跟用户交互

    目标 : 易于以编程的方式实现自动化任务 ;

  4. 使用文本文件保存配置信息 :

3. 交互式接口

交互式接口 : 启动终端后 , 在终端设备附加一个交互式应用程序

3.1 交互式接口类型

  • 图形用户界面(Graphical User Interface , 简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。

    • GNOME ( C, 图形库gtk) ,

    • KDE (C++,图形库qt)

    • XFCE (轻量级桌面)

  • CLI : Command Line Interface , 是在图形用户界面得到普及之前使用最为广泛的用户界面 , 它通常不支持鼠标 , 用户通过键盘输入指令 , 计算机接收到指令后 , 予以执行。也有人称之为字符用户界面(CUI)。

3.2 shell程序

ShellLinux系统的用户界面 , 提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。shell也被称为LINUX的命令解释器(command interpreter)

  • 基本上shell分两大类 :

    1. 图形界面shell(Graphical User Interface shellGUI shell)。例如 : 应用最为广泛的 Windows Explorer (微软的windows系列操作系统),还有也包括广为人知的 Linux shell,其中linux shell 包括 X window manager (BlackBoxFluxBox),以及功能更强大的CDEGNOMEKDEXFCE

    2. 命令行式shell(Command Line Interface shell,即CLI shell)。例如: bash shkshcshzsh(Unix/linux 系统);cmd.exe/命令提示字符(Windows NT 系统);Windows PowerShell(支持 .NET Framework 技术的Windows NT 系统)。

传统意义上的shell指的是命令行式的shell,以后如果不特别注明 , shell是指命令行式的shell

shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入 , 并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令 , 它们可以被重复使用。本质上,shell script是命令行命令简单的组合到一个文件里面。

Shell基本上是一个命令解释器 , 类似于DOS下的command。它接收用户命令(如ls等),然后调用相应的应用程序。较为通用的shell有标准的Bourne shell (sh)和C shell (csh)。

3.2.1 BASH

GNU Bourne-Again Shell(bash)是GNU计划中重要的工具软件之一,目前也是 Linux标准的shell , 与sh兼容。bash也是Centos默认使用的SHELL

显示当前使用的shell : echo ${SHELL} 显示当前系统使用的所有shell : cat /etc/shells

3.3 常用快捷键

3.3.1 Tab 键

[Tab] 键可以实现自动补全的功能。按在输入部分命令的后面,按一下[Tab] 键 , 会自动在此部分命令的后面补全此命令。但这是有前提条件的: 必须以输入的部分字符开头的命令是唯一的。

  • 补全命令

    [root@node01 ~]# rebo   #在rebo后按一下Tab键,自动将reboot命令补全

    如果不唯一,则无效果,可以按两次[Tab]键,会自列出所有以输入的字符开头的命令列表

  • 补全命令

    [root@node01 ~]# wh   #在wh后面按两下Tab键,自动列出所有wh开头的命令
    whatis        wheel-3       wheel-3.6     whereis       which         which-python  while         whiptail      who           whoami  
  • 补全文件名

    [root@node01 ~]# ls
    anaconda-ks.cfg  expand_pre.sh  hellodb.sql  hellodb.sql.0  ips.txt  mysql.his  ssh.py
    [root@node01 ~]# ls -l a   #在a后面按一下Tab键,自动以a开头的文件
    [root@node01 ~]# ls -l anaconda-ks.cfg 
  • 补全帮助 在Centos7版本中 , 还可以支持对命令帮助的Tab补全功能

    [root@node01 ~]# ip  #在ip命令后,输入空格和两个Tab键,自动列出ip的使用帮助
    address      fou          ila          link         maddress     mroute       neigh        netns        route        tcp_metrics  tunnel       vrf          
    addrlabel    help         l2tp         macsec       monitor      mrule        netconf      ntable       rule         token        tuntap       xfrm  

    提示: 需要安装bash-completion软件包才能支持对命令帮助的补全功能

  • 常用Tab使用方式

    双击Tab键  
    command 2Tab 所有子命令或文件补全  
    string2Tab  以string开头命令  
    /2Tab  显示所有根目录下一级目录 , 包括隐藏目录  
    ./2Tab 当前目录下子目录 , 包括隐藏目录  
    *2Tab  当前目录下子目录 , 不包括隐藏目录  
    ~2Tab  所有用户列表  
    $2Tab  所有变量  
    @2Tab  /etc/hosts记录  
    =2Tab  相当于ls -A 

3.3.2 组合快捷键

  • 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 : 光标在命令行首和光标之间移动

  • Ctrl + u : 从光标处删除至命令行首

  • Ctrl + k : 从光标处删除至命令行尾

  • Ctrl + w : 从光标处向左删除至单词首

  • Ctrl + d : 删除光标处的一个字符

  • Ctrl + h : 删除光标前的一个字符

  • Ctrl + t : 交换光标处和之前的字符位置

  • Ctrl + y : 将删除的字符粘贴至光标后

  • Alt + c : 从光标处开始向右更改为首字母大写的单词

  • Alt + u : 从光标处开始 , 将右边一个单词更改为大写

  • Alt + l : 从光标处开始 , 将右边一个单词更改为小写

  • Alt + t : 交换光标处和之前的单词位置

  • Alt + N : 提示输入指定字符后 , 重复显示该字符N次

  • Alt + r : 删除当前整行

  • Alt + d : 从光标处向右删除至单词尾

  • Alt + f : 光标向右移动一个单词尾

  • Alt + b : 光标向左移动一个单词首

注意: Alt 组合快捷键经常和其它软件冲突

3.3.3 图形化界面终端快捷方式

  • Ctrl-Shift-n : 创建新窗口

  • Ctrl-Shift-q : 关闭当前窗口

  • Ctrl-Shift-t : 创建一个标签页

  • Ctrl-Shift-w : 关闭一个标签页

  • Ctrl-PaUp/PgUn : 切换到下一个/前一个标签页

  • Ctrl-Shift-c : 复制选中的文本

  • Ctrl-Shift-v 把文本粘帖到当前光标处

4 命令提示符

命令提示符是在操作系统中 , 提示进行命令输入的一种工作提示符。在不同的操作系统环境下 , 命令提示符各不相同。 Centos中,当输入到用户名和密码之后,登录到Linux命令界面时,可以看到如下类似提示符

[root@node01 ~]# 

这个即为命令提示符。命令提示符中

  • root : 当前登录用户

  • node1 : 当前主机的主机名 , 非完整格式 : 此处完整格式为 : local.localdomain

  • ~ : 用户当前所在目录(currnet directory),也称为工作目录(working directory),相对路径

  • # : 管理员账号 , 为root;拥有最高权限 , 能执行所有操作 :

  • $ : 普通用户 , 非root用户 ; 不具有管理权限 , 不能执行系统管理类操作

另外可以修改PS1变量的方式修改提示符格式:

PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]"
  • 格式类型如下

    • \e : 控制符\033

    • \u : 当前用户

    • \h : 主机名简称

    • \H : 主机名

    • \w : 当前工作目录

    • \W : 当前工作目录基名

    • \t : 24小时时间格式

    • \T : 12小时时间格式

    • \! :命令历史数

    • \# : 开机后命令历史数

使用命令查看当前命令提示符:echo $PS1

范例 : 持久保存提示符格式相关变量 PS1

[root@centos8 ~]# echo 'PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\ [\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"' > /etc/profile.d/env.sh 
[root@centos8 ~]#cat /etc/profile.d/env.sh 
PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\ [\e[0m\]\\$" 
[root@centos8 ~]# exit 
logout 
​
Connection closed by foreign host. 
​
Disconnected from remote host(centos8) at 15:28:38. 
​
Type `help' to learn how to use Xshell prompt. 
[c:\~]$ 
Reconnecting in 1 seconds. Press any key to exit local shell. 
.
​
Connecting to 10.0.0.100:22... 
Connection established. 
To escape to local shell, press 'Ctrl+Alt+]'. 
​
Activate the web console with: systemctl enable --now cockpit.socket 
​
Last login: Wed Dec 11 15:28:34 2019 from 10.0.0.1 
[15:28:40 root@centos8 ~]#


参考链接

百度百科:linux 百度百科:SHELL

熊熊