当前位置: 首页 > article >正文

Linux(命令格式详细+字符集 图片+大白话)

后面也会持续更新,学到新东西会在其中补充。

建议按顺序食用,欢迎批评或者交流!

缺什么东西欢迎评论!我都会及时修改的!

在这里真的很感谢这位老师的教学视频让迷茫的我找到了很好的学习视频

王晓春老师的个人空间-王晓春老师个人主页-哔哩哔哩视频

命令格式

[ ] 代表可选

COMMAND [OPTIONS...] [ARGUMENTS...]
        选项          参数

举例:

-l 为选项 .bashrc 为参数

[root@RockyLinux ~]#ls -l .bashrc
-rw-r--r--. 1 root root 429 May 11  2022 .bashrc
  • 短选项:UNIX风格选项,-c 例如 -l,-h
  • 长选项:GNU风格选项,--word 例如 --all,--human

举例:

[root@RockyLinux ~]#ls -a
.   anaconda-ks.cfg  .bash_logout   .bashrc  .ssh     .viminfo
..  .bash_history    .bash_profile  .cshrc   .tcshrc
[root@RockyLinux ~]#ls --all
.   anaconda-ks.cfg  .bash_logout   .bashrc  .ssh     .viminfo
..  .bash_history    .bash_profile  .cshrc   .tcshrc
  • BSD风格选项:一个字母,例如:a (用的不多)伯克利大学的unix搬到Linux里面

举例:

[root@RockyLinux ~]#ps aux

命令顺序有错误也不行

[root@RockyLinux ~]#iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

[root@RockyLinux ~]#iptables -Lnv
iptables: No chain/target/match by that name.

取消和结束命令执行:Ctrl + c , Ctrl + d

[root@RockyLinux ~]#tail -f anaconda-ks.cfg
.........
^C

多个命令可以用";"符号分开

[root@RockyLinux ~]#echo "xiao";echo "wang";echo "shuai"
xiao
wang
shuai

[root@RockyLinux ~]#ls;hostname;uname -r
anaconda-ks.cfg
RockyLinux
5.14.0-427.13.1.el9_4.x86_64

一个命令可以用\分成多行

[root@RockyLinux ~]#l\
> s
anaconda-ks.cfg

常见命令

查看cpu

lscpu

CPU格式 

Model name:            Intel(R) Core(TM) i7-14650HX

物理CPU个数物理CPU的插槽

cpu是通过一个插槽安装在主板上的,这个插槽就叫做 cpu socket。

Socket(s):           2
Socket == physical id总数

内核和线程存在天壤之别,但它们非常重要。

CPU 内核是物理内核;CPU 线程是逻辑内核,其效率大约是物理线程的 50%。

可以将 CPU 内核视为一个人的嘴巴,它完成所有的食物,线程是组织工作流程、切碎更大的块并创建高效的饮食工作流程的手。

每一个插槽对应的物理CPU上有多少个核

Core(s) per socket:  1

intel又在core的基础上提出了hyper-threading概念,即一个core里可以模拟多个逻辑核,这个就叫做thread。 

因此,如果您碰巧有一个具有超线程的双核 Intel 处理器,您的操作系统会将其视为具有两个物理内核和四个逻辑内核的 CPU。如果没有超线程,逻辑内核的数量将减半。

 每个核上有多少个线程

Thread(s) per core:  1

几核几线程就是指有多少个“Core per Socket”多少个“Thread per Core”,当后者比前者多时,

说明启用了超线程技术。

逻辑cpu个数(cpu总数)

thread总数是用cpu来表示的

CPU(s):                  2

CPU列表 

On-line CPU(s) list:   0,1

 一级缓存分为指令缓存和数据缓存

d 指令 i 数据

L1d:                   96 KiB (2 instances)
L1i:                   64 KiB (2 instances)

 支持全虚拟化

Virtualization type:   full

 显示每个核

cat /proc/cpuinfo

查看物理CPU的个数:

cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
或者
grep 'physical id' /proc/cpuinfo |sort -u|wc -l

查看CPU是几核 

cat /proc/cpuinfo |grep "cores"|uniq

查看siblings数量

