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 [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

参考链接

https://www.jianshu.com/p/9e9814471a1e

原文地址:https://www.cnblogs.com/zx125/p/11564241.html