Linux 文件及目录管理命令(CentOS7)

2019-07-23  本文已影响0人  一个扫地的垃圾

linux文件系统结构

ls -l /
total 24
lrwxrwxrwx.   1 root root    7 Jun 30 23:11 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 Jul 11 13:03 boot
drwxr-xr-x.  21 root root 3360 Jul 11 13:23 dev
drwxr-xr-x. 143 root root 8192 Jul 11 13:23 etc
drwxr-xr-x.   3 root root   25 Jun 30 23:19 home
lrwxrwxrwx.   1 root root    7 Jun 30 23:11 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Jun 30 23:11 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 Apr 11  2018 media
drwxr-xr-x.   2 root root    6 Apr 11  2018 mnt
drwxr-xr-x.   3 root root   16 Jun 30 23:14 opt
dr-xr-xr-x. 226 root root    0 Jul 11 13:23 proc
dr-xr-x---.   5 root root  184 Jun 30 23:21 root
drwxr-xr-x.  40 root root 1220 Jul 11 13:24 run
lrwxrwxrwx.   1 root root    8 Jun 30 23:11 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 Apr 11  2018 srv
dr-xr-xr-x.  13 root root    0 Jul 11 13:23 sys
drwxrwxrwt.  25 root root 4096 Jul 11 13:25 tmp
drwxr-xr-x.  13 root root  155 Jun 30 23:11 usr
drwxr-xr-x.  21 root root 4096 Jun 30 23:21 var

路径表示

cd ..
cd /home/panjianqiao
cd Desktop

假如我在Desktop下要切换到Downloads,可以有两种办法:

绝对路径

cd /home/panjianqiao/Downloads

相对路径

cd ../Downloads

cd(change directory缩写)命令

Linux 命令按照来源方式,可分为两种,分别是shell内置命令外部命令

Shell 内置命令,就是 Shell 自带的命令,这些命令是没有执行文件的。

外部命令就是由程序员单独开发的,是命令,所以会有命令的执行文件。

Linux中的绝大多数命令是外部命令,而 cd 命令是一个典型的 Shell 内置命令,所以 cd 命令没有执行文件所在路径。

cd ~ #回到自己的主目录
cd ~panjianqiao #返回指定用户的主目录(这里为panjianqiao)
cd - #返回上次所在目录
cd . #返回当前所在目录
cd .. #返回父目录

pwd(print working directory)命令

[panjianqiao@localhost ~]$ whoami #用于返回当前登陆用户
panjianqiao
[panjianqiao@localhost ~]$ pwd #显示当前工作路径
/home/panjianqiao

ls(list)命令

[panjianqiao@localhost ~]$ ls -a #返回全部文件,包括隐藏文件
.              .bash_profile  .dbus      .esd_auth      Music     Templates
..             .bashrc        Desktop    .ICEauthority  Pictures  Videos
.bash_history  .cache         Documents  .local         .pki
.bash_logout   .config        Downloads  .mozilla       Public

[panjianqiao@localhost ~]$ ls -A #返回全部文件,不包括.和..文件
.bash_history  .bashrc  .dbus      Downloads      .local    Pictures  Templates
.bash_logout   .cache   Desktop    .esd_auth      .mozilla  .pki      Videos
.bash_profile  .config  Documents  .ICEauthority  Music     Public

[panjianqiao@localhost ~]$ ls -l #使用长格式列出文件和目录信息
total 0
drwxr-xr-x. 2 panjianqiao panjianqiao 40 Jul 11 13:17 Desktop
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Documents
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Downloads
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Music
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Pictures
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Public
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Templates
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Videos

mkdir(make directory)命令

[panjianqiao@localhost ~]$ mkdir test
[panjianqiao@localhost ~]$ ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  test  Videos

[panjianqiao@localhost ~]$ mkdir -p ./test2/demo
[panjianqiao@localhost ~]$ ls
Desktop    Downloads  Pictures  Templates  test2
Documents  Music      Public    test       Videos

[panjianqiao@localhost ~]$ mkdir -p test3/demo
[panjianqiao@localhost ~]$ ls
Desktop    Downloads  Pictures  Templates  test2  Videos
Documents  Music      Public    test       test3

[panjianqiao@localhost ~]$ mkdir -m 711 test4
[panjianqiao@localhost ~]$ ls
Desktop    Downloads  Pictures  Templates  test2  test4
Documents  Music      Public    test       test3  Videos
[panjianqiao@localhost ~]$ ls -l
total 0
drwxr-xr-x. 2 panjianqiao panjianqiao 40 Jul 11 13:17 Desktop
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Documents
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Downloads
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Music
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Pictures
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Public
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Templates
drwxrwxr-x. 2 panjianqiao panjianqiao  6 Jul 13 14:18 test
drwxrwxr-x. 3 panjianqiao panjianqiao 18 Jul 13 14:19 test2
drwxrwxr-x. 3 panjianqiao panjianqiao 18 Jul 13 14:20 test3
drwx--x--x. 2 panjianqiao panjianqiao  6 Jul 13 14:25 test4
drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Videos