grep "siblings" /proc/cpuinfo|uniq
  1. 如果“siblings”和“cpu cores”一致,则说明不支持超线程,或者超线程未打开。

  2. 如果“siblings”是“cpu cores”的两倍,则说明支持超线程,并且超线程已打开。

[root@RockyLinux9 data]#grep "siblings" /proc/cpuinfo|uniq
siblings        : 1
[root@RockyLinux9 data]#cat /proc/cpuinfo |grep "cores"|uniq
cpu cores       : 1

 看我这个就是没有开启。

查看逻辑CPU的个数

cat /proc/cpuinfo| grep processor|sort|uniq|wc -l
或者
grep -c processor /proc/cpuinfo

总核数 = 物理CPU个数 X 每颗物理CPU的核数

总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数(Thread(s) per core)

 范例:

颜色相同的则是一个意思!

呃这里CPU(S) 分别是 2 x 2 x 1 = 4 ; 3 x 5 x 1 = 15

 windows中的CPU信息

一个小小的shell脚本 

#!/bin/bash
physicalNumber=0
coreNumber=0
logicalNumber=0
HTNumber=0
logicalNumber=$(grep "processor" /proc/cpuinfo|sort -u|wc -l)
physicalNumber=$(grep "physical id" /proc/cpuinfo|sort -u|wc -l)
coreNumber=$(grep "cpu cores" /proc/cpuinfo|uniq|awk -F':' '{print $2}'|xargs)
HTNumber=$((logicalNumber / (physicalNumber * coreNumber)))
echo "****** CPU Information ******"
echo "Logical CPU Number  : ${logicalNumber}"
echo "Physical CPU Number : ${physicalNumber}"
echo "CPU Core Number     : ${coreNumber}"
echo "HT Number           : ${HTNumber}"
echo "*****************************"

lscpu命令详解 - 马昌伟 - 博客园

CPU相关概念:物理cpu数、核数、逻辑cpu数,12核20线程实例分析-CSDN博客

【cpu概念】物理cpu个数、核数、逻辑cpu数的概念-CSDN博客

三分钟速览cpu,socket,core,thread等术语之间的关系 - 知乎

你有多少个CPU核心和线程?[如何检查] --- How Many CPU Cores & Threads Do You have? [How To Check]

Linux下确认CPU是否开启超线程_intel的超线程技术 怎么通过linux 命令开启-CSDN博客

查看内存

free -h

cat /proc/meminfo

/proc/meminfo的文件大小

因为文件存在了内存里面并没有放到磁盘上

[root@RockyLinux ~]#ls -l /proc/meminfo
-r--r--r--. 1 root root 0 Nov 17 20:02 /proc/meminfo

查看硬盘和分区情况

lsblk

cat /proc/partitions

查看内核版本

wang@ubuntu:~$ uname -r
4.15.0-213-generic

查看操作系统版本

wang@ubuntu:~$ uname -r
4.15.0-213-generic
wang@ubuntu:~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.6 LTS (Bionic Beaver)"
...
[root@RockyLinux ~]#cat /etc/redhat-release
Rocky Linux release 9.4 (Blue Onyx)

日期和时间

[root@RockyLinux ~]#date
Sun Nov 17 10:17:34 PM CST 2024

2024 Nov 17 11月17号 Sun 星期天 10:17:34 时间 CST 时区东八区

修改时间 

[root@RockyLinux ~]#date 062018302020.30
                         6月20日18:30 2020年 .30秒

 -s 修改时间

[root@RockyLinux9 ~]#date -s '1 year'
Wed Nov 19 10:08:29 PM CST 2025
[root@RockyLinux9 ~]#date -s '-1 year'
Tue Nov 19 10:08:35 PM CST 2024

两个机器时间不同通信的时候会出现严重问题

 为什么重启机器后时间会和正常时间对应上,主板上有电池专门给硬件一些信息,硬件的时间就由电池保持供电。

 date -d

[root@RockyLinux9 ~]#date -d now
Tue Nov 19 09:31:57 PM CST 2024
[root@RockyLinux9 ~]#date -d yesterday
Mon Nov 18 09:32:03 PM CST 2024

 date -d ‘2 day’ 

