文章目录
提示:以下是本篇文章正文内容,下面案例可供参考
1 Linux基础
1.1 用户类型
root用户
普通用户
1.2 终端terminal
rocky虚拟机中可以切换图形和字符终端窗口
切换成字符界面:ctrl+alt+f2
切换成图形界面:ctrl+alt+f1
Linux允许以不同身份在一个主机上开多个不同的窗口来同时登录
模拟好几个窗口:ctrl+alt+fn
1.2.1 查看当前的终端设备
tty可以查看当前终端的设备名称
[root@rocky8 ~]# tty
/dev/pts/2
1.2.2 查看所有终端设备
who显示所有在一个终端的窗口信息
没有ip地址(如:10.0.0.1)的是本地连接
[root@rocky8 ~]# who
liyang seat0 2024-04-12 11:27 (login screen)
liyang tty2 2024-04-12 11:27 (tty2)
liyang pts/1 2024-04-12 11:28 (10.0.0.1)
root pts/2 2024-04-12 11:29 (10.0.0.1)
1.2.3 查看当前终端设备
whoami可以知道当前用户类型
[root@rocky8 ~]# whoami
root
[root@rocky8 ~]# who am i
root pts/2 2024-04-12 11:29 (10.0.0.1)
1.2.4 查看历史操作
w可以查看目前登录这个主机的人正在执行哪些操作
[root@rocky8 ~]# w
11:52:52 up 27 min, 4 users, load average: 0.01, 0.03, 0.09
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
liyang seat0 login- 11:27 0.00s 0.00s 0.00s /usr/libexec/gdm-w
liyang tty2 tty2 11:27 27:12 43.64s 0.10s /usr/libexec/track
liyang pts/1 10.0.0.1 11:28 24:18 0.05s 0.05s -bash
root pts/2 10.0.0.1 11:29 0.00s 0.07s 0.02s w
1.3 交互式接口
交互式接口:启动终端后,在终端设备附加一个交互式应用程序
1.3.1 什么是shell
也称命令解释器,是一种高级程序设计语言
它接收用户输入的命令并把它送入内核去执行,在后台执行通过命令查看
[root@rocky8 ~]# ps
PID TTY TIME CMD
3431 pts/2 00:00:00 bash
4056 pts/2 00:00:00 ps
1.3.2 shell类型
1.3.3 bash shell
显示当前使用的shell
[root@rocky8 ~]# echo ${SHELL}
/bin/bash
1.4 设置主机名
先进入root用户
liyang@ubuntu2004:~$ sudo -i
[sudo] password for liyang: 123456
永久有效,支持centos7和ubuntu18.04以上版本
root@ubuntu2004:~# hostnamectl set-hostname ubuntu
root@ubuntu2004:~# hostname
ubuntu
临时修改
root@ubuntu2004:~# hostname ubuntu2004
注意:
- 主机名不支持使用下划线,但支持横线,可使用字母,横线或数字组合
- 有些软件对主机名有特殊要求
- 一般按照组织的要求设置主机名:通常有一定的意义
提示:错误的主机名可能会导致某些服务无法启动
1.5 命令提示符prompt
登录Linux后,默认的系统命令提示符毫无个性,无法明显辨别生产和测试环境,而导致误操作,可以通过修改PS1变量实现个性的提示符格式,避免这种低级错误
root@ubuntu2004:~# PS1=@
@
临时修改,想返回原先格式exit退出后,重新登陆
liyang@ubuntu2004:~$ PS1=@
@exit
logout
Connection closed.
Disconnected from remote host(10.0.0.153) at 16:29:30.
Type `help' to learn how to use Xshell prompt.
[C:\~]$ ping 10.0.0.153
默认提示符:
#管理员
$普通用户
root@ubuntu2004:~#
显示提示符格式
修改提示符格式
范例:
[liyang@ubuntu2004 ~]$PS1="\[\e[1;32m\][\u@\h \w]\\$\[\e[0m\]"
实现Ubuntu系统持久保存提示符格式
[liyang@ubuntu2004 ~]$echo "PS1='\[\e[1;32m\][\u@\h \w]\\$\[\e[0m\]'" >> .bashrc
[liyang@ubuntu2004 ~]$cat .bashrc #查看PS1的命令是否添加成功
[liyang@ubuntu2004 ~]$. .bashrc
实现CentOs系统持久保存提示符格式
[root@rocky8 ~]# echo "PS1='\[\e[1;32m\][\u@\h \w]\$\[\e[0m\]'" > /etc/profile.d/env.sh
[root@rocky8 ~]# . /etc/profile.d/env.sh
提示符格式说明
- \e 控制符
- \u 当前用户
- \h 主机名简称
- \H 主机名
- \w 当前工作目录
- \W 当前工作目录基名
- \t 24小时时间格式
- \T 12小时时间格式
- ! 命令是历史数
1.6 执行命令
-
内部命令:shell里的,直接从内存加载到cpu
-
外部命令:需要从硬盘文件加载到内存中交给cpu,需要花费一定的时间 通过命令确定是内部命令还是外部命令
区别指定的命令是内部还是外部命令
liyang@liyang:~$ type echo
echo is a shell builtin
1.6.1 内部命令
- 不同的shell,内置的命令不同
- 为了解决内置命令不存可能导致运行失败的情况采取备份外部命令措施
1.6.2 外部命令
怎么找到外部命令的磁盘文件加载到内存里的?——放在固定的路径下:$PATH
为了节约时间会把上次找到的路径在内存中记录下来
当文件移动时,还会按照上次的记录路径找,这个时候就会出现错误
解决方法:清除记录路径的信息
liyang@liyang:~$ hash #显示当前记录下的所有路径
hits command
2 /usr/bin/w
2 /usr/bin/ls
liyang@liyang:~$ hash -r /usr/bin/w #删除错误路径
1.6.3 命令别名
对于经常执行的较长的命令,可以将其定义成较短的别名,以方便执行
alias 别名 = “要替换的路径”
liyang@liyang:~$ alias cdnet="cd /etc/sysconfig/network-scripts/"
显示当前shell进程所有可用的命令别名
alias
要想永久保存,要定义在配置文件中
liyang@liyang:~$ nano .bashrc #编辑配置文件
liyang@liyang:~$ alias cdnet="cd /etc/sysconfig/network-scripts/"
liyang@liyang:~$ . .bashrc #放在内存里让其生效
执行次序:别名---->内部命令---->外部命令
如果要执行原命令
\别名
1.7 常见命令
1.7.1 查看硬件信息
1.7.1.1 查看cpu
- lscpu命令可以查看cpu信息
- cat /proc/cpuinfo也可以查看cpu信息
范例:
[liyang@ubuntu2004 ~]$lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
Address sizes: 45 bits physical, 48 bits virtual
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1 #每个内核有1个线程
Core(s) per socket: 1 #每个插槽有1个内核
Socket(s): 2 #有2个插槽
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 142
Model name: Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz
Stepping: 12
CPU MHz: 2112.001
BogoMIPS: 4224.00
Hypervisor vendor: VMware
Virtualization type: full
L1d cache: 64 KiB
L1i cache: 64 KiB
L2 cache: 512 KiB
L3 cache: 12 MiB
NUMA node0 CPU(s): 0,1
Vulnerability Gather data sampling: Unknown: Dependent on hypervisor status
[liyang@ubuntu2004 ~]$cat /proc/cpuinfo
1.7.1.2 查看内存大小
- free
- cat /proc/meminfo
范例:
[liyang@ubuntu2004 ~]$free -h
total used free shared buff/cache available
Mem: 1.9Gi 242Mi 1.2Gi 1.0Mi 422Mi 1.5Gi
Swap: 1.9Gi 0B 1.9Gi
[liyang@ubuntu2004 ~]$cat /proc/meminfo
MemTotal: 1986344 kB
MemFree: 1305492 kB
MemAvailable: 1566280 kB
...
为了节约内存空间可以临时关掉图形界面
[liyang@ubuntu2004 ~]$init 3
启动图形界面
root@Ubuntu2204:/home/liyang# init 5
1.7.1.3 查看硬盘和分区情况
- lsblk
- cat /proc/partitions
范例:
[liyang@ubuntu2004 ~]$lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 38.8M 1 loop /snap/snapd/21465
loop1 7:1 0 91.9M 1 loop /snap/lxd/24061
loop2 7:2 0 49.9M 1 loop /snap/snapd/18357
loop3 7:3 0 63.3M 1 loop /snap/core20/1828
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1.8G 0 part /boot
└─sda3 8:3 0 18.2G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 10G 0 lvm /
sr0 11:0 1 1.4G 0 rom
[liyang@ubuntu2004 ~]$cat /proc/partitions
major minor #blocks name
7 0 39664 loop0
7 1 94036 loop1
7 2 51036 loop2
7 3 64804 loop3
11 0 1452480 sr0
8 0 20971520 sda
8 1 1024 sda1
8 2 1857536 sda2
8 3 19110912 sda3
253 0 10485760 dm-0
1.7.2 查看系统版本信息
1.7.2.1 查看系统架构
[liyang@ubuntu2004 ~]$arch
x86_64
1.7.2.1 查看内核版本
[liyang@ubuntu2004 ~]$uname -r
5.4.0-177-generic
1.7.2.3 查看操作系统发行版本
- cat /etc/os-release
- lsb_release -a
[liyang@ubuntu2004 ~]$cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
[liyang@ubuntu2004 ~]$lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.6 LTS
Release: 20.04
Codename: focal
1.7.3 日期和时间
Linux的两种时钟
- 系统时钟:有Linux内核通过cpu的工作频率进行的
- 硬件时钟:主板
date显示和设置系统时间:
[liyang@ubuntu2004 ~]$date
Sun 28 Apr 2024 01:34:33 PM UTC
[liyang@ubuntu2004 ~]$date +%Y
2024
[liyang@ubuntu2004 ~]$date +"%F %T" #要想用空格分隔日期和时间需要加双引号
2024-04-28 13:35:00
发现时间与我们的不一致,那是因为时区不同
liyang@liyang:~$ timedatectl set-timezones Asia/Shanghai #更改时区为上海(注意大小写)
liyang@liyang:~$ ll /etc/localtime #查看时区
lrwxrwxrwx 1 root root 33 4月 16 13:42 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai
liyang@liyang:~$ date
2024年 04月 27日 星期六 16:06:32 CST
clock、hwclock显示硬件时钟:
[liyang@ubuntu2004 ~]$clock -s #以硬件时钟为准,校正系统时钟
[liyang@ubuntu2004 ~]$clock -w #以软件始终为准,校正硬件时钟
cal显示日历
[liyang@centos7 ~]$cal #centos显示日历
[liyang@ubuntu2004 ~]$ncal #ubuntu显示日历
[liyang@ubuntu2004 ~]$ncal 2024 #Ubuntu显示整年的日历
1.7.4 关机和重启
关机:
重启:
快捷键ctrl + alt + delete
[liyang@ubuntu2004 ~]$reboot
[liyang@ubuntu2004 ~]$init 6
[liyang@ubuntu2004 ~]$shutdown -r now #立即重启
1.7.5 用户登录信息查看命令
- whoami:显示当前登录有效用户
- who:系统当前所有的登录会话
- w:系统当前所有的登录会话及所作的操作
1.7.6 文本编辑
- nano工具可以实现文本的编辑,上手容易,适合初学者
- gedit工具是图形工具
1.7.7 会话管理
窗口关闭时,会话并不终止,而是继续运行
1.7.7.1 screen
Ubuntu默认有直接使用即可,centos需要先安装:
root@centos7:/# yum install epel-release.noarch
root@centos7:/# yum install screen
先输入screen命令,用ping 10.0.0.151测试一下
[liyang@Ubuntu2204 ~]$screen
[root@Ubuntu2204 ~]$ping 10.0.0.151
关闭终端后再打开,发现即使窗口关闭ping命令也一直在执行
[liyang@Ubuntu2204 ~]$ps aux|grep ping
liyang 2576 0.0 0.2 315364 8320 ? Ssl 15:57 0:00 /usr/libexec/gsd-housekeeping
root 19767 0.0 0.0 13544 2816 pts/4 S+ 16:42 0:00 ping 10.0.0.151
liyang 19782 0.0 0.0 12324 2432 pts/0 S+ 16:42 0:00 grep --color=auto ping
1.7.7.2 tmux
tmux是一个终端复用器,类似screen,但是更易用,也更强大
安装
sudo apt install tmux
1.7.8 输出信息echo
可以将后面跟的字符进行输出
[liyang@Ubuntu2204 ~]$echo $PATH #输出变量里的内容
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin
[liyang@Ubuntu2204 ~]$echo "$PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin
[liyang@Ubuntu2204 ~]$echo '$PATH' #单引号会以字符串格式输出
$PATH
1.8 字符集和编码及语言环境
字符集:即二进制和字符的对应关系,不关注最终的存储形式
字符集编码:简称编码,实现如何将自己转化为实际的二进制进行存储或相反,编码决定了空间的使用的大小
1.8.1 ASCII码
美国制定了一套字符编码,对字符与二进制位之间的关系做了统一规定
1.8.2 Unicode
它包含了全球几乎所有语言的字符,这样,无论一篇文章包含哪种语言的文字,都可以使用Unicode编码表来统一处理,避免了因编码不匹配而导致的乱码问题。
Unicode编码方案:
- utf-8:变长,1~4个字节
- utf-16:变长,2~4个字节
- utf-32:固定长度,4个字节
1.9 命令行扩展和被括起来的集合
1.9.1 命令行扩展:· ·和$( )
反向单引号``和$( )可以实现命令1调用命令2的输出结果
[liyang@Ubuntu2204 ~]$touch `date +%F`.log
[liyang@Ubuntu2204 ~]$ls
2024-05-06.log 模板 图片 下载 桌面 motd_peiqi
公共的 视频 文档 音乐 motd snap
[liyang@Ubuntu2204 ~]$touch $(date +%F).log
1.9.2 括号扩展:{}
[liyang@Ubuntu2204 ~]$echo {1..10}
1 2 3 4 5 6 7 8 9 10
[liyang@Ubuntu2204 ~]$echo {a..f}
a b c d e f
[liyang@Ubuntu2204 ~]$echo {1..10..2} #输出1~10的技术
1 3 5 7 9
[liyang@Ubuntu2204 ~]$echo {a..c}{1..3} #在数学上叫笛卡尔乘积
a1 a2 a3 b1 b2 b3 c1 c2 c3
root@Ubuntu2204:/home/liyang# touch /opt/file{1..3}.txt #同时创建多个文本文档
root@Ubuntu2204:/home/liyang# ls /opt
file1.txt file2.txt file3.txt
1.10 tab键补全
tab
键可以实现命令及路径等补全,提高输入效率,避免出错
1.11 命令行历史
1.11.1 history
history 查看历史命令
history -c 清除历史命令
1.11.2 快捷键
开启快捷键方式切换历史命令,长按alt键
alt+.
1.12 bash的快捷键
ctrl + l 清屏
crtl + o 执行当前命令,并重新显示本命令
ctrl + s 组织屏幕输出,锁定
ctrl + q 允许屏幕输出,解锁
ctrl + c 终止命令
ctrl + z 挂起命令
ctrl + a 光标移到命令行首
ctrl + e 光标移到命令行尾
ctrl + u 从光标处删除至命令行首
ctrl + k 从光标处删除至命令行尾
alt + r 删除当前整行
ctrl + h 删除光标前的一个字符
ctrl + y 将删除的字符粘贴至光标后
alt + c 从光标处开始,将右边的字母改为大写
alt + l 从光标处开始,将右边的字母改为小写
2 获得帮助
2.1 whatis
使用数据库来显示命令的简短描述
此工具在系统刚安装后,不可立即使用,需要制作数据库后才可使用
执行下面命令生成数据库
#centos 7版本之后
mandb
#centos 6版本之前
makewhat is
范例:
liyang@liyang:~$ whatis rm
rm (1) - remove files or directories
2.2 查看命令的帮助
先通过type查看需要帮助的命令是内部命令还是外部命令
2.2.1 内部命令帮助
help 内部命令
2.2.1 外部命令帮助
外部命令 --help
还有一种更详细查看外部命令帮助的方式
- man 外部命令
- man 章节 外部命令
下一篇: