网络安全笔记——第十二天:Linux文件和目录操作命令(一)——文件操作

ls命令

作用:查看当前目录下的文件和目录
实例:

┌──(root💀kali)-[~]
└─# ls
公共  视频  文档  音乐  Desktop
模板  图片  下载  桌面

ls命令参数

  1. -a – 全部(all)。列举目录中的全部文件,包括隐藏文件(.filename)。位于这个列表的起首处的 … 和 .依次是指父目录和你的当前目录。
┌──(root💀kali)-[~]
└─# ls -a
.        .bashrc.original  .mozilla
..       .cache            .msf4
公共     .config           .profile
模板     .dbus             .viminfo
视频     Desktop           .Xauthority
图片     .dmrc             .xsession-errors
文档     .face             .xsession-errors.old
下载     .face.icon        .zsh_history
音乐     .gnupg            .zshrc
桌面     .ICEauthority
.bashrc  .local
  1. -l – 长(long)。列举目录内容的细节,包括权限(模式)、所有者、组群、大小、创建日期、文件是否是到系统其它地方的链接,以及链接的指向。
┌──(root💀kali)-[~]
└─# ls -l
总用量 36
drwxr-xr-x 2 root root 4096  1月 18 22:09 公共
drwxr-xr-x 2 root root 4096  1月 18 22:09 模板
drwxr-xr-x 2 root root 4096  1月 18 22:09 视频
drwxr-xr-x 2 root root 4096  1月 18 22:09 图片
drwxr-xr-x 2 root root 4096  1月 18 22:09 文档
drwxr-xr-x 2 root root 4096  1月 19 00:52 下载
drwxr-xr-x 2 root root 4096  1月 18 22:09 音乐
drwxr-xr-x 2 root root 4096  3月 19 19:33 桌面
drwxr-xr-x 2 root root 4096  1月 18 22:09 Desktop
  1. -F – 文件类型(File type)。在每一个列举项目之后添加一个符号。这些符号包括:/ 表明是一个目录;@ 表明是到其它文件的符号链接;* 表明是一个可执行文件。
┌──(root💀kali)-[~]
└─# ls -F
公共/  视频/  文档/  音乐/  Desktop/
模板/  图片/  下载/  桌面/
  1. -r – 逆向(reverse)。从后向前地列举目录中的内容。 原本的排序调过来重新排列输出
┌──(root💀kali)-[~]
└─# ls -r
Desktop  音乐  文档  视频  公共
桌面     下载  图片  模板
  1. -R – 递归(recursive)。该选项递归地列举所有目录(在当前目录之下)的内容。列举出当前所有的目录及文件,并列举出目录底下的文件和目录,目录接着列举,以此类推。
┌──(root💀kali)-[~]
└─# ls -R
.:
公共  视频  文档  音乐  Desktop
模板  图片  下载  桌面

./公共:

./模板:

./视频:

./图片:

./文档:

./下载:
 favicon.ico
'sogoupinyin_3.4.0.9700_amd64(1).deb'
 sogoupinyin_3.4.0.9700_amd64.deb

./音乐:

./桌面:

./Desktop:
            
  1. -S – 大小(size)。按文件大小排序。文件大的排在后面。
┌──(root💀kali)-[~]
└─# ls -S
公共  视频  文档  音乐  Desktop
模板  图片  下载  桌面

文件操作

创建文件

▪ 你总会时不时地遇到要创建空文件的情况。例如,有时应用程序希望在它们写入数据之前,某个日志文件已经存在。这时,可用 touch 命令轻松创建空文件。
touch命令可以创建文件

touch命令

创建文件代码展示:

┌──(root💀kali)-[~]
└─# ls
公共  视频  文档  音乐  Desktop
模板  图片  下载  桌面                                               
┌──(root💀kali)-[~]
└─# touch touch-one                                                
┌──(root💀kali)-[~]
└─# ls
公共  视频  文档  音乐  Desktop
模板  图片  下载  桌面  touch-one

touch 命令创建了你指定的新文件,并将你的用户名作为文件的属主。注意,**文件的大小是零**,因为 touch 命令只创建了一个==空文件==。