[root@RockyLinux9 ~]#date -d '100 day'
Thu Feb 27 09:37:51 PM CST 2025
[root@RockyLinux9 ~]#date -d '-100 day'
Sun Aug 11 09:37:58 PM CST 2024

 显示昨天 

[root@RockyLinux9 ~]#date -d '-1 day' +%F
2024-11-18

 创建昨天日期文件

[root@RockyLinux9 ~]#touch `date -d '-1 day' +%F`.txt
[root@RockyLinux9 ~]#ll
total 4
-rw-r--r--. 1 root root    0 Nov 19 21:44 2024-11-18.txt

 从1970-01-01到现在经过多少秒

[root@RockyLinux9 ~]#date +%s
1732024652

  从1970-01-01到现在经过多少秒转换成日期

@后面跟着一个数字
[root@RockyLinux9 ~]#date -d @`date +%s`
Tue Nov 19 09:58:34 PM CST 2024

[root@RockyLinux9 ~]#date -d @`date +%s` +%F_%T
2024-11-19_22:00:23

 创建文件规范

[root@RockyLinux9 ~]#touch `date +%F_%H-%M-%S`.log
[root@RockyLinux9 ~]#ll
total 4
-rw-r--r--. 1 root root    0 Nov 19 20:51 2024-11-19_20-51-56.log
-rw-------. 1 root root 1177 Nov 14 00:37 anaconda-ks.cfg

 练习

1:
[root@RockyLinux9 data]#date -d "2016-06-18 10:20:30"
Sat Jun 18 10:20:30 AM CST 2016
2:
[root@RockyLinux9 data]#date -d "-1 day" +%u
2
3:
[root@RockyLinux9 data]#date -s "2019-08-07 06:05:10"
Wed Aug  7 06:05:10 AM CST 2019
[root@RockyLinux9 data]#date
Wed Aug  7 06:05:12 AM CST 2019

硬件的时间

[root@RockyLinux ~]#clock
2024-11-17 22:29:38.993366+08:00
[root@RockyLinux ~]#hwclock
2024-11-17 22:30:54.983685+08:00

硬件时间矫正系统时间-s

[root@RockyLinux ~]#clock -s

系统矫正硬件时间-w

[root@RockyLinux ~]#clock -w

 时区

[root@RockyLinux ~]#ll /etc/localtime
lrwxrwxrwx. 1 root root 35 Nov 14 00:35 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
[root@RockyLinux ~]#timedatectl
               Local time: Sun 2024-11-17 22:37:11 CST
           Universal time: Sun 2024-11-17 14:37:11 UTC
                 RTC time: Sun 2024-11-17 14:37:12
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
              NTP service: active
          RTC in local TZ: no

 列出时区

[root@RockyLinux ~]#timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers

修改时区

CST 变成了 CET

[root@RockyLinux ~]#date
Sun Nov 17 10:39:08 PM CST 2024
[root@RockyLinux ~]#timedatectl set-timezone Europe/Vienna
[root@RockyLinux ~]#date
Sun Nov 17 03:40:13 PM CET 2024

ubuntu

ubuntu是查看内容 centos是快捷方式

wang@ubuntu:~$ cat /etc/timezone
Etc/UTC

恢复原状

[root@RockyLinux ~]#timedatectl set-timezone Asia/Shanghai
[root@RockyLinux ~]#ll /etc/localtime
lrwxrwxrwx. 1 root root 35 Nov 17 22:41 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai

 显示日历

wang@ubuntu:~$ cal
   November 2024
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

 关机

[root@RockyLinux ~]#shutdown
Shutdown scheduled for Sun 2024-11-17 23:21:36 CST, use 'shutdown -c' to cancel.

 取消关机

[root@RockyLinux ~]#shutdown -c

 指定关机时间

 10分钟后关机

[root@RockyLinux ~]#shutdown +10
Shutdown scheduled for Mon 2024-11-18 10:15:03 CST, use 'shutdown -c' to cancel.
[root@RockyLinux ~]#date
Mon Nov 18 10:05:05 AM CST 2024
[root@RockyLinux ~]#shutdown -c

指定2:30时间关机

[root@RockyLinux ~]#shutdown 02:30
Shutdown scheduled for Tue 2024-11-19 02:30:00 CST, use 'shutdown -c' to cancel.
[root@RockyLinux ~]#shutdown -c

