Linux-Linux的基础指令1

目录

1.cd指令

[1.1ls -la 操作](#1.1ls -la 操作)

[1.2cd .和 cd ..操作](#1.2cd .和 cd ..操作)

1.3相对路径

1.4普通文件与目录的区别

[1.5cd -操作](#1.5cd -操作)

[1.6cd ~](#1.6cd ~)

[2.ls -d操作](#2.ls -d操作)

3.总结


1.cd指令

语法:cd目录名

功能:改变工作目录,将当前工作目录改到指定的目录下,即更改路径。

在我们之前学的ls指令我们知道,ls可以列出对应目录或文件的信息,如果我们直接ls后面不接选项和目录或文件的时候,它会输出我们当前所处的目录下的子目录和文件,也就是说我们可以通过ls得到我们所在的位置,而这个位置在Linux代表我们现在所处的路径。

在Windows下,我们找文件比如,我要找浏览器下载文件,我们先要在此电脑中找对应的磁盘,如:

一般我们把下载文件放到D盘里面,所以我们去D盘里面找:

这样我们就找到了,如果我们还想继续找之前下载的文件,可以点进去,如:

从这里我们可以看出来,我们在Windows找文件就是从此电脑开始进入磁盘,然后找对应文件夹,再点进需要找的文件所在的文件夹,最终找到目的文件,如果我们想得到目的文件的位置,我们先再次进入win7文件夹,里面有这几个文件:

我要知道python-3.8.2.exe的位置,这个时候点击它,右键后有以下选项:

我们这个时候选择:复制文件地址,则可得到如下结果:

"D:\浏览器下载文件\win7\python-3.8.2.exe"

我们发现从左到右,我们是先选择的磁盘"D盘",然后选择的"浏览器下载文件"文件夹,最终的ptyhon-3.8.2.exe,也就是说我们从开始找到最终找到这个过程我们都被记录下来了,这就叫路径。但是我们可以发现,如果是在Windows下,目录与子目录(文件夹)或文件用 \ 隔开,而我们在linux中,通过pwd指令(显示用户当前所在的目录)能得到如下结果:

如果我们更改路径进入root的子目录12.06,那么结果是什么呢?

可以发现,在linux中我们的目录和子目录或文件用 / 隔开,也就是说Linux和Windows下寻找文件的方式差不多,只是,目录与其子目录或文件分隔符不一样,在Linux里面称/root/12.06为路径。

如果通过这种方式还是不理解的话,可以试着看一下你的磁盘,你的每个磁盘下面都有很多文件夹,比如:

这是我的D盘内容,每个文件夹下面都有各自的文件或文件夹,以此递推,也就是说我们最终可以把D盘看做一个多叉树,而每个目录可能为叶子结点,也可能是路上结点(不是空目录,下面有子目录或文件),而文件为叶子结点。我们查找一个文件的位置就是从磁盘D盘开始往下面找,而且每次继续往下找的时候记录下我们进入的文件夹名,并用分隔符分隔,直到最后找到文件,这个我们就可以称为找到文件的路,加上最终的位置(目标文件),这就是路径。也就是说:pwd指令能让我们得到我们所处的路径。

这里,又有两个概念:

绝对路径:一般从'/'开始(Linux),不依赖其他目录的定位文件的方式。

相对路径:相对于当前用户所处的目录,定位文件的路径方式。

绝对路径和相对路径都具有唯一性,我们可以进行如下操作:

先建一个code.txt文件(touch code.txt),ls -l后查看结果,再建一个code.txt文件,你再看一下你能否创建出来呢?

我们可以发现如果是创建普通文件,那么我们重新在创建文件,它会覆盖掉原文件(属性会变)。

但是如果我们类似这样创建一个目录呢?

以下是创建12.13的目录(其他的和之前一样操作):

这个图的目的是代表我第二次是在12.13日的21:19再进行创建12.13目录的操作,发现我们第二次创建直接报错了,代表我们没法创建该目录,因为原路径下已经有一个同样的目录名了。

所以这说明了以下两点:(1)如果我们重新在创建一个普通文件,原文件属性会被修改,内容是否被覆盖未知;(2)如果我们创建两个相同名字的目录(文件夹),则会创建失败。

这说明了每个路径下的所有文件或目录是唯一的,也就代表绝对路径是唯一的,而由于只有目录下才能包含文件,而目录名是唯一的,所以回推代表:相对路径也是唯一的!

另外绝对路径就是我们之前用pwd得到的结果,在Windows就是我们的文件地址。而相对路径就需要我们重新理解一下ls指令了。

1.1ls -la 操作

在linux初始中我们知道了ls -l和ls -a两种操作,但是我觉得,如果单独用ls -l和单独ls -a太麻烦了,为什么不能直接一步到位,直接ls -l -a操作行不行呢?

这样确实可以,实际上,Linux一个指令后面可以接多个选项,比如ls -l -a;此外,这些选项没有先后之分,也就是说我们ls -a -l也可;还有一点,我们可以把两个指令合起来为一个指令,比如ls -la;因此,也可以写成这样ls -al,这些操作效果都一样:

那么它们相对于单独的ls -l 和ls -a有什么区别呢?

我们可以发现,相对于两个单独操作,最终结果是有差别的,ls -la操作会多了属性,因为我们之前好像在/root路径下进行ls -l的结果差不多?

下面示例演示了我们回退到/root路径下,并进行ls -l的操作:

但好像有点不同,比如,在ls -l第二行的结果上,之前在/root/12.06下的时候,这行的结果前面的属性这些是一样的,但是最后一个蓝色部分变成了 . 这个是怎么回事?

我再展示另外一个操作,以下示例是我们回退到 / 路径下,并进行ls -l操作:

在这个路径下,我们可以找到名为root 的目录,这个就是我们之前的/root路径,其中root那一行代表了root的属性和文件名。

但是我们对比之前在/root/12.06路径下进行ls -la操作:

我们发现ls -la操作的最后一行输出结果好像就是/root的属性!难道是/root被..的目录名替换了?

如果按照这种说法,那么我们的/root/12.06下的ls -la操作第二行的运行结果难道是文件名12.06被替换成 . 了?!!!

其实这种说法肯定是不被人信服的,因为我们如果再进入/root/12.06的路径下分别进行pwd和ls -a和pwd操作试一下?

我们要记住pwd能得到文件的绝对路径,而ls -la能得到目录下的所有文件包括隐藏文件的详细信息,再pwd能得到是否12.06的文件名被修改了。

可以知道,实际上,在进行ls -la操作前后,/root/12.06的绝对路径没有改变,所以这就代表不是12.06变成 . 的名字,root变成 .. 的名字了。

所以这个. ..到底是什么?

实际上.代表当前目录,..代表上级目录,上级目录也就是绝对路径上从哪个目录上进入找到该目录的就是上级目录,也就是说我们从root进入到12.06(它的子目录),这个就代表12.06是当前目录,root是上级目录。

所以我们就可以继续进行cd指令的讲解了。

1.2cd .和 cd ..操作

我们从上面的解释能了解到我们可以通过..得到上级目录,那么我们能不能在指令后面接.或..代替觉得文件或目录使用呢?

这个肯定是可以的,下面例子展示了我们先回退到/root路径,再进行ls -l /root和ls -l 以及ls -l .操作的对比:

其中ls -l /root目的是对比,代表我们当前确实处在/root路径下。

这代表了我们确实可以用.代替绝对路径来对某个文件或目录进行操作。

那么..呢?

以下操作,我先到了/root/12.06路径下,再进行ls /root和ls ..操作的结果:

也就是说..也可以代替绝对路径使用。

那么相对路径到底是什么意思?

1.3相对路径

我们通过.和..可以知道上级目录和该目录是有联系的,也就是说我们可以回退到上级目录,那么如果我们想得到当前的绝对路径怎么办?

以下操作在/root/12.06路径下进行:

但是如果我们想切换路径到/root/d1呢,而刚好我们不想写绝对路径呢(假设绝对路径很长),这个时候就可以结合之前的.与..进行了:

其中..代表了上级目录的绝对路径,但是实际上../d1不是12.06的相对路径,而是../d1的相对路径。

1.4普通文件与目录的区别

我们在/root路径下创建一部分文件如:后缀为.c的源文件、后缀为.cpp的源文件、后缀为.txt的文本文件,再创建几个目录,并用ls -l看一下输出结果:

下面示例演示了创建code.c、code.cpp、code.txt、12.14这些文件和目录:

我们观察发现,像源文件和文本文件这种普通文件,它们在列出详细信息的时候,最前面是一个 - ,而在像12.14和12.06这些则以d开头。但是如果我们再看最后面的文件名我们也发现,如果是目录,则显示成蓝色,普通文件则显示成白色,但是如果观察这个实际上用处不大,因为我们可以知道d可以视为文件directory的首字母,这也是一个通过观察文件属性来得出它们的区别。

但是如果我不想通过这种方式来区分或者不知道这种方式怎么办?

实际上,我们的cd指令后面只可以接目录名,而文件名接了会报错,如:

通过不断的pwd操作,我们可以发现,如果cd后面接普通文件,路径不会改变,但是实际上我们完全没必要写./因为我们本来就在/root路径下,如果cd,如果cd后面不接路径,它会自动在当前路径下寻找对应的目录,如:

还有其他的文件,以下是deepseek的搜索结果,后面我们可能需要创建:

实际上,我们没必要去刻意记住这些文件的后缀,因为后面创建文件的时候可能没有后缀,但是我们加上后缀可以区分不同的文件,实际上我们也可以通过file指令知道文件的具体类型(如果是空文件则需要先写内容才行),如果对于空文件会显示出:

可以跟着我操作,下面操作是我在code.txt里面写入 hello world 内容,然后打印code.txt的内容的两个操作:

这个时候我再用file指令试一下呢?

这个就代表code.txt文件是二进制文件。

所以我们容易知道:在文件内容为空的时候,我们是无法知道将来这个文件需要写的内容的,而在写了内容后,这个属性就被确定了。

file指令后面会进行讲解的,现在只是一个简单的使用一下。

1.5cd -操作

下面示例演示了我们先pwd后再cd 12.06再pwd最后再cd -,并pwd的结果:

我们发现cd -操作后,它回到了原来的路径,或者说上级路径?

如果不确定的话,我们可以先cd 12.14再cd ../12.06,最后cd -,如果回到上级目录,就代表-的作用是回退到上级目录,如果回到了/root/12.14路径,就代表回到上次的路径:

通过上述操作,我们可以知道:

cd -会回到上次的路径。

1.6cd ~

我们直接进行cd ~操作,并pwd试一下:

难道这个东西的作用是回退到上级目录?

我们可以在12.06创建一个目录名为Ch,然后进入该目录试一下

可以发现,它回退到/root路径了,那这个/root到底是什么目录,能一直回退到这里?

实际上,不是回退,cd ~作用是:进入当前用户的家目录。当前用户:在Linux系统中,我们是以一种身份进行访问的,我们若想知道我们登录的用户是谁,直接输入whoami即可:

实际上,我们可以在Linux下创建其他用户,它们都称之为普通用户,而root账户则是超级管理员,之后我们会学创建用户,而普通用户的家目录是:home,而超级管理员则是:root。

家目录:指定用户登录的时候默认所处的路径,我们现在可以直接关掉XShell,再进行pwd就能得到了:

实际上Windows也有对应的家目录,以我的名字命名的文件夹叫做当前用户的家目录,如:

而这个用户就是我们在Windows下的家目录,而且这个用户一定会在你的电脑的C盘(自己不进行修改默认所处位置),所以这就是为什么你们用电脑下载文件的时候,默认下载到C盘里面的原因。

所以,家目录的作用:提供默认所处的路径,我们后续所有的操作,都在自己家做,而cd ~可以理解为回家。

实际上,在Linux每次回车会自动生成的命令行里面可以看到这个~:

bash 复制代码
root@lavm-dzlb5y1t8a:~# 

这里面就有一个~,而我们cd 到其他路径,它会改变:

这个~在我们用超级用户登录时就是/root。

2.ls -d操作

ls指令后面可接的选项除了-l、-a外还有-d,这个-d是干什么的呢?

-d:将⽬录像⽂件⼀样显⽰,⽽不是显⽰其下的⽂件。如:ls‒d指定⽬录

那么这个具体是什么意思呢?直接用Linux操作应该就明白了

我们可以发现,如果直接ls -d则只会打印一个.,而且我们再创建一个目录,也不会改变结果,但是如果我们ls -l -d就我们会发现它的时间被修改了,难道它就只会输出一个.?

实际上我们使用-d需要结合 * 使用(记得cd ..退出之前文件):

我们可以发现如果使用后好像会展开当前目录的所有文件名或者目录名,其中*代表匹配当前目录。

-d用处在后面可能会用得比较多,所以这里就不做过多讲解了。

3.总结

这篇博客讲cd指令实际上也不是很多,主要是有很多知识需要铺垫,讲解的基本是其他的内容,以方便继续进行下一步操作,而通过这些东西的理解,我们可以结合之前学过的ls指令进行运用。

如果各位想删除这些文件,和我操作:

好了,这讲内容就到这里,喜欢的可以一键三连哦,下讲再见!

相关推荐
石像鬼₧魂石2 小时前
Hydra 弱口令爆破的详细命令模板
linux·windows·学习·ubuntu
txzz88882 小时前
CentOS-Stream-10 系统安装之SELINUX关闭
linux·运维·centos·selinux
Web极客码2 小时前
如何通过GUI或命令行更改Ubuntu 20.04的DNS设置
linux·ubuntu·php
漫漫求2 小时前
ubuntu常用命令
linux·ubuntu
徐徐图之!2 小时前
四、【阶段一运维基础 之 走进 Liunx:心理铺垫篇】
linux·运维
永恒-龙啸2 小时前
闲置机安装istoreos+常用软件介绍
linux·github·开源软件·istoreos
LingRannn2 小时前
Ubuntu 24.04 安装 Docker Engine
linux·ubuntu·docker
lhyzws2 小时前
CENTOS上的网络安全工具(三十三) Portainer Kafka-Clickhouse部署(2)
linux·运维·centos
TeleostNaCl2 小时前
如何在 Vim 启用行号显示和语法高亮功能
linux·经验分享·编辑器·vim