touch 命令还可用来**改变文件的修改时间**。这个操作并不需要改变文件的内容。
┌──(root💀kali)-[~]
└─# ls -l touch-one 
-rw-r--r-- 1 root root 0  4月  9 06:43 touch-one                                          
┌──(root💀kali)-[~]
└─# touch touch-one                                         
┌──(root💀kali)-[~]
└─# ls -l touch-one
-rw-r--r-- 1 root root 0  4月  9 06:45 touch-one

不难发现,原本文件的访问日期是6:43,用了touch命令后,访问日期变成了6:45。注:文件使用touch重新创建后,原文件的数据不会丢失

如果只想改变访问时间,可用 -a 参数。

┌──(root💀kali)-[~]
└─# ls -l touch-one             
-rw-r--r-- 1 root root 95  4月  9 06:48 touch-one                     
┌──(root💀kali)-[~]
└─# touch -a touch-one        
┌──(root💀kali)-[~]
└─# ls -l touch-one   
-rw-r--r-- 1 root root 95  4月  9 06:48 touch-one 
┌──(root💀kali)-[~]
└─# ls -l --time=atime touch-one
-rw-r--r-- 1 root root 95  4月  9 06:53 touch-one

注:只使用 ls –l 命令,并不会显示访问时间。这是因为默认显示的是修改时间。要想查看文件的访问时间,需要加入另外一个参数: --time=atime 。有了这个参数,就能够显示出已经更改过的文件访问时间。

复制文件

cp命令

对系统管理员来说,在文件系统中将文件和目录从一个位置复制到另一个位置可谓家常便饭。 cp 命令可以完成这个任务。

在最基本的用法里, cp 命令需要两个参数——源对象和目标对象

cp source destination

当 source 和 destination 参数都是文件名时, cp 命令将源文件复制成一个新文件,并且以destination 命名。新文件就像全新的文件一样,有新的修改时间

┌──(root💀kali)-[~]
└─# ls -l
总用量 36
drwxr-xr-x 2 root root 4096  1月 18 22:09 公共
drwxr-xr-x 2 root root 4096  1月 18 22:09 模板
drwxr-xr-x 2 root root 4096  1月 18 22:09 视频
drwxr-xr-x 2 root root 4096  1月 18 22:09 图片
drwxr-xr-x 2 root root 4096  1月 18 22:09 文档
drwxr-xr-x 2 root root 4096  1月 19 00:52 下载
drwxr-xr-x 2 root root 4096  1月 18 22:09 音乐
drwxr-xr-x 2 root root 4096  3月 19 19:33 桌面
-rw-r--r-- 1 root root    0  4月  9 18:44 cp-one
drwxr-xr-x 2 root root 4096  1月 18 22:09 Desktop                                            
┌──(root💀kali)-[~]
└─# cp cp-one cp-two                                                
┌──(root💀kali)-[~]
└─# ls -l
总用量 36
drwxr-xr-x 2 root root 4096  1月 18 22:09 公共
drwxr-xr-x 2 root root 4096  1月 18 22:09 模板
drwxr-xr-x 2 root root 4096  1月 18 22:09 视频
drwxr-xr-x 2 root root 4096  1月 18 22:09 图片
drwxr-xr-x 2 root root 4096  1月 18 22:09 文档
drwxr-xr-x 2 root root 4096  1月 19 00:52 下载
drwxr-xr-x 2 root root 4096  1月 18 22:09 音乐
drwxr-xr-x 2 root root 4096  3月 19 19:33 桌面
-rw-r--r-- 1 root root    0  4月  9 18:44 cp-one
-rw-r--r-- 1 root root    0  4月  9 18:45 cp-two
drwxr-xr-x 2 root root 4096  1月 18 22:09 Desktop

新文件cp-two和文件cp-one的修改时间并不一样。如果目标文件已经存在, cp 命令可能并不会提醒这一点。最好是加上 -i 选项,强制shell(终端,就是我们的这个黑界面)询问是否需要覆盖已有文件

