第四篇:linux之文件管理
一、处理目录
"""mkdir:英文全拼:make directory):创建一个新的目录"""
选项: -v 显示详细信息 -p 递归创建目录
# mkdir dir1
# mkdir /home/yangyi1/dir1 /home/yangyi1/dir2
# mkdir -v /home/yangyi1/{dir3,dir4}
# mkdir -pv /home/yangyi1/dir5/dir6
"""touch:创建一个新文件"""
# touch file # 无则创建,有则修改时间
# touch file2 file3
# touch /home/yangyi1/file4 file5
# touch file{a,b,c} # {}集合,等价 touch filea fileb filec
# touch file{1..10}
# touch file{a..z}
"""rm(英文全拼:remove): 删除文件或目录"""
选项:-r: 递归 -f: 强制删除[不提醒] -v: 详细过程
rm file.txt # 删除文件, 默认rm存在alias别名,为rm -i,所以会提醒是否删除文件
rm -f file.txt # 删除文件, 不提醒
rm -r dir/ # 递归删除目录,会提示
rm -rf dir/ # 强制删除目录,不提醒(慎用)
# 删除示例
mkdir /home/dir10 # 创建dir10的文件夹
touch /home/dir10/{file2,file3,.file4} # 文件夹dir10下创建3个文件
touch file{1..10} # 当前目录下创建file1 - file10的文件
touch {1..10}.pdf # 创建以.pdf结尾的文件
rm -rf file # 强制递归删除文件
rm -f file* # 强制删除以file开头的文件
rm -f *.txt # 强制删除以.txt结尾的文件
"""mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称"""
mv file file1 # 地移动算改名【相当于重命名】
mv file1 /tmp/ # 移动文件至tmp目录 注意:与mv file1 tmp 不一样
mv /tmp/file1 ./ # 移动tmp目录下的file1文件至当前目录下
mv dir/ /tmp/ # 移动dir目录至/tmp目录下
mv file1 file2 file3 /opt/ # 移动多个文件至同一个目录
mv dir1/ dir2/ dir3/ /opt/ # 移动多个目录至同一个目录
"""cp(英文全拼:copy file): 复制文件或目录"""
选项:-v:详细显示命令执行的操作 -r: 递归处理目录与子目录 -p: 保留源文件或目录的属性
cp name /tmp/name1 # 修改名称,将name拷贝到/tmp/文件夹下,同时修改名称为name1
cp file /tmp/ # 不修改名称,将file拷贝到/tmp/文件夹下
cp -p file /tmp/file_p # -p保持原文件或目录的属性
cp -r /etc/ /tmp/ # 复制目录需要使用-r参数, 递归复制
cp -rv /etc/hosts /etc/hostname /tmp/ # 拷贝多个文件至一个目录
"""补充:以树状显示目录结构命令tree"""
yum install tree
tree /home/yangyi1/ # 以树状显示当前目录下的结构
二、文件查看
"""cat:查看文件内容(全拿出来)"""
cat >> file1.txt << EOF # 往文件中追加内容
> yangyi
> is
> so
> handsome
> EOF # 结束符
"""less、more文本查看,分页"""
less /etc/services # 使用光标上下翻动,空格进行翻页,q退出
more /etc/services # 使用回车上下翻动,空格进行翻页,q退出(有百分比)
"""head"""
head /etc/services # 查看头部内容,默认前10行
head -n5 /etc/services # 查看头部前5行,使用-n进行指定即可
ps aux | head -n5 # 查看前5个进程【|管道符,将前面的结果显示给后面】
"""tail"""
tail /etc/services # 查看尾部内容,默认后10行
tail -n20 /etc/services # 查看文件尾部20行
tail -f /var/log/messages # 动态查看文件尾部变化【一般看日志】
ps aux | tail -n2 # 查看后2个进程
"""grep:过滤文件内容"""
grep "yangyi" file.txt # 查找文件中有yangyi的行
ps aux | grep ssh # 一般和'|'联合使用,进行过滤,查看sshd进行是否运行
grep "^root" file.txt # 查看文件中以root开头的行
grep "root$" file.txt # 查看文件中以root结尾的行
grep -i "root" file.txt # 忽略大小写匹配
grep "sync$|ftp" file.txt # 匹配文件中包含sync结尾或ftp的字符串
"""上翻、下翻"""
ctrl+b: 下翻
crtl+f: 上翻
三、文件相关
"""wget:下载"""
yum install wget # 安装wget
wget 资源路径 # 默认下载到当前路径下
wget -O /home/a.jpg https://img2020.cnblogs.com/blog/111.png # 默认下载到指定路径下
"""curl:测试连通性,浏览网上资源,-o保存到本地"""
curl www.baidu.com
选项: -o 执行下载地址
curl -o /home/a.jpg https://img2020.cnblogs.com/blog/111.png # 把curl的资源保存到文件中去
"""上传下载"""
yum install lrzsz # 安装lrzsz
rz # 进行上传,弹出框,上传到当前目录下(不能大于4g)
sz a.png # 下载文件,下载到当前主机
"""which: 查看命令的绝对路径"""
which ls # 查看ls的绝对路径【which后面跟路径,在/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin找】
alias ls='ls --color=auto'
/usr/bin/ls
"""whereis:查找文件的路径,帮助手册等"""
whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
whereis -b ls # 查找ls命令,只找二进制(可执行文件)
ls: /usr/bin/ls
"""sort:排序"""
sort 文件名 # 按照第一部分【开头】进行排序
sort -t ":" -k2 file.txt # 【it指定以什么分隔,-k2第二部分,但是排序有误】
sort -t ":" -n -k2 file.txt # 【-n指定以数字进行排序】
"""uniq:去重【必须连续的数据才可以,所以一般要和sort连用】"""
sort file.txt | uniq
"""cut:截取字符"""
echo "my name is yangyi, and my age is 18." > file1.txt # 将内容写入文件
cut -d " " -f2,4 file1.txt # 把字符串按" "进行分割,取出第2和第4个
name yangyi,
"""wc:统计行号"""
选项: -l 显示文件行数 -c 显示文件字节 -w 显示文件单词
wc -l /etc/services # 统计文件中有多少行
ls | wc -l # 统计当前路径下有多少文件和文件夹
ps aux |grep ssh | wc -l # 统计有多少个ssh相关的进程
"""查看磁盘空间大小"""
du -sh # 查看当前目录的大小
du -sh [目录名]:返回该目录的大小
du -sm [文件夹]:返回该文件夹总M数
du -h [目录名]:查看指定文件夹下的所有文件大小(包含子文件夹)
df -h:查看每个根路径的分区大小
du log2012.log # 显示指定文件所占空间
df -hl:查看磁盘剩余空间
df -h命令来查看磁盘信息, -h 选项为根据大小适当显示
四、文件属性
ls -l # 可以查看文献属性详细信息 【ls -lh以人性化显示,kb、gb等】
-rw-r--r--. 1 root root 22 Aug 4 12:55 file1.txt
"""含义"""
-: 文件类型
rw-r--r--: 权限
1: 硬链接的次数
root: 属主(属于哪个用户)
root: 属组(属于哪个组)
22: 文件大小
Aug 4 12:55: 修改时间
file1.txt: 文件名
五、文件类型
- # 普通文件(文本, 二进制, 压缩, 图片, 日志等)
d # 目录文件
b # 设备文件(块设备)存储设备硬盘 /dev/sda1, /dev/sda2
c # 设备文件(字符设备),终端 /dev/tty1, /dev/zero
s # 套接字文件, 进程间通信(socket)
p # 管道文件
l # 链接文件
"""通过file来查看更加详细的信息"""
file file1.txt
file1.txt: ASCII text
六、系统链接文件
"""软连接和硬链接区别"""
软链接新建inode,硬链接指向同一个inode
ln命令创建硬链接,ln -s命令创建软链接
目录不能创建硬链接,并且硬链接不可以跨越分区系统
目录软链接特别常用,并且软连接支持跨越分区系统
硬链接文件与源文件的inode相同,软连接文件与源文件inode不同
删除软连接文件,对源文件及链接文件无任何影响
删除文件的硬链接文件,对源文件及链接文件无任何影响
删除链接文件的源文件,对硬链接无影响,会导致软连接失效
删除源文件及其硬链接文件,真个文件会被真正的删除
"""建立软链接【类似于windows的快捷方式】"""
ln -s a.png /home/yangyi1/a.png # 将当前目录下的a.png发送软链接到/home/yangyi1/目录下
一般是对可执行文件建立软链接(删除不会软链接,并不会删除原来)
比如:
"""建立硬链接"""
ln /root/file /tmp/file_hard # 直接建立即可