走进Linux服务器之一:Linux操作基础2——Linux基本文件操作(增删)

前言

在这里我们将会开始学习Linux的基本文件操作,从现在开始我们要放弃之前习惯的Windows、Mac OS下习惯的鼠标操作GUI界面,我们的所有操作都是在终端下通过命令行进行的。

一、Linux文件的特点

Linux和Windows有一个特别大的区别,就是Linux系统中没有盘符的概念,在Windows中,我们的文件系统可能会被放在各个盘符下,比如C盘、D盘、E盘等等。

但在Linux中,并没有这么多盘,只有一个根目录:/
在这个根目录下面又很多的文件夹,比如boot、bin、root、var等等。
在这里插入图片描述

二、Linux命令的格式

Linux的命令格式大致如下:

命令名	-命令选项	命令参数

首先是命令名,之后是‘-’加上命令选项,最后是这个命令的参数。
比如,我想精确查看根目录下etc文件中的所有文件,则:

ls -l /etc

其中,ls是查看命令(list),-l是可选选项,意为详细信息,/etc是这个命令操作的对象,也就是根目录下的etc文件夹。

指令选项都是“-”加上命令选项的格式,同一个命令如果有多个选项,可以写在一起。
比如 rm的两个可选选项 -r 和 -f,如果都要选择,可以直接写成 -rf 。

三、绝对路径和相对路径

首先我们来了解绝对路径,绝对路径就好比一个完整的地址。
比如:

中华人民共和国上海市东方明珠。

这个没有歧义,就是一个非常绝对的地址。

那么相对地址就好比这样:

村东头的剪发王师傅家

这句话,外人听不懂,只有村里人才能听懂。所以这是一个相对地址。那么在Linux文件系统中,也存在着绝对地址和相对地址的概念。

绝对地址就好比如此:

/var/www/html/index.html

这就是指根目录-var文件夹-www文件夹-html文件夹下的index.html文件。如果输入绝对地址,那么无论你当前在哪个目录下进行工作,都可以找到。

那么相对地址就好比:

index.html

这样只有目前的工作目录为/var/www/html时,才能找到index.html,就好像你是村里人才知道王师傅家在哪,否则不知道,在Linux中就表示为找不到文件index.html(前提是目前你的工作目录下没有另一个叫index.html的文件)。

四、文件管理操作命令

1.pwd:查看当前的工作目录

pwd的全称就是“print work directory”,打印当前的工作目录,这个操作很简单,也没有其他多余的操作,在终端中直接输入pwd即可。

pwd
/root

在这里第一行是我在终端中输入的pwd指令,第二行返回我现在正在工作的目录:/root

2.ls:列出目录

ls也就是“list”的意思,ls可以打印出目标参数中所有文件和文件夹的名字以及后缀。比如我先看一下在我的服务器上,根目录下var文件夹有什么文件:

ls /var
adm  cache  crash  db  empty  games  gopher  kerberos  lib  local  lock  
log  mail  nis  opt  preserve  run  spool  tmp  www  yp

ls /var是我输入的指令,可以看到这个文件夹下面打印出来的都是在var文件夹下面的文件夹(二级文件夹)。

ls -l 查看详细信息。加上-l的参数之后可以看到每个文件、文件夹的详细信息。比如:

ls -l /var/www
total 8
drwxr-xr-x 2 root root 4096 Apr  2  2020 cgi-bin
drwxr-xr-x 7 root root 4096 Oct 20 08:11 html

虽然输出的很多,其实就是两个文件夹,一个叫cgi-bin,另一个叫html,至于前面写的是什么,以后会讲解。

ls -a 查看隐藏文件

ls -a /var
.   adm    crash  empty  gopher lib lock  mail  opt   run    tmp  www
..  cache  db games  kerberos  local  log   nis preserve  spool  .updated  yp

这里的. 和 … 都是隐藏的。

3.cd:切换目录

cd的全称就是“change directory”这个命令也比较简单,也很常用,可以说在文件管理中ls和cd是最常用的两个指令。

比如目前我打pwd发现我在/root,我要切换到/var/www/html (其实是apache的网页文件夹),就会这么操作:

pwd
/root
cd /var/www/html
(没有输出)
pwd
/var/www/html
ls
1.mp3  2.mp3  3.mp3  css  fonts  index.html  js  LICENSE.txt  README.txt  sass

可以忽略最后一个输出(这是我服务器的网页的文件)

4.touch:创建文件

touch命令就是在当前目录(如果不给出指定目录)或者给定的目录(绝对地址)下创建文件。
比如在当前文件夹下创建一个1.txt文件:

[root@kanna ~] ls
Kanna.c
[root@kanna ~] touch 1.txt
[root@kanna ~] ls
1.txt  Kanna.c

可以看到一开始文件夹内只有一个Kanna.c文件,在touch 1.txt文件之后,新增了一个名为1.txt的文本文档。

如果用绝对地址,可以这样:

[root@kanna ~] ls /home/
1.txt
[root@kanna ~] ls /home/
1.txt
[root@kanna ~] touch /home/2.txt
[root@kanna ~] ls /home/
1.txt  2.txt

原本home文件夹下面只有1.txt,经过操作我们创建了2.txt。

5.mkdir:创建文件夹指令

mkdir即为:make directory,创建目录。
他和touch用法相近,就是创建的是文件夹而不是文件。

[root@kanna ~] ls
[root@kanna ~] mkdir AAA
[root@kanna ~] ls
AAA

我们在当前的文件夹下面创建了一个叫AAA的文件夹。

