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

举报
John2021 发表于 2022/03/17 19:28:21 2022/03/17
【摘要】 常见命令 查看硬件信息 查看CPUlscpu命令可以查看cpu信息cat /proc/cpuinfo也可查看到 查看内存大小free命令可以查看内存大小(但显示结果会以KB格式,需要加上-h)cat /proc/meminfo也可查看到 查看硬盘和分区情况lsblk命令可以查看硬盘和分区信息cat /proc/partitions也可查看到 查看系统版本信息 查看内核版本[root@loc...

常见命令

查看硬件信息

查看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
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。