Linux文件操作
文件管理
Linux文件的组成
(inode)Linux文件由两部分组成:用户数据(user data)和元数据(metadata)
用户数据:真正的文件内容存放的地方,即文件数据块(data block)
元数据:存放一些文件的属性,如:文件名,inode(i节点),三time等
inode:i节点是文件的唯一标识符,系统和程序是通过inode来找到文件的用户数据和数据块(stat可以查看i节点内容)
文件的三time
atime:(access time)显示文件被访问的最后的时间
mtime: (modify time)文件内容被改变的最后时间
ctime: (change time)inode内容被改变的最后一个时间,atime改变也会变化
文件创建 修改 删除 移动 查看
touch
touch 文件路径
可以一次创建多个文件
touch 文件路径1 文件路径2
touch命令 新建文件和修改文件或者文件的时间戳
命令语法:
touch 【选项】 【文件名】
命令选项:
-a 只修改文件的access(访问)时间.
touch -a a
-c 或--no-create 不创建不存在的文件。
touch -c zx 如果zx文件不存在,就不会创建文件
-d 使用指定的日期时间,而非现在的时间
touch -d "5/30/2015" a 会修改改动和访问时间,不会更改最近改动时间
-m 指修改Modify(修改)时间,而不修改access(访问)时间
touch -m a
-r file 使用指定file文件的时间戳(access,modify)更新文件的时间戳(access,modify)
touch -r a b
-t 将时间修改为参数指定的日期,如:10011150代表10月1号11点55分
touch -t 10011150
rm
rm命令 删除文件
命令语法
rm [options] name...
命令选项
-i 删除前逐一询问确认。(默认自带)
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。 (不推荐使用)
-r 将目录及以下之档案亦逐一删除。
mv
文件改名
mv命令 文件改名
命令语法修改文件名:
mv old_file new_file
mv命令 文件移动
文件移动
命令语法:
mv [选项] 源文件或目录 目标文件或目录
命令选项
-b:若需覆盖文件,则覆盖前先行备份。
-i:若指定目录已有同名文件,则先询问是否覆盖旧文件;
-f:force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-u:若目标文件已经存在,且 source 比较新,才会更新(update)
拓展:mv src dST
改名 dst是一个文件夹的时候 执行是移动
dst不是一个文件夹的时候 执行改名
ls
-a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出 可以简写 ll
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 若目录下有文件,则以下之文件亦皆依序列出
文件类型
ls -l 可查看
- 普通文件
d 目录
l 链接文件
b 设备文件
c 字符设备
s 套接字文件
p 管道文件
linux 文件颜色意义
绿色文件: 可执行文件,可执行的程序
红色文件:压缩文件或者包文件
蓝色文件:目录
白色文件:一般性文件,如文本文件,配置文件,源码文件等
浅蓝色文件:链接文件,主要是使用ln命令建立的文件
红色闪烁:表示链接的文件有问题
黄色:表示设备文件
灰色:表示其他文件
文件内容查看
cp
cp命令 拷贝文件
命令语法
cp [options] 源文件或目录 目标目录
cp [选项] 源路径 目标路径
cp 源路径 目标路径 拷贝单个文件
cp -r 源路径 目标路径 拷贝文件夹
命令选项
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容
-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。
#复制重命名
cp zx1 zx2
#复制重命名文件夹
cp -rf zx1 zx2
cat
cat 命令用于连接文件并打印到标准输出设备上。
显示文件全部内容,如果文件过大需要注意
cat [选项] 文件路径
cat 文件路径 显示文件内容
cat -n 文件路径 显示文件内容,并显示行号
命令语法
cat [选项列表] [文件列表]
命令选项
-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"选项;
more
more指令是基于vi编辑器的文本过滤器,以全屏的方式按页显示文本内容
more指令中内置了很多快捷键,用起来很方便
空格 向下翻一页
Enter 向下翻一行
q 立即离开
Ctrl+F 向下滚动一屏
Ctrl+B 向上滚动一屏
= 显示当前行号
:f 输出文件名和当前行号
less
比more更加强大,功能比more更过多
less 文件路径
空格 向下翻一页
pagedown 向下翻一页
pageup 向上翻一页
/字符串 向下查找[字符串],n下一个,N上一个
?字符串 向上查找[字符串],n下一个,N上一个
q 离开less
head
head - 输出文件的开始部分
命令语法
head \[OPTION\] \[FILE\]
命令选项
-c, --bytes=SIZE 打印起始的SIZE字节
-n, --lines=NUMBER 显示起始的NUMBER行,而非默认的起始10行
-q, --quiet, --silent 从不显示给出文件名的首部
-v, --verbose 总是显示给出文件名的首部
--help 显示帮助后退出
--version 输出版本信息后退出
tail
tail - 输出文件的末尾部分
命令语法
tail \[OPTION\] \[FILE\]
命令选项
-f 循环读取
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容
tail -f可以用于监听文件增加
文件夹操作
新建文件夹:mkdir
文件夹插卡:ls
空文件夹的删除:rmdir
不为空的文件夹的删除:rm -rf 递归删除
文件夹拷贝:cp [-r -p -f]
mv
文件夹改名:mv 文件名 文件名
mv zx.py wl.py
mv home/zx.py home/wl.py
文件夹移动:mv 文件名 路径/
mv zx.py /root/
mv home/zx.py /root/
>指令/>>指令
把前方语句的结果存进文件,若文件不存在会自动创建
>:输出重定向 会覆盖原来文件内容
>>:追加重定向 追加到文件末尾
ll > a.txt
cat b.txt >> a.txt
9.5.13.2 示例
mkdir
mkdir 建立目录
命令语法
mkdir [选项] 目录
命令选项
-v 显示信息
-p 递归创建
rmdir
rmdir 删除空目录
命令语法
rmdir [options] directory
命令选项
-p 递归删除空目录
#要写全,如果删除掉wl2后,wl1为空,一并删除
rmdir -p wl1/wl2
ln软连接硬链接
软链接也叫符号链接,类似于 windows 里的快捷方式,主要存放了链接其他文件的路径
软连接
ln -s 源文件或源文件夹 软连接名
硬链接
ln 源文件或源文件夹 软连接名
文件打包压缩
概念
打包
是将一大堆文件或目录变成一个总的文件
压缩
是将一个大的文件通过一些压缩算法变成一个小文件
总结
通过以上概念,我们可以推测出打包和压缩是经常一起用的,但是要注意区分概念
tar
必要参数
参数 | 描述 |
---|---|
-A | 或--catenate 新增压缩文件到已存在的压缩文件 |
-B | 或--read-full-records,读取数据时重设区块大小。 |
-c | 或--create,建立新的压缩文件 |
-d | 或-diff,记录文件的差别 |
-r | 或--append 新增文件到已存在的压缩文件的结尾部分 |
-u | 或--update 仅置换较压缩文件内的文件更新的文件 |
-x | 或--extrac,从压缩的文件中提取文件 |
-t | 或--list ,列出压缩文件的内容 |
-z | 或--gzip或--ungzip,通过gzip指令解压文件 |
-j | 通过bzip2指令解压文件 |
-p | 或--same-permissions 用原来的文件权限还原文件 |
-Z | 通过compress指令解压文件 |
-N<日期格式> | 或--newer=<日期时间> ,只将较指定日期更新的文件保存到备份文件里。 |
-v | 显示操作过程 |
-l | 文件系统边界设置 |
-k | 或--keep-old-files, 解压文件时,不覆盖已有的文件 |
-m | 或--modification-time ,解压文件时,不变更文件的更改时间 |
-W | 或--verify,压缩文件时,确认文件正确无误 |
选择参数
参数 | 描述 |
---|---|
-b | 设置区块数目 |
-C | 切换到指定目录 |
-f | 指定压缩文件 |
--help | 显示帮助信息 |
--version | 显示版本信息 |
打包-查看-解包
#打包
tar -cvf wl.tar wl1 wl2
#查看
tar -tf wl.tar
#解包
tar -xf wl.tar -C wl2
-C 解包到指定目录
gzip
压缩快,但是压缩率低,只能压缩单个文件,一般配合tar使用
#压缩,注意是直接把当前文件压缩,不会保留原文件
gzip wl.tar
#解压,解压完,源文件不在
gunzip wl.tar.gz
gzip -d wl.tar.gz -C \home
配合tar
#压缩,cd到压缩文件目录下在压缩
tar -zcvf wl.tar.gz wl1 wl2
#解压
tar -zxvf wl.tar.gz
bzip2
压缩慢,但是压缩率高
#压缩
bzip2 wl.tar
#解压
bunzip2 wl.tar.gz
bzip2 -d wl.tar.gz
配合tar
#压缩
tar -jcvf wl.tar.gz wl1 wl2
#解压
tar -jxvf wl.tar.gz
zip和unzip
zip 用于压缩文件, unzip 用于解压的,这个在项目打包发布中很有用的
注意压缩文件夹的时候加-r , -d是指定解压的目录
zip [选项] xxx.zip 被压缩内容 压缩文件或者目录
-r 压缩目录
unzip [选项] xxx.zip 解压文件
-d 目录 指定压缩后的存放目录
zip -r my.zip zx zx1
unzip -d /home my.zip
信息筛选
find
find [范围] [选项]
范围:指路径,不写默认从当前向下找,类似于windows的查找
选项:
-name 文件名 按文件名查找,支持正则
-user 用户名 查找属于该用户的所有文件
-size 按文件大小查找
+20M
-20M
20M
20K
find /home -name *.txt
find /home -name a.txt
grep 指令 和 管道符号 |
管道符:"|",表示将前一个命令的处理结果输出传递给后面的命令处理
grep:过滤查找
grep [选项] 过滤内容
选项:
-n 显示匹配行及行号
-i 忽略字母大小写
cat zx1 |grep -ni yes