查看用户在干什么

who == who am i
whoami
w

w 指令

这里是一个窗口执行yes 一个窗口用w命令查看

会话管理

每个窗口都相当于一个会话

screen

centos 67 centos 8更高级的没有screen

[root@RockyLinux ~]#yum -y install screen

 举例:

[root@CentOS7 yum.repos.d]# screen
[root@CentOS7 yum.repos.d]# yes

避免在运行中的程序突然终端被关掉 

将执行yes的窗口关掉

 查看进程的时候发现yes还在运行

[root@CentOS7 ~]# ps aux
root       1330 67.1  0.0 108056   356 pts/1    R+   11:18   0:48 yes

 这样就避免了终端被关闭程序运行被终止

远程协助 

要求:统一账号,统一机器。

Windows 连接到Linux ssh root@192.168.111.5

创建会话 

xiaoli 名字是随便取的

[root@CentOS7 ~]# screen -S xiaoli

 xiaoli 开了一个窗口

 xiaowang 看到了xiaoli开的窗口

加入会话

[root@CentOS7 ~]# screen -x xiaoli

 exit退出连接

这个退出是把别人共享的screen也结束了

 ctrl a+d

当前会话退出这种方法就不会把别人共享的screen也结束

 tmux

tmask 增强版 screen

[root@RockyLinux9 ~]#yum -y install tmux

 执行tmux

 上下分屏操作 ctrl b 松手 + “

切换终端 ctrl b松手 + 向上箭头

 左右分屏 ctrl b松手 + %

exit退出 

 echo

  • -E (默认)不支持\解释功能
  • -n 不自动换行
  • -e 启动\字符的解释功能

启用命令-e 若字符串出现以下字符,加以特殊处理,一半不会当作文字输出

  • \a 发出警告声
  • \b 退格键
  • \c 最后不加上换行符号
  • \e escape,相当于\033 (忽略符)
  • \n 换行且光标移至行首
  • \r 回车,即光标移至行首,但不换行
  • \t 插入tab
  • \\ 插入\字符
  • \0nnn 插入nnn(八进制)所代表的ASCII字符
  • \xHH 插入HH (十六进制)所代表的ASCII数字(man 7 ascii)

发出警告声

[root@RockyLinux9 ~]#echo -e "\a"

字符集和编码

计算机怎么识别我们在终端输入的abc呢?

有个对应表来转换 abc 转换成二进制 就叫做字符集

字符集只是决定了字符和二进制的对应关系

编码是决定在磁盘上如何保存 

而编码才决定了它真正的表现形式

ascii字符集 (注意这里ascii也是编码没有区别)

中国也有自己编码和字符集叫做GBK

unicode是所有国家都可以使用的字符集 万国码 用的就是UTF - 8 UTF - 16 UTF - 32 编码

\033 0代表的是8进制

 ibase = 8 代表8进制 33是8进制 转为十进制为27

[root@RockyLinux9 ~]#bc
bc 1.07.1
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
ibase=8
33
27

 当前的主流编码

主流编码 utf-8 变长编码

utf-8兼容ascii码的如果存的是字母就用ascii码这种方式保存

汉字 占3个或者4个字节

字母占一个字节

而 utf - 32 管你是什么都占4个字节

utf - 16 变长,2或4个字节

查看当前编码和语言

en_US是语言 UTF-8是编码

[root@RockyLinux9 ~]#echo $LANG
en_US.UTF-8

 下方的报错就是语言可以选择英文或者中文

[root@RockyLinux9 data]#xxx
-bash: xxx: command not found

 修改语言

修改成中文

[root@RockyLinux9 ~]#LANG=zh_CN.UTF-8

 一个字母占几个字节

占一个

[root@RockyLinux9 data]#echo a > /data/test.txt
[root@RockyLinux9 data]#ll
total 4
-rw-r--r--. 1 root root 2 Nov 18 13:20 test.txt
[root@RockyLinux9 data]#hexdump -c test.txt
0000000   a  \n
0000002

一个汉字占几个字节 

占三个或者四个

注意汉字占几个字节和笔画没有关系 

