【Linux探索之旅】2.Linux基础入门

在这里插入图片描述

🌝博客主页:泥菩萨

💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本


提示:以下是本篇文章正文内容,下面案例可供参考

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  416 13:42 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai
liyang@liyang:~$ date
20240427日 星期六 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 章节 外部命令

下一篇:

  • 22
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值