此生决int头像
关注
Linux系统(02)——所有基本指令全解(零基础详解版)封面图

Linux系统(02)——所有基本指令全解(零基础详解版)

文章配图

⭐️博主: 此生决int-@CSDN博客

 速胜派就是最大的投降派!!!

         🔥热门专栏🔥

      深入理解 C++ 系列 | 算法系列

      快速复习系列 | Linux系列

Gitee地址:财哥 | GitHub地址:财哥


文章目录

上期回顾

  大家好,这里是此生弃int(财哥),欢迎来到我的博客。上一篇我们学习了解了Linux的历史演变,成功购买并部署了自己的云服务器,那么今天,我们就来学习一些基础的Linux命令吧!

Linux基本命令

在讲解命令之前,我们要先来了解一些基础知识

常用热键

[Tab]:自动补全——命令/路径自动补全。
[Ctrl] + C:终止当前前台程序
[Ctrl] + D:EOF / 退出当前 Shell
Ctrl + R:搜索历史命令
↑ 和 ↓:历史命令
history:查看历史命令

一切皆文件

Linux的最大的一个特点和理解——一切皆文件!

在 Linux 中,很多资源都可以通过“文件”的方式进行统一访问。

例如:

资源Linux中的体现
普通文件/home/test.txt
目录/home/
磁盘设备/dev/sda
键盘/dev/input/... 等设备文件
终端/dev/pts/0 等
鼠标/dev/input/... 等设备文件
管道可以通过文件描述符进行读写
网络连接可以通过类似文件的文件描述符进行读写

包括但不限于你的屏幕,鼠标,键盘,磁盘等等
所以,如果可以找到对应的文件,比如找到屏幕文件,我们就可以向屏幕文件里面输入内容,那么就可以显示在屏幕上!(注意,不要读写磁盘文件哦,非常危险!)
Linux 为很多硬件设备和系统资源提供了类似文件的访问接口,程序可以通过统一的文件操作机制与这些资源进行交互

Linux 理论知识:路径的认识

  • Linux 系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件
  • 普通文件 —— 叶子节点
  • 目录 —— 叶子(空目录),路上节点
  • 理解路径存在的意义:树状组织方式,都是为了保证快速定位查找到指定的文件,而定位文件就需要具有唯一性的方案来进行定位文件。其中任何一个节点,都只有一个父节点,所以,从根目录开始,定位指定文件,路径具有唯一性

分类:

类型定义特点常见使用场景
绝对路径一般从 / 开始,不依赖当前目录即可定位文件的路径方式。不依赖当前所在目录,路径具有唯一性;用户所在目录发生变化时,路径通常不会失效。特定服务的配置文件中经常使用。
相对路径相对于当前用户所处目录,用于定位文件的路径方式。依赖当前所在目录,使用更加便捷。命令行操作中使用较多。

与Windows的联系:

我们日常在点击文件的时候可以看到:
在这里插入图片描述
在这里插入图片描述

pwd 命令(Print Working Directory)

语法:pwd

功能:显示用户当前所在的目录

常用选项:无

举例:

[root@VM-0-10-centos ~]# pwd
/root    #这就是当前目录

1,ls 指令(list)

语法:ls [选项] [目录或文件]

功能:
对于目录,该命令列出该目录下的所有子目录与文件。
对于文件,将列出文件名以及其他信息。

所有选项:

选项功能说明示例 / 补充
-a列出目录下的所有文件,包括以 . 开头的隐含文件。ls -a
-d将目录像文件一样显示,而不是显示其下的文件。ls -d 指定目录
-i输出文件的 i 节点(inode)的索引信息。ls -ai 指定文件
-k以 KB(千字节)的形式表示文件大小。ls -alk 指定文件
-l以长格式列出文件的详细信息。ls -l
-n用数字形式的 UID、GID 代替用户名和组名。介绍 UID、GID
-F在每个文件名后附加一个字符,用于说明文件类型。*:可执行普通文件;/:目录;@:符号链接;`:FIFO;=`:套接字
-r对目录中的文件进行反向排序。ls -lr
-t按文件的修改时间进行排序。ls -lt
-s在文件名之前输出文件所占用的磁盘块大小。可用于查找目录下较大的文件
-R递归列出所有子目录中的文件。ls -R
-1每行只输出一个文件名。ls -1

常用命令:ls、ls-a、ls-l、ls-al

1.1,直接ls
[root@localhost ~]# ls
Desktop  Documents  Downloads  test.txt

表示当前目录中有:Desktop、Documents、Downloads、test.txt这些文件。

2,ls -l

显示文件的详细的信息。
代码示例:

