目录
一、目录操作
0)cd
https://blog.csdn.net/zjc910997316/article/details/82983251
“..”代表上一级目录、“~”代表当前登录用户的用户目录(home/root等)、“-”代表前一目录 “/"代表根目录、什么参数也不代则会进入“home/个人用户”目录。
2)pwd:查看当前目录
3)touch:创建文件
4)ls [-al]:列出当前目录下的文件,[-al]参数表示查看文件的详情信息(权限等)
5)rm:删除文件 (怎么设置删除提示)
http://www.linuxidc.com/Linux/2012-06/61856.htm
rm -rf 可以删除文件夹。
5-1)重命名文件 (也可以是复制文件)
mv 原文件名 新文件名
http://www.linuxidc.com/Linux/2015-01/111116.htm
6)clear:清空命令行
7)mkdir [-p]:创建文件夹,[-p]表示建立多层文件夹。
8)cp:复制文件
复制整个文件夹及文件 :cp -a dir1 dir2
https://blog.csdn.net/kzadmxz/article/details/74923559
https://blog.csdn.net/jiangyongy/article/details/78902966
https://www.cnblogs.com/axon/p/13707766.html
利用{}向前引用快速复制文件
cp users{,.bak},会生成users.bak文件。
10) 创建多级目录
mkdir -p
统计文件个数
wc命令
https://www.cnblogs.com/iloveyouforever/p/4014332.html
https://www.cnblogs.com/hls-code/p/16628825.html
wc -l:用于统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数
- 查看当前文件夹下文件的个数(不包括子文件夹)
ls -l|grep ^-| wc -l
含义:Linux操作系统下查看当前目录内的文件数量(不包含子目录中的文件)(因为目录的权限首字母为d:代表文件夹)
-
查看当前文件夹下文件的个数(包括子文件夹)
ls -lR | grep ^- | wc -l
-
查看某文件夹下文件夹的个数,包括子文件夹里的文件夹
ls -lR | grep ^d | wc -l
二、文件操作
显示
查找
grep的各种用法:http://t.zoukankan.com/fyc119-p-8427340.html
1.根据字符串查找文件
https://blog.csdn.net/lcj_cjfykx/article/details/9003350
示例:比如我要查找在frameworks文件夹下的包含"Running dexopt on"字符串的文件
输入命令: find frameworks -type f -name "*" | xargs grep "Running dexopt on"
搜索结果:
2.查找某个软件的安装位置
whereis xxx
3.列出文件
find 目录 -type f
4.查找并导出文件
https://blog.csdn.net/weixin_33859844/article/details/91937033
- 在文件server.log中查找 'search-string' 并输出到用户目录下的/log/test.log文件中:
grep 'search-string' server.log > ~/log/test.log
如果test.log已存在,输出的内容将会覆盖test.log文件原有的内容
如果test.log不存在,则会创建test.log文件并输出查找到的内容
-
若想实现输出的日志只执行追加操作而不覆盖原有的内容,可以使用 >> 代替 >即可,如下:
grep 'search-string' server.log >> ~/log/test.log
-
同样的原理,tail、head等命令输出的内容也可以使用这样的方式输出到文件中
浏览
- less/more
https://www.cnblogs.com/baichunyu/p/15318988.html
https://www.initroot.com/linuxintroduction/linuxfileviewmoreless.html
计算
-
文件大小
https://m.php.cn/article/472234.html
注意du命令的默认单位是KB,不是字节。 -
md5值
md5sum 文件全路径名
文件权限
r:4 w:2 x(可执行权限):1
chmod 数字 文件 :改变文件的权限
如果文件的群组权限小于用户的权限,如果文件所属用户属于这个群组,那么用户的权限即使比
群组的权限大,也会以群组的权限为准。(比如群组权限不可读,那么用户权限即使可读,也不能读取文件)
chmod +x/-x 文件:为文件的所有属增加/减少权限
chown 用户名 文件: 改变用户所属的用户
chown yangzongde testfile //修改文件拥有者为 yangzongde
chgrp 组名 文件:改变用户所属的组
chmod -R 777:加了-R,文件夹及其下的全部子文件夹的权限都会被修改。
文件复制
https://www.cnblogs.com/ysuwangqiang/p/11364529.html
-d :若来源档为连结档的属性(link file),则复制连结档属性而非文件本身
查看文件详情
ll指令(ls -l)
ls默认是不显示隐藏文件的(以.开头的文件),也不显示.
与 ..
。
https://blog.csdn.net/u013250861/article/details/126669224
-s
https://blog.csdn.net/jamex/article/details/7705254
默认以block显示文件大小,会多显示一行total,所以与wc结合使用时要注意。
ls -lt
l:详解,t:按时间排序
文件名*:*
号表示这个文件是可执行文件
- 查询链接文件
ls -l | grep "^l"
删除隐藏文件
使用命令: rm -rf * 这个命令可以删除看得见的文件及其自文件,但是隐藏的文件却删除不掉。
得使用命令: rm -rf .* 这个命令,就可以删除掉隐藏的文件,但是,.和..这2个文件是删除不了的。
rm 和ls grep的结合使用:https://blog.csdn.net/weixin_46021869/article/details/125970636
rm -rf ls | grep abc
查看文件大小
https://blog.csdn.net/oqqHuTu12345678/article/details/125556409
ls、du、wc、stat
空格分隔:
rtspLogSize=$(du -b /opt/bmclive/rtsp.log |cut -d " " -f 1
TAB制表符分隔:
rtspLogSize=$(du -b /opt/bmclive/rtsp.log | cut -f 1)
其中wc -c filename
是查看文件内容的字节大小
查看可执行文件
https://baijiahao.baidu.com/s?id=1752520808745528831&wfr=spider&for=pc
- nm
http://www.ppmy.cn/news/20208.html
https://zhuanlan.zhihu.com/p/501339114
https://blog.csdn.net/qq_36393978/article/details/124104635
nm 可执行文件
:可查看文件中的符号,包括全局变量,全局函数等。一般可用来查看库文件。
查看某个so库中是否有某个函数的定义:nm -D libnucs.so(库名) | grep SDF_ExchangeDigitEnvelopeBaseOnRSA(函数名)
dd指令(读取转换输出文件)
https://www.runoob.com/linux/linux-comm-dd.html
https://blog.csdn.net/qingzhuyuxian/article/details/83058503
lsof(可看打开的文件)
echo(输出到文件)
- 输出变量丢失换行符
https://blog.csdn.net/kodeyang/article/details/12883579
输出变量应使用命令echo "${foo}"
在写shell的时候,可能出现的一种情况就是:echo $foo到file之后,在本shell cat这个文件,显示的内容不全,但是vim是正常的,新开一个shell cat也正常。
Linux系统中文件行末尾出现^M的原因及解决办法
在开发过程中,有时候Linux系统中文件行末尾出现^M,对于不同系统,有不同的换行符号:
在windows下的文本文件的每一行结尾,都有一个回车(’\n’)和换行(’\r’)
在linux下的文本文件的每一行结尾,只有一个回车(’\n’);
在Mac下的文本文件的每一行结尾,只有一个换行(’\r’);
因此:^M出现的原因: 在linux下打开windows编辑过的文件,就会在行末尾显示^M;
对此的解决办法就是通过字符替换,将^M换掉,具体方法如下:
利用vim打开文件,然后输入vim 命令 %s/^M$//g,进行全文件查找替换。
注意:^ 使用ctrl+v 来输入,M使用ctrl+m来输入
文件合并
# 将file1.txt和file2.txt合并到file.txt
$ cat file1.txt file2.txt > file.txt
方法二:只使用cat命令读入一个文件,然后使用>>将文本流追加到另一个文件的末位。
用法示例:
# 将file1.txt追加到file2.txt的末尾
$ cat file1.txt >> file2.txt
统计文件的行数
https://blog.csdn.net/BaiXuePrincess/article/details/127651930
awk '{print NR}' ./code.txt |tail -n 1
文件裁剪
文本过滤然后重定向到新文件
1.删除文件前几行或者后几行
https://www.cnblogs.com/1394htw/p/14852207.html
2.文件截断(truncate)
https://blog.csdn.net/mrhjlong/article/details/134710951
# 从前往后截取5个字节
$ truncate -s 5 test_truncate
$ hexdump -C test_truncate
00000000 31 32 33 34 35
3.保留文件的后几行
只留最后100行 tail -n 100 original.txt > newfile.txt
使用rm删除文件时,排除某一个或多个文件(适用于文件夹)
https://blog.csdn.net/qq_50247813/article/details/133761034
rm -rf * #删除所有文件
rm -rf !(1.txt) #删除所有文件,但是排除1.txt
rm -rf !(1.txt|2.txt) # 删除所有文件,但是排除1.txt和2.txt
创建大文件
https://blog.csdn.net/qq_48811377/article/details/132232950
- fallocate
https://www.cnblogs.com/sunbines/p/17622622.html
fallocate -l 1G test.img
(-l 文件大小,比如1K)
查看文件基本名称
basename命令
https://blog.csdn.net/weixin_40734030/article/details/122674137
三、文件监控inotify
https://www.cnblogs.com/abc1234567/p/14191210.html
支持文件夹递归监听
安装
- ubuntu安装
apt install inotify-tools
示例:
root@xinyi-virtual-machine:/home/xinyi/test# inotifywait -mrq --timefmt "%F" --format "%T %w%f 事件信息:%e" /home/xinyi/test
- android平台
android平台叫做inotifyd命令
inotifyd - /sys/fs/cgroup
API接口
https://blog.csdn.net/zhanglei_admin/article/details/97636301
0 条评论