文件操作命令
创建文件
使用touch命令可以创建文件和修改文件时间
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # 如果是已存在的文件,则会更新时间戳 touch test.txt # 创建多个文件 touch test1.txt test2.txt # 批量创建文件 touch test{3..11}.txt
-------------- -a 只修改文件的最后访问时间 -m 只修改文件的修改时间 -c 仅修改时间,不创建文件 -d 指定时间 -r 修改文件时间相同,如touch -r a.txt b.txt 使得b.txt的时间和a.txt的时间相同 -t 设置为指定时间,格式为[[CC]YY]MMDDhhmm[.ss]
|
使用mktemp可以创建临时文件,会在/tmp目录下产生一个tep.xxxxxx的临时文件
删除文件
在使用rmdir删除目录的时候如果目录中存在子目录是不可以被删除的,使用起来比较恶心,所以在删除文件或者目录的时候都习惯于使用rm来删除
1 2 3 4 5 6 7 8 9
| #这里注意如果加上-f选项的话,就会强制删除,无法找回,删除之前要考虑清楚 rm -rf test.txt
--------------- 选项 -f 强制删除,不需要要确认 -r 递归删除 -i 删除提示 -v 详细显示删除过程
|
查看文件
file命令
file命令可以确定文件类型
1 2 3
| file [options] file-list
-f file 从文件file中读取要检测的文件
|
stat命令
查看文件详细信息
1 2 3 4 5 6 7 8 9 10 11
| stat abc.txt ---------------------------- File: `abc.txt' Size: 5 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 131272 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 500/ zhanghe) Gid: ( 500/ zhanghe) Access: 2021-02-14 18:34:47.995289019 +0800 Modify: 2021-02-14 18:34:58.308673839 +0800 Change: 2021-02-14 18:34:58.308673839 +0800
|
cat命令
查看文件内容
1 2 3 4 5 6 7 8 9 10
| cat abc.txt
----------------------- 选项 -A 相当于-vET,列出所有的隐藏字符 -E 列出每行结尾的回车符$ -n 显示行号 -T 把Tab键用^I表示出来 -v 展示特殊字符
|
more命令
cat不适合查看大文件,使用more命令来分屏显示
1 2 3 4 5 6 7 8 9 10 11 12 13
| more abc.txt
-------------------- +n 从第n行开始显示 -n 每次查看n行 +/字符串 查找字符串所在位置 -c 清屏再显示 -p 换页时清屏 空格键 向下翻页 b 向上翻页 回车 向下滚动一行 q 退出
|
less命令
less也能分页显示文件,和more类似,不过允许在文件中一行或多行的前后滚动
head和tail命令
head是显示文件头,tail是显示文件尾,默认10行
1 2 3 4 5 6 7 8 9 10
| tail abc.txt
------------------------- 选项 -n 显示行数 -f 监听文件新增内容,滚动 -v 显示文件名 -c number 显示前number个字符,若number为负数,则显示除最后number个字符的所有内容
|
进阶
①从1000行开始显示500行
1
| cat jvm.log | tail -n +1000 | head -n 500
|
②显示1000到2000行
1
| cat jvm.log | head -n 2000 | tail -n +1000
|
软链接
建立文件的软链接(可以看作是windows的快捷方式)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| ln [options] source_file target_file
# 如果不加-s的话,则创建的是硬链接,硬链接相当于copy了一份源文件,且两个文件同步更新 ln -s abc.txt abc_c.txt
-f 强制创建链接 -n 如果target_file已存在,不创建链接 -s 为source_file 创建一个软链接,名为target_file
ls -l ------------------------------- total 4 lrwxrwxrwx. 1 zhanghe zhanghe 7 Feb 14 19:59 abc_c.txt -> abc.txt -rw-rw-r--. 1 zhanghe zhanghe 5 Feb 14 18:34 abc.txt
|
特征
- 软链接和源文件拥有不同的Inode和block
- 修改任意一个,两者都会修改
- 删除源文件,软链接不可用;删除软链接,源文件没有影响
- 软链接不存储真实数据,存储的是源文件的Inode
复制文件
1 2 3 4 5 6 7 8 9 10 11 12 13
| cp abc.txt /home/zhanghe/Documents/test/aaa.txt
---------------------------- 选项 -r 递归复制,用于复制目录 -p 保留源文件的属性,如所有者、权限和时间 -f 强制复制,如果文件存在,会进行强制覆盖 -s 生成快捷方式 -i 询问是否覆盖 -d 如果源文件是软链接,则复制出来的也是软链接 -a 相当于-dpr -v 显示复制过程
|
在复制的时候,如果目标位置是目录,则将文件复制过去,如果目标位置是文件,则将文件内容复制过去
剪切或者重命名
1 2 3 4 5 6 7 8
| mv aaa.txt acs.txt
------------------------- -f 如果文件存在,强制覆盖 -b 覆盖前做备份 -i 如果文件存在,询问是否覆盖 -v 显示详细信息 -t 将多个文件移动到同一个目录,目录参数在前,文件参数在后
|
剪切如果在同一目录下就是重命名,不在同一目录下就是剪切
查看文件格式及其编码
查看文件的MIME类型
可以通过file命令来看该软链接的文件本身是谁
比较文件
diff命令
可以一行一行的对比两个文件
1 2 3 4 5
| diff [options] file1 file2
-b 忽略行尾的空白 -e 生成并且显示一个脚本 -h 快速比较
|
重复行
使用uniq命令可以删除文件中所有连续的重复行,所以一般与sort来结合使用,先进行排序在进行去重
1 2 3 4 5 6
| # input-file本身不会发生改变,如果没有指定output-file,会将输出为标准输出 uniq [options] [+N] [input-file] [output-file]
-c 在每行之前显示它们出现的次数 -d 只显示重复行,只显示出现多次的行 -u 只显示未重复的行,只显示出现一次的行
|