文件拷贝:cp命令

概述

该命令的形式如下,其将源文件复制到指定目的地下。当有多个源文件时,目的地为目录文件

cp [option] source  dest
cp [option] source ... dest_directory
  • 1.
  • 2.

常见可选参数option如下:

  • -r: 递归处理。将源目录下的文件与子目录一并复制

拷贝文件

拷贝文件过程中,如果目的文件不存在,其将创建此文件。如果目的文件存在,则会对其覆盖

cp main.c main.c.backup
  • 1.

Linux命令之文件操作_Linux文件命令

Note: 目的文件可以不存在,但是目的文件所在的路径目录必须存在,否则命令将报错

拷贝目录:连同源目录本身进行复制(含隐藏文件)

当源文件指定的是一个目录时,下述命令则可以实现连同源目录本身一并复制到指定目录下。此时源目录中的隐藏文件也将会一并复制过去。注意此时,源目录的名称后面不要添加斜杠。因为添加斜杠的命令后在Mac与Linux中的行为表现不一致。为便于记忆,统一使用下述这种源目录的名称后面不添加斜杠的形式,实现连同源目录本身进行复制的目的

# 将springboot1目录连同源目录本身(含源目录中的隐藏文件)复制到target目录中
cp -r springboot1 target/
  • 1.
  • 2.

Linux命令之文件操作_Linux文件命令_02

拷贝目录:只对源目录中的内容进行复制(含隐藏文件)

当源文件指定的是一个目录时,下述命令则可以实现只将源目录中的内容复制到指定目录下。此时源目录中的隐藏文件也将会一并复制过去

# 只将springboot1目录中的内容(含源目录中的隐藏文件)复制到target目录中
cp -r springboot1/. target/
  • 1.
  • 2.

Linux命令之文件操作_Linux文件命令_03

拷贝目录:只对源目录中的内容进行复制(不含隐藏文件)

当源文件指定的是一个目录时,下述命令则可以实现只将源目录中的内容复制到指定目录下。但不会将源目录中的隐藏文件复制过去

# 只将springboot1目录中的内容(不含源目录中的隐藏文件)复制到target目录中
cp -r springboot1/* target/
  • 1.
  • 2.

Linux命令之文件操作_Linux文件命令_04

文件移动:mv命令

概述

该命令可以实现将文件、目录移动到指定位置

mv [options] source target
mv [options] source ... dest_directory
  • 1.
  • 2.

重命名

在同一个目录下,进行文件或目录移动操作。当目的文件不存在时,本质上就是对其重命名操作

# 将当前目录下的main.c文件,重命名为 main.java
mv main.c main.java# 将当前目录下的srcCode目录,重命名为 src
mv srcCode src/
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

Linux命令之文件操作_Linux文件命令_05

移动文件

在移动文件的同时,还可以对其进行重命名

# 将当前目录下的 usrMapper.java文件 移动 src目录下
mv usrMapper.java src/# 将当前目录下的 usrController.java文件 移动 src目录下,并重命名为 controller.java
mv usrController.java src/controller.java
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

Linux命令之文件操作_Linux文件命令_06

移动目录:连同源目录本身进行移动(含隐藏文件)

当源文件指定的是一个目录时,下述命令则可以实现连同源目录本身一并移动到指定目录下。此时源目录中的隐藏文件也将会一并移动过去

# 将springboot1目录连同源目录本身(含源目录中的隐藏文件)移动到target目录中
mv springboot1 target/
  • 1.
  • 2.

Linux命令之文件操作_Linux文件命令_07

移动目录:只对源目录中的内容进行移动(不含隐藏文件)

当源文件指定的是一个目录时,下述命令则可以实现只将源目录中的内容移动到指定目录下。但不会将源目录中的隐藏文件移动过去

# 只将springboot1目录中的内容(不含源目录中的隐藏文件)移动到target目录中
cp -r springboot1/* target/
  • 1.
  • 2.

Linux命令之文件操作_Linux文件命令_08

创建目录:mkdir命令

概述

该命令创建目录

mkdir [-pv] [-m mode] directory_name ...
  • 1.

常用选项:

  • -p:批量创建目录、子目录
  • -v:显示创建的目录
  • -m:指定目录权限

创建目录

创建目录,命令如下

# 创建名为foo的目录,目录权限为707
mkdir -m 707 foo# 创建名为demo1的目录
mkdir demo1
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

Linux命令之文件操作_Linux文件命令_09

利用-p选项则可以快速的创建一系列的子目录

# 依次创建出 src、main、java 的父子目录结构
mkdir -p src/main/java/
  • 1.
  • 2.

Linux命令之文件操作_Linux文件命令_10

查看文件

查看文件类型:file命令

利用file命令可以判断出文件类型、编码等信息

# 分析指定文件的文件类型
file filename
  • 1.
  • 2.

Linux命令之文件操作_Linux文件命令_11

对于二进制可执行文件而言,file还可以分析出其编译所面向的平台及依赖库等信息

# 分析ls可执行文件
file /bin/ls
  • 1.
  • 2.

Linux命令之文件操作_Linux文件命令_12

查看文件整个内容

cat、tac命令

cat命令支持查看整个文件。但其会一次性将文件的内容全部输出完毕

# 查看整个文件
cat  a.txt# 查看整个文件,同时添加行号信息
cat -n a.txt
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

Linux命令之文件操作_Linux文件命令_13

tac命令与cat命令类似,只不过其是将文件内容按行反序全部进行输出的。即输出的第一行为文件内容的最后一行,以此类推

# 按行反序查看整个文件
tac  a.txt
  • 1.
  • 2.

Linux命令之文件操作_Linux文件命令_14

more、less命令

cat命令的缺点在于命令执行后无法控制后续操作。而more命令则会在输出每页内容后暂停下来。常用地浏览操作有:通过键盘的j、k键即可进行往后、往前浏览整个文件。结束后,可按q键退出即可。而less命令则是more命令的升级版,其支持更多的文件浏览操作

# 查看passwd文件
more /etc/passwd# 查看passwd文件
less /etc/passwd
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

查看文件部分内容

head命令

head命令可以实现查看文件的头部。默认显示文件的前10行

# 显示文件的前10行
head a.txt# 显示文件的前3行
head -3 a.txt
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

Linux命令之文件操作_Linux文件命令_15

tail命令

tail命令可以实现查看文件的尾部。默认显示文件的最后10行

# 显示文件的最后10行
head a.txt# 显示文件的最后5行
head -5 a.txt
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

Linux命令之文件操作_Linux文件命令_16

此外在开发中,查看日志文件时,常用使用 -f 选项,其会把文件的最尾部的内容不断刷新输出。实现实时查看日志文件

# 实时查看文件
tail -f a.txt
  • 1.
  • 2.

Linux命令之文件操作_Linux文件命令_17

参考文献

  1. Linux命令行与shell脚本编程大全·第4版 Richard Blum、Christine Bresnahan著