[华为云在线课程][Linux基础入门和帮助][第三章Linux常见命令及字符集和编码][学习笔记]

网友投稿 472 2022-05-29

常见命令

查看硬件信息

查看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基础入门和帮助][第三章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

tmux ls或者Ctrl+b,s 可以查看当前所有的tmux会话

tmux ls tmux list-session

分离会话

在tmux窗口中,按下Ctrl+b d或者输入tmux detach命令,就会将当前会话与窗口分离。

tmux detach

接入会话

tmux attach命令用于重新接入某个已存在的会话

tmux attach -t

终止会话

tmux kill-session命令用于终止某个会话

tmux kill-session -t

切换会话

tmux switch命令用于切换会话

tmux switch -t

可以将窗口分成多个窗格(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

"汉"的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

Linux

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:人工智能领域大事记
下一篇:linuxNFS服务
相关文章