linux学习02

linux 文件管理

1.文件的命名规则

  1. 除了字符/之外,所有的字符都可以使用,尽量都用小写字母,对文件名进行分割,建议使用_
  2. 目录名或文件名的长度不能超过 255 个字符
  3. 建议文件名一律使用小写字母
  4. 文件扩展名的用途为了使运维人员更好的区分不同的文件类型

2.文件管理命令

2.1 目录管理

2.1.1目录创建/删除

mkdir创建目录

soup@soup-Inspiron-3558:~/下载$ mkdir test #
soup@soup-Inspiron-3558:~/下载$ ls -al | grep "t"
drwxrwxr-x  2 soup soup      4096 11月  6 16:25 test
soup@soup-Inspiron-3558:~/下载$ mkdir -p test1/test2/test3 #递归生成文件夹
soup@soup-Inspiron-3558:~/下载$ ls -al | grep "test"
drwxrwxr-x  2 soup soup      4096 11月  6 16:25 test
drwxrwxr-x  3 soup soup      4096 11月  6 16:26 test1
soup@soup-Inspiron-3558:~/下载$ mkdir test3 test4 #可一次性生成多个文件夹
2.1.2删除目录

rmdir删除目录

rmdir /itcast #删除根目录下的itcast目录
rmdir /itcast /jinyanlong /shunyi #删除根目录下的itcast目录
rmdir -p /itcast/heima #一次性删除heima和他的上级目录itcast

2.2文件创建/删除

2.2.1 创建文件

touch 创建文件

-a 改变档案的修改时间记录
-m 改变档案的修改时间记录
-r 使用参考档的时间记录,与 –file 的效果一样
-c 不创建新文件
-d 设定时间与日期,可以使用各种不同的格式
-t 设定档案的时间记录,格式与 date 命令相同
–no-create 不创建新文件
–help 显示帮助信息
–version 列出版本讯息
touch readme.txt #在当前目录下创建文件
touch /readme.txt #在根目录下创建文件
touch 1.txt 2.txt 3.txt #在 当前 同时创建 1.txt 2.txt 3.txt
touch /usr/local/1.txt /usr/local/2.txt#在/usr/local下创建1.txt 2.txt 
touch {1..6}.log #在对当前目录下,创建 1到6.txt
2.2.2 删除文件

rm 删除文件

-f 强制删除(不二次询问)
-i 删除前会询问用户是否操作
-r/R 递归删除
-v 显示指令的详细执行过程
rm readme.txt #带确认的删除文件
rm -r shop #带确认的删除目录
rm -rf shop #不带确认删除目录及其所有子目录和文件
2.2.3 复制文件

cp 复制文件

cp readme.txt /usr/local/ #当前目录下的readme.txt 拷贝到/usr/local下
cp readme.txt /usr/local/readme.txt
cp readme.txt /usr/local/readhis.txt
cp readme.txt readme.aaa
cp -r /root/chuanzhiboke /usr/local/

soup@soup-Inspiron-3558:~/test$ vi 1.txt 
soup@soup-Inspiron-3558:~/test$ ls
1.txt
soup@soup-Inspiron-3558:~/test$ cp 1.txt 2.txt #2.txt没有就新增一个
soup@soup-Inspiron-3558:~/test$ ls
1.txt  2.txt
2.2.4 移动文件

mv 移动文件

-i 若存在同名文件,则向用户询问是否覆盖
-f 覆盖已有文件时,不进行任何提示
-b 当文件存在时,覆盖前为其创建一个备份
-u 当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作
mv readme.txt /tmp/ #移动root目录下的 shop目录 到 /tmp目录下
mv /root/shop /tmp  #移动shop文件夹到/tmp目录下
mv hello.txt readme.txt #把hello.txt内容都复制到readme.txt,并且hello.txt会消失
mv /root/shop1 /usr/local/shop2

soup@soup-Inspiron-3558:~/test$ mkdir test1
soup@soup-Inspiron-3558:~/test$ ls
1.txt  test1
soup@soup-Inspiron-3558:~/test$ cd test1 
soup@soup-Inspiron-3558:~/test/test1$ touch 1.txt
soup@soup-Inspiron-3558:~/test/test1$ cd ..
soup@soup-Inspiron-3558:~/test$ mv 1.txt test1/1.txt  #移进去之后当前文件夹1.txt消失了
soup@soup-Inspiron-3558:~/test$ ls
test1
soup@soup-Inspiron-3558:~/test$ cd test1
soup@soup-Inspiron-3558:~/test/test1$ vi 1.txt 

2.3 tar打包压缩与解压缩

2.3.1 tar压缩

打包指的是一个文件或目录的集合,而这个集合被存储在一个文件中。归档文件没有经过压缩,

tar 压缩与解压缩

tar 参数 文件或目录

