0%

Linux文件和目录总结

目录分类

/usr 系统软件资源目录
/bin /usr/bin 系统命令,所有用户可执行
/sbin /usr/sbin 系统命令,仅root可执行
/boot 系统启动数据
/etc 系统默认配置文件
/dev 硬件设备文件
/lib 系统功能函数库,so文件
/sys /proc 内存挂载点,直接写入内存,不能动
/var 系统可变文档目录

目录操作

1
2
3
4
5
6
7
8
9
10
cd    # 等同于 cd ~ 回家
cd - # 上次目录
ls -lh # --long --human人性化显示大小 -i查看文件inode号
ll # ls -l
pwd # print working dir
mkdir -p xxxx # -p 递归创建
rm -r xxxx #删除目录
cp -r src dst # -r复制目录 -p同时复制文件属性(如修改时间) -d若为链接文件,则复制链接属性
cp -a src dst # --all相当于 cp -rpd
mv src dst #剪切文件和目录,重命名 目录不需要-r

链接文件

  • 硬链接 文件索引表中拥有相同的inode号和存储block块,看做同一个文件
    创建后文件引用计数加1
    不能跨分区创建硬链接;目录不能创建硬链接.
    有限制,易混淆,平时不建议用
  • 软链接自己的inode号和block块,但数据块中只保存原文件的文件名和inode号
    类似win快捷方式,删除原文件,软链接不可用
    block中文件名(路径)和inode号都符合才找得到
    软链接文件权限都为rwxrwxrwx,是否可以访问要看原文件的权限
1
ln -s src dis  # link  -s 软链接  src要写绝对路径!除非src和dst在同一目录

文件搜索

locate 文件名

速度快,在数据库(索引)中按文件名查找文件,数据库在/var/lib/mlocate一般一天一更新,updatedb立即更新.
搜索时的排除项(不搜索的内容)配置在/etc/updatedb.conf,如

1
2
3
4
PRUNE_BIND_MOUNTS="yes"
# PRUNENAMES=".git .bzr .hg .svn"
PRUNEPATHS="/tmp /var/spool /media /home/.ecryptfs /var/lib/schroot"
PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre tmpfs usbfs udf fuse.glusterfs fuse.sshfs curlftpfs ecryptfs fusesmb devtmpfs"

whereis 命令名

搜索(外部)命令,配置及其帮助文档所在位置,-b仅可执行文件,-m仅帮助文档.
有些命令找不到,如cd,因为它是shell的内置命令.

1
2
whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz

which 命令名

类似whereis,搜索(外部)命令所在位置及其别名.

echo $PATH

PATH环境变量定义的是系统搜索路径.

find [范围] [选项]

功能非常强大,可能较慢.
find / -name 文件名
文件名需完全匹配,部分匹配用通配符:

符号 意义
* 匹配任意字符
? 匹配任意一个字符
[ ] 匹配任意一个中括号内的字符

find / -iname 文件名 不区分大小写
find / -user 用户名 查找某用户的文件
find / -nouser 查找没有所有者的文件,比如内核创建的文件,外来文件等
find /var/log/ -mtime +10查找10天前修改的文件,一般是日志文件.单位也支持分钟.

参数 说明 参数 说明
-atime 文件访问时间 -10 10天内
-ctime 文件属性修改时间 10 第10天
-mtime 文件修改时间 +10 10天前

find . -size 25k
查找当前目录下大小为25k的文件
注意大小写:

参数 说明 参数 说明
-25k 小于25kb -4M 小于4Mb
25k 等于25kb 4M 等于4Mb
+25k 大于25kb +4M 大于4Mb

find /root -inum 25225
查找inode节点为25225的文件
find /etc -size +20k -a -size -50k
多条件查询,在/etc下找大于20kb小于50kb的文件,-a(and) -o(or)
find /etc -size +20k -a -size -50k -exec ls -lh {} \;
显示查找结果的详细信息,多执行了ls -lh
对find结果执行操作:-exec/-ok 增加的命令 {} \ ;

grep [选项] "字符串" 文件名

在文件当中包含匹配符合条件的,是部分匹配, -i忽略大小写 -v 排除指定字符串