linux 下基本文件操作

 2023-01-19 12:38:58  阅读 210

 linux 下基本文件操作


目录的基本操作

在 linux 文件系统里,以斜杠 / 开头的路径是绝对路径,从根目录开始寻找;其他的路径则都是相对路径,从当前目录(working directory)开始寻找。

相对目录中常用的符号:

符号                                 含义
~                    当前用户的主目录
~username                    某个用户的主目录
.                    当前目录
..                    当前目录的上一级目录(对于根目录/来说,上一目录还是自己)
-                    前一个工作目录
 

常用的目录命令:

1.  cd:change directory。切换工作目录,没有参数就回到~
2.  pwd:print working directory。打印当前工作目录(绝对路径),控制台提示往往已经包括了当前目录。
3.  mkdir:make directory。创建新目录。-p 选项可以递归创建一串目录。如mkdir -p a/b/c
4.  rmdir:remove directory。删除空目录。有内容的目录需要用 rm 递归删除。同理可以用 -p 递归删除。

文件的基本操作

ls 命令

ls 意为 list,列出目录里所有文件。ls 是最最常用的指令,没有之一,所以即使将它的常用选项牢记也是值得的。

常用参数                                            含义
-a                     列出隐藏文件。linux 下隐藏文件即 .开头的文件。
-l                     列出文件的所有者,群组,权限,时间等信息,非常重要
-d                     只列出目录本身,不列文件
-f                     直接列出结果,而不是默认对文件名排序
-F                     对每一项附加结构说明,比如目录在末尾添加/,可执行文件在末尾添加*
-h                     显示文件大小的单位
-i                     列出inode号码
-R                     递归显示,子目录的目录也会显示
--color                     设为为always后,文件名也会根据结构着色,目录、可执行文件等都有各自的颜色
--time                     设定文件的时间,显示哪一种时间
 

复制,移动和删除

复制(copy),移动(move)和删除(remove)是最常见的文件操作。

  cp a.cpp des # 若des是个目录,则复制到des下
  cp a.cpp des # 若des本不存在,则复制成为des,若des是文件则尝试覆盖
  cp a.cpp b.cpp c.cpp des # 将三个文件复制到des下,此时des必须是目录
常用参数                                             含义
-f                          强制复制。若有新文件将尝试强行删除覆盖
-i                          交互模式。已有文件将询问是否覆盖
-r -R                          递归复制,用于目录
-u                          若目标文件比源文件旧或不存在才复制
--preserve=all                          将文件的权限,所有者等等一并复制,而非默认的新建文件属性
-s                          创建软链接
-l                          创建硬链接
-d                          复制链接文件本身,而不是默认的复制源文件
 

链接暂不介绍。

mv 移动指令的语法和参数与 cp 基本相似,不再介绍。mv a b还可以快速更改一个文件的文件名。

rm 则是删除指令。

  rm a.cpp
  rm b.cpp c.cpp # 删除多个文件
 

rm 的 -i 选项在每个文件被删除时都会弹出确认,root 在使用 rm 命令时默认 -i 以防止误操作。

注意:操作目录时一定要加上 -r, 否则无法执行!

在控制台中查看文件

能在控制台中直接输出文件内容的指令太多了,做简单的介绍。

1.  cat:意为concatenate。直接将整个文件以文本输出。选项支持查看特殊字符,显示行号等。
2.  tac:cat倒过来写,也会将文件一行一行倒着输出,用于查看结尾
3.  more和less:将文档载入控制台,一页一页显示,支持滚动翻页,查询等,非常好用(其实就是 man 的页面)。less的功能比more更多。
4.  head和tail:head -n 10 a.cpp可以直接取出前10行,相反 tail 只取后面 10 行。
5.  od:以二进制方式打开文件,并以文本的形式呈现出来。
 

文件的修改时间

在 linux 里,每个文件拥有三个“修改时间”:

1.  modification time(mtime):指文件内容上一次变更的时间。
2.  status time (ctime): 指文件状态(权限、属性)上一次变更的时间。
3.  access time (atime):指文件内容上一次被打开的时间。

默认情况下,ls -l显示的是 mtime,添加参数可以查看 atime 和 ctime。

touch 指令除了创建新文件以外,也可以修改文件的时间:

  touch -d "2 days ago" a.cpp # 将 atime 和 mtime 修改为两天前,也可以添加参数只修改一个
 

如果用 cp 复制文件,默认情况下新文件被当做一个新生的文件,atime 和 mtime 就是当前的时间。当你加上完全复制的选项时,atime 和 mtime 将和源文件相同,但是 ctime 表示文件属性的变更,他仍然是新文件诞生的时间。touch 也不能更改 ctime,想更改他需要另找手段。
 

文件的检索

which

which 用于快速查找命令的绝对路径

  $ which ls
  /usr/bin/ls
 

我们知道 bash 查找命令是在 PATH 里搜寻的。which 也正是在 PATH 里寻找命令的路径。
 

whereis

whereis可以快速查找某个文件,它并不做全盘查找,只查找某些特定的目录,因此速度很快。

  $ whereis -l # 列出 whereis 查找的目录
  $ whereis gcc
  gcc: /usr/bin/gcc /usr/lib/gcc /usr/share/gcc /usr/share/man/man1/gcc.1.gz
 

locate

locate 使用了 /var/lib 里的数据库进行检索,不用翻找硬盘,所以速度较快。但数据库是定时才更新的,所以他只能查找已经存在很久的文件,不能查找刚刚创建的文件。

  $ locate passwd
  /etc/passwd
  /etc/passwd-
  /etc/pam.d/passwd
  ....
 

需要手动更新数据库时,使用 "updatedb" 即可,这会花费一些时间更新数据库。
 

find

find 是最完整 最强大的文件搜寻命令。他可以在某个目录下根据文件名,权限,修改时间等查找所有文件。

  $ find / -name passwd # 查找所有 passwd 文件
  $ find / -mtime 0 # 查找 24 小时内变动的文件
  ....
 

-mtime 0表示 24 小时之内,1 则表示 24 小时到 48 小时间,3 表示 72 小时到 96 小时。+3 则表示三天(96 小时)以前,-3 代表三天(72 小时)以内。

查看 find 的帮助,find 还可以筛选所属者,群组,权限,文件大小等。

标签:

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码