Linux文件操作

本文介绍文件操作样例和一些概念

1、Linux文件类型【1】

Linux中有六种文件类型,分别是普通文件,目录文件,链接文件,设备文件,套接字文件,管道文件。下面详细介绍各类文件。

普通文件:包括纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data)

目录文件:Linux 中的目录也是文件,

链接文件:符号链接是指向系统上其他文件的引用,类似windows下的快捷方式。

设备文件:Linux 中的硬件设备如硬盘、鼠标等也都被表示为文件,即为设备文件。设备文件一般存放在 /dev/ 目录下

块设备文件:存储数据以供系统存取的接口设备,如硬盘或软盘。

字符设备文件:即串行端口的接口设备,例如键盘、鼠标

管道文件:管道是一种最基本的IPC机制,作用于有血缘关系的进程之间。一般的管道都是单向通信的,无法实现双向通信的功能。

套接字文件:提供进程间通信方法的文件,套接字可以实现两端通信。

占用存储空间的类型:文件、目录、符号链接。套接字、设备文件和管道是伪文件,不占用磁盘空间。

2、文件操作

ls 

ls(英文全拼:list files)命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。

语法

ls [-alrtAFR] [name...]

参数 :

-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)

-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出

-r 将文件以相反次序显示(原定依英文字母次序)

-t 将文件依建立时间之先后次序列出

-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)

-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"

-R 若目录下有文件,则以下之文件亦皆依序列出

实例:

列出根目录下所有文件

(base) zfy@zfy-PC:/$ ls

bin  data  etc  lib    lib64  lost+found  mnt          opt  recovery  run  srv  tmp          usr

boot  dev  home  lib32  libx32  media      nonexistent  proc  root      sbin  sys  TRUSTED_PART  var

部分文件内容为:

/ - 根目录

Linux文件系统的入口,每一个文件和目录都从这里开始。

/bin - 基本用户命令二进制文件目录

包含系统管理员和用户都可以使用的命令

/etc - 配置文件目录

本目录包含所有程序所需的配置文件。“配置文件”是用于控制程序操作的本地文件;它必须是静态的,不能是可执行的二进制文件。

/boot - 引导文件

目录包含系统启动过程所需的所有内容,但不包括启动时不需要的配置文件和映射安装程序。

/dev - 设备文件

dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,包括终端设备、USB或连接到系统的任何设备。在 Linux 中访问设备的方式和访问文件的方式是相同的。

/lib - 库文件

此目录包含引导系统和运行根文件系统中的命令所需的共享库映像,即位于/bin和/sbin中的二进制文件。这些文件可以被很多程序共享。

/sbin - 系统二进制文件

/sbin包含由系统管理员使用的二进制可执行文件。

/proc - 进程信息文件

包含系统进程的相关信息。是系统内存的映射

/opt - 可选择文件

opitional的意思。用于安装附加应用程序软件包。

/lost+found

此目录通常为空,当系统非法关机后,这里就存放了一些文件。

/srv - 服务器数据文件

srv代表服务。包含服务器特定服务相关的数据。

/var - 变量文件

这个目录下可以找到内容可能增长的文件。

这包括 - 系统日志文件(/var/log);包和数据库文件(/var/lib);电子邮件(/var/mail);打印队列(/var/spool);锁文件(/var/lock);多次重新启动需要的临时文件(/var/tmp);

/tmp - 临时文件

包含系统和用户创建的临时文件。当系统重新启动时,这个目录下的文件都将被删除。

/home - 用户目录

所有用户都用home来存储个人文件

/usr - 用户程序目录

包含二进制文件、库文件、文档和二级程序的源代码。

/mnt - 挂载目录

此目录主要是作为挂载点使用。通常包括系统引导后被挂载的文件系统的挂载点

/media - 可移动媒体设备

用于挂载可移动设备的临时目录。

cd

Linux cd(英文全拼:change directory)命令用于切换当前工作目录。

cd [dirName]

其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。

另外,~ 也表示为 home 目录 的意思, . 则是表示目前所在的目录, .. 则表示目前目录位置的上一层目录。

实例:

从根目录进入到用户的桌面文件夹

(base) zfy@zfy-PC:/$ cd home/zfy/Desktop

(base) zfy@zfy-PC:~/Desktop$

pwd

(英文全拼:print work directory) 命令用于显示工作目录。

语法

pwd [--help][--version]

执行 pwd 指令可立刻得知您目前所在的工作目录的绝对路径名称。

实例

查看Desktop目录的绝对路径名

(base) zfy@zfy-PC:~/Desktop$ pwd

/home/zfy/Desktop

mkdir

英文全拼:make directory)命令用于创建目录。

语法

mkdir [-p] dirName

参数说明:

-p 确保目录名称存在,不存在的就建一个。

实例:

在Desktop下创建test文件夹

(base) zfy@zfy-PC:~/Desktop$ ls

a.pem  google.cer  krackattacks-test  test  test.tex  vim  zlib-1.2.11  zlib-1.2.11.tar.gz

rmdir

rmdir(英文全拼:remove directory)命令删除空的目录。

语法

rmdir [-p] dirName

参数

-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。

实例:

删除test

(base) zfy@zfy-PC:~/Desktop$ rmdir test && ls

a.pem  google.cer  krackattacks-test  test.tex  vim  zlib-1.2.11  zlib-1.2.11.tar.gz

(test文件夹已经没了)

cp

 cp(英文全拼:copy file)命令主要用于复制文件或目录。

语法

cp [options] source dest

cp [options] source... directory

参数说明

-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。

-d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。

-f:覆盖已经存在的目标文件而不给出提示。

-i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。

-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。

-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。

-l:不复制文件,只是生成链接文件。

实例:

现在test下有一个1.txt的文件,复制一个到桌面

(base) zfy@zfy-PC:~/Desktop/test$ cp 1.txt ../cp.txt

(base) zfy@zfy-PC:~/Desktop/test$ cd .. && ls

a.pem  cp.txt  google.cer  krackattacks-test  test  test.tex  vim  zlib-1.2.11  zlib-1.2.11.tar.gz

rm

rm(英文全拼:remove)命令用于删除一个文件或者目录。

语法

rm [options] name...

参数

-i 删除前逐一询问确认。

-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。

-r 将目录及以下之档案亦逐一删除。

实例:

删除Desktop的cp.txt

(base) zfy@zfy-PC:~/Desktop$ rm cp.txt && ls

a.pem  google.cer  krackattacks-test  test  test.tex  vim  zlib-1.2.11  zlib-1.2.11.tar.gz

(ls后已经没有该文件)

mv

mv(英文全拼:move file)命令用来为文件或目录改名、或将文件或目录移入其它位置。

语法

mv [options] source dest

mv [options] source... directory

参数说明

-b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。

-i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。

-f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。

-n: 不要覆盖任何已存在的文件或目录。

-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

实例:

移动 test/1.txt 到 Desktop

(base) zfy@zfy-PC:~/Desktop$ mv test/1.txt . && ls

1.txt  a.pem  google.cer  krackattacks-test  test  test.tex  vim  zlib-1.2.11  zlib-1.2.11.tar.gz

cat

英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。

使用权限

所有使用者

语法格式

cat [-AbeEnstTuv] [--help] [--version] fileName

参数说明:

-n 或 --number:由 1 开始对所有输出的行数编号。

-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。

-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。

-v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。

-E 或 --show-ends : 在每行结束处显示 $。

-T 或 --show-tabs: 将 TAB 字符显示为 ^I。

-A, --show-all:等价于 -vET。

-e:等价于"-vE"选项;

-t:等价于"-vT"选项;

实例:

显示1.txt到命令行

(base) zfy@zfy-PC:~/Desktop$ cat 1.txt

Hello world

ln

1)软链接

  软链接(又称符号链接),可以理解为快捷方式,如果删除原文件,则对应的软链接文件也会消失。

ln -s test.txt test_softlink

  软链接相当于给原文件创建了一个快捷方式,如果删除原文件,则对应的软链接文件也会消失。

2)硬链接

  硬链接,相当于给原文件取了个别名,其实两者是同一个文件,删除二者中任何一个,另一个不会消失;对其中任何一个进行更改,另一个的内容也会随之改变,因为这两个本质上是同一个文件,只是名字不同。

ln test.txt test_hardlink

3、文件权限

文件权限可以用 ls -l 【filename】获取,各参数解释如下图【3】


其中文件类型有:【4】

●-:一般文件(硬链接)。

● l:符号链接(软链接,可使用带有-s选项的ln命令来创建一个软链接)。

● d:目录。

● c:字符设备文件。

● p:命名管道。

● s:套接字。

● b:块设备特殊文件。

查看1.txt的权限

(base) zfy@zfy-PC:~/Desktop$ ls -l 1.txt

-rw-r--r-- 1 zfy zfy 15 6月  22 21:53 1.txt

可以看出文件所有者可以读写该文件,其余用户只能读取文件,该文件非执行文件

参考文献:

【1】team-learning-program/Linux at master · datawhalechina/team-learning-program (github.com)

【2】Linux 命令大全 | 菜鸟教程 (runoob.com)

【3】Linux文件权限详解_lv8549510的博客-CSDN博客_linux文件权限

【4】Linux 文件权限管理的方法 | 《Linux就该这么学》 (linuxprobe.com)

你可能感兴趣的:(Linux文件操作)