[root@VM-0-10-centos ~]# pwd
/root
[root@VM-0-10-centos ~]# ls
test01
[root@VM-0-10-centos ~]# ls -l
total 4
drwxr-xr-x 2 root root 4096 Sep  9 21:56 test01
3,ls -a

显示所有文件,包括隐藏文件。隐藏文件一般以 . 开头
示例:

[root@VM-0-10-centos ~]# ls -a
.   .bash_history  .bash_profile  .cache   .cshrc  .pip              .ssh     test01
..  .bash_logout   .bashrc        .config  .npmrc  .pydistutils.cfg  .tcshrc
4,ls -al

两个结合,查看所有文件包括隐藏文件的详细信息
示例:
在这里插入图片描述

4, ls 目录名

可以直接查看指定目录:
示例:

ls caige

在这里插入图片描述

2,cd 指令(Change Directory)

例子
假设当前:

/home/user

里面有:

/home/user/code

那么可以:

cd code
cd .        #.表示当前目录
cd ..       #..表示上一级目录
cd ~        #进入当前用户的家目录。
cd          #与上面一样,进入当前用户的家目录。
cd -        #返回上一次所在目录

举例:

root@iZbp1762zeqzauorez4cw0Z:~# pwd
/root
root@iZbp1762zeqzauorez4cw0Z:~# tree
.
├── caige
│?? └── test01
├── snap
│?? ├── lxd  [error opening dir]
│?? └── tree
│??     ├── 54
│??     ├── common
│??     └── current -> 54
└── test01

10 directories, 0 files
root@iZbp1762zeqzauorez4cw0Z:~# cd caige
root@iZbp1762zeqzauorez4cw0Z:~/caige# pwd
/root/caige #打开了caige目录

3,touch:创建文件 / 更新时间

最基本的用法:

touch test.txt

两种情况,test.txt
1,如果不存在:创建一个空文件。

2,已经存在:不会把原来的内容清空,而是更新相关时间信息。

4,mkdir(make directory):创建目录

注意是创建目录而不是文件,

mkdir test# 在当前所在目录下创建目录test
mkdir -p a b c# 创建多级目录

在这里插入图片描述

5,rmdir(remove Directory):删除空目录

只能删除空目录

6,rm(remove):删除文件或目录

rm test.txt# 删除文件test.txt
rm -r test# 删除整个test文件夹(所有东西)

常用选项;
rm -r ;recursive,递归。就是全部删除为止
rm -f:force,强制。就是不用确认
rm -rf :强制递归删除!!(非常危险!)
Linux 命令行中删除文件通常不会像 Windows 回收站那样给你一个方便的恢复机制。
⚠️⚠️⚠️⚠️危险命令!⚠️⚠️⚠️⚠️

rm -rf /# 强制递归删除根目录!
rm -rf *# 强制递归删除当前目录下的所有文件,隐藏文件除外

所以,互联网上的删库跑路代码就是:rm -rf /

7,man(manual):查看命令手册(命令帮助文档,命令百科全书)

man ls # 查看命令ls的帮助文档,不知道ls怎么用的时候可以用这个命令

里面一般是这样的:
在这里插入图片描述
但是其实现在有AI了,AI查询也非常方便!

8,cp(copy):复制文件或目录

# cp 源文件 目标文件
touch test.txt# 新建一个test.txt文件
cp test.txt test2.txt# 复制生成一份test2.txt文件
# 把文件复制到目录。文件夹
cp test.txt dir/# 把 `test.txt` 复制到 `dir` 目录中。
# 复制文件夹
cp -r test dir/# r递归,复制整个文件夹到dir目录

总结:
cp 文件 → 直接 cp
cp 目录 → 通常需要 cp -r

9,mv(move):移动 (剪切)/ 重命名

# backup目录存在,并且和test.txt在同一目录(当前目录)下
mv test.txt backup/#把test.txt剪切到backup/
# 两个都是文件,第二个文件不存在
mv test.txt hello.txt# 重命名
# test.txt test.c都存在且在同一目录(当前目录)
mv test.txt test.c# 结果就只剩下一个test.c

在这里插入图片描述

原则:
mv 源文件 目标不存在→ 重命名
mv 源文件 目标是目录→ 移动到该目录
mv 源文件 目标是已存在的普通文件→ 覆盖目标文件

cp 和 mv 对比
对比cpmv
含义copymove
复制文件✅❌
移动文件❌✅
重命名通常不用于此✅
原文件是否保留✅通常不保留
目录操作cp -r可以直接移动目录

Linux补充知识2——文件分类

Linux 中,文件类型不是通过文件后缀来区分的。系统主要通过文件的类型信息来识别文件。

