Linux命令之文件操作
共 4340字,需浏览 9分钟
· 2023-08-10
![](https://filescdn.proginn.com/5f25fa0af2ee0eecc6d0a06d23f6dd84/89d82e82953121802cff89e8305db7cc.webp)
文件拷贝:cp命令
概述
该命令的形式如下,其将源文件复制到指定目的地下。当有多个源文件时,目的地为目录文件
cp [option] source dest
cp [option] source ... dest_directory
常见可选参数option如下:
-
-r: 递归处理。将源目录下的文件与子目录一并复制
拷贝文件
拷贝文件过程中,如果目的文件不存在,其将创建此文件。如果目的文件存在,则会对其覆盖
cp main.c main.c.backup
![](https://filescdn.proginn.com/e1419f047d3378391f36508fb706fa45/f6d5a327fb70e905198c986949b0065d.webp)
Note: 目的文件可以不存在,但是目的文件所在的路径目录必须存在,否则命令将报错
拷贝目录:连同源目录本身进行复制(含隐藏文件)
当源文件指定的是一个目录时,下述命令则可以实现连同源目录本身一并复制到指定目录下。此时源目录中的隐藏文件也将会一并复制过去。注意此时,源目录的名称后面不要添加斜杠。因为添加斜杠的命令后在Mac与Linux中的行为表现不一致。为便于记忆,统一使用下述这种源目录的名称后面不添加斜杠的形式,实现连同源目录本身进行复制的目的
# 将springboot1目录连同源目录本身(含源目录中的隐藏文件)复制到target目录中
cp -r springboot1 target/
![](https://filescdn.proginn.com/874e9ec27b2b71b468c9c78bfce61e89/4ad6a0347d3ea9122a5219879bc134d2.webp)
拷贝目录:只对源目录中的内容进行复制(含隐藏文件)
当源文件指定的是一个目录时,下述命令则可以实现只将源目录中的内容复制到指定目录下。此时源目录中的隐藏文件也将会一并复制过去
# 只将springboot1目录中的内容(含源目录中的隐藏文件)复制到target目录中
cp -r springboot1/. target/
![](https://filescdn.proginn.com/e65c422dff41d8c7b5080f91d5213660/3e1b245a5b7b4844421243b3b7913482.webp)
拷贝目录:只对源目录中的内容进行复制(不含隐藏文件)
当源文件指定的是一个目录时,下述命令则可以实现只将源目录中的内容复制到指定目录下。但不会将源目录中的隐藏文件复制过去
# 只将springboot1目录中的内容(不含源目录中的隐藏文件)复制到target目录中
cp -r springboot1/* target/
![](https://filescdn.proginn.com/3ad75fcb193ec09648b71a2e63472deb/28277430a7b8c5e59b453f7d3742281b.webp)
文件移动:mv命令
概述
该命令可以实现将文件、目录移动到指定位置
mv [options] source target
mv [options] source ... dest_directory
重命名
在同一个目录下,进行文件或目录移动操作。当目的文件不存在时,本质上就是对其重命名操作
# 将当前目录下的main.c文件,重命名为 main.java
mv main.c main.java
# 将当前目录下的srcCode目录,重命名为 src
mv srcCode src/
![](https://filescdn.proginn.com/b5152229113ab33bbc9a7512793c921a/b11bcea491b7c9eadfd841237bc90113.webp)
移动文件
在移动文件的同时,还可以对其进行重命名
# 将当前目录下的 usrMapper.java文件 移动 src目录下
mv usrMapper.java src/
# 将当前目录下的 usrController.java文件 移动 src目录下,并重命名为 controller.java
mv usrController.java src/controller.java
![](https://filescdn.proginn.com/a0150adb62c2597eee01e258002f6961/f4e2fff693510f4e91cfc9a5cb7662c6.webp)
移动目录:连同源目录本身进行移动(含隐藏文件)
当源文件指定的是一个目录时,下述命令则可以实现连同源目录本身一并移动到指定目录下。此时源目录中的隐藏文件也将会一并移动过去
# 将springboot1目录连同源目录本身(含源目录中的隐藏文件)移动到target目录中
mv springboot1 target/
![](https://filescdn.proginn.com/621714c7af258db7a100552a7932a004/407e28d0ba29ae180df881962757b00e.webp)
移动目录:只对源目录中的内容进行移动(不含隐藏文件)
当源文件指定的是一个目录时,下述命令则可以实现只将源目录中的内容移动到指定目录下。但不会将源目录中的隐藏文件移动过去
# 只将springboot1目录中的内容(不含源目录中的隐藏文件)移动到target目录中
cp -r springboot1/* target/
![](https://filescdn.proginn.com/12a2ce32e866989c60ae738d21adf38e/8519fbd0beb39efd1936c990d6e5ad4a.webp)
创建目录:mkdir命令
概述
该命令创建目录
mkdir [-pv] [-m mode] directory_name ...
常用选项:
-
-p:批量创建目录、子目录 -
-v:显示创建的目录 -
-m:指定目录权限
创建目录
创建目录,命令如下
# 创建名为foo的目录,目录权限为707
mkdir -m 707 foo
# 创建名为demo1的目录
mkdir demo1
![](https://filescdn.proginn.com/01b11287d235d40ee9e5ba8a25cae47e/bbf4f1dc710dd7b06c7b7654c03aac7b.webp)
利用-p选项则可以快速的创建一系列的子目录
# 依次创建出 src、main、java 的父子目录结构
mkdir -p src/main/java/
![](https://filescdn.proginn.com/37981762676cf5e6a46c7dbe8829fb29/93ce90d5b05294b81d17c376b3442d06.webp)
查看文件
查看文件类型:file命令
利用file命令可以判断出文件类型、编码等信息
# 分析指定文件的文件类型
file filename
![](https://filescdn.proginn.com/282d5dec0e6513b8f6ac49ff616b2065/81ebbcecf29e76f53790934c4aa28419.webp)
对于二进制可执行文件而言,file还可以分析出其编译所面向的平台及依赖库等信息
# 分析ls可执行文件
file /bin/ls
![](https://filescdn.proginn.com/ddae13e8adbd66fafc2ec2433ad8542b/46793c1ddee50063eee35b4814882431.webp)
查看文件整个内容
cat、tac命令
cat命令支持查看整个文件。但其会一次性将文件的内容全部输出完毕
# 查看整个文件
cat a.txt
# 查看整个文件,同时添加行号信息
cat -n a.txt
![](https://filescdn.proginn.com/e56908baedd7a4491362e100354fe8f5/0110ca7d0c402b068f5ce9af2ed7540f.webp)
tac命令与cat命令类似,只不过其是将文件内容按行反序全部进行输出的。即输出的第一行为文件内容的最后一行,以此类推
# 按行反序查看整个文件
tac a.txt
![](https://filescdn.proginn.com/c1ed2cb2633623aa2235b06e8c31b65c/e2070b6fb9d9d026edad0bd8fb3a7960.webp)
more、less命令
cat命令的缺点在于命令执行后无法控制后续操作。而more命令则会在输出每页内容后暂停下来。常用地浏览操作有:通过键盘的j、k键即可进行往后、往前浏览整个文件。结束后,可按q键退出即可。而less命令则是more命令的升级版,其支持更多的文件浏览操作
# 查看passwd文件
more /etc/passwd
# 查看passwd文件
less /etc/passwd
查看文件部分内容
head命令
head命令可以实现查看文件的头部。默认显示文件的前10行
# 显示文件的前10行
head a.txt
# 显示文件的前3行
head -3 a.txt
![](https://filescdn.proginn.com/20c37e2a27278aa1ca256ce74032bac6/54bc6c3bd4c9ffda2100c54f0318a781.webp)
tail命令
tail命令可以实现查看文件的尾部。默认显示文件的最后10行
# 显示文件的最后10行
head a.txt
# 显示文件的最后5行
head -5 a.txt
![](https://filescdn.proginn.com/fbf5127bec08814d9181311cb74bde7e/95d1744e0963f348370c668b86a1da2d.webp)
此外在开发中,查看日志文件时,常用使用 -f 选项,其会把文件的最尾部的内容不断刷新输出。实现实时查看日志文件
# 实时查看文件
tail -f a.txt
![](https://filescdn.proginn.com/39f34b0bfcc540bc9af4be95d874efdd/2f144eece3af937b3b6a1fe9d0d488b2.webp)
参考文献
-
Linux命令行与shell脚本编程大全·第4版 Richard Blum、Christine Bresnahan著