┌──(root💀kali)-[~]
└─# ls   
公共  视频  文档  音乐  cp-one  Desktop
模板  图片  下载  桌面  cp-two                                  
┌──(root💀kali)-[~]
└─# cp cp-one cp-two                                
┌──(root💀kali)-[~]
└─# ls
公共  视频  文档  音乐  cp-one  Desktop
模板  图片  下载  桌面  cp-two                             
┌──(root💀kali)-[~]
└─# cp -i cp-one cp-two
cp:是否覆盖'cp-two'? y               
┌──(root💀kali)-[~]
└─# ls
公共  视频  文档  音乐  cp-one  Desktop
模板  图片  下载  桌面  cp-two

如果需要将文件复制到一个新的文件夹中并且保存一样的名称,可以省略目标文件夹的文件名称

┌──(root💀kali)-[~]
└─# ls                  
公共  视频  文档  音乐  cp-one   mk-cp-one
模板  图片  下载  桌面  Desktop                                               
┌──(root💀kali)-[~]
└─# cp cp-one mk-cp-one                                           
┌──(root💀kali)-[~]
└─# ls mk-cp-one 
cp-one

之前的例子在目标目录名尾部加上了一个正斜线(/),这表明mk-cp-one是目录而非文件。这有助于明确目的,而且在复制单个文件时非常重要。如果没有使用正斜线,子目录/root/tmp/mk-cp-one又不存在,就会有麻烦。在这种情况下,试图将一个文件复制到mk-cp-one子目录反而会创建一个名为mk-cp-one的文件,连错误消息都不会显示!

cp 命令的 -R 参数威力强大。可以用它在一条命令中递归地复制整个目录的内容。

┌──(root💀kali)-[~]
└─# ls
公共  视频  文档  音乐  Desktop    mk-cp-two
模板  图片  下载  桌面  mk-cp-one
┌──(root💀kali)-[~]
└─# cd mk-cp-one                                            
┌──(root💀kali)-[~/mk-cp-one]
└─# ls
file_0  file_2  file_4  file_6  file_8
file_1  file_3  file_5  file_7  file_9
┌──(root💀kali)-[~/mk-cp-one]
└─# cd ~
┌──(root💀kali)-[~]
└─# cp -R mk-cp-one/ mk-cp-two/
┌──(root💀kali)-[~/mk-cp-one]
└─# cd mk-cp-two/
┌──(root💀kali)-[~/mk-cp-two]
└─# ls
mk-cp-one
┌──(root💀kali)-[~/mk-cp-two]
└─# cd mk-cp-one                            
┌──(root💀kali)-[~/mk-cp-two/mk-cp-one]
└─# ls
file_0  file_2  file_4  file_6  file_8
file_1  file_3  file_5  file_7  file_9

经过cp -R命令后,成功的复制了mk-cp-one文件夹的内容为mk-cp-two目录下新的文件夹。

连接文件

ln命令

链接文件是Linux文件系统的一个优势。如需要在系统上维护同一文件的两份或多份副本,除了保存多份单独的物理文件副本之外,还可以采用保存一份物理文件副本和多个虚拟副本的方法。这种虚拟的副本就称为链接。链接是目录中指向文件真实位置的占位符。在Linux中有两种不同类型的文件链接:

  • 软链接(符号链接)
  • 硬链接

符号链接就是一个实实在在的文件,它指向存放在虚拟目录结构中某个地方的另一个文件。
这两个通过符号链接在一起的文件,彼此的内容并不相同。
要为一个文件创建符号链接,原始文件必须事先存在。然后可以使用 ln 命令以及 -s 选项来创建符号链接。

软链接命令格式 ls -s 源文件 软连接文件名称

