1 Linux用户
1.1 用户类型
- root用户
- 一个特殊的管理账户
- 超级用户
- root已接近完整的系统控制
- 对系统损害几乎有无限的能力
- 除非必要,不要登录为root
- 普通(非特权)用户
- 权限有限
- 造成损害的能力比较有限
1.2 终端
- terminal
- 提供给用户使用的界面
- 终端设备:键盘、鼠标、显示器
1.2.1终端类型
- 控制台终端:/dev/console
- 串行终端:/dev/ttyS#
- 虚拟终端:tty:teletypeweiters,/dev/tty#,tty可有n个
- 图像界面:srartx,xwindows
- CentOS 6:Ctrl + Alt + F7
- CentOS 7:在那个终端启动,即位于那个虚拟终端
- 伪终端:pty:pseudo-tty,/dev/pts/#,SSH远程连接
1.2.2 查看当前的终端设备
tty
- CentOS 8 desktop
- Ubuntu-server-18.04
- 远程登录
1.2.3 查看连接的用户
who
1.3 交互式接口
交互式接口:启动终端后,在终端设备上附加一个交互式应用程序
1.3.1 交互式接口类型
- GUI:Graphic User Interface
- X protocol, window manager, desktop
- Desktop:
- GNOME(C,图像库gtk)
- KDE(C++,图像库qt)
- XFCE(轻量级桌面)
- CLI:Command Line Interface
- shell程序
1.3.2 Shell内核
- Shell是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口,它接收用户输入的命令并把它送入内核去执行
- Shell也被称为Linux的命令解释器(command interpreter)
- Shell是一种高级程序设计语言
1.3.3 bash shell
- GNU Bourne-Again Shell(bash)是GNU计划中重要的工具软件之一,目前
也是Linux标准的shell,与sh兼容显示当前使用的shell
- 显示当前使用的shell
echo ${SHELL}
- 显示当前系统使用的所有shell
cat /etc/shells
1.4 设置主机名
hostname NAME
注意:主机名不要使用下划线
1.5 提示符
echo $PS1
PS1=""
例:PS1="\[\e[1;36m\][\u@\h \w]\\$\[\e[0m\]"
- \e:控制符 \033
- 格式:\e[F;Bm
- \u:当前用户
- \h:主机名简称
- \H:主机名
- \w:当前工作目录
- \W:当前工作目录基名
- \t:24小时时间格式
- \T:12小时时间格式
- !:命令历史数
- #:开机后命令历史数
1.6 执行命令
1.6.1 执行命令过程
- 输入命令后回车,提请shell程序找到键入命令所对应的可执行程序的代码,并由其分析后提交给内核分配资源将其运行起来
1.6.2 shell中可执行的两类命令
-
内部命令:由shell自带的,而且通过某命令形式提供(优先执行)
-
外部命令:在文件系统路径下对应的可执行程序文件
-
区分内部和外部命令
type COMMAND
- 外部命令执行次序
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
/etc/profile.d/env.sh
- 查看命令缓存
hash
- 查看内部命令
help
enable
enable -n COMMAND:禁用命令
- 让配置文件生效
.
source
1.6.2.2 执行外部命令
- 查看外部命令路径
which:查看命令位置
whereis:查看命令位置和帮助位置
- Hash缓存表
- 系统初始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 NAME="value" 新建别名
unalias -a name 取消别名
unalias -a 取消所有别名
注意:在命令行中定义别名,仅对当前shell进程有效
- 定义配置文件别名
- 仅对当前用户:~/.bashrc
- 对所有用户有效:/etc/bashrc
- 编辑配置文件不会生效,bash进程重新读取配置文件
source /paht/to/config_file
. /path/to/config_file
- 如果别名同原命令同名,如果要执行原命令,可使用
\ALIASNAME
"ALIASNAME"
'ALIASNAME'
command ALIASNAME
/path/command 只适用于外部命令
- 执行顺序
- 别名 — 内部命令 — 外部命令 — 不存在
命令格式
COMMAND [OPTIONS] [ARGUMENTS]
-
选项:用于启用或关闭命令的某个或某些功能
- 短选项:UNIX风格选项,-c
- 长选项:GNU风格选项,–word
- BSD风格选项:一个字母
[root@Centos8 ~]# free -h [root@Centos8 ~]# free --human [root@Centos8 ~]# ps aux
-
参数:命令的作用对象
注意
- 多个选项以及多参数和命令之间使用空白字符分割
- 取消和接收命令的执行:Ctrl+c,Ctrl+d
- 多个命令可以用";"符号分开
- 一个命令可以用\分成多行
1.7 常见命令
1.7.1 查看硬件信息
1.7.1.1 查看CPU的信息
- lscpu
- cat /proc/cpuinfo
1.7.1.2 查看内存
- free
- cat /proc/meminfo
1.7.1.3 硬盘
- lsblk
- cat /proc/partitions
1.7.2 查看系统版本信息
1.7.2.1 显示内核版本
- uname -r
查看操作系统版本
- cat /etc/redhat-release
- cat /etc/os-release
1.7.3 日期和时间
-
Linux的两种时钟
- 系统时钟:由Linux内核通过CPU的工作频率进行的
- 硬件时钟:主板
-
命令
- date:显示和设置系统时间
- clock,hwclock:显示硬件时钟
- -s,–hctosys:以硬件时钟为准,校正系统时钟
- -w,–systohc:以系统时钟为准,校正硬件时钟
date mmDDhhMMmm.ss
- 时区:/etc/localtime
- 列出时区列表
timedatectl list-timezones
timedatectl set-timezone
1.7.4 关机和重启
- 关机
- halt
- poweroff
- 重启
- reboot
- -f:强制,不调用shutdown
- -p:切断电源
- reboot
- 关机或重启
- shutdown
shutdown [OPTION] [TIME] [MESSAGE]
-r:reboot
-h:halt
-c:cancel
TIME:无指定,默认相当于+1
now:立刻,相当于+0
+#:相对时间标识法,几分钟之后
hh:mm:绝对时间表示,指明具体时间
注:#为时间
1.7.5 用户登录信息查看命令
- whoami:显示当前登录有效用户
- who:系统当前所有的登录会话
- w:系统当前所有的登录会话及所做的操作
1.7.6 文本编辑
- nano:可以实习文本的编辑,上手容易,适合初学者
- gedit:工具是图形工具
1.7.7 会话管理
-
用户和计算机的临时交互,称为一次会话。
-
窗口与其启动的进程是连在一起的。打开窗口,会话开始,会话内部的进程也随之开始,关闭窗口,会话结束,会话内部的进程也会随之终止,不管是否运行完成。
-
会话与窗口“解绑”,窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话“绑定”其他窗口。
-
终端复用器软件就是会话与窗口的“解绑”工具,将他们彻底分离。
- 它允许在单窗口中,同时访问多个会话。
- 它可以让新窗口“接入”已经存在的会话。
- 它允许每个会话由多个连接窗口,可以多人实时共享会话。
- 它还支持窗口任意的垂直和水平拆封。
-
类似的终端复用器有Screen,Tmux
1.7.8 输出信息echo
- echo:可以将后面跟的字符进行输出
- 显示字符,echo会将输出的字符串送往标准输出。输出的字符串间以空白字符隔开,并在最后加上换行号。
echo [-neE] [字符串]
- 选项
- -E:不支持\解释功能(默认)
- -n:不自动换行
- -e:启用\字符解释功能
- 显示变量
echo "$VAR_NAME" #用变量值替换,弱引用
echo '$VAR_NAME' #变量不会替换,强引用
-
启用-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出
-
\a:发出警告声
-
\b:退格键
-
\c:最后不加上换行符号
-
\e:escape,相当于\033
-
\n:换行且光标移至行首
-
\r:回车,即光标移至行首,但不换行
-
\t:插入tab
-
\ \:插入\字符
-
\0nnn:插入nnn(八进制)所代表的ASCII字符
-
\xHH:插入HH(十六进制)所代表的ASCII数字(man 7 ASCII)
-
1.8 字符集和编码
- 字符集:charset(character set)二进制和字符的对应关系,不关注最终的存储形式
- 编码:encoding(charset encoding)实现如何将字符转化为实际的二进制进行存储或相反,编码决定了空间的使用的大小
1.8.1 ASCII码
- 计算机内部,所有信息最终都是一个二进制值。
- ASCII码定义了英语字符与二进制位之间的关系,做了统一规定。
- ASCII码一共规定了128个字符的编码,占用了一个字节的后面7位,最前面的一位同一规定为0
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-efWaeisd-1600226146352)(https://i.loli.net/2020/09/16/I8FenMD1YGHPdmj.png)]
man ascii
1.8.2 Unicode
- 为表示世界上所有语言中的所有字符。每一个符号都给予一个独一无二的编码数字,Unicode是一个很大的集合。Unicode仅仅只是一个字符集。
- Unicode编码方案
- UTF-8:变长,1到4字节
- UTF-16:变长,2或4字节
- UTF-32:固定长度,4个字节