Linux,全称GNU/Linux,是一套免费使用和自由传播的类UNIX操作系统 , 其内核由林纳斯·本纳第克特·托瓦兹于1991年第一次释出 , 它主要受到Minix和Unix思想的启发 , 是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想 , 是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版 , 如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、oracle 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 哲学思想
一切皆文件:把所有资源统统抽象为文件形式 : 包括硬件设备 , 甚至通信接口等 :
由众多功能单一的程序组成 : 一个程序只做一件事 , 并且做好 ; 组合小程序 , 完成复杂任务 ;
尽量避免跟用户交互
目标 : 易于以编程的方式实现自动化任务 ;
使用文本文件保存配置信息 :
3. 交互式接口
交互式接口 : 启动终端后 , 在终端设备附加一个交互式应用程序
3.1 交互式接口类型
图形用户界面(
Graphical User Interface, 简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。GNOME(C, 图形库gtk) ,KDE(C++,图形库qt)XFCE(轻量级桌面)
CLI:Command Line Interface, 是在图形用户界面得到普及之前使用最为广泛的用户界面 , 它通常不支持鼠标 , 用户通过键盘输入指令 , 计算机接收到指令后 , 予以执行。也有人称之为字符用户界面(CUI)。
3.2 shell程序
Shell是Linux系统的用户界面 , 提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。shell也被称为LINUX的命令解释器(command interpreter)
基本上
shell分两大类 :图形界面shell(
Graphical User Interface shell即GUI shell)。例如 : 应用最为广泛的Windows Explorer(微软的windows系列操作系统),还有也包括广为人知的Linux shell,其中linux shell包括X window manager(BlackBox和FluxBox),以及功能更强大的CDE、GNOME、KDE、XFCE。命令行式shell(
Command Line Interface shell,即CLI shell)。例如:bash、sh、ksh、csh、zsh(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 ~]#参考链接