可以用 mkdir -p 来进行多级文件夹创建:

[root@kanna ~] mkdir -p BBB/CCC
[root@kanna ~] ls
AAA  BBB
[root@kanna ~] ls BBB/
CCC

可以看到我们在当前目录下建立了一个BBB文件夹,在BBB文件夹下面也建立了一个CCC文件夹。
如果我们不用-p选项,那么就会报错:

[root@kanna ~] mkdir EEE/FFF
mkdir: cannot create directory ‘EEE/FFF’: No such file or directory

6.cp:文件拷贝

cp大家都能想到就是copy的简写,他的使用方法就是:

cp 源文件 目标位置

比如:

[root@kanna ~] touch copy.txt
[root@kanna ~] ls
AAA  BBB  copy.txt
[root@kanna ~] cp copy.txt /home
[root@kanna ~] ls /home
copy.txt
[root@kanna ~] ls
AAA  BBB  copy.txt

(注意上面相对地址和绝对地址的用法)
这里我们在root目录下面创建了一个叫做copy.txt的文件,复制到了根目录下的home文件夹。

同时,可以用 -r 选项对文件夹进行操作:

[root@kanna ~] cp -r AAA /home
[root@kanna ~] ls /home
AAA  copy.txt

这里AAA是个文件夹,如果不用-r选项,那么就会报错。

7.mv:移动文件

mv就是move的简写,这个命令和上面的cp就是剪切和复制的区别。
例子:

[root@kanna ~] touch m.txt
[root@kanna ~] ls
AAA  BBB  copy.txt  m.txt
[root@kanna ~] mv m.txt  /home
[root@kanna ~] ls
AAA  BBB  copy.txt
[root@kanna ~] ls /home
AAA  copy.txt  m.txt

我们把创建的m.txt移动到home文件夹后,在root文件夹下的m.txt就消失了,和cp指令不同。

mv对文件夹操作不用加 -r ,mv命令没有-r的操作选项。

[root@kanna ~] mv BBB /home
[root@kanna ~] ls
AAA  copy.txt
[root@kanna ~] ls /home
AAA  BBB  copy.txt  m.txt

8.rm:删除文件

rm就是remove的意思。在CentOS中一般使用选项 -f ,这样再删除的时候就不用每个文件都要问一遍是否要删除。
如果要删除文件夹,就要用 -r 。
比如要删除一个文档:

[root@kanna ~] ls
AAA  copy.txt
[root@kanna ~] rm copy.txt
rm: remove regular empty file ‘copy.txt’? yes
[root@kanna ~] ls
AAA

我们可以看到,如果不选择任何选项,那么在删除的时候系统会询问你是否要删除,询问后面的yes是我输入进去的。

[root@kanna ~] touch 1.txt
[root@kanna ~] ls
1.txt  AAA
[root@kanna ~] rm -f 1.txt
[root@kanna ~] ls
AAA

加上 -f 之后就不会再询问了

如果要删除文件夹,就用 -r,和-f一起可以组成 -rf ,一般大家都习惯删除都加一个 -rf。

[root@kanna ~] ls
AAA
[root@kanna ~] rm -rf AAA
[root@kanna ~] ls
[root@kanna ~] 

至此,一般的remove操作就是这样了。

接下来介绍一个remove的其他使用方法:

rm也经常和通配符 ‘*’ 和占位符 ‘?’ 一起用。

通配符和占位符

通配符 ‘*’

通配符*,可以代表一切符号,任意长度。
比如我创建了 test1.txt 到 test5.txt 五个txt文本文档。如果都想删除,那么按照输入文件名称的方法就要输入好几遍。如果我用通配符,就可以:

rm -rf *.txt

这个操作是把这个文件夹里面的所有txt文件全部删掉,因为通配符*代表一切符号,任意长度。

另一个例子,如果我创建了 file1 到 file5 这五个文件,我只想删除这五个文件,并且这个文件夹里只有这5个文件是以字母 f 开头的可以用通配符这么做:

rm -rf f*

这里的 f* 便表示所有 f 开头的文件或文件夹。*也可以不占位置,比如下面的例子:

[root@kanna home] ls
[root@kanna home] touch f1
[root@kanna home] touch f
[root@kanna home] ls
f  f1
[root@kanna home] rm -rf f*
[root@kanna home] ls
[root@kanna home] 

在这里 f 和 f1 都被删除了。

占位符 ‘?’

占位符 ‘?’ 和通配符 ‘*’ 比较像,只是占位符 ‘?’ 表示任意字符,一个字符长度。
比如在上面通配符的例子中的第一个删除例子,我们可以把删除的指令改为:

rm -rf test?.txt

因为?只占一个字符的位置,所以可以用这个办法进行删除。如果只输入?.txt,那么系统只会寻找只有一个字符为名字的txt文件进行删除。

对于第二个例子:

[root@kanna home] ls
[root@kanna home] touch f.txt
[root@kanna home] touch f1.txt
[root@kanna home] ls
f1.txt  f.txt
[root@kanna home] rm -rf f?.txt
[root@kanna home] ls
f.txt

我们可以看到,只有f1会被删除,所以占位符?不可以不占字符位置。

了解了 * 和 ? 之后,我们可以试试这个指令 (在公用服务器上千万别随便用这个指令,自己在虚拟机里玩玩就得了)

可以猜猜这个指令是在做什么:

rm -rf /*

总结

本文是对Linux下对文件的操作指令,是学习Linux指令的第一步,也是日后在Linux系统上最常用的指令。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值