Linux入门教程:P8->文件目录类

本系列文章为尚硅谷武晟然老师的Linux入门教程学习笔记,前面的系列文章链接如下
Linux入门教程:P3->Linux文件系统
Linux入门教程:P4->Vim编辑器
Linux入门教程:P5->网络配置
Linux入门教程:P6->系统管理
Linux入门教程:P7->Shell介绍


一、目录操作命令

1.1 查看和切换工作目录

pwd

pwd的全称是print working directory,打印当前工作目录的绝对路径(从根目录开始一直走到当前工作目录这条路),是个内置命令。在终端中那个小波浪号就代表当前用户的主文件夹。
在这里插入图片描述
示例:我们不在虚拟机上打开终端去输命令了,因为实际工作的时候一般都是用远程登录的方式,所以我们使用XShell远程登陆进行操作。我们输入pwd,结果如下:
在这里插入图片描述
当我们切换目录后,再使用pwd可以看到当前工作目录改变了。
在这里插入图片描述


cd

cd的全称是change directory,用法为cd 参数,参数目录如下:
cd 绝对路径:切换路径
cd 相对路径:切换路径
cd ~或者 cd:回到自己的家目录
cd -:回到上一次所在目录
cd ..:回到当前目录的上一级目录
cd -P:跳转到实际物理路径,而非快捷方式路径
示例: 切换目录之桌面,可以看到当前的工作目录就变成了/root/桌面
在这里插入图片描述
问题:现在有两个目录a/b/c/d和a/b/c/e,如果我想从d跳转到e,难道每次使用cd命令都要加上前面的a/b/c?
答案:不需要,可以使用相对路径。比如说我们当前在/root/桌面目录下,而root目录下还有个视频目录,则我们可以通过cd ../视频/切换到视频目录。
在这里插入图片描述
示例:当我们的目录在/root时,如果想跳转到root下的桌面目录可以直接使用cd 桌面/,因为相对路径是以当前目录为起始点进行跳转。
在这里插入图片描述
示例:使用命令cd -回到上一次所在目录
在这里插入图片描述
示例:通过cd切换到当前用户的主目录,如果是root用户就回到/root。
在这里插入图片描述
我们这里使用su命令切换回普通用户xzz的主目录,可以看到普通用户的主目录就是/home/xzz
在这里插入图片描述


1.2 列出目录内容

ls

ls就是list的缩写,作用是列出目录内容,包括文件和文件夹。ls后面可以跟许多选项,常用的是下面两种。
基本语法: ls [选项] [目录或文件]
常用选项
-a:列举出目录下的全部的文件,连同隐藏档(开头为.的文件和目录)一起列出来
-l:长数据串列出,包含文件的属性与权限等等数据,等价于ll
示例: 直接使用ls,可以看出列出了当前目录下的所有文件和目录。黑色的是文件,蓝色的是目录。
在这里插入图片描述
示例: 使用ls -a,可以看到隐藏的文件和文件夹都列出来了。在Linux中,以.开头的是隐藏文件/目录。
在这里插入图片描述
我们注意到这里面有个...,其中.代表当前目录,..代表上一级目录。这也是为什么我们可以在当前目录下使用cd ..跳转到上层目录,也可以使用cd ./以相对路径的方式跳转到其它目录,比如说这里我们通过cd ./桌面/跳转到桌面目录中。
在这里插入图片描述
.bashrc
·.bashrc·这个文件非常重要,它就是我们当前用户的一个非常重要的配置文件,很多相关的环境变量、一些别名等都可以在里边去进行配置。这个是后话,我们用到的时候再说。
示例: ls -l中的-l是指以长数据串列出,l就是long的意思。也就是把当前文件的属性、权限、所属用户等各种信息全列出来,列成一行。
在这里插入图片描述
可以看到文件许多详细信息都被列举出来了。之前我们区分是文件还是文件夹是按照颜色来判别的,但是这个东西貌似不太靠谱,万一要是颜色错了就搞不清楚到底是什么东西了。其实这里很明确的判别方式:如果是一般文件,它的开头就是-。如果是目录,它的开头就是d,代表directory。
ls -l与ll
ls -lll是同一个东西,我们可以通过type ll看出他就是ls -l的一个别名而已。
在这里插入图片描述