┌──(root💀kali)-[~]
└─# ls -l           
总用量 36
drwxr-xr-x 2 root root 4096  1月 18 22:09 公共
drwxr-xr-x 2 root root 4096  1月 18 22:09 模板
drwxr-xr-x 2 root root 4096  1月 18 22:09 视频
drwxr-xr-x 2 root root 4096  1月 18 22:09 图片
drwxr-xr-x 2 root root 4096  1月 18 22:09 文档
drwxr-xr-x 2 root root 4096  1月 19 00:52 下载
drwxr-xr-x 2 root root 4096  1月 18 22:09 音乐
drwxr-xr-x 2 root root 4096  3月 19 19:33 桌面
drwxr-xr-x 2 root root 4096  1月 18 22:09 Desktop       
┌──(root💀kali)-[~]
└─# ln -s ln-s-1/ ln 
┌──(root💀kali)-[~]
└─# ls -l           
总用量 36
drwxr-xr-x 2 root root 4096  1月 18 22:09 公共
drwxr-xr-x 2 root root 4096  1月 18 22:09 模板
drwxr-xr-x 2 root root 4096  1月 18 22:09 视频
drwxr-xr-x 2 root root 4096  1月 18 22:09 图片
drwxr-xr-x 2 root root 4096  1月 18 22:09 文档
drwxr-xr-x 2 root root 4096  1月 19 00:52 下载
drwxr-xr-x 2 root root 4096  1月 18 22:09 音乐
drwxr-xr-x 2 root root 4096  3月 19 19:33 桌面
drwxr-xr-x 2 root root 4096  1月 18 22:09 Desktop
lrwxrwxrwx 1 root root    7  4月  9 19:16 ln -> ln-s-1/ 
1447980 -rw-r--r-- 1 root root    0  4月  9 19:21 ln-s-1

软链接文件和源文件是2个独立的文件,而且大小也不一致。证明是独立文件的方法就是查看文件的inode节点号。ls命令使用-i参数可以看到inode节点。

┌──(root💀kali)-[~]
└─# ls -il
总用量 36
2375909 drwxr-xr-x 2 root root 4096  1月 18 22:09 公共
2238916 drwxr-xr-x 2 root root 4096  1月 18 22:09 模板
2624710 drwxr-xr-x 2 root root 4096  1月 18 22:09 视频
2624706 drwxr-xr-x 2 root root 4096  1月 18 22:09 图片
2501384 drwxr-xr-x 2 root root 4096  1月 18 22:09 文档
2104597 drwxr-xr-x 2 root root 4096  1月 19 00:52 下载
2501391 drwxr-xr-x 2 root root 4096  1月 18 22:09 音乐                                              
1971378 drwxr-xr-x 2 root root 4096  3月 19 19:33 桌面                                              
2624705 drwxr-xr-x 2 root root 4096  1月 18 22:09 Desktop                                                              
┌──(root💀kali)-[~]
└─# mkdir ln-s-1/                 
┌──(root💀kali)-[~]
└─# ls -il
总用量 40
2375909 drwxr-xr-x 2 root root 4096  1月 18 22:09 公共                                              
2238916 drwxr-xr-x 2 root root 4096  1月 18 22:09 模板                                              
2624710 drwxr-xr-x 2 root root 4096  1月 18 22:09 视频                                              
2624706 drwxr-xr-x 2 root root 4096  1月 18 22:09 图片                                              
2501384 drwxr-xr-x 2 root root 4096  1月 18 22:09 文档                                              
2104597 drwxr-xr-x 2 root root 4096  1月 19 00:52 下载                                              
2501391 drwxr-xr-x 2 root root 4096  1月 18 22:09 音乐                                              
1971378 drwxr-xr-x 2 root root 4096  3月 19 19:33 桌面                                              
2624705 drwxr-xr-x 2 root root 4096  1月 18 22:09 Desktop                                           
1447980 drwxr-xr-x 2 root root 4096  4月  9 19:25 ln-s-1                                                                      
┌──(root💀kali)-[~]
└─# ln -s ln-s-1/ ln                     
┌──(root💀kali)-[~]
└─# ls -il          
总用量 40
2375909 drwxr-xr-x 2 root root 4096  1月 18 22:09 公共                                              
2238916 drwxr-xr-x 2 root root 4096  1月 18 22:09 模板                                              
2624710 drwxr-xr-x 2 root root 4096  1月 18 22:09 视频                                              
2624706 drwxr-xr-x 2 root root 4096  1月 18 22:09 图片                                              
2501384 drwxr-xr-x 2 root root 4096  1月 18 22:09 文档                                              
2104597 drwxr-xr-x 2 root root 4096  1月 19 00:52 下载                                              
2501391 drwxr-xr-x 2 root root 4096  1月 18 22:09 音乐                                              
1971378 drwxr-xr-x 2 root root 4096  3月 19 19:33 桌面                                              
2624705 drwxr-xr-x 2 root root 4096  1月 18 22:09 Desktop                                           
1447982 lrwxrwxrwx 1 root root    7  4月  9 19:25 ln -> ln-s-1/                                     
1447980 drwxr-xr-x 2 root root 4096  4月  9 19:25 ln-s-1  

