【Linux指令 (一)】Linux 命令行入门:从零开始理解Linux系统理论核心概念与基础指令

🔥艾莉丝努力练剑:个人主页

专栏传送门:《C语言》《数据结构与算法》C/C++干货分享&学习过程记录Linux操作系统编程详解笔试/面试常见算法:从基础到进阶

⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平


🎬艾莉丝努力练剑的简介:



目录

前情提示

一、前言:指令和理论如何学习

二、快速认识一下几个基本指令的用法

三、补充说明

(一)标题说明

[(二)Xshell 8登录说明](#(二)Xshell 8登录说明)

1、方式一

2、方式二

[(三)快捷键:Alt + Enter](#(三)快捷键:Alt + Enter)

(四)Xshell的基本操作

[1 ls](#1 ls)

[1.1 概念](#1.1 概念)

[1.2 如何理解文件?](#1.2 如何理解文件?)

[1.3 为什么要有路径?](#1.3 为什么要有路径?)

[1.4 ls -a](#1.4 ls -a)

[1.5 ls -l](#1.5 ls -l)

[1.6 ls -a -l](#1.6 ls -a -l)

[1.7 .(隐藏文件)](#1.7 .(隐藏文件))

[1.8 ls -l == ls(重命名)](#1.8 ls -l == ls(重命名))

[ls -l](#ls -l)

ll

换个例子对比一下

[1.9 举例](#1.9 举例)

[1.10 要点总结](#1.10 要点总结)

[2 pwd](#2 pwd)

[2.1 概念](#2.1 概念)

[2.2 Windows && Linux 的路径分隔符](#2.2 Windows && Linux 的路径分隔符)

[2.3 pwd在Xshell 8演示](#2.3 pwd在Xshell 8演示)

[3 cd](#3 cd)

[3.1 概念](#3.1 概念)

[3.2 cd](#3.2 cd)

[3.3 cd .](#3.3 cd .)

[3.4 ..](#3.4 ..)

[3.5 cd ..](#3.5 cd ..)

[3.6 目录和文件夹](#3.6 目录和文件夹)

[3.6.1 Linux && Windows](#3.6.1 Linux && Windows)

[3.6.2 Linux目录结构](#3.6.2 Linux目录结构)

[3.7 /------Linux根目录 && 路径分隔符](#3.7 /——Linux根目录 && 路径分隔符)

[3.8 树形结构](#3.8 树形结构)

[3.8.1 概念](#3.8.1 概念)

[3.8.2 理解](#3.8.2 理解)

[3.8.3 为什么具有唯一性?](#3.8.3 为什么具有唯一性?)

[3.9 Windows也是树形结构](#3.9 Windows也是树形结构)

[3.10 . && ..](#3.10 . && ..)

[3.11 路径有什么用?](#3.11 路径有什么用?)

[3.12 .有什么用?](#3.12 .有什么用?)

[3.13 绝对路径 && 相对路径](#3.13 绝对路径 && 相对路径)

[3.13.1 最佳实践:../dir1/test.c](#3.13.1 最佳实践:../dir1/test.c)

[3.13.2 回退到上一路径 && 回退到另一个目录下的文件](#3.13.2 回退到上一路径 && 回退到另一个目录下的文件)

[3.13.3 相对路径具有唯一性吗?](#3.13.3 相对路径具有唯一性吗?)

[3.13.4 同名文件的路径一样吗?](#3.13.4 同名文件的路径一样吗?)

[3.14 cd的两种特殊用法:cd - && cd ~](#3.14 cd的两种特殊用法:cd - && cd ~)

[3.14.1 cd -](#3.14.1 cd -)

[3.14.2 cd ~](#3.14.2 cd ~)

[3.15 普通用户 && 超级用户](#3.15 普通用户 && 超级用户)

[3.16 家目录(cd ~)](#3.16 家目录(cd ~))

[3.16.1 本质](#3.16.1 本质)

[3.16.2 普通用户和超级用户的家目录(Linux的家目录)](#3.16.2 普通用户和超级用户的家目录(Linux的家目录))

[3.16.3 Windows下的家目录](#3.16.3 Windows下的家目录)

[4 whoami](#4 whoami)

[4.1 概念](#4.1 概念)

[4.2 实践](#4.2 实践)

[5 touch("抚摸")](#5 touch(“抚摸”))

[5.1 概念&&功能](#5.1 概念&&功能)

[5.2 举例](#5.2 举例)

[5.3 用法一:创建一个新文件(普通文件)](#5.3 用法一:创建一个新文件(普通文件))

[6 stat(补充命令)](#6 stat(补充命令))

[6.1 "ACM"时间](#6.1 “ACM”时间)

[6.2 实践](#6.2 实践)

[7 mv](#7 mv)

[7.1 概念](#7.1 概念)

[7.2 实践](#7.2 实践)

[8 mkdir](#8 mkdir)

[8.1 概念](#8.1 概念)

[8.2 创建一串路径](#8.2 创建一串路径)

[8.3 确实是树形结构(tree .)](#8.3 确实是树形结构(tree .))

[9 tree:目录(补充命令)](#9 tree:目录(补充命令))

[9.1 下载](#9.1 下载)

[9.1.1 Centos 7下载指令](#9.1.1 Centos 7下载指令)

[9.1.2 Ubuntu下载指令](#9.1.2 Ubuntu下载指令)

[9.1.3 Centos下载演示](#9.1.3 Centos下载演示)

[9.2 命令](#9.2 命令)

[9.3 tree的效果](#9.3 tree的效果)

[10 rm](#10 rm)

[10.1 删除注意事项](#10.1 删除注意事项)

[10.1.1 对应指令:rm -r 目录](#10.1.1 对应指令:rm -r 目录)

[10.1.2 普通用户和超级用户之间的待遇差别](#10.1.2 普通用户和超级用户之间的待遇差别)

[10.2 指令](#10.2 指令)

[10.2.1 rm -r 目录名](#10.2.1 rm -r 目录名)

[10.2.2 最佳实践](#10.2.2 最佳实践)

[10.2.3 rm -i 文件](#10.2.3 rm -i 文件)

[10.2.4 (高能警告!!!)删除根目录:rm -rf /](#10.2.4 (高能警告!!!)删除根目录:rm -rf /)

[10.2.5 (高能警告!!!)绝对路径删除目录:rm -rf /.../xxx.xxx](#10.2.5 (高能警告!!!)绝对路径删除目录:rm -rf /.../xxx.xxx)

[10.3 rm -rf /这里不小心加了空格怎么办?](#10.3 rm -rf /这里不小心加了空格怎么办?)

[10.3.1 解决方案](#10.3.1 解决方案)

[10.3.2 挂掉可怕还是不挂掉可怕?不挂掉更可怕!](#10.3.2 挂掉可怕还是不挂掉可怕?不挂掉更可怕!)

[10.3.3 工作后挂掉Linux系统怎么处理?](#10.3.3 工作后挂掉Linux系统怎么处理?)

[10.4 扩展](#10.4 扩展)

[11 rmdir](#11 rmdir)

[11.1 功能](#11.1 功能)

[11.2 实践](#11.2 实践)

​编辑

[11.2.1 非空目录能不能被rmdir删掉------不能](#11.2.1 非空目录能不能被rmdir删掉——不能)

[11.2.2 空目录能不能被rmdir删掉------可以](#11.2.2 空目录能不能被rmdir删掉——可以)

结尾


前情提示


一、前言:指令和理论如何学习

指令是控制Linux系统的基本方法。

博主在本专栏前期介绍Linux指令的时候大概会介绍40+的指令,博主还会补充一些指令,总计在50+以上。这些指令操作不用想着在刚开始学习时就直接掌握,一口气全背下来记忆成本太高了。博主在撰写博客的时候考虑到了这点,所以在介绍每个指令的时候会穿插介绍Linux系统本身的一些理论知识,这些才是真正需要理解消化的,当然不是说指令不重要,指令很重要,但是介绍完你就应该知道就那么回事,Linux这个操作系统本身的理论知识才是了解对应指令之后你需要去理解消化的重点。因此,虽然在初步学习Linux指令的过程中我们会介绍几十条指令,但是,哈哈,"但是"后面才是重点!我们学习Linux系统,光知道指令是远远不够的,我们的学习目标就是得在学习指令的同时穿插了解相关的Linux系统的理论知识,不断了解认识Linux这个系统,这才是我们学习的要领,至于那些指令,其实我们经常会用,知道了之后就算不上重点啦。

老话说,"没吃过猪肉还没见过猪跑吗",所以博主在【前情提示】里面很笼统地放了本篇文章我们将要介绍的几个指令,大家先认识一下,和这些朋友见见面,接下来博主还会再简单介绍一下。

还是那句话,重点学习几个指令和Linux系统的理论知识,前者学完了就不是重点了,后者才是我们的学习时重点消化理解的内容!uu们,艾莉丝的Linux主线,正式发车啦!


二、快速认识一下几个基本指令的用法

这里只是为了让大家粗略认识一下,并不严谨,大家不用记,指令的用法博主后面会一个一个结合Linux系统的理论知识详细地去介绍,我们以后面为准。

clear(清楚历史命令)------如果指令已经写满屏幕了,用clear可以清除

pwd------查看当前工作路径

cd------更改工作路径

ls------查看当前路径下的文件

mkdir------新建文件夹(文件夹是Windows的讲法,Linux里面叫目录)

cd ..------回退到前一个路径

现在我们"见过猪跑"了,接下来应该"吃猪肉"了!博主一个指令一个指令给大家介绍。


三、补充说明

(一)标题说明

接下来博主会以"1234......"作为一级标题的序号来介绍对应指令,前面的【前言】、【快速认识一下几个基本指令的用法】还是用汉字的数字作为大标题的序列号索引,"1234......"也是为了方便记录对应的指令,方便以后索引查找,特此说明一下,感谢大家理解!

(二)Xshell 8登录说明

教大家几种登录方法------

1、方式一

如果出现了下图所示的绿色框框+黑屏,就可以输入ssh+空格+root@公网IP ------

这样也可以登录------

2、方式二

双击就可以进入了------

(三)快捷键:Alt + Enter

同样按Alt + Enter就可以取消。

(四)Xshell的基本操作


1 ls

1.1 概念

ls(list:罗列)------罗列当前路径下的所有的文件详情(罗列文件的属性)

之前博主已经在/root路径下mkdir了一个dir1目录,所以这里ls出来的就是dir1。

1.2 如何理解文件?

问题:Windows下新建了一个空文件,占不占磁盘空间?

占 || 不占?

好,不卖关子了,我们直接说结论------占磁盘空间

文件 != 文件内容

这些属性操作系统都要记录。

**文件的属性数据,也叫做元信息。**是不是数据?也是数据,也要保存!

文件 = 文件的内容 + 文件的属性

之前C语言里面学过文件操作,忘了【文件操作】的uu们可以去看博主之前写的这两篇文章------

【掌握文件操作】(上):二进制文件和文本文件、文件的打开和关闭、文件的顺序读写

【掌握文件操作】(下):文件的顺序读写、文件的随机读写、文件读取结束的判定、文件缓冲区

1.3 为什么要有路径?

1.4 ls -a

1.5 ls -l

1.6 ls -a -l

效果相同,选项未来可以进行组合------

1.7 .(隐藏文件)

Windows中也有对文件进行隐藏的效果------

1.8 ls -l == ls(重命名)

ls -l

ll

换个例子对比一下

1.9 举例

bash 复制代码
[whb@bite-alicloud test]$ ls
dir file.txt
[whb@bite-alicloud test]$ ls -a
. .. dir file.txt
[whb@bite-alicloud test]$ ls -a -l
total 12
drwxrwxr-x 3 whb whb 4096 Jan 11 15:01 .
drwx------ 22 whb whb 4096 Jan 11 14:21 ..
drwxrwxr-x 2 whb whb 4096 Jan 11 14:22 dir
-rw-rw-r-- 1 whb whb 0 Jan 11 14:22 file.txt
[whb@bite-alicloud test]$ ls -a -l -F
total 12
drwxrwxr-x 3 whb whb 4096 Jan 11 15:01 ./
drwx------ 22 whb whb 4096 Jan 11 14:21 ../
drwxrwxr-x 2 whb whb 4096 Jan 11 14:22 dir/
-rw-rw-r-- 1 whb whb 0 Jan 11 14:22 file.txt
[whb@bite-alicloud test]$ ls -alFn
total 12
drwxrwxr-x 3 1003 1003 4096 Jan 11 15:01 ./
drwx------ 22 1003 1003 4096 Jan 11 14:21 ../
drwxrwxr-x 2 1003 1003 4096 Jan 11 14:22 dir/
-rw-rw-r-- 1 1003 1003 0 Jan 11 14:22 file.txt

1.10 要点总结

1、文件 = 文件的内容 + 文件的属性;

2、路径是具有唯一性的。


2 pwd

2.1 概念

pwd:查看当前出在哪个路径下。

2.2 Windows && Linux 的路径分隔符

Windows:C:\尘白禁区\Snow\data(\:路径分隔符)

Linux:/root/118(路径分隔符:/)

2.3 pwd在Xshell 8演示


3 cd

3.1 概念

cd:进入或者修改当前路径。

cd:路径切换------change directory(更改路径)****------自由进行路径切换。

cd .. :回退到上级路径,并显示当前路径(回退之后的、上一级路径)。

cd . :显示当前路径(一直cd .的话就一直不变)。

3.2 cd

进入当前路径------

语法:cd 目录名
功能:改变工作目录。将当前工作目录改变到指定的目录下------

3.3 cd .

显示当前路径。

就像下面这样------

一直cd .的话就一直不变------

3.4 ..

3.5 cd ..

回退到上级路径,并显示当前路径(回退之后的、上一级路径)------

3.6 目录和文件夹

3.6.1 Linux && Windows

3.6.2 Linux目录结构

3.7 /------Linux根目录 && 路径分隔符

3.8 树形结构

3.8.1 概念

之前在数据结构中我们学习过二叉树,Linux管理文件统一使用树形结构

3.8.2 理解

像倒过来的多叉树,下面的树根就是根目录/

3.8.3 为什么具有唯一性?

3.9 Windows也是树形结构

问大家一个问题:大家的电脑上有几块盘(磁盘)?不算台式机哦!

一块?两块?三块?...NONONO!

电脑上只有一块盘(硬盘)------像C、D、E、F、...这些叫做磁盘分区。

这种我们其实可以当成文件夹来看,看了下面博主画的思维导图,大家就能理解了------

如图所示------构成多叉树------因此也是树形结构构建的目录结构。

3.10 . && ..

3.11 路径有什么用?

3.12 .有什么用?

3.13 绝对路径 && 相对路径

3.13.1 最佳实践:../dir1/test.c

1、相对路径,通常是进行命令行操作------相对于选择的一个目录为参照点(如/user)

2、绝对路径,通常会在配置文件中使用------是一种特殊的相对路径(相对于根目录)

3.13.2 回退到上一路径 && 回退到另一个目录下的文件

3.13.3 相对路径具有唯一性吗?

这个问题可能问得不是很清楚,博主再问一遍------

相对路径可以有多个,那么任意一个相对路径是否唯一? 答案是------

具有唯一性,只不过具有唯一性的相对路径有多个。

3.13.4 同名文件的路径一样吗?

同一文件夹无同名文件,不同文件夹可以有同名文件(路径不一样了)。

3.14 cd的两种特殊用法:cd - && cd ~

3.14.1 cd -

3.14.2 cd ~

**概念:~------**当前所处的家目录。

3.15 普通用户 && 超级用户

3.16 家目录(cd ~)

3.16.1 本质

**家目录:**操作系统的用户,在登录系统之后,默认所处的路径。

3.16.2 普通用户和超级用户的家目录(Linux的家目录)

3.16.3 Windows下的家目录


4 whoami

4.1 概念

指定用户在指定目录下。

4.2 实践


5 touch("抚摸")

5.1 概念&&功能

touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。

5.2 举例

bash 复制代码
# 创建普通⽂件 
[whb@bite-alicloud test]$ ls
dir file.txt
[whb@bite-alicloud test]$ touch newFile.txt
[whb@bite-alicloud test]$ ls
dir file.txt newFile.txt
# 查看⽂件时间 
[whb@bite-alicloud test]$ stat newFile.txt 
 File: 'newFile.txt'
 Size: 0 Blocks: 0 IO Block: 4096 regular empty 
file
Device: fd01h/64769d Inode: 1844719 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1003/ whb) Gid: ( 1003/ whb)
Access: 2023-01-11 15:06:45.832787572 +0800
Modify: 2023-01-11 15:06:45.832787572 +0800
Change: 2023-01-11 15:06:45.832787572 +0800
Birth: -
# 修改⽂件access时间 
[whb@bite-alicloud test]$ touch -a newFile.txt 
[whb@bite-alicloud test]$ stat newFile.txt 
 File: 'newFile.txt'
 Size: 0 Blocks: 0 IO Block: 4096 regular empty 
file
Device: fd01h/64769d Inode: 1844719 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1003/ whb) Gid: ( 1003/ whb)
Access: 2023-01-11 15:07:00.062846804 +0800
Modify: 2023-01-11 15:06:45.832787572 +0800
Change: 2023-01-11 15:07:00.062846804 +0800 # 该时间为何会变化? 
Birth: -
# 修改⽂件Modify时间 
[whb@bite-alicloud test]$ touch -m newFile.txt 
[whb@bite-alicloud test]$ stat newFile.txt 
 File: 'newFile.txt'
 Size: 0 Blocks: 0 IO Block: 4096 regular empty 
file
Device: fd01h/64769d Inode: 1844719 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1003/ whb) Gid: ( 1003/ whb)
Access: 2023-01-11 15:07:00.062846804 +0800
Modify: 2023-01-11 15:09:19.428426903 +0800
Change: 2023-01-11 15:09:19.428426903 +0800
 Birth: -

5.3 用法一:创建一个新文件(普通文件)


6 stat(补充命令)

6.1 "ACM"时间

6.2 实践

大家可以去查一下------文件的属性里面的这三个时间都是什么意思


7 mv

7.1 概念

mv就是move,作用就是"改名"。

7.2 实践

**如果把test.c改成test.txt会怎么样?**再运行就会跑不出来; 改回去就又好了。

这里简单做个演示,大家可以下去自己写一个程序编译生成可执行程序再用mv试试。

即mv test.c test.txt,为什么编译不过?

因为gcc编译关心后缀。
是的,编译不是Linux实现的,而是gcc实现的,Linux不关心后缀,但是gcc关心------

我们改回来就行------


8 mkdir

8.1 概念

创建一个目录。

mkdir------make directory(制作路径)

8.2 创建一串路径

8.3 确实是树形结构(tree .)


9 tree:目录(补充命令)

9.1 下载

9.1.1 Centos 7下载指令

bash 复制代码
[root@VM-4-17-centos a]# yum install -y tree

9.1.2 Ubuntu下载指令

博主配置的云服务器是Centos的,所以Ubuntu的下载指令我就直接呈现在代码里面了------

bash 复制代码
apt install -y tree

9.1.3 Centos下载演示

9.2 命令

tree .(当前路径,以树形结构呈现)

tree /(从根目录开始呈现)

tree a(查看a下的路径,并且以树形结构呈现)

9.3 tree的效果

可以确认目录是树形结构。


10 rm

10.1 删除注意事项

树形结构(递归构建生成)------递归删除

10.1.1 对应指令:rm -r 目录

这个 r 就是递归这个单词的首字母。

bash 复制代码
rm -r a

如下图所示------

y就是确认,n就是取消。

10.1.2 普通用户和超级用户之间的待遇差别

这里也可以看出普通用户和超级用户之间的待遇差别------

10.2 指令

10.2.1 rm -r 目录名

前面介绍了,这里不再赘述------

10.2.2 最佳实践

10.2.3 rm -i 文件

博主自己理解的是,这个i应当是identify(确认/识别的意思)。

10.2.4 (高能警告!!!)删除根目录:rm -rf /

/------根目录也是目录:rm -rf /****------

10.2.5 (高能警告!!!)绝对路径删除目录:rm -rf /.../xxx.xxx

现在学习的时候也许还好,会很注意------要当心的是工作之后会不会犯这个错误(千万小心)。

下面博主会讲如果一不小心加了空格怎么办,挂掉可怕还是不挂掉可怕?工作后一不小心挂掉怎么给公司及时止损、以及怎么和公司平摊责任。

10.3 rm -rf /这里不小心加了空格怎么办?

10.3.1 解决方案

不要慌,直接重装系统------因为Linux系统不像Windows有回收站(是的,Linux没有...),Linux删了就是删了,没有回收站。

10.3.2 挂掉可怕还是不挂掉可怕?不挂掉更可怕!

挂掉不可怕,直接重装系统就好了;不挂掉才可怕(你不知道删了什么、重要不重要......)。

10.3.3 工作后挂掉Linux系统怎么处理?

工作后一不小心挂掉怎么给公司及时止损?怎么和公司平摊责任?

10.4 扩展

Linux整体是一棵多叉树的树形结构。


11 rmdir

11.1 功能

rmdir只是为了进行删除空目录(非空删不掉)。

11.2 实践

注意------这里的dir1、Greyrat目录非空,dira目录为空

接下来博主分别做两个实验:非空目录能不能被rmdir删掉&&空目录能不能被rmdir删掉------

**11.2.1****非空目录能不能被rmdir删掉------**不能

**11.2.2****空目录能不能被rmdir删掉------**可以

如上图所示------dira这个空目录就被rmdir给删掉了。


结尾

本文的内容到这里就全部结束了,感谢您的阅读!

往期回顾:

【Linux】初始Linux:从计算机历史发展、操作系统历史脉络的角度详谈Linux相关的话题,附Linux安装和用户创建(环境准备)详解

**结语:**本期我们继续学习了测试开发/测试内容中的用例篇,希望对学习测试开发/测试相关内容的uu有所帮助,不要忘记给博主"一键四连"哦!

🗡博主在这里放了一只小狗,大家看完了摸摸小狗放松一下吧!🗡

૮₍ ˶ ˊ ᴥ ˋ˶₎ა

相关推荐
青草地溪水旁2 小时前
设计模式(C++)详解——中介者模式(2)
c++·设计模式·中介者模式
远远远远子2 小时前
C++ --1 perparation
开发语言·c++
青草地溪水旁2 小时前
设计模式(C++)详解——中介者模式(1)
c++·设计模式·迭代器模式
DeeplyMind2 小时前
rocr专栏介绍
linux·ai·amdgpu·rocm·rocr·libhsakmt·thunk
tpoog2 小时前
[C++项目框架]gflags和gtest的简单介绍
开发语言·c++
Q741_1473 小时前
C++ 位运算 高频面试考点 力扣 268. 丢失的数字 题解 每日一题
c++·算法·leetcode·面试·位运算
电子_咸鱼3 小时前
LeetCode-hot100——验证二叉搜索树
开发语言·数据结构·c++·算法·leetcode·深度优先
namekong83 小时前
在 Ubuntu 上可以用几个常用命令查看系统运行情况(内存、CPU、硬盘占用等
linux·运维·服务器
wheeldown3 小时前
【Linux】Linux下的静态链接的底层逻辑
linux·运维·服务器