[华为云在线课程][Linux基础入门和帮助][第三章Linux常见命令及字符集和编码][学习笔记]
常见命令
查看硬件信息
查看CPU
lscpu命令可以查看cpu信息
cat /proc/cpuinfo也可查看到
查看内存大小
free命令可以查看内存大小(但显示结果会以KB格式,需要加上-h)
cat /proc/meminfo也可查看到
查看硬盘和分区情况
lsblk命令可以查看硬盘和分区信息
cat /proc/partitions也可查看到
查看系统版本信息
查看内核版本
[root@localhost ~]# uname -r
3.10.0-1160.el7.x86_64
查看操作系统发行版本
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@localhost ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
日期和时间
Linux的两种时钟
- 系统时钟:由Linux内核通过CPU的工作频率进行的
- 硬件时钟:主板
相关命令
- date 显示和设置系统时间
例子:
[root@localhost ~]# date +%s
1647268077
[root@localhost ~]# date -d @`date +%s`
Mon Mar 14 22:28:15 CST 2022
[root@localhost ~]# date -d @1647268077
Mon Mar 14 22:27:57 CST 2022
[root@localhost ~]# date -d @1647268077 +%F_%T
2022-03-14_22:27:57
- clock, hwclock:显示硬件时钟
-s, --hctosys #以硬件时钟为准,校正系统时钟
-w, --systohc #以系统时钟为准,校正硬件时钟
时区:
/etc/localtime
例子:
[root@localhost ~]# timedatectl list-timezones
[root@localhost ~]# timedatectl set-timezone Asia/Shanghai
[root@localhost ~]# timedatectl status
Local time: Mon 2022-03-14 22:44:59 CST
Universal time: Mon 2022-03-14 14:44:59 UTC
RTC time: Mon 2022-03-14 14:44:55
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
[root@localhost ~]# ll /etc/localtime
lrwxrwxrwx. 1 root root 35 Mar 4 20:54 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
显示日历:
cal -y
例子:
[root@localhost ~]# cal 3 2022
March 2022
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
关机和重启
关机:
- halt
- poweroff
重启:
- reboot
-f:强制,不调用shutdown
-p:切断电源
关机或重启:shutdown
shutdown [OPTION]... [TIME] [MESSAGE]
-r:reboot
-h:halt
-c:cancel
TIME:无指定,默认相当于+1(CentOS7)
now:立刻,相当于+0
+#:相对时间表示法,几分钟之后;例如:+3
hh:mm:绝对时间表示,指明具体时间
用户登录信息查看命令
- whoami:显示当前登录有效用户
- who:系统当前所有的登录会话
- w:系统当前所有的登录会话及所做的操作
文本编辑
- nano:工具可以实现文本的编辑,上手容易,适合初学者
- gedit:工具是图形工具
会话管理
命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命令。用户与计算机的这种临时的交互,称为一次"会话"(session)
会话的一个重要特点是,窗口与其中启动的进程是连在一起的。打开窗口,会话开始;关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完成
一个典型的例子就是,SSH登录远程计算机,打开一个进程窗口执行命令。这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令的。因为上一次SSH会话已经终止了,里面的进程也随之消失了。为了解决这个问题,会话与窗口可以"解绑";窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话"绑定"其他窗口
终端复用器软件就是会话与窗口的"解绑"工具,将它们彻底分离。
(1),它允许在单个窗口中,同时访问多个会话,这对于同时运行多个命令行程序很有用。
(2)它可以让新窗口"接入"已经存在的会话。
(3)它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
(4)它还支持窗口任意的垂直和水平拆分。
类似的终端复用器还有Screen,Tmux
screen
利用screen可以实现会话管理,如:新建会话,共享会话等
注意:CentOS7来自于base源,CentOS8来自于epel源
例子:安装screen
#CentOS7安装screen
#yum -y install screen
#CentOS8安装screen
#dnf -y install epel-release
#dnf -y install screen
screen命令常见用法:
- 创建新screen会话
screen -S [SESSION] - 加入screen会话
screen -x [SESSION] - 退出并关闭screen会话
exit - 剥离当前screen会话
Ctrl+a,d - 显示所有已经打开的screen会话
screen -ls - 恢复某screen会话
screen -r [SESSION]
tmux
Tmux是一个终端复用器(terminal multiplexer),类似screen,但是更易用,也更强大
Tmux就是会话与窗口的"解绑"工具,将它们彻底分离,功能如下:
- 它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令程序很有用。
- 它允许让新窗口"接入"已经存在的会话。
- 它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
- 它还支持窗口任意的垂直和水平拆分。
安装
yum install tmux
启动与退出
[root@centos7 ~]#tmux
[root@centos7 ~]#exit
logout
Tmux窗口有大量的快捷键,所有快捷键都要通过前缀键唤起。默认的前缀键是Ctrl+b,即先按下Ctrl+b,快捷键才会生效。帮助命令的快捷键是Ctrl+b ?然后,按下q键,就可以退出帮助。
新建会话
第一个启动的Tmux窗口,编号是0,第二个编号是1,以此类推。这些窗口对应的会话,就是0号会话,1号会话。使用编号区分会话,不太直观,更好的方法是为会话起名。下面命令新建一个指定名称的会话。
tmux new -S <session-name>
tmux ls或者Ctrl+b,s 可以查看当前所有的tmux会话
tmux ls
tmux list-session
分离会话
在tmux窗口中,按下Ctrl+b d或者输入tmux detach命令,就会将当前会话与窗口分离。
tmux detach
接入会话
tmux attach命令用于重新接入某个已存在的会话
tmux attach -t <session-name>
终止会话
tmux kill-session命令用于终止某个会话
tmux kill-session -t <session-name>
切换会话
tmux switch命令用于切换会话
tmux switch -t <session-name>
可以将窗口分成多个窗格(pane),每个窗格运行不同的命令
上下分窗格
tmux split-window
ctrl+b,"
左右分窗格
tmux split-window -h
ctrl+b,%
列出所有快捷键,及其对应的tmux命令
tmux list-keys
列出所有tmux命令及其参数
tmux list-commands
输出信息echo
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)
echo高级用法
在终端中,ANSI定义了用于屏幕显示的Escape屏幕控制码
具有颜色的字符,其格式如下:
"\033[字符背景颜色;字体颜色m字符串\033[0m"
\033[30m … \033[37m 设置前景色
\033[40m … \033[47m 设置背景色
#字符背景颜色范围:40-47
40:黑
41:红
42:绿
43:黄
44:蓝
45:紫
46:深绿
47:白
加颜色只是以下控制码中的一种,下面是常见的一些ANSI控制码:
\033[0m 关闭所有属性
\033[1m 设置高亮度
\033[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[nA 光标上移n行
\033[nB 光标下移n行
\033[nC 光标右移n列
\033[nD 光标左移n列
\033[x;yH 设置光标位置x行y列
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\033[?25h 显示光标
\033[2J\033[0;0H 清屏且将光标置顶
字符集和编码
许多场合下,字符集与编码这两个概念常被混为一谈,但两者是有差别的。字符集与字符集编码是两个不同的概念。
charset是character set的简写,即字符集,即二进制和字符的对应关系,不关注最终的存储形式
encoding是charset encoding的简写,即字符集编码,简称编码,实现如何将字符转化为实际的二进制进行存储或相反,编码决定了空间的使用的大小
ASCII码
计算机内部,所有信息最终都是一个二进制值。上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制之间的关系,做了统一规定,即ASCII(American Standard Code for Information Interchange)码
ASCII码一定规定了128个字符的编码,占用了一个字节的后面7位,最前面的一位统一规定为0
例子:查看ASCII表
dnf -y install man-pages
man ascii
Unicode
由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,即ASCII编码,但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。
全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。
为了表示世界上所有语言中的所有字符。每一个符号都给予一个独一无二的编码数字,Unicode是一个很大的集合,现在的规模可以容纳100多万个符号。Unicode仅仅只是一个字符集,规定了每个字符对应的二进制代码,至于这个二进制代码如何存储则没有规定
Unicode编码方案:
- UTF-8:变长,1到4个字节
- UTF-16:变长,2或4个字节
- UTF-32:固定长度,4个字节
UTF-8是目前互联网上使用广泛的一种Unicode编码方式,可变长存储。使用1-4个字节表示一个字符,根据字符的不同变换长度。
编码规则如下:
对于单个字节的字符,第一位设为0,后面的7位对应这个字符的Unicode码。因此,对于英文中的0-127号字符,与ASCII码完全相同。这意味着ASCII码的文档可用UTF-8编码打开。
对于需要使用N个字节来表示的字符(N>1),第一个字节的前N位都设为1,第N+1位设为0,剩余的N-1个字节的前两位都设为10,剩下的二进制位则使用这个字符的Unicode码来填充
编码转换和查询参考链接:
https://home.unicode.org/
https://unicode.yunser.com/unicode
https://www.chi2ko.com/tool/CJK.htm
https://www.bejson.com/convert/unicode_chinese/
https://javawind.net/tools/native2ascii.jsp?action=transform
http://tool.oschina.net/encode
http://web.chacuo.net/charsetescape
Unicode和UTF-8
Unicode符号范围(十六进制) | UTF-8编码方式二进制 |
---|---|
0000 0000-0000 007F | 0xxxxxxx |
0000 0080-0000 07FF | 110xxxxx 10xxxxxx |
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx |
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
例子:Unicode转换为UTF-8
"汉"的Unicode码0x6C49(110 110001 001001),需要三个字节存储,格式为:1110xxxx 10xxxxxx 10xxxxxx,从后向前依次填充对应格式中的x,多出的x用0补,得出UTF-8编码为:11100110 10110001 10001001
"马"的Unicode码0x9A6C(1001 101001 101100),需要三个字节存储,格式为:1110xxxx 10xxxxxx 10xxxxxx,从后向前依次填充对应格式中的x,多出的x用0补,得出UTF-8编码为11101001 10101001 10101100
例子:修改LANG变量实现中文语言提示
[root@localhost ~]# echo $LANG
en_US.UTF-8
[root@localhost ~]# LANG=zh_CN.UTF-8
[root@localhost ~]# echo $LANG
zh_CN.UTF-8
[root@localhost ~]# LANG=en_US.UTF-8
[root@localhost ~]# echo $LANG
en_US.UTF-8
- 点赞
- 收藏
- 关注作者
评论(0)