打包常见参数: -c,create 创建的意思 -v,显示打包文件过程 -f,指定打包的文件名,此参数是必须加的。 -u,update缩写,更新原打包文件中的文件(了解) -t,查看打包的文件内容(了解)

-A 新增文件到以存在的备份文件
-B 设置区块大小
-c 建立新的备份文件
-C <目录> 仅压缩指定目录里的内容或解压缩到指定目录
-d 记录文件的差别
-x 从归档文件中提取文件
-t 列出备份文件的内容
-z 通过gzip指令压缩/解压缩文件,文件名最好为*.tar.gz
-Z 通过compress指令处理备份文件
-f<备份文件> 指定备份文件
-v 显示指令执行过程
-r 添加文件到已经压缩的文件
-u 添加改变了和现有的文件到已经存在的压缩文件
-v 显示操作过程
-l 文件系统边界设置
-k 保留原有文件不覆盖
-m 保留文件不被覆盖
-w 确认压缩文件的正确性
-p 保留原来的文件权限与属性
-P 使用文件名的绝对路径,不移除文件名称前的“/”号
-N <日期格式> 只将较指定日期更新的文件保存到备份文件里
– -remove-files 归档/压缩之后删除源文件
soup@soup-Inspiron-3558:~/test$ ls
1.txt  2.txt  3.txt  4.txt  5.txt  test1
soup@soup-Inspiron-3558:~/test$ tar -cvf t1.tar 1.txt 2.txt 3.txt 4.txt 5.txt
1.txt
2.txt
3.txt
4.txt
5.txt
soup@soup-Inspiron-3558:~/test$ ls
1.txt  2.txt  3.txt  4.txt  5.txt  t1.tar  test1 
soup@soup-Inspiron-3558:~/test$ touch 6.txt
soup@soup-Inspiron-3558:~/test$ tar -uf t1.tar 6.txt #追加文件打包
soup@soup-Inspiron-3558:~/test$ tar -tf t1.tar #查看打包的文件内容
2.3.2 打包并压缩

常见参数:-z,压缩为.gz格式 -j,压缩为.bz2格式 -J,压缩为.xz格式 -c,create 创建的意思 -x,解压缩 -v,显示打包文件过程 -f,file指定打包的文件名,此参数是必须加的。

tar -zcvf abc.tar.ga a.txt b.txt c.txt 
tar -jcvf abc.tar.bz2 a.txt b.txt c.txt #含义:将当前目录下的a.txt b.txt c.txt 使用bz2压缩打包成abc.tar.bz2文件,是压缩后的大小
tar -Jcvf abc.tar.xz a.txt b.txt c.txt #将当前目录下的a.txt b.txt c.txt 使用xz压缩
2.2.4 解压

解压的时候,把压缩命令中的 c 换成 x 即可

3.文本处理

3.1查看文件内容

3.1.1 cat查看及合并

cat 查看文件内容

-n 显示行数(空行也编号)
-s 显示行数(多个空行算一个编号)
-b 显示行数(空行不编号)
-E 每行结束处显示$符号
-T 将TAB字符显示为 ^I符号
-v 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
-e 等价于”-vE”组合
-t 等价于”-vT”组合
-A 等价于 -vET组合
–help 显示帮助信息
–version 显示版本信息
#搭配空设备文件和输出重定向操作符,将某个文件内容清空
soup@soup-Inspiron-3558:~/文档/test$ cat 1.txt 
soup
man
soup@soup-Inspiron-3558:~/文档/test$ cat /dev/null > 1.txt
soup@soup-Inspiron-3558:~/文档/test$ cat 1.txt
#持续写入文件内容,直到碰到EOF符后才会结束并保存
soup@soup-Inspiron-3558:~/文档/test$ cat > 1.txt <<EOF
> soup
> man
> EOF
soup@soup-Inspiron-3558:~/文档/test$ cat 1.txt 
soup
man
3.1.2 分页显示

more more在读取文件时,默认已经加载文件的全部内容

-num 指定每屏显示的行数
-l more在通常情况下把 ^L 当作特殊字符, 遇到这个字符就会暂停,-l选项可以阻止这种特性
-f 计算实际的行数,而非自动换行的行数
-p 先清除屏幕再显示文本文件的剩余内容
-c 与-p相似,不滚屏,先显示内容再清除旧内容
-s 多个空行压缩成一行显示
-u 禁止下划线
+/pattern 在每个文档显示前搜寻该字(pattern),然后从该字串之后开始显示
+num 从第 num 行开始显示

more 执行命令之后使用

回车键 向下移动一行
d 向下移动半页
空格 向下移动一页
b 向上移动一页
/字符串 搜索指定的字符串
:f 显示当前文件的文件名和行号
q 退出 more
3.1.3 less分页

less 适合处理大文件,加载的时候出来一部分,基本与more差不多命令

3.1.4 head和tail

head 查看一个文件的前n 行,如果不指定n,则默认显示前10 行

