linux文件与目录管理笔记

### 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的文件    

  

原文地址:https://www.cnblogs.com/leyi/p/9184980.html