本文介绍文件操作样例和一些概念
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)