首页 > 代码库 > linux 文件常用操作

linux 文件常用操作

linux 文件基本操作

新建文件:touch test 不会替换重名文件,并且linux一切都是文件,文件夹和文件不能重名

新建文件夹:mkdir test
使用 -p 参数,同时创建父目录(如果不存在该父目录),如下我们同时创建一个多级目录(这在安装软件、配置安装路径时非常有用):
mkdir -p father/son/grandson

复制文件 cp test father/son/grandson
复制文件夹:cp -r father family 必须加参数 -r

删除文件:rm test 如果文件只读,会有提示,加参数-f即可 rm -f test
删除目录:rm -r family

移动文件:mv file1 docments
移动目录:mv dir1 dir2
如果目录dir2不存在,将目录dir1改名为dir2;否则,将dir1移动到dir2中。

重命名:mv file1 newfileName


 

linux 修改文件所有者和权限

修改文件所有者:sudo chown shiyanlou fileName

修改权限:
方法一:chmod 700 fileName 421为权限数
方法二:chmod go-rw fileName
g、o 还有 u 分别表示 group、others 和 user,
+ 和 - 分别表示增加和去掉相应的权限
r w x 读,写,执行 的权限


 

linux 查看文件

使用 cat,tac 和 nl 命令查看文件
cat 为正序显示,tac 为倒序显示。
nl 命令,添加行号并打印,这是个比 cat -n 更专业的行号打印命令。

使用 more 和 less 命令分页查看文件
man 手册内部就是使用的 less 来显示内容。其中 more 命令比较简单,只能向一个方向滚动,而 less 为基于 more 和 vi (一个强大的编辑器,我们有单独的课程来让你学习)开发,功能更强大。

more passwd 会车下一行,sapce下一屏幕 h帮助 q退出
less passwd 处于vi模式

使用 head 和 tail 命令查看文件
只查看文件的头几行(默认为 10 行,不足 10 行则显示全部)和尾几行。
tail /etc/passwd
甚至更直接的只看一行, 加上 -n 参数,后面紧跟行数:
tail -n 1 /etc/passwd

关于 tail 命令,不得不提的还有它一个很牛的参数 -f,这个参数可以实现不停地读取某个文件的内容并显示。这可以让我们动态查看日志,达到实时监视的目的。


linux比较文件差别

$ env|sort>env.txt
$ export|sort>export.txt
$ set|sort>set.txt
上述操作将命令输出通过管道 | 使用 sort 命令排序,再重定向到对象文本文件中。

$ vimdiff env.txt export.txt set.txt


 

linux 查看文件类型

在 Linux 中文件的类型不是根据文件后缀来判断的,我们通常使用 file 命令查看文件的类型:
file /bin/ls


linux搜索文件

whereis,which,find 和 locate

whereis 简单快速
$whereis who

locate 快而全
通过“ /var/lib/mlocate/mlocate.db ”数据库查找,不过这个数据库也不是实时更新的,系统会使用定时任务每天自动执行 updatedb 命令更新一次,所以有时候你刚添加的文件,它可能会找不到,需要手动执行一次 updatedb 命令(在我们的环境中必须先执行一次该命令)。它可以用来查找指定目录下的不同文件类型,如查找 /etc 下所有以 sh 开头的文件:
$ locate /etc/sh
查找 /usr/share/ 下所有 jpg 文件:
$ locate /usr/share/\*.jpg

which 小而精
which 本身是 Shell 内建的一个命令,我们通常使用 which 来确定是否安装了某个指定的软件,因为它只从 PATH 环境变量指定的路径中去搜索命令:
$ which man

find 精而细
find 应该是这几个命令中最强大的了,它不但可以通过文件类型、文件名进行查找而且可以根据文件的属性(如文件的时间戳,文件的权限等)进行搜索。find 命令强大到,要把它讲明白至少需要单独好几节课程才行,我们这里只介绍一些常用的内容。
这条命令表示去 /etc/ 目录下面 ,搜索名字叫做 interfaces 的文件或者目录。这是 find 命令最常见的格式,千万记住 find 的第一个参数是要搜索的地方:
$ sudo find /etc/ -name interfaces


 

linux 文件常用操作