tail 查看一个文件的最后n 行,如果n 不指定默认显示最后10 行

3.2 统计文件信息

3.2.1 wc统计文件内容数量

wc用于统计文件内容信息(包含行数、单词数、字节数)

wc [参数选项] 文件名

常见参数: -l:表示lines,行数(以回车/换行符为标准) -w:表示words,单词数 依照空格来判断单词数量 -c:表示bytes, 字节数(空格,回车,换行)

soup@soup-Inspiron-3558:~/文档/test$ cat 1.txt 
soup
man
hi
hah
lala
jiji
soup@soup-Inspiron-3558:~/文档/test$ wc -lwc 1.txt 
 6  6 26 1.txt # 6行6个单词 26个字节
3.2.2 du统计文件大小

du查看文件或目录(会递归显示子目录)占用磁盘空间大小

-a 显示目录中所有文件大小
-k 以KB为单位显示文件大小
-m 以MB为单位显示文件大小
-g 以GB为单位显示文件大小
-h 以易读方式显示文件大小
-s 仅显示总计
soup@soup-Inspiron-3558:~/下载$ du -sh #查看当前文件夹大小
87G	.
soup@soup-Inspiron-3558:~/下载$ du -h 56.mybatis.zip  #查看单文件大小
18M	56.mybatis.zip
soup@soup-Inspiron-3558:~/下载$ du -ah apache-maven-3.8.1/ #查询该文件夹下所有的
52K	apache-maven-3.8.1/boot/plexus-classworlds-2.6.0.jar
12K	apache-maven-3.8.1/boot/plexus-classworlds.license
68K	apache-maven-3.8.1/boot
512K	apache-maven-3.8.1/lib/guice-4.2.1-no_aop.jar
36K	apache-maven-3.8.1/lib/maven-resolver-transport-wagon-1.6.2.jar
48K	apache-maven-3.8.1/lib/maven-plugin-api-3.8.1.jar

3.3 文本处理

3.3.1 find文件查找

用于查找文档(其选项有55 个之多)

find 路径范围 选项1 选项1的值 [选项2 选项2 的值…]

-name 匹配名称
-perm 匹配权限(mode为完全匹配,-mode为包含即可)
-user 匹配所有者
-group 匹配所有组
-mtime -n +n 匹配修改内容的时间(-n指n天以内,+n指n天以前)
-atime -n +n 匹配访问文件的时间(-n指n天以内,+n指n天以前)
-ctime -n +n 匹配修改文件权限的时间(-n指n天以内,+n指n天以前)
-nouser 匹配无所有者的文件
-nogroup 匹配无所有组的文件
-newer f1 !f2 匹配比文件f1新但比f2旧的文件
-type b/d/c/p/l/f 匹配文件类型(后面的字幕字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件)
-size 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件)
-prune 忽略某个目录
-exec …… {}\; 后面可跟用于进一步处理搜索结果的命令
#找到根目录下所有以conf结尾的文件
soup@soup-Inspiron-3558:/$ sudo find / -name *.conf
#在/home目录中搜索所有属于指定用户的文件
soup@soup-Inspiron-3558:/$ find /home -user soup
#find 路径范围 选项1 选项1的值 选项2 选项2的值 在home目录下找到soup用户所有文件夹
soup@soup-Inspiron-3558:/$ find /home -user soup -type d
#列出当前工作目录中的所有文件、目录以及子文件信息
soup@soup-Inspiron-3558:/$ find .
#全盘搜索系统中所有类型为目录,且权限为1777的目录文件
soup@soup-Inspiron-3558:/$ sudo find / -type d -perm 1777
3.3.2 grep搜索文件内容

grep

-i 忽略大小写
-c 只输出匹配行的数量
-l 只列出符合匹配的文件名,不列出具体的匹配行
-n 列出所有的匹配行,显示行号
-h 查询多文件时不显示文件名
-s 不显示不存在、没有匹配文本的错误信息
-v 显示不包含匹配文本的所有行
-w 匹配整词
-x 匹配整行
-r 递归搜索
-q 禁止输出任何结果,已退出状态表示搜索是否成功
-b 打印匹配行距文件头部的偏移量,以字节为单位
-o 与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位
-F 匹配固定字符串的内容
-E 支持扩展的正则表达式
#搜索某个文件中,包含某个关键词的内容
soup@soup-Inspiron-3558:/$ grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
nm-openvpn:x:118:124:NetworkManager OpenVPN,,,:/var/lib/openvpn/chroot:/usr/sbin/nologin
#搜索某个文件中,以某个关键词开头的内容
soup@soup-Inspiron-3558:/$ grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash
#输出在某个文件中,包含某个关键词行的数量:
soup@soup-Inspiron-3558:/$ grep -c root /etc/passwd
#搜索当前工作目录中,包含某个关键词内容的文件,未找到则提示

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