Linux命令之文件操作
文件拷贝:cp命令
概述
该命令的形式如下,其将源文件复制到指定目的地下。当有多个源文件时,目的地为目录文件
cp [option] source dest
cp [option] source ... dest_directory
常见可选参数option如下:
-
-r: 递归处理。将源目录下的文件与子目录一并复制
拷贝文件
拷贝文件过程中,如果目的文件不存在,其将创建此文件。如果目的文件存在,则会对其覆盖
cp main.c main.c.backup
Note: 目的文件可以不存在,但是目的文件所在的路径目录必须存在,否则命令将报错
拷贝目录:连同源目录本身进行复制(含隐藏文件)
当源文件指定的是一个目录时,下述命令则可以实现连同源目录本身一并复制到指定目录下。此时源目录中的隐藏文件也将会一并复制过去。注意此时,源目录的名称后面不要添加斜杠。因为添加斜杠的命令后在Mac与Linux中的行为表现不一致。为便于记忆,统一使用下述这种源目录的名称后面不添加斜杠的形式,实现连同源目录本身进行复制的目的
# 将springboot1目录连同源目录本身(含源目录中的隐藏文件)复制到target目录中
cp -r springboot1 target/
拷贝目录:只对源目录中的内容进行复制(含隐藏文件)
当源文件指定的是一个目录时,下述命令则可以实现只将源目录中的内容复制到指定目录下。此时源目录中的隐藏文件也将会一并复制过去
# 只将springboot1目录中的内容(含源目录中的隐藏文件)复制到target目录中
cp -r springboot1/. target/
拷贝目录:只对源目录中的内容进行复制(不含隐藏文件)
当源文件指定的是一个目录时,下述命令则可以实现只将源目录中的内容复制到指定目录下。但不会将源目录中的隐藏文件复制过去
# 只将springboot1目录中的内容(不含源目录中的隐藏文件)复制到target目录中
cp -r springboot1/* target/
文件移动:mv命令
概述
该命令可以实现将文件、目录移动到指定位置
mv [options] source target
mv [options] source ... dest_directory
重命名
在同一个目录下,进行文件或目录移动操作。当目的文件不存在时,本质上就是对其重命名操作
# 将当前目录下的main.c文件,重命名为 main.java
mv main.c main.java
# 将当前目录下的srcCode目录,重命名为 src
mv srcCode src/
移动文件
在移动文件的同时,还可以对其进行重命名
# 将当前目录下的 usrMapper.java文件 移动 src目录下
mv usrMapper.java src/
# 将当前目录下的 usrController.java文件 移动 src目录下,并重命名为 controller.java
mv usrController.java src/controller.java
移动目录:连同源目录本身进行移动(含隐藏文件)
当源文件指定的是一个目录时,下述命令则可以实现连同源目录本身一并移动到指定目录下。此时源目录中的隐藏文件也将会一并移动过去
# 将springboot1目录连同源目录本身(含源目录中的隐藏文件)移动到target目录中
mv springboot1 target/
移动目录:只对源目录中的内容进行移动(不含隐藏文件)
当源文件指定的是一个目录时,下述命令则可以实现只将源目录中的内容移动到指定目录下。但不会将源目录中的隐藏文件移动过去
# 只将springboot1目录中的内容(不含源目录中的隐藏文件)移动到target目录中
cp -r springboot1/* target/
创建目录:mkdir命令
概述
该命令创建目录
mkdir [-pv] [-m mode] directory_name ...
常用选项:
-
-p:批量创建目录、子目录 -
-v:显示创建的目录 -
-m:指定目录权限
创建目录
创建目录,命令如下
# 创建名为foo的目录,目录权限为707
mkdir -m 707 foo
# 创建名为demo1的目录
mkdir demo1
利用-p选项则可以快速的创建一系列的子目录
# 依次创建出 src、main、java 的父子目录结构
mkdir -p src/main/java/
查看文件
查看文件类型:file命令
利用file命令可以判断出文件类型、编码等信息
# 分析指定文件的文件类型
file filename
对于二进制可执行文件而言,file还可以分析出其编译所面向的平台及依赖库等信息
# 分析ls可执行文件
file /bin/ls
查看文件整个内容
cat、tac命令
cat命令支持查看整个文件。但其会一次性将文件的内容全部输出完毕
# 查看整个文件
cat a.txt
# 查看整个文件,同时添加行号信息
cat -n a.txt
tac命令与cat命令类似,只不过其是将文件内容按行反序全部进行输出的。即输出的第一行为文件内容的最后一行,以此类推
# 按行反序查看整个文件
tac a.txt
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
tail命令
tail命令可以实现查看文件的尾部。默认显示文件的最后10行
# 显示文件的最后10行
head a.txt
# 显示文件的最后5行
head -5 a.txt
此外在开发中,查看日志文件时,常用使用 -f 选项,其会把文件的最尾部的内容不断刷新输出。实现实时查看日志文件
# 实时查看文件
tail -f a.txt
参考文献
-
Linux命令行与shell脚本编程大全·第4版 Richard Blum、Christine Bresnahan著