正文共:2666 字 29 图,预估阅读时间:3 分钟
简单来讲,Liunx是一个操作系统不太准确,操作系统的组成是内核+应用软件。内核,是承上启下,处于中间层。所有应用软件都要基于此内核进行开发(系统调用)。不同内核的系统调用接口有可能不一样,所以,带来一个新问题:应用程序的跨平台(内核)。所以,各厂商组织起来,定了一个标准:POSIX(Portable Operating System Interface,可移植操作系统接口),解决了应用程序的跨平台问题,所以,现在开发程序只需要开发一次就好了(源代码)。
CentOS8:Liunx内核+应用程序。
所以准确来说:Liunx只是一个内核,因为内核不提供和用户的交互功能,所以需要一个程序提供这种功能,这种程序分为两种:命令行(Command-Line Interface,CLI)和图形界面(Graphical User Interface,GUI)。
命令行(CLI):提供CLI的交互程序,通称为shell,rhel这个分支,主要使用bash这个shell。
图形化(GUI):很复杂的应用程序,所以一般服务器不用,为了保证稳定性,不安装图形化。
1、shell
默认情况下,登录之后(输入完账号和密码),会默认打开一个bash程序,即我们所看到的界面:
Bash程序有一个提示符意思是:
[当前登录账号@hostname 当前所在路径(~:当前用户的家目录)]当前用户是什么类型的用户(#:表示超级管理员,$:表示普通用户)
可以看到多种shell,默认采用的是bash这个shell。
cat /etc/shells
这里会有四个shell,并显示其路径,其实这四个是同一个bash。
查看当前使用的shell
echo $SHELL
基于当前shell所运行的进程。
ps
查看命令提示符格式,方括号里的提示符由PS1变量展示,可以修改。
echo $PS1
2、终端
用户和主机进行交互的设备,称为终端。
(1)物理终端
一个键盘、一个鼠标、一个显示器都是一个物理终端。
设备文件:/dev/console
dev目录下都是设备,console文件是代表其中一个终端设备。
(2)虚拟终端
tty:直接连接的终端。附加在物理终端上,以软件方式虚拟出来的终端。
设备文件:/dev/tty*,直接输入tty为当前Shell使用的终端。
(3)模拟终端
pts:纯软件饰演的终端,与图形终端窗口或远程登录会话的相关终端。比如:在图形界面下打开的terminal,使用SSH、telnet等远程打开的界面。
设备文件:/dev/pts/*
(4)虚拟终端切换
如果有图形环境,共有6个控制台,图形界面运行在第一个;文本界面运行在第二至第六个。如果没有图形环境,则只有5个虚拟控制台,全是文本界面。rhel5之前版本,有7个虚拟控制台,前六个为文本界面,第七个为图形界面。
切换其他的界面使用Ctrl+Alt+f键
当前是第一个界面,使用Ctrl+Alt+F2键切换到第二个界面,输入用户名和密码。
同样的操作,也可以切换到其他界面,也可以Ctrl+Alt+F1切回到最开始的界面即可。如果想查看当前界面是哪个页面,输入tty查看。
查看有哪些用户登录到当前系统使用who命令,如果是远程接入,后面会显示其IP地址。
3、命令行
(1)命令 [选项] [参数]
命令:一个程序,是一个可执行文件,包含可执行的程序代码,通过bash来运行。
选项:关于程序的选项,一般都会有默认动作,所以选项为可选。
参数:程序处理数据,一般是文件,向命令提供数据
*注意:命令,选项,参数之间都要用空格隔开,多选项之间和多参数之间也是用空格隔开,一行内执行多个命令,使用分号隔开。
(2)在shell中的两种命令
一个是内建命令:是shell自带,找不到,比如:cd命令,使用which cd是找不到的。另一个是外部命令:非shell自带,外部的一个可执行文件。
查看命令的类型,是内建的还是外部的使用type,比如:type echo(echo后带参数表示为直接打印后面的参数)
这里可以看出echo 是一个内建命令。这里也可以看一下type cat(cat命令表示查看文件内容)。
这里可以看出cat是一个外部命令。
查找命令的可执行文件在哪,使用which,比如查看ls的可执行文件:which ls(ls命令的意思是列出目录内容)
查找关键字文件在哪使用whereis,比如查看ls的关键字文件:whereis ls
(3)PATH变量
执行命令时,会在PATH变量指定的路径,从左到右去寻找,直到找到为止,如果没找到,会提示寻找不到这个命令。Shell搜寻到的外部命令的路径会被缓存下来,下次就不会去在此搜索了,查看环境变量的命令为:echo $PATH。
这里的echo一般用于打印后面的参数,在这里添加了$,表示后边为变量。这里的结果用冒号分隔的多个路径,意思是在执行命令时,通过PATH变量值给定的路径依次去寻找。如果找到了显示命令文件对应的程序文件,比如ls命令在/user/bin/中,如果没有找到则返回命令没有找到。
当找到命令后,因为shell搜寻到的外部命令会缓存,使用hash可以查看已经缓存的命令。使用hash -r清除变量缓存,比如:ls命令移动到当前目录(./)下,使用mv /usr/bin/ls ./(mv表示命令文件的移动,相当于“剪切“),如果缓存存在,还会到./下去找ls这个命令,找不到就会报错,这时,就需要清除缓存,重新寻找。
4、Linux内核
应用程序的不同版本要依赖不同版本的内核,如果内核崩溃了,整个操作系统就崩溃了。内核不要随意升级,比如:最开始装了1.0版本程序要依靠2.0版本内核,如果要将程序升级到3.0,而且3.0程序要依靠3.2版本内核,如果升级,是不行的。如果升级成了不稳定版本,很容易崩溃。Liunx的官方网站:http://www.kernel.org
(1)查看当前系统内核:uname -a
直接查看当前系统内核的版本号:uname -r
(2)内核模块
Liunx基于模块化加载运行,比如:驱动当作一个模块的方式加载。
使用lsmod查看当前已经加载的模块,默认情况下没有加载usb驱动,当插入一个U盘,就自动加载了lsmod |grep usb_storage
5、命令演示
关闭计算机:shutdown
马上关机:shutdown -h 0
11点开始关机:shutdown -h 11:00
注意:使用直接断掉电源的方式关闭Liunx系统是很危险的行为,Linux与Windows不同,其后台运行着许多进程,强制关机会导致进程数据丢失,使系统处于不稳定的状态,甚至在某些系统中会损坏硬件设备,使用shutdown命令,系统管理员会通知所有登录过的用户系统将要关闭,并且login指令会被冻结,即新用户不能再登录。
调用shutdown -h命令:halt
重启计算机,使用权限为系统管理员:reboot
退出系统,使用权限为所有用户:exit
查看当前用户:id
显示近期用户或终端的登录情况:last
第一列表示用户名;第二列表示终端位置;第三列表示登录ip或者内核;第四列表示开始时间;第五列表示结束时间(still login in 表示还未退出,down表示正常关机,crash表示强制关机);第六列表示持续时间。
查看当前主机名:hostname
修改主机名:hostnamectl set-hostname jsjxxs
查看当前路径:pwd
查看日期时间:date
查看2023年的日历:cal 2023
清屏:clear或使用快捷键ctrl+l
6、alias
查看当前全部alias(别名)
alias
给cp命令设置一个别名,当我们执行cp命令时,实际执行cp -i命令。
cp,默认覆盖不提醒,加上-i选项,表示提醒。
alias cp=’cp -i’
在命令前面加上“\”,表示不使用别名,就是用最原始的cp命令。
\cp
删除别名
unalias cp
7、tab键补全
输入命令、选项、参数时,可以通过tab键补全功能来减轻输入压力。键入内容如果足够使其唯一,按一次tab键即可补全,如果键入内容不够使其唯一,按两次tab键,即可显示以输入字符开头的所有命令。Tab也可以补全路径,这里建议不要输入手工输入完整路径,很容易出错,中间错一个字母,路径就不对了。
8、历史记录
在每个用户的家目录,都有自己的历史记录文件:.bash_history,登录shell时,会从登录用户的家目录中,读取.bash_history文件。登录后,执行的命令历史记录,会记录到缓存中,登出时,将缓存中的历史记录追加方式写到.bash_history中。
查看历史记录:history
立即将缓存中的记录:写入文件:history -a
清除历史:history -c
history命令输出的条数:echo $HISTSIZE
历史文件路径:echo $HISTFILE
可以上下查阅历史记录:上下箭头
在当前命令行中左右移动光标:左右箭头
表示上一个命令的最后一段字符:!$
9、快捷键
esc+.:将上一命令的最后一个参数复制到当前命令行光标处,重复使用,可以继续到更早的命令。
alt+.:将上一命令的最后一段字符复制到当前。
ctrl+r:在历史记录中搜索某一模式的命令。
ctrl+a:光标定位到命令行首。
ctrl+e:光标定位到命令行尾。
ctrl+左箭头:跳到命令行中前一字开头。
ctrl+右箭头:跳到命令行中下一字末尾。
ctrl+c:截断(退出)进程。
长按二维码
关注我们吧