rmdir(remove empty directory)命令

此命令只能删除空目录(此命令并不常用)

[panjianqiao@localhost ~]$ rmdir test
[panjianqiao@localhost ~]$ ls
Desktop    Downloads  Pictures  Templates  test3  Videos
Documents  Music      Public    test2      test4

[panjianqiao@localhost ~]$ rmdir ./test2 #只能删除空目录,这里的test2中还存在demo
rmdir: failed to remove ‘./test2’: Directory not empty

[panjianqiao@localhost ~]$ rmdir ./test2/demo #删除了test2中的demo目录,test2还存在
[panjianqiao@localhost ~]$ ls
Desktop    Downloads  Pictures  Templates  test3  Videos
Documents  Music      Public    test2      test4

touch 命令

创建文件以及修改文件参数(当文件不存在会创建文件,文件存在时会修改文件参数)

Linux 系统中,每个文件主要拥有 3 个时间参数(通过 stat 命令进行查看),分别是文件的访问时间、数据修改时间以及状态修改时间:

  • 访问时间(Access Time,简称 atime):只要文件的内容被读取,访问时间就会更新。例如,使用 cat 命令可以查看文件的内容,此时文件的访问时间就会发生改变。
  • 数据修改时间(Modify Time,简称 mtime):当文件的内容数据发生改变,此文件的数据修改时间就会跟着相应改变。
  • 状态修改时间(Change Time,简称 ctime):当文件的状态发生变化,就会相应改变这个时间。比如说,如果文件的权限或者属性发生改变,此时间就会相应改变。
[panjianqiao@localhost ~]$ touch bols #创建bols文件
[panjianqiao@localhost ~]$ ls
bols  Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
[panjianqiao@localhost ~]$ ll --time=atime bols #查看文件的访问时间,ll相当于ls -l
-rw-rw-r--. 1 panjianqiao panjianqiao 0 Jul 13 15:03 bols

[panjianqiao@localhost ~]$ touch bols
[panjianqiao@localhost ~]$ ll --time=atime bols #即使bols文件存在,也不会报错,只会修改访问时间
-rw-rw-r--. 1 panjianqiao panjianqiao 0 Jul 13 15:42 bols
[panjianqiao@localhost ~]$ ll --time=ctime bols #查看bols文件的状态修改时间
-rw-rw-r--. 1 panjianqiao panjianqiao 0 Jul 13 15:42 bols

ln 命令

linux文件操作系统主要使用的是ext4文件系统,ext4文件系统会把分区分为两大部分,一部分为inode(节点),另一部分为block(数据块)。

inode默认大小为128Byte,用来记录文件的权限(r,w,x)、文件的所有者和大小、文件的atime、ctime和mtime以及其真正保存文件数据的block编号。每个文件都有一个inode,其中文件名是不包含在inode中的,文件名存在于文件所在目录中的block中。

block用于存放数据,大小可以是1KB、2KB、4KB,默认大小为4KB,如果单个block存放不下数据,则可以使用多个block,其中多个block数据可能是连续的也可能是分散的。

因此,想要读取一个文件首先应该在目录的block中找到该文件的inode,通过inode索引到实际存放数据的block上。

ln命令用于给文件创建链接,根据linux文件系统特点分为硬链接和软链接

[panjianqiao@localhost ~]$ touch demo
[panjianqiao@localhost ~]$ ln /home/panjianqiao/demo /tmp #建立硬链接,其中tmp下的文件属于临时文件,若未标识文件名则与原文件名保持一致
[panjianqiao@localhost ~]$ touch demo2
[panjianqiao@localhost ~]$ ln -s /home/panjianqiao/demo2 /tmp #建立软链接。注意!软链接文件路径必须为绝对路径,硬链接文件路径无此要求
[panjianqiao@localhost ~]$ cd /tmp
[panjianqiao@localhost tmp]$ ls #由于篇幅限制,只显示相关信息,链接文件存在于tmp文件夹下
demo
demo2

硬链接

[panjianqiao@localhost tmp]$ ls -i /home/panjianqiao/demo /home/panjianqiao/demo2 #查看两个文件的inode编号
2982387 /home/panjianqiao/demo  2982388 /home/panjianqiao/demo2
[panjianqiao@localhost tmp]$ ls -i /tmp/demo /tmp/demo2 #查看两个链接文件的inode编号
 2982387 /tmp/demo  17540877 /tmp/demo2 

