### Linux文件与目录管理 ---------- 绝对路径: / 相对路径:不以/开头的 当前目录 . 上一个工作目录 - 用户主目录 ~ root账户的主目录是/root 其他用户是/home/账户名 cd ~leyi 切换到leyi账户的主目录,即/home/leyi pwd 显示当前目录 mkdir -p 111/222 创建多级目录 -p 参数 rmdir -p 111/222 当删除了222后111是空目录则222也会被删除 rmdir 仅能删除空目录 **ls 常用命令 ** -a 全部 -d 目录 -l 长数据串输出(包含权限和属性) ls -l 的别名(alias) ll 蓝色是目录 白色是一般文件 **cp 复制文件或目录 ** -i 覆盖时询问(y/n) -r 递归复制 -p 复制文件连权限 用户 时间 一起复制 (备份时常用) -a 相当于 -d -p -r -d如果源文件是链接文件复制链接文件而非文件本身 -s 创建软了链接(或者叫符号链接) -l hard link(硬链接或者叫实体链接) **硬链接文件和源文件一样,软链接相当于一个快捷方式 ** echo '1234'>1.txt cp 1.txt ./s_link -s //软连接 cp 1.txt ./h_link -l //硬链接 **rm 删除文件或目录 ** -i 默认会提示 -r 递归删除 -f 强制删除 rm h* -rf 删除h开头的的文件 *为任意多个字符 **mv 移动文件和目录或者更改名字 ** mv 1.txt 2.txt 改名 mv 1.txt d 将1.txt移动到d目录 mv 1.txt 2.txt d 如果有多个来源文件或目录 则最后一个为目标目录 **basename(文件名) 和 dirname(目录名)** mkdir 11/22/33/44.txt -p basename 11/22/33/44.txt 返回 44.txt dirname 11/22/33/44.txt 返回 11/22/33 **文件内容查看 ** cat 从文件第一行开始显示内容 tac 从最后一行开始显示内容,反着显示 (cat反着写) more 一页一页的显示 more /etc/sudo.conf less more的功能+可以翻页 less /etc/sudo.conf enter或者space 翻页 q 退出查看 :f 查看当前行号和文件大小 /向下搜索的内容 可以搜索关键字 ?向上搜索关键字 pageDown pageUp Home End head 只看头几行 -n 自定义查看前多少行 head /etc/sudo.conf -n 5 查看前5行的数据 head /etc/sudo.conf -n -5 查看除了末尾5行的前面的所有数据 tail 只看尾几行 tail /etc/sudo.conf -n 5 查看后5行 通过管道符取5到10行 head /etc/sudo.conf -n 10 | tail -n 5 od -t a(ASCALL码输出) 非文本文件查看 od -t a /usr/bin/passwd **修改文件时间和创建文件 ** date 查看当前时间 mtime (modify time) 文件内容变更后的时间 ll默认显示这个时间 ll --time=mtime ??? 报错 ll 11.txt 就是显示的mtime ctime (change time) 权限等更新后的时间 ll --time=ctime atime (access time ) 文件被读取后的时间 (最后访问时间) ll --time=atime 修改文件的内容后 mtime更新 ctime也改变了 mtime不更新 ll echo '123'>11.txt ll 修改权限后 ctime更新 mtime atime 不更新 ll --time=ctime 11.txt chmod 777 11.txt ll --time=ctime 11.txt 读取后 atime更新 ctime mtime 不更新 11 --time=atime 11.txt cat 11.txt 11 --time=atime 11.txt **; 分号可以分割指令,一次写多个指令执行 ** ll;touch 1.txt;ll **touch 修改文件时间(只能修改mtime atime,不能修改ctime)或创建新文件 ** touch 11.txt 更新文件的所有时间 (mtime ctime atime) touch -d '20180615' 11.txt ll //mtime ll --time=atime 11.txt //atime ll --time=ctime 11.txt //ctime -c 修改 ctime -m 修改 mtime -t -d 都是修改日期或者时间 touch -t 201806151430 11.txt **root账户把自己主目录的11.txt复制到leyi的主目录,除了leyi其他用户不能写** cp ~/11.txt ~leyi chown leyi.leyi ~leyi/11.txt chmod go-x ~leyi/11.txt 或者 chmod 755 ~leyi/11.txt ll ~leyi **文件和目录的默认权限 umask 0022 4位数 只看后三位** 数字代表被拿掉的权限 比如0022 代表被g拿掉了w o拿掉了w umask -S 可以看到 u=rwx,g=rx,o=rx **文件的特殊属性(隐藏属性) ** chattr 只能在传统的ext2-4文件系统上使用 chattr [-+=] 减少 增加 设置 某个属性 chattr +i 11.txt 设置不能被改名删除修改文件,不能动的意思 (只有root账户可用) chattr +a dir11 只能新增文件,不能删除修改文件 (只有root账户可用) lsattr 显示特殊属性 -a 隐藏文件的也显示 -d 显示目录 -R 包含目录里的文件 **查看文件类型** file 11.txt ASCLL 文本 **可执行程序文件名搜索** 两次tab 可以查看有多少命令可以用(全部的可执行程序) which 需要查找的可执行程序名字 根据PATH定义的路径去寻找可执行文件 which ls;which cd; which -a ls -a //查找全部 **文件文件名搜索 ** whereis 特定目录中寻找文件文件名 -l 指定搜索的目录 -b 找binary二进制格式文件 whereis 11.txt **find 硬盘搜索(比较慢) ** +n -n n 这里有点绕... find . -mtime 0 从现在时间开始到24小时之前 -mtime n天之前的一天之内的被改动过的文件名(0 今天 1 昨天) -mtime +n n天不含n之前被改动的内容(大于n天之前的,+0 昨天,+1前天) -mtime -n n天之内包含n天在内的被改动的文件名(-1 几天的) -user 用户名 查找某个用户的 find ~leyi -user leyi -group 查找某个群组的 find ~leyi -group leyi -nouser 没有用户的文件 -nogroup 没有群组存在的文件 -name xx 查找文件名为xx的文件 find ~leyi . -name *leyi* 查找文件名包含 leyi的文件 -size [+-] c:byte k:1kb 查找符合指定文件大小的文件 find . -size +10k 查找大于10k的文件