1.3 创建和删除目录

mkdir

mkdir: 就是make directory的缩写,创建目录
基本语法: mkdir [选项] 要创建的目录
示例: 通过mkdir a在当前目录创建一个目录a
在这里插入图片描述
示例: 通过mkdir /b在当根目录创建一个目录b
在这里插入图片描述
示例: 通过mkdir b c在当根目录创建一个目录b和一个目录c
在这里插入图片描述
注意: 不能嵌套地去创建目录。比如说我想创建一个目录d,然后在d下面创建一个目录e,然后在e下面创建一个目录f。不能直接通过mkdir d/e/f来创建。
在这里插入图片描述
解决方案①:依次创建各级目录:mkdir dmkdir d/emkdir d/e/f
在这里插入图片描述
解决方案②:mkdir -p可以创建多级目录
在这里插入图片描述

rmdir

rmdir: 就是remove directory的缩写,移除一个空目录。
基本语法: rmdir 要删除的空目录
示例: 通过rmdir a删除当前目录中的目录a
在这里插入图片描述
注意: 不能直接删除不为空的目录
在这里插入图片描述
解决方案①:嵌套地从下往上删除:
在这里插入图片描述
解决方案②:通过使用rmdir -p来删除,但是无法直接使用
在这里插入图片描述
这时需要删除最底层的目录,如果删完了之后它的父目录变成空的了,这个时候就可以直接删掉
在这里插入图片描述


二、文件操作命令

2.1 创建文件

touch

基本语法: touch 文件名称
示例: 通过touch hello在当前目录下创建一个hello文件。文件不带后缀名时默认就是文本文件,可以直接打开。
在这里插入图片描述
示例: 通过touch /home/xzz/hello2在/home/xzz目录下创建一个hello2文件。
在这里插入图片描述
示例: 可以通过vim创建文本文件,但是如果是以q退出文本文件,则无法保存文件,文件也就会不存在。而touch是可以创建空文件的。
在这里插入图片描述


2.2 复制文件或文件夹

cp

cp: 就是copy的缩写,复制文件或目录到另一个地方。
基本语法: cp [选项] source dest (复制source文件到dest)
示例: 将当前目录下的initial-setup-ks.cfg 文件复制到/home/xzz/目录下
在这里插入图片描述
示例: 将当前目录下的initial-setup-ks.cfg 文件复制到/home/xzz/hello2文件,效果就是进行覆盖。
在这里插入图片描述
使用vim打开hello2文件,可以看到内容被覆盖
在这里插入图片描述
当我们复制一个文件到另外一个含有同名文件的目录下时,也会提醒我们是否覆盖。我们这里再将initial-setup-ks.cfg 复制一次到/home/xzz/目录下。
在这里插入图片描述
取消提示: 在cp前面加个\就可以不再提示是否覆盖而是直接进行覆盖。我们这里将initial-setup-ks.cfg复制到/home/xzz/目录下的hello3中。
在这里插入图片描述
然后可以看到hello3的内容被覆盖
在这里插入图片描述
原因分析: 我们使用type cp命令可以看到cp其实是cp -i的别名
在这里插入图片描述
cp是个内置命令,我们通过cp --help去看看这个-i选项代表什么。可以看到-i代表以交互式的形式进行复制,所以会有提醒。
在这里插入图片描述
同样的,ls也是个内置命令,我们通过cp --ls可以看到lsls --color=auto的别名,代表将文件和目录以不同颜色显示出来。
在这里插入图片描述
在命令前面加个\代表使用原生命令,即不加参数。于是我们在ls前面加个\,通过\ls可以看出不再显示文件和目录颜色了。
在这里插入图片描述
复制目录:
我们也可以将目录复制到其它地方,但是直接复制目录没有意义,需要将目录下的所有内容一起复制过去。此时需要加上-r选项,代表递归复制整个文件夹。
示例: 首先在当前目录下创建一个目录a,然后将initial-setup-ks.cfg复制到目录a下,最后通过cp -r将整个目录a下的所有内容复制到/home/xzz/下。可以看到成功将所有内容复制过去了,包括这个initial-setup-ks.cfg文件。
在这里插入图片描述