从上述分析可以看出,硬链接只是文件名字不同,其实两个文件名都可以映射到同一个inode编号上,因此硬链接的特点如下:

软链接(符号链接)

[panjianqiao@localhost tmp]$ ls -il /home/panjianqiao/demo2 /tmp/demo2 #查看文件demo2和软链接文件demo2的长格式文件信息包括inode编号
 2982388 -rw-rw-r--. 1 panjianqiao panjianqiao  0 Jul 14 13:28 /home/panjianqiao/demo2
17540877 lrwxrwxrwx. 1 panjianqiao panjianqiao 23 Jul 14 13:28 /tmp/demo2 -> /home/panjianqiao/demo2

软链接可以通过命令显示中的/tmp/demo2 -> /home/panjianqiao/demo2识别出原文件的位置,软链接的原文件和链接文件的inode编号不一致,说明软链接文件存放的block为当前文件名索引到原文件inode编号信息。与硬链接相比,软链接没有了许多限制,应用的更为广泛。软链接的特点如下:

windows系统下产生快捷方式的原因在于原文件的位置太深,不好操作,新建一个快捷方式在桌面容易操作

cp 命令

此命令可以用于复制文件和目录,同时还可以用于对比两文件的新旧等。

选项:

复制文件

[panjianqiao@localhost ~]$ ls
bols  demo2    Documents  Music     Public     Videos
demo  Desktop  Downloads  Pictures  Templates
[panjianqiao@localhost ~]$ cp bols /tmp/ #复制文件
[panjianqiao@localhost ~]$ cp bols /tmp/clangs #改名复制文件

复制目录

[panjianqiao@localhost ~]$ mkdir test
[panjianqiao@localhost ~]$ cp -r test /tmp/ #复制目录

复制软链接文件

[panjianqiao@localhost ~]$ ls -l /tmp/demo2 #demo2文件为一个软链接文件
lrwxrwxrwx. 1 panjianqiao panjianqiao 23 Jul 14 13:28 /tmp/demo2 -> /home/panjianqiao/demo2
[panjianqiao@localhost ~]$ cp /tmp/demo2 /tmp/demo2_t1 #复制的文件为原文件
[panjianqiao@localhost ~]$ cp -d /tmp/demo2 /tmp/demo2_t2 #复制的文件为软链接文件
[panjianqiao@localhost ~]$ ls -l /tmp/demo2_t1 /tmp/demo2_t2
-rw-rw-r--. 1 panjianqiao panjianqiao  0 Jul 16 19:04 /tmp/demo2_t1
lrwxrwxrwx. 1 panjianqiao panjianqiao 23 Jul 16 19:04 /tmp/demo2_t2 -> /home/panjianqiao/demo2

在复制软链接文件时,需要对在cp的选项添加-d,对硬链接无效。

rm(remove)命令

此命令用于删除文件、目录

选项:

[panjianqiao@localhost ~]$ ls
bols  demo2    Documents  Music     Public     test
demo  Desktop  Downloads  Pictures  Templates  Videos
[panjianqiao@localhost ~]$ rm bols
[panjianqiao@localhost ~]$ rm -i demo
rm: remove regular empty file ‘demo’? y
[panjianqiao@localhost ~]$ rm -ir /tmp/test 
rm: remove directory ‘/tmp/test’? y

mv(move)命令

此命令可以在不同的目录下移动文件或目录,也可以对文件和目录进行重命名

选项:

移动文件

[panjianqiao@localhost ~]$ touch demo
[panjianqiao@localhost ~]$ mv demo /tmp
[panjianqiao@localhost ~]$ ls /tmp #由于篇幅限制,只显示相关信息
demo
...

移动目录

[panjianqiao@localhost ~]$ mkdir -p ./test/demo
[panjianqiao@localhost ~]$ ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  test  Videos
[panjianqiao@localhost ~]$ mv test /tmp
[panjianqiao@localhost ~]$ ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
[panjianqiao@localhost ~]$ ls /tmp/test
demo

文件重命名

[panjianqiao@localhost ~]$ mv /tmp/demo /tmp/demo1 #在同一目录下移动文件相当于重命名
[panjianqiao@localhost ~]$ ls tmp
[panjianqiao@localhost ~]$ ls /tmp #由于篇幅限制,只显示相关信息
demo1
...

目录重命名

[panjianqiao@localhost ~]$ mv /tmp/test /tmp/test_change
[panjianqiao@localhost ~]$ ls /tmp #由于篇幅限制,只显示相关信息
...
test_change
...
上一篇下一篇

猜你喜欢

热点阅读