[root@RockyLinux9 data]#echo 一 > /data/test.txt
[root@RockyLinux9 data]#hexdump -c test.txt
0000000 344 270 200  \n
0000004
[root@RockyLinux9 data]#ll
total 4
-rw-r--r--. 1 root root 4 Nov 18 13:21 test.txt

 echo 打印字符

[root@RockyLinux9 data]#echo -e '\0127'
W
[root@RockyLinux9 data]#echo -e '\x56'
V
[root@RockyLinux9 data]#echo -e '\x40\x41\x42'
@AB

 查看各种符号的进制

[root@RockyLinux9 data]#man ascii

 echo 显示不可见符号

012   10    0A    LF  '\n' (new line)      
[root@RockyLinux9 data]#echo -e 'a\x0Ab'
a
b

 echo 加颜色

[root@RockyLinux9 data]#echo -e '\033[43;31;1;5mxiaowang\e[0m'
xiaowang

 \e[0m 用于重置文本格式到默认设置

  • 43 设置背景颜色为黄色(在ANSI颜色代码中)。
  • 31 设置前景(文本)颜色为红色。
  • 1 表示文本为粗体(或高亮)。
  • 5 表示文本为闪烁效果。
  • m 表示这是一个设置显示属性(如颜色、粗体等)的命令。

有必要总结一下

编码是依赖字符集的

一个字符集可以有多个编码

 举个例子

将字母a放入test.txt

[root@RockyLinux9 data]#echo $LANG
en_US.UTF-8
[root@RockyLinux9 data]#hexdump -c test.txt
0000000   a  \n
0000002
[root@RockyLinux9 data]#ll
total 4
-rw-r--r--. 1 root root 2 Nov 18 14:04 test.txt

查看文件编码格式

:set fileencoding

 转换文件的编码格式

[root@RockyLinux9 data]#iconv -f utf8 -t utf32 test.txt -o test.txt.utf32
[root@RockyLinux9 data]#ll
total 8
-rw-r--r--. 1 root root  2 Nov 18 14:10 test.txt
-rw-r--r--. 1 root root 12 Nov 18 14:15 test.txt.utf32

 最终展示

[root@RockyLinux9 data]#hexdump -c test.txt.utf32
0000000 377 376  \0  \0   a  \0  \0  \0  \n  \0  \0  \0
000000c
[root@RockyLinux9 data]#hexdump -c test.txt
0000000   a  \n
0000002

总结

所有命令都需要反复敲来实验来记忆,本人基本上是个人理解加参考其他大佬的肯定有很多问题欢迎指正,我会及时修改。

参考文献

4命令格式详解和基本命令介绍_哔哩哔哩_bilibili

5Linux常见命令和字符集_哔哩哔哩_bilibili


http://www.kler.cn/a/403459.html

相关文章:

  • Spring cloud 一.Consul服务注册与发现(4)
  • MacOS通过X11转发远程运行virt-manager进行虚机分配
  • node报错:Error: Cannot find module ‘express‘
  • OceanBase数据库产品与工具介绍
  • 目标驱动学习python动力
  • RPC安全可靠的异常重试
  • java-图算法
  • 【SpringMVC原理分析】
  • k8s-NetworkPolicy
  • [游戏开发][Unity]Unity3D中的基本概念及关键组件解析
  • 【从零开始的LeetCode-算法】3354. 使数组元素等于零
  • 大数据实验4-HBase
  • 基于redis完成延迟队列
  • 蓝桥杯某C语言算法题解决方案(质因数分解)
  • 使用Cursor和Claude AI打造你的第一个App
  • c++调用 c# dll 通过 clr (详细避坑)
  • 数据加密使用方法
  • 使用Python编写一个简单的网页爬虫,从网站上抓取标题和正文内容。
  • 是时候谈谈Go的测试了
  • ArcGIS计算水库库容量
  • 曼昆《经济学原理》第八版课后答案及英文版PDF
  • 7.高可用集群架构Keepalived双主热备原理
  • 头歌-本关任务:使用GmSSL命令行,生成SM2私钥并对文件进行签名验证(第二关)。
  • android viewpager2 嵌套 recyclerview 手势冲突
  • FFmpeg源码:mid_pred函数分析
  • Chromium Mojo(IPC)进程通信演示 c++(2)