2.3 删除和移动文件

rm

基本语法: rm [选项] 要删除的文件
功能描述: 删除指定的文件。加上一些选项还可以删除目录中的所以内容。
选项说明:
-r:递归删除目录中所有内容
-f:强制执行删除操作,而不提示用于进行确认。
-v:显示指令的详细执行过程
示例: 通过rm hello直接删除当前目录下的hello文件,会让我们确认是否删除
在这里插入图片描述
这是因为rmrm -i的别名
在这里插入图片描述
通过加上参数-f可以不提示。这里我们通过rm -f hello4删除hello4文件。
在这里插入图片描述
示例: 加上-r可以递归删除目录下的所有内容。我们这里使用rm -r a\删除目录a\下的所有内容。
在这里插入图片描述
可以看到会一直提示我们是否删除,所以加上-r,即使用命令rm -rf c\可以直接删除目录c\下的所有内容。
在这里插入图片描述
注意: 不要使用rm -rf /*,这就相当于把根目录下边的所有内容都删除掉。这个*可以认为是一个通配符,将目录下的内容都删除,但是保留这个目录名。
示例: 我们这里有一个目录e,里面有个文件hello。我们通过rm -rf ./e/*删除这个目录下的所有内容,但是保留这个目录。
在这里插入图片描述


mv

基本语法:
mv 需要移动的文件名 新的文件名
mv 需要移动的文件名 路径
功能描述: 语法①代表将文件移动到新的路径,并且改个名字。语法②代表将文件移动到新的路径。
示例: 当前目录下有文件hello,有空目录e。现在通过命令mv hello ./e/将文件hello移动过去。
在这里插入图片描述
示例: 现在通过命令mv ./e/hello aaaa将目录e下的文件hello移动到当前目录下,然后将名字改为aaaa
在这里插入图片描述


2.4 查看文件

cat

基本语法: cat [选项] 要查看的文件
功能描述: 直接打开文件查看其内容,不对其做任何修改。但是一次会将所有内容全部显示出来,如果文件内容较多,需要一直往上移动才能看到前面的内容。
选项说明: -n:显示所有行的行号,包括空行
示例: 通过cat initial-setup-ks.cfg查看该配置文件的内容
在这里插入图片描述


more

基本语法: more 要查看的文件
功能描述: more指令是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。
操作说明:
Enter:向下翻一行
Space:向下翻一页
b:向上翻一页
Ctrl+F:向下滚动一屏
Ctrl+B:返回上一屏
=:输出当前行的行号
:f:输出文件名和当前行的行号
q:代表立刻离开more,不再显示该文件内
示例: 通过more initial-setup-ks.cfg查看该配置文件
在这里插入图片描述


less

基本语法: less 要查看的文件
功能描述: less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
操作说明:
Space:向下翻动一页
pagedown:向下翻动一页
pageup:向上翻动一页
G:跳到末尾(和VIM类似)
g:跳到开头(和VIM类似)
=:显示文件名、当前这一页展示的是多少行等信息
/字串:向下搜寻『字串』的功能;n:向下查找;N:向上查找;
?字串:向上搜寻『字串』的功能;n:向上查找;N:向下查找;
q:离开less
示例: 通过less initial-setup-ks.cfg查看该配置文件
在这里插入图片描述
使用=看看相关信息
在这里插入图片描述
使用/fi向下搜寻fi这个字符串
在这里插入图片描述


三、其他命令

3.1 控制台显示和输出重定向

echo

基本语法:echo [选项] [输出内容]
功能描述: 输出内容到控制台
选项:-e代表支持反斜线控制的字符转换,如\\代表输出\本身,\n代表换行符号,\t代表制表符(Tab键)
示例: 打印不同的内容到控制台。
在这里插入图片描述
示例: echo还可以看当前系统的环境变量,用法为echo $环境变量。如果我们不知道看什么环境变量,直接echo $制表符(Tab),然后输入y,就能显示所有的环境变量。
在这里插入图片描述
里面有很多我们熟悉的环境变量,如PATHUSERHOSTNAME,在这里路径下可以直接去执行系统命令。
在这里插入图片描述
诸如lscp等命令这些命令明明不在当前目录下却可以执行,这是因为这些命令所在路径都在环境变量PATH里面声明。所以我们调用命令就像在当前目录下调用一样。


输出重定向

基本语法:
ls > 文件 (功能描述:列表的内容写入文件中(覆盖写))
ls >> 文件 (功能描述:列表的内容追加到文件的末尾)
cat 文件 1 > 文件 2 (功能描述:将文件1的内容覆盖到文件2)
echo “内容” >> 文件 (功能描述:将字符串内容追加到文件的末尾)
示例: 将列表的内容写入到文件info中
在这里插入图片描述
示例: 将字符串加在info文件末尾
在这里插入图片描述


3.2 监控文件变化

head

基本语法:
head 文件 (功能描述:查看文件头10行内容)
head -n 5 文件 (功能描述:查看文件头5行内容,5可以是任意行数)
功能描述: head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容。
示例: 使用head命令来查看info文件的开头部分内容。
在这里插入图片描述


tail

功能描述: tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的后10行内容
基本语法:
tail 文件 (功能描述:查看文件尾部10行内容)
tail -n 5 文件 (功能描述:查看文件尾部5行内容,5可以是任意行数)
tail -f 文件 (功能描述:实时追踪该文档的所有更新)
示例: 使用tail命令来查看info文件的末尾部分内容。
在这里插入图片描述


监控文件变化

我们打开两个终端,一个终端输入tail -f info,另一个终端用于向info文件中追加内容。
在这里插入图片描述
现在我们向info追加一些字符串,可以看到左边也会同步更新。
在这里插入图片描述
我们在左边按ctrl s暂停监控,然后在右边继续追加字符串,可以看到左边没有同步更新(但是追加的内容实际上是保存着的)。
在这里插入图片描述
我们在左边按ctrl q继续,可以看到之前暂停监控期间追加的东西又一下子出现了。
在这里插入图片描述
最后按ctrl c退出。
:如果不是追加而是直接覆写会报错
一些特殊情况:
如果我们用vim在这个文件末尾追加内容,然后保存退出。
在这里插入图片描述
左边监控的内容不会增加:这是因为Linux里面所有硬盘分区的文件都会分配一个编号,我们把这个编号叫做index,即索引节点号。可以用ls -i命令直接看到这个节点号,在跟踪时是根据这个索引号去跟踪的。当我们用vim修改后这个索引号就变了,所以可以认为这个文件本质上变成了另外一个文件。


3.3 软链接

软连接

ln就是link的简写,很显然就是要创建一个链接,链接到某个其他文件或者目录上面。所以我们一般用ln来创建一个软链接
软链接
软链接跟Windows里边的快捷方式非常的类似。如果说我们要为一个文件或者一个目录创建一个软链接的话,那就相当于另外一个地方有一个单独的文件,这个文件链接到这个原始文件上的。链接文件有自己的数据块,它保存的主要就是链接的那个文件或目录的路。这样的话,通过当前的快捷方式,这个链接就可以跳转到我们真正要访问的那个文件上。这其实就有点像指针,当前我们创建的链接就相当于是一个指针,它指向另外一个内存空间对应的变量,而自己也可以看成一个单独的特殊的变量。
linux中的软链接案例
在根目录下的bin目录是一个快捷方式,它链接到的是user下边的bin目录。同样,sbin目录也是一个软链接,它链接到的是user下边的sbin目录。

ln

基本语法: ln -s [原文件或目录] [软链接名]
软链接还有另外一个名字,符号链接。因为本质上来讲,我们是为原始的文件创建了一个链接到它的符号。在使用的过程中,一般就是要ln后边加一个固定的选项,那就是-s。s就是soft的第一个字母,ln -s就是创建一个软链接的标准语法,后面就是我们的源文件或者目录的名称、创建的软连接的名称。
示例: 链接一个文件
我们想在用户xzz的主目录下创建一个链接,链接到root主目录下的info文件。
在这里插入图片描述
在用户xzz的主目录下通过命令ln -s /root/info Myinfo创建链接。创建之后i我们看到它的颜色跟前面普通文件以及目录的颜色都完全不一样,我们用ls -l看一下,前面是l开头,表示当前这是一个链接文件。
在这里插入图片描述
我们使用less打开文件查看,可以发现内容正确。
在这里插入图片描述
现在我们通过Myinfo向里面末尾插入一个666
在这里插入图片描述
然后再root根目录下查看,可以发现成功进行了修改。
在这里插入图片描述
示例: 链接一个目录
我们在root根目录下创建一个folder目录,里面再创建一个file文件。
在这里插入图片描述
我们在用户xzz的主目录下创建一个链接,链接到root主目录下的floder文件夹,这个链接名字叫做myFolder。可以看到,该链接下有文件fold
在这里插入图片描述
我们进入这个软链接下,使用pwd查看当前file文件的目录,可以看到,显示的就是当前的目录,而不是file文件实际的目录。
在这里插入图片描述
如果想显示实际的路径,则使用pwd -P
在这里插入图片描述
接着,我们在root根目录下使用cd -P命令转到这个软链接所在目录。可以看到会转到这个软链接指向的目录实际所在目录。
在这里插入图片描述
示例: 删除软链接目录
使用命令rm -rf 链接名删除链接目录。可以看到删除之后软链接没了,而原始的目录还在。
在这里插入图片描述
如果rm -rf 链接名/删除链接目录,则会把软链接对应的真实目录下内容删掉。这里可以看到虽然原始目录folder还在,但是里面的文件file已经没了。
在这里插入图片描述示例: 删除原始目录,不删除软链接文件,然后使用软连接文件去访问原始目录
可以发现提示不存在这个文件夹。
在这里插入图片描述


硬链接

基本语法: ln [原文件或目录] [软链接名]
硬链接的定义: 文件有一个非常重要的信息叫做inode,保存了文件对应的一些元信息(meta data),如文件的类型、文件的权限、当前的链接数、创建时间等等。这里边有一个非常关键的信息就是这个文件的唯一编号,即索引节点号。Linux允许不同的文件名称指向同一个inode节点,这样的话就有了一种用法,即创建一个新的硬链接去链接到具体存放数据的那一块区域。这样的话我们可以直接创建一个指向inode的相同的一个文件名,这对于之前的这个文件没有任何的影响,只是纯粹多了一个新的链接而已,这种链接方式就叫做硬链接。
硬链接的特点: 比如说有两个硬链接ab丢链接到同一个文件,删除a后对b没影响,因为a和b是完全平等的。而对于软链接,如果删除了原始文件或目录,就无法通过软链接再去访问原始文件了。
当前文件的链接数:
指的并不是软链接的数量,因为软链接可以认为就是一个单独的链接文件。真正指的是它的硬链接的数量,硬链接相当于都是完全平等的,你删掉一个那另外一个还可以直接访问。在实际使用的时候,硬链接用的比较少,因为这种方式跟文件的inode相关,只能创建一个文件的硬链接,而不能针对目录去创建硬链接。


3.4 查看历史命令

history

功能描述: 查看历史输入的命令
示例: 通过history查看所以已经执行过的历史命令
在这里插入图片描述
通过history 10查看最近10条使用的指令
在这里插入图片描述
通过!345查看第345条指令
在这里插入图片描述
使用history -c删除历史命令
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知初与修一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值