目录分类
/usr
系统软件资源目录
/bin /usr/bin
系统命令,所有用户可执行
/sbin /usr/sbin
系统命令,仅root可执行
/boot
系统启动数据
/etc
系统默认配置文件
/dev
硬件设备文件
/lib
系统功能函数库,so文件
/sys /proc
内存挂载点,直接写入内存,不能动
/var
系统可变文档目录
目录操作
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,是否可以访问要看原文件的权限
ln -s src dis # link -s 软链接 src要写绝对路径!除非src和dst在同一目录
文件搜索
locate 文件名
速度快,在数据库(索引)中按文件名查找文件,数据库在/var/lib/mlocate
一般一天一更新,updatedb
立即更新.
搜索时的排除项(不搜索的内容)配置在/etc/updatedb.conf
,如
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的内置命令.
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 排除指定字符串