注意: 文件有没有 .c、.txt、.jpg 等后缀,并不是 Linux 判断文件类型的依据。后缀主要是给人和部分工具使用的。

Linux 常见文件类型:
通过 ls -l 查看文件时,第一个字符可以表示文件类型:

符号文件类型说明
-普通文件文本、可执行文件、库、图片、视频等都可以属于普通文件
d目录文件用来组织和管理其他文件
c字符设备文件键盘、显示器、终端等,数据以字符流的形式进行读写
b块设备文件磁盘等设备,数据通常以数据块为单位进行读写
l链接文件Linux 中的软链接
p管道文件用于进程之间进行数据传输

在这里插入图片描述

10,echo:向终端输出内容

把指定内容输出到标准输出。

echo “hello caige”

在这里插入图片描述

echo 不是“打印”,标准输出不一定非要显示在屏幕上。
例如

在这里插入图片描述

cat(concatenate):查看文件内容

查看内容比较少的文本文件。

cat test.txt# 把test.txt里面的内容输出到屏幕上
>:输出重定向

不要把程序的标准输出送到终端,而是送到指定文件。

echo hello #输出到屏幕
echo hello > test.txt# 输出到文件test.txt,会清空原文件,如果文件不存在,创建先创建在写入

创建文件,或者清空原文件后重新写入。

>>:追加重定向

在文件末尾继续添加内容

在这里插入图片描述

输入重定向 <

例如某些支持标准输入的程序,可以:

command(命令) < test.txt

把 test.txt 的内容作为这个程序的标准输入。

现在先了解即可

两个重定向总结

区别:

写法作用原文件存在时
>输出重定向覆盖原内容
>>输出追加保留原内容,在末尾追加

2,重定向并不只适用于 echo

重定向是 Shell 提供的一种通用机制,而不是 echo 专属功能。

很多命令都会产生标准输出。例如 ls等等,他们默认输出到屏幕,但是,

ls > file.txt    # 把ls输出的内容输出到文件file.txt里面,可以通过cat来查看
pwd > path.txt  # 把当前路径保存到(输出到)path.txt 文件
管道 | 组合命令

‘|’把一个命令的输出交给另一个命令,| 不是把输出保存到文件,而是把一个程序的标准输出作为另一个程序的标准输入。

查看文件内容

10,cat:查看小文件

把文件内容输出到标准输出。

cat -n:显示行号
tac:反向查看文件
cat test.txt # 把test.txt的内容直接打印到屏幕给我看
root@iZbp1762zeqzauorez4cw0Z:~/caige/test01/test# cat -n file.txt
     1	file.txt
     2	new.txt
     3	test.txt
     4	file.txt
     5	new.txt
     6	test.txt
     7	/root/caige/test01/test
 # 测试tac tac没有-n选项,只能用管道
root@iZbp1762zeqzauorez4cw0Z:~/caige/test01/test# cat -n file.txt | tac
     7	/root/caige/test01/test
     6	test.txt
     5	new.txt
     4	file.txt
     3	test.txt
     2	new.txt
     1	file.txt

11,more:分页查看文件(大文件)

如果文件非常大:可能瞬间刷满整个终端。

这时候可以:使用more命令,它会一页一页显示。

可以按:Space 向后翻页。按:Enter 向下移动一行。

12,less:增强版分页查看文件(大文件)

more不能往回翻,一般都用less来查看大文件
可以使用方向键上下移动,也可以进行搜索。
1,方向键上下移动
2,/进行搜索
3,按“n”寻找下一个匹配位置
4,“q”退出

命令适合场景
cat小文件,快速查看全部内容
tac想从最后一行反向查看
more较大文件,简单分页
less大文件,需要上下翻页、搜索

代码示例:

创建了一个文件,内容是caige:01一直到100,

for i in {1..100}; do echo "caige:$(printf '%02d' $i)"; done > big.txt
root@iZbp1762zeqzauorez4cw0Z:~/caige/test01/test# cat -n big.txt
     1	caige:01
     2	caige:02
     3	caige:03
     4	caige:04
     5	caige:05
     6	caige:06
     7	caige:07
     8	caige:08
     9	caige:09
    10	caige:10
    11	caige:11
  # 中间代码已删
    95	caige:95
    96	caige:96
    97	caige:97
    98	caige:98
    99	caige:99
   100	caige:100
13,head:查看文件头部若干行(默认10)
root@iZbp1762zeqzauorez4cw0Z:~/caige/test01/test# head big.txt
caige:01
caige:02
caige:03
caige:04
caige:05
caige:06
caige:07
caige:08
caige:09
caige:10