源文件的inode是1447980,软链接文件的inode是1447982 。所以说明它们不是同一个文件

硬链接会创建独立的虚拟文件,其中包含了原始文件的信息及位置。但是它们从根本上而言是同一个文件。引用硬链接文件等同于引用了源文件。要创建硬链接,原始文件也必须事先存在,只不过这次使用 ln 命令时不再需要加入额外的参数了。

┌──(root💀kali)-[~]
└─# ls -l 
总用量 40
drwxr-xr-x 2 root root 4096  1月 18 22:09 公共
drwxr-xr-x 2 root root 4096  1月 18 22:09 模板
drwxr-xr-x 2 root root 4096  1月 18 22:09 视频
drwxr-xr-x 2 root root 4096  1月 18 22:09 图片
drwxr-xr-x 2 root root 4096  1月 18 22:09 文档
drwxr-xr-x 2 root root 4096  1月 19 00:52 下载
drwxr-xr-x 2 root root 4096  1月 18 22:09 音乐
drwxr-xr-x 2 root root 4096  3月 19 19:33 桌面
drwxr-xr-x 2 root root 4096  1月 18 22:09 Desktop
-rw-r--r-- 1 root root   12  4月  9 19:30 one                                              
┌──(root💀kali)-[~]
└─# ln one ln-one                                           
┌──(root💀kali)-[~]
└─# ls -il       
总用量 44
2375909 drwxr-xr-x 2 root root 4096  1月 18 22:09 公共                                              
2238916 drwxr-xr-x 2 root root 4096  1月 18 22:09 模板                                              
2624710 drwxr-xr-x 2 root root 4096  1月 18 22:09 视频                                              
2624706 drwxr-xr-x 2 root root 4096  1月 18 22:09 图片                                              
2501384 drwxr-xr-x 2 root root 4096  1月 18 22:09 文档                                              
2104597 drwxr-xr-x 2 root root 4096  1月 19 00:52 下载                                              
2501391 drwxr-xr-x 2 root root 4096  1月 18 22:09 音乐                                              
1971378 drwxr-xr-x 2 root root 4096  3月 19 19:33 桌面                                              
2624705 drwxr-xr-x 2 root root 4096  1月 18 22:09 Desktop                                           
1447980 -rw-r--r-- 2 root root   12  4月  9 19:30 ln-one
1447980 -rw-r--r-- 2 root root   12  4月  9 19:30 one

在上面的例子中,我们使用 ls -li 命令显示了 one, ln-one的inode编号以及长列表。注意,带有硬链接的文件共享inode编号。这是因为它们终归是同一个文件。还要注意的是,链接计数(列表中第三项)显示这两个文件都有两个链接。另外,它们的文件大小也一模一样

只能对处于同一存储媒体的文件创建硬链接。要想在不同存储媒体的文件之间创建链接,只能使用符号链接。(简单说:硬链接只能链接同一块硬盘的文件,不可以跨硬盘使用硬链接。)

重命名文件

mv命令

在Linux中,重命名文件称为==移动==(moving)。 mv 命令可以将文件和目录移动到另一个位置或重新命名