14,tail:查看文件尾部若干行(默认10)
root@iZbp1762zeqzauorez4cw0Z:~/caige/test01/test# tail big.txt
caige:91
caige:92
caige:93
caige:94
caige:95
caige:96
caige:97
caige:98
caige:99
caige:100

head、tail、管道“|”的组合使用:

root@iZbp1762zeqzauorez4cw0Z:~/caige/test01/test# head -50 big.txt #  作用是查看前50行
root@iZbp1762zeqzauorez4cw0Z:~/caige/test01/test# head -50 big.txt | tail -10  # 先查看前50行得到一个结果,然后查看这个结果的后10行
caige:41
caige:42
caige:43
caige:44
caige:45
caige:46
caige:47
caige:48
caige:49
caige:50

tail -f:实时查看日志——非常重要

-f follow,持续跟踪文件末尾。

Ctrl + C退出

15,grep(global regular expression print):文本过滤搜索

在这里插入图片描述

grep -i 忽略大小写查找
grep -n 显示行号查找
grep -r 当前目录递归查找

15,date:显示/设置系统日期时间

data+格式,按照你给的格式输出当前时间
代码示例:

root@iZbp1762zeqzauorez4cw0Z:~/caige/test01/test# date "+%Y-%m-%d %H:%M:%S" # 按照规定格式显示当前时间
2026-10-01 16:58:25
格式含义
%Y年
%m月
%d日
%H小时
%M分钟
%S秒
‘%s’时间戳
%F日期,等价于 %Y-%m-%d
%T时间,等价于 %H:%M:%S
小知识——时间戳
root@iZbp1762zeqzauorez4cw0Z:~/caige/test01# date +%s

1790846115

这个1790846115就是时间戳!他表示从 1970 年 1 月 1 日 00:00:00 UTC 开始,到当前时间经过了多少秒。

date -d @时间戳:时间戳转换为普通时间

root@iZbp1762zeqzauorez4cw0Z:~/caige/test01# date -d @1790846115
Thu Oct  1 05:15:15 PM CST 2026
root@iZbp1762zeqzauorez4cw0Z:~/caige/test01# date +%Y-%m-%d_%H:%M:%S -d @1725974746
2024-09-10_21:25:46
root@iZbp1762zeqzauorez4cw0Z:~/caige/test01# date -d @0
Thu Jan  1 08:00:00 AM CST 1970
root@iZbp1762zeqzauorez4cw0Z:~/caige/test01# 

为什么是1970年1月1日8点,因为主播在中国,是北京时间,东八区

益智小故事——为什么电脑关机后,开机还能知道现在几点?

有人肯定想是因为网路,但是你想想你把网络关了它还是可以正常计时!所以,肯定是手机或者电脑自己里面带了钟表!

主板上有专门的实时时钟电路,并且通常由主板上的纽扣电池供电。

16,cal(calendar):查看日历

cal # 查看当前月的日历
cal 2023 # 查看2023年所有日历
cal 3 2024 # 查看2024年3月的日历
cal -3 # 查看今年这个月,上个月,下个月的日历

17,find:文件搜索查找

在指定目录及其子目录中查找所有符合条件的文件。

find . -name "test.txt" # 从当前目录开始,递归寻找名字叫 `test.txt` 的文件。
find / -name "test.txt" # 从根目录 `/` 开始寻找 `test.txt`

find . -name "*.cpp" # 从这里开始,把所有 `.cpp` 文件找出来。
root@iZbp1762zeqzauorez4cw0Z:~/caige/test01 find . -name "test.txt"
./test/test.txt
root@iZbp1762zeqzauorez4cw0Z:~/caige/test01 find / -name "test.txt"
/root/test.txt
/root/caige/test01/test/test.txt

18,which:查找可执行程序路径

之前说过,命令就是文件!
which就可以帮我们找到某个命令文件在哪里

root@iZbp1762zeqzauorez4cw0Z:~/caige/test01# which ls
/usr/bin/ls
root@iZbp1762zeqzauorez4cw0Z:~/caige/test01# which pwd
/usr/bin/pwd
root@iZbp1762zeqzauorez4cw0Z:~/caige/test01# which find
/usr/bin/find

19,whereis:查找命令的二进制、源码、手册位置

不仅找命令文件(即运行时运行的是哪个文件),还会找一些与它相关的文件,如帮助文档里面的关于这个命令怎么使用的文件等等

root@iZbp1762zeqzauorez4cw0Z:~/caige/test01# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

区别
对比whichwhereis
主要目的找可执行命令找程序相关文件
常见结果可执行文件路径程序、man 等多个位置
常见用法which gccwhereis gcc
适合场景确认实际执行哪个命令查看程序相关资源

20,alias:设置命令别名

给一个命令设置一个更方便的名字。
1,当前会话有用,想要长期有用要修改写到~/.bashrc文件
2,记得加引号把“命令”括起来

alias ll='ls -al'  # ls -l 起一个方便使用的名字——ll,当前会话ll就会执行ls -l
alias # 查看当前所有别名命令
unalias ll # 删除ll这个别名

22,top:实时查看系统进程资源

相当于Windows的资源管理器
会进入一个动态变化的界面。

它可以查看:

  • CPU 使用情况
  • 内存使用情况
  • 系统负载
  • 运行中的进程
  • 每个进程的资源占用
    在这里插入图片描述
    退出按q

23,zip/unzip:zip格式压缩和解压缩

zip test.zip test.txt  # zip 目标文件名 要压缩的文件名
zip test.zip a.txt b.txt c.txt # 压缩多个文件
zip -r project.zip project/ # 压缩目录

#  `unzip`:解压
unzip test.zip # 把 `test.zip` 解压到当前目录。
unzip test.zip -d output  # 把 `test.zip` 解压到 `output` 目录。

24,tar(tape archive):打包解压(重要)

这个是打包,zip是压缩,打包就是相当于封装成一个文件夹,大小不变
压缩大小减小,

将多个文件/目录打包成一个归档文件,并配合压缩算法进行压缩。

tar的重要参数
参数含义
-ccreate,创建归档
-xextract,解包
-vverbose,显示详细过程
-ffile,指定归档文件
-z使用 gzip
-j使用 bzip2
-J使用 xz
-C指定操作目录

所以,一般都是用的组合操作

tar -cf project.tar project/ # 普通打包

tar -cvf project.tar project/ # 显示打包过程打包

tar -xf project.tar  # 解包

tar -czvf project.tar.gz project/ # 可视化打包并gzip压缩
 
tar -xzvf project.tar.gz # 可视化解包并解压gzip包
对比ziptar
常见环境Windows / Linux 都常见Linux/Unix 非常常见
主要作用压缩/解压打包/归档,可配合压缩
常见文件.zip.tar、.tar.gz、.tar.xz
目录处理zip -r天然适合目录归档
Linux 软件包相对少见非常常见

25,rzsz:串口传输文件工具

rz:从本地上传文件到 Linux

把本地电脑上的文件传输到 Linux 服务器。

rz -C /root/caige/test01/  # 上传的Linux指定文件夹
sz:从 Linux 下载到本地

把 Linux 上的 hello.cpp 发送到本地电脑。

sz test.txt # 把 Linux 中的 `test.txt` 发送到本地。

scp(secure copy):安全复制

通过 SSH 安全地复制文件。可以直接在两台通过 SSH 通信的机器之间复制文件。

scp /root/test.txt [email protected]:/root/ # scp 源文件 目标用户@目标主机:目标路径
scp -r caige [email protected]:/root/  # 传递目录

scp [email protected]:/root/caige/test.cpp . # 从服务器下载文件,
对比rz/szscp
依赖ZMODEM + 终端软件支持SSH
常见场景XShell 等终端中快速传文件机器之间复制
是否需要交互选择文件rz 通常需要通常直接写路径
是否适合脚本化不太适合更适合
是否需要 SSH不完全等同于 SCP 的 SSH 传输方式是
目录传输受工具支持影响scp -r
Linux 服务器开发常见度学习/临时传文件方便很常见

26,bc(basic calculator):命令行计算器

bc 是 Linux 中的一个命令行计算器。

直接输入:bc即可进入,Ctrl + D退出

27,uname -r:查看内核版本信息

可以查看当前正在运行的 Linux Kernel 版本信息。

root@iZbp1762zeqzauorez4cw0Z:~/caige/test01 uname -r
5.15.0-190-generic

下期预告

Linux权限


结语

  本文到此结束,感谢大家的阅读!如果觉得本文对你有所帮助,欢迎点赞、收藏、关注,也欢迎在评论区一起交流讨论。
  也欢迎订阅我的
深入理解 C++系列:从语法入门到底层原理,系统掌握现代 C++
算法系列:从入门到精通,蓝桥杯、ACM、LeetCode 与面试算法全路线
快速复习系列:知识梳理、查漏补缺,考前冲刺必备
Linux系列:从零带你系统学习Linux系统,深入理解计算机组成原理!


  愿每一次敲下键盘,都比昨天更进一步!
  愿每一行代码落下,都让未来多一种可能!

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/2502_94353935/article/details/164756772

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--