┌──(root💀kali)-[~]
└─# touch mv-1                               
┌──(root💀kali)-[~]
└─# ls
公共  视频  文档  音乐  Desktop
模板  图片  下载  桌面  mv-1                                              
┌──(root💀kali)-[~]
└─# mv mv-1 mv-2                                                 
┌──(root💀kali)-[~]
└─# ls 
公共  视频  文档  音乐  Desktop
模板  图片  下载  桌面  mv-2

注意,移动文件会将文件名从mv-1更改为mv-2,但inode编号和时间戳保持不变。这是因为mv只影响文件名

也可以使用 mv 来移动文件的位置。

┌──(root💀kali)-[~]
└─# cd one                                                  
┌──(root💀kali)-[~/one]
└─# ls
1                                                  
┌──(root💀kali)-[~/one]
└─# cd ../tow                                                   
┌──(root💀kali)-[~/two]
└─# ls                                                         
┌──(root💀kali)-[~/two]
└─# cd ../                                                     
┌──(root💀kali)-[~]
└─# mv one/1 two/                                             
┌──(root💀kali)-[~]
└─# ls -l two      
总用量 0
-rw-r--r-- 1 root root 0  4月  9 19:36 1                                                  
┌──(root💀kali)-[~]
└─# ls -l one
总用量 0

在上例中,我们使用 mv 命令把文件1从/one移动到了/two。和刚才一样,这个操作并没有改变文件的inode编号或时间戳。唯一变化的就是文件的位置。/one目录下不再有文件1,因为它已经离开了原先的位置,这就是 mv 命令所做的事情。

和 cp 命令类似,也可以在 mv 命令中使用 -i参数 。这样在命令试图覆盖已有的文件时,你就会得到提示。

也可以使用 mv 命令移动文件位置并修改文件名称,这些操作只需一步就能完成。

┌──(root💀kali)-[~/one]
└─# ls       
2                                          
┌──(root💀kali)-[~/one]
└─# cd ../tow                                           
┌──(root💀kali)-[~/two]
└─# ls
1                                           
┌──(root💀kali)-[~/two]
└─# cd ../                                            
┌──(root💀kali)-[~]
└─# mv one/2  two/t-2                                   
┌──(root💀kali)-[~]
└─# ls -il two
总用量 0
1447982 -rw-r--r-- 1 root root 0  4月  9 19:36 1
1447983 -rw-r--r-- 1 root root 0  4月  9 19:39 t-2

在这个例子中,将文件2从目录/one中移动到了目录/two,并将名字改为t-2。文件的时间戳和inode编号都没有改变。改变的只有位置和名称

也可以使用 mv 命令移动整个目录及其内容。

┌──(root💀kali)-[~]
└─# mv one/ tow/                                                   
┌──(root💀kali)-[~]
└─# ls
公共  视频  文档  音乐  Desktop
模板  图片  下载  桌面  tow                                                 
┌──(root💀kali)-[~]
└─# ls -il tow
总用量 4
1447982 -rw-r--r-- 1 root root    0  4月  9 19:36 1
1447980 drwxr-xr-x 2 root root 4096  4月  9 19:40 one
1447983 -rw-r--r-- 1 root root    0  4月  9 19:39 t-2

目录内容没有变化。只有目录名发生了改变。将one目录整个移动到了tow目录中。

删除文件

rm命令

在Linux中,删除(deleting)叫作移除(removing) 。bash shell中删除文件的命令是 rm 。 rm命令的基本格式非常简单。注意, -i 命令参数提示你是不是要真的删除该文件。bash shell中没有回收站或垃圾箱,文件一旦删除,就无法再找回。因此,在使用 rm 命令时,要养成总是加入 -i 参数的好习惯。

┌──(root💀kali)-[~]
└─# touch mv-2                                              
┌──(root💀kali)-[~]
└─# ls
公共  视频  文档  音乐  Desktop
模板  图片  下载  桌面  mv-2                                             
┌──(root💀kali)-[~]
└─# rm -i mv-2 
rm:是否删除普通空文件 'mv-2'?y                                                  
┌──(root💀kali)-[~]
└─# ls
公共  视频  文档  音乐  Desktop
模板  图片  下载  桌面
告别

学习的时光就是这么短暂,我们明天见!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值