Linux 文件管理
2016-11-04 19:00
148 查看
一、Linux目录结构
Windows: 以多根的方式组织文件 C:\ D:\ E:\
Linux: 以单根的方式组织文件 /
目录结构
/bin 普通用户使用的命令 /bin/ls, /bin/date
/sbin 管理员使用的命令
/dev 设备文件 /dev/sda,/dev/tty1,dev/tty2,/dev/pts/1
/root root用户的HOME
/home 存储普通用户家目录
/lost+found 孤儿文件
/proc 虚拟的文件系统,反映出来的是内核,进程信息或实时状态
/usr 系统文件,相当于C:\Windows
/usr/local 软件安装的目录,相当于C:\Program
/usr/bin 普通用户使用的应用程序
/usr/sbin 管理员使用的应用程序
/usr/lib 库文件Glibc
/usr/lib64 库文件Glibc
/boot 存放的系统启动相关的文件,例如kernel,grub(引导装载程序)
/etc 配置文件(系统相关如网络/etc/sysconfig/network,应用相关配置文件...)
/lib 库文件Glibc
/lib64 库文件Glibc
/tmp 临时文件(主要是程序产生的临时文件)
/var 存放的是一些变化文件,比如数据库,日志,邮件....
/media 移动设备默认的挂载点
/mnt 手工挂载设备的挂载点
/misc automount进程挂载
/net automount进程挂载
文件时间
[root@dan ~]# ls -l a.txt #仅看的是文件的修改时间
Linux文件有三种时间
[root@dan ~]# stat a.txt #查看文件的详细属性
访问时间:atime,查看文件内容
修改时间:mtime,修改文件内容
改变时间:ctime,文件 属性,比如权限
[root@dan ~]# ls -l install.log
-rw-r--r-- 1 root root 34793 10-23 13:49 install.log
[root@dan ~]# stat a.txt
File: ‘a.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 208019488 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-10-24 14:41:00.101023039 +0800
Modify: 2016-10-24 14:41:00.101023039 +0800
Change: 2016-10-24 14:41:00.101023039 +0800
Birth: -
文件类型
通过颜色判断文件的类型是错误的!!!
Linux文件是没有扩展名!!!
方法一
[root@dan ~]# ls -l #看第一个字符
- 普通文件(文本文件,二进制文件,压缩文件,电影,图片。。。)
d 目录文件(蓝色)
b 设备文件(块设备)存储设备硬盘,U盘
c 设备文件(字符设备)打印机,终端/dev/tty1
s 套接字文件
p 管道文件
l 链接文件(淡蓝色)
方法二:file
[root@dan ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII English text
[root@dan ~]# file /bin/ls
[root@dan ~]# file /home
[root@dan ~]# file /dev/sda
/dev/sda: block special#块设备
[root@dan ~]# file /etc/grub.conf
/etc/grub.conf: symbolic link to `../boot/grub/grub.conf#符号连接
[root@dan ~]# file /dev/tty1
/dev/tty1: character special (4/1)#字符设备
[root@dan ~]# file /dev/initctl
/dev/initctl: fifo (named pipe)#管道
[root@dan ~]# file /dev/log
/dev/log: socket#套接字
路径 (定位文件)
绝对路径: 从/开头的路径
/home ~alice
相对路径: 相对于当前目录开始 . ..
. #当前目录
.. #上一级目录
~ #当前用户的家目录
改变目录
[root@dan ~]# cd /home/alice
[root@dan ~]# cd ~alice
[root@dan ~]# cd Desktop/abc
[root@dan ~]# cd .. #到上一级目录
[root@dan ~]# cd - #返回上次目录
[root@dan ~]# cd #直接回家
创建文件
[root@dan ~]# touch file1.txt #无则创建,有则修改时间
[root@dan ~]# touch file3 file4
[root@dan ~]# touch /home/file10.txt
[root@dan ~]# touch file_{1..20} #创建文件file_1~file_20
[root@dan ~]# touch file_{a..c}
[root@dan ~]# touch file_{a,b} #{}集合,等价touch file_a file_b
操作目录
[root@dan ~]# mkdir dir1 #创建目录
[root@dan ~]# mkdir /home/dir2 /home/dir3 #一起创建两个目录
[root@dan ~]# mkdir /home/{dir4,dir5} #同上
[root@dan ~]# mkdir -v /home/{dir6,dir7} #-v显示详细
[root@dan ~]# mkdir -p /home/dir8/111/222#-p包括其父目录的创建
文件的复制
[root@dan ~]# cp -v install.log /home/dir1 #-v显示详细,把文件复制到指定目录下
[root@dan ~]# cp -v install.log /home/dir1/yang.txt#复制并改名
[root@dan ~]# cp -rv /etc /home/dir1 #-r递归复制
[root@dan ~]# cp -v install.log /home/dir2
[root@dan ~]# cp -v anaconda-ks.cfg !$
[root@dan ~]# cp -rv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/passwd /etc/grub.conf /home/dir2#把前3个复制到最后一个目录下
[root@dan ~]# cp -rv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/passwd /etc/grub.conf /etc/hosts.
[root@dan ~]# \cp -r /etc /tmp#\去别名
文件的移动
[root@dan ~]# mv file1 /home/dir3 #将file2移动到/home/dir3
[root@dan ~]# mv file2 /home/dir3/file20 #将file2移动到/home/dir3,并改名为file20
[root@dan ~]# mv file4 file5 #将file4重命名为file5,当前位置的移动就是重命名
删除文件
[root@dan ~]# rm -rf dir1
-r 递归
-f force强制
-v 详细过程
cat查看文件
-n 显示行号
-A 包括控制字符(换行符)
linux的换行符是 $
Windows的换行符是 ^M$
扩展知识:
dos2unix 将Windows格式的文件转换成Unix格式
unix2dos 将Unix格式的文件转换成Windows格式
例如
[root@dan ~]# unix2dos file1
[root@dan ~]# dos2unix file2
less,more,head,tail查看文件
[root@dan ~]# head /etc/passwd #查看文件的前10行
[root@dan ~]# head -2 /etc/passwd #查看文件的前两行
[root@dan ~]# tail /etc/passwd #查看文件的最后10行
[root@dan ~]# tail -1 /etc/passwd #查看文件的最后一行
[root@dan ~]# tail -f /var/log/secure#-f 动态查看文件的尾部
grep针对文件内容进行过滤
[root@dan ~]# grep 'root' /etc/passwd #只显示文件中带root的行
[root@dan ~]# grep --color 'root' /etc/passwd
#--color高亮显示匹配的部分
[root@dan ~]# grep --color '^root' /etc/passwd
#^以什么开头
[root@dan ~]# grep --color 'bash$' /etc/passwd
#$以什么结尾
查看二进制文件
[root@dan ~]# strings /bin/ls
vim的使用
光标定位:
↑↓←→ 上下左右
0 光标移动到行首
$ 光标移动到行尾
gg 光标移动到第一行
G 光标移动到最后一行
3G 光标移动到第三行
文本编辑
yy 复制
3yy 复制3行
ygg 从当前行复制到第一行
yG 从当前行复制到最后一行
dd 删除一行
3dd 删除3行
dgg 从当前行删除到第一行
dG 从当前行删除到第最后一行
p 粘贴
x 删除光标所在的字符
D 从光标处删除到行尾
u undo撤销
Ctrl+r redo重做
r 可以用来修改一个字符
进入其它模式
a 在下一个字符进入插入模式
i 进入插入模式
o 在下一行进入插入模式
A 在行尾进入插入模式
: 进入末行模式(扩展命令模式)
Ctrl+v 进入可视块模式
R 进入替换模式
插入模式
Ctrl+p 唯一补齐
末行模式
:10 进入第10行
:w 保存
:q 退出
:wq 保存并退出
:w! 强制保存
:q! 不保存并退出
:wq! 强制保存退出
:x 保存并退出
查找替换
:1,5 s/root/yang/ #1~5行的root替换为yang
:5,$ s/root/yang/ #$表示最后一行
:1,$ s/root/yang/g #g表示全局
:% s/root/yang/g #%表示所有行
:4,9 s/^#// #4-9行的开头#替换为空
:% s#/dev/sda#/var/ccc#g#用#替换/使用
:,8 s/root/yang/ #从当前行到第8行
读入文件/写文件
:w #存储到当前文件
:w /aaa.txt #另存为/aaa.txt
:1,3 w/2.txt #1~3行另存为
:r /etc/hosts #读入文件到当前行后
:5 r /etc/hosts #读入文件到第5行后
临时设置环境
:set nu 设置行号
:set ic 不区分大小写
:set ai 自动缩进
:set list 显示控制字符
:set nonu
取消设置行号
:set noic
:set fileencoding 查看文件编码
:set fileencoding=utf-8 修改文件编码
永久的环境
/etc/vimrc 影响所有系统用户
~/.vimrc 影响
9c7b
某一个用户
[root@dan ~]# vim ~/.vimrc
set ic
set nu
[root@dan ~]# vim -O /etc/hosts /boot/grub/grub.conf#按两次Ctrl+w切换
[root@dan ~]# vimdiff grub.conf /boot/grub/grub.conf#对比文件,按两次Ctrl+w 切换
[root@dan ~]# vim -p /etc/hosts /boot/grub/grub.conf
Windows: 以多根的方式组织文件 C:\ D:\ E:\
Linux: 以单根的方式组织文件 /
目录结构
/bin 普通用户使用的命令 /bin/ls, /bin/date
/sbin 管理员使用的命令
/dev 设备文件 /dev/sda,/dev/tty1,dev/tty2,/dev/pts/1
/root root用户的HOME
/home 存储普通用户家目录
/lost+found 孤儿文件
/proc 虚拟的文件系统,反映出来的是内核,进程信息或实时状态
/usr 系统文件,相当于C:\Windows
/usr/local 软件安装的目录,相当于C:\Program
/usr/bin 普通用户使用的应用程序
/usr/sbin 管理员使用的应用程序
/usr/lib 库文件Glibc
/usr/lib64 库文件Glibc
/boot 存放的系统启动相关的文件,例如kernel,grub(引导装载程序)
/etc 配置文件(系统相关如网络/etc/sysconfig/network,应用相关配置文件...)
/lib 库文件Glibc
/lib64 库文件Glibc
/tmp 临时文件(主要是程序产生的临时文件)
/var 存放的是一些变化文件,比如数据库,日志,邮件....
/media 移动设备默认的挂载点
/mnt 手工挂载设备的挂载点
/misc automount进程挂载
/net automount进程挂载
文件时间
[root@dan ~]# ls -l a.txt #仅看的是文件的修改时间
Linux文件有三种时间
[root@dan ~]# stat a.txt #查看文件的详细属性
访问时间:atime,查看文件内容
修改时间:mtime,修改文件内容
改变时间:ctime,文件 属性,比如权限
[root@dan ~]# ls -l install.log
-rw-r--r-- 1 root root 34793 10-23 13:49 install.log
[root@dan ~]# stat a.txt
File: ‘a.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 208019488 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-10-24 14:41:00.101023039 +0800
Modify: 2016-10-24 14:41:00.101023039 +0800
Change: 2016-10-24 14:41:00.101023039 +0800
Birth: -
文件类型
通过颜色判断文件的类型是错误的!!!
Linux文件是没有扩展名!!!
方法一
[root@dan ~]# ls -l #看第一个字符
- 普通文件(文本文件,二进制文件,压缩文件,电影,图片。。。)
d 目录文件(蓝色)
b 设备文件(块设备)存储设备硬盘,U盘
c 设备文件(字符设备)打印机,终端/dev/tty1
s 套接字文件
p 管道文件
l 链接文件(淡蓝色)
方法二:file
[root@dan ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII English text
[root@dan ~]# file /bin/ls
[root@dan ~]# file /home
[root@dan ~]# file /dev/sda
/dev/sda: block special#块设备
[root@dan ~]# file /etc/grub.conf
/etc/grub.conf: symbolic link to `../boot/grub/grub.conf#符号连接
[root@dan ~]# file /dev/tty1
/dev/tty1: character special (4/1)#字符设备
[root@dan ~]# file /dev/initctl
/dev/initctl: fifo (named pipe)#管道
[root@dan ~]# file /dev/log
/dev/log: socket#套接字
路径 (定位文件)
绝对路径: 从/开头的路径
/home ~alice
相对路径: 相对于当前目录开始 . ..
. #当前目录
.. #上一级目录
~ #当前用户的家目录
改变目录
[root@dan ~]# cd /home/alice
[root@dan ~]# cd ~alice
[root@dan ~]# cd Desktop/abc
[root@dan ~]# cd .. #到上一级目录
[root@dan ~]# cd - #返回上次目录
[root@dan ~]# cd #直接回家
创建文件
[root@dan ~]# touch file1.txt #无则创建,有则修改时间
[root@dan ~]# touch file3 file4
[root@dan ~]# touch /home/file10.txt
[root@dan ~]# touch file_{1..20} #创建文件file_1~file_20
[root@dan ~]# touch file_{a..c}
[root@dan ~]# touch file_{a,b} #{}集合,等价touch file_a file_b
操作目录
[root@dan ~]# mkdir dir1 #创建目录
[root@dan ~]# mkdir /home/dir2 /home/dir3 #一起创建两个目录
[root@dan ~]# mkdir /home/{dir4,dir5} #同上
[root@dan ~]# mkdir -v /home/{dir6,dir7} #-v显示详细
[root@dan ~]# mkdir -p /home/dir8/111/222#-p包括其父目录的创建
文件的复制
[root@dan ~]# cp -v install.log /home/dir1 #-v显示详细,把文件复制到指定目录下
[root@dan ~]# cp -v install.log /home/dir1/yang.txt#复制并改名
[root@dan ~]# cp -rv /etc /home/dir1 #-r递归复制
[root@dan ~]# cp -v install.log /home/dir2
[root@dan ~]# cp -v anaconda-ks.cfg !$
[root@dan ~]# cp -rv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/passwd /etc/grub.conf /home/dir2#把前3个复制到最后一个目录下
[root@dan ~]# cp -rv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/passwd /etc/grub.conf /etc/hosts.
[root@dan ~]# \cp -r /etc /tmp#\去别名
文件的移动
[root@dan ~]# mv file1 /home/dir3 #将file2移动到/home/dir3
[root@dan ~]# mv file2 /home/dir3/file20 #将file2移动到/home/dir3,并改名为file20
[root@dan ~]# mv file4 file5 #将file4重命名为file5,当前位置的移动就是重命名
删除文件
[root@dan ~]# rm -rf dir1
-r 递归
-f force强制
-v 详细过程
cat查看文件
-n 显示行号
-A 包括控制字符(换行符)
linux的换行符是 $
Windows的换行符是 ^M$
扩展知识:
dos2unix 将Windows格式的文件转换成Unix格式
unix2dos 将Unix格式的文件转换成Windows格式
例如
[root@dan ~]# unix2dos file1
[root@dan ~]# dos2unix file2
less,more,head,tail查看文件
[root@dan ~]# head /etc/passwd #查看文件的前10行
[root@dan ~]# head -2 /etc/passwd #查看文件的前两行
[root@dan ~]# tail /etc/passwd #查看文件的最后10行
[root@dan ~]# tail -1 /etc/passwd #查看文件的最后一行
[root@dan ~]# tail -f /var/log/secure#-f 动态查看文件的尾部
grep针对文件内容进行过滤
[root@dan ~]# grep 'root' /etc/passwd #只显示文件中带root的行
[root@dan ~]# grep --color 'root' /etc/passwd
#--color高亮显示匹配的部分
[root@dan ~]# grep --color '^root' /etc/passwd
#^以什么开头
[root@dan ~]# grep --color 'bash$' /etc/passwd
#$以什么结尾
查看二进制文件
[root@dan ~]# strings /bin/ls
vim的使用
光标定位:
↑↓←→ 上下左右
0 光标移动到行首
$ 光标移动到行尾
gg 光标移动到第一行
G 光标移动到最后一行
3G 光标移动到第三行
文本编辑
yy 复制
3yy 复制3行
ygg 从当前行复制到第一行
yG 从当前行复制到最后一行
dd 删除一行
3dd 删除3行
dgg 从当前行删除到第一行
dG 从当前行删除到第最后一行
p 粘贴
x 删除光标所在的字符
D 从光标处删除到行尾
u undo撤销
Ctrl+r redo重做
r 可以用来修改一个字符
进入其它模式
a 在下一个字符进入插入模式
i 进入插入模式
o 在下一行进入插入模式
A 在行尾进入插入模式
: 进入末行模式(扩展命令模式)
Ctrl+v 进入可视块模式
R 进入替换模式
插入模式
Ctrl+p 唯一补齐
末行模式
:10 进入第10行
:w 保存
:q 退出
:wq 保存并退出
:w! 强制保存
:q! 不保存并退出
:wq! 强制保存退出
:x 保存并退出
查找替换
:1,5 s/root/yang/ #1~5行的root替换为yang
:5,$ s/root/yang/ #$表示最后一行
:1,$ s/root/yang/g #g表示全局
:% s/root/yang/g #%表示所有行
:4,9 s/^#// #4-9行的开头#替换为空
:% s#/dev/sda#/var/ccc#g#用#替换/使用
:,8 s/root/yang/ #从当前行到第8行
读入文件/写文件
:w #存储到当前文件
:w /aaa.txt #另存为/aaa.txt
:1,3 w/2.txt #1~3行另存为
:r /etc/hosts #读入文件到当前行后
:5 r /etc/hosts #读入文件到第5行后
临时设置环境
:set nu 设置行号
:set ic 不区分大小写
:set ai 自动缩进
:set list 显示控制字符
:set nonu
取消设置行号
:set noic
:set fileencoding 查看文件编码
:set fileencoding=utf-8 修改文件编码
永久的环境
/etc/vimrc 影响所有系统用户
~/.vimrc 影响
9c7b
某一个用户
[root@dan ~]# vim ~/.vimrc
set ic
set nu
[root@dan ~]# vim -O /etc/hosts /boot/grub/grub.conf#按两次Ctrl+w切换
[root@dan ~]# vimdiff grub.conf /boot/grub/grub.conf#对比文件,按两次Ctrl+w 切换
[root@dan ~]# vim -p /etc/hosts /boot/grub/grub.conf
相关文章推荐
- Linux用户管理(涉及命令及配置文件)
- Linux 内核的文件 Cache 管理机制介绍
- 文件系统管理 之 在Linux系统中存储设备的两种表示方法
- linux 文件 Cache 管理
- linux 文件 Cache 管理
- Linux 文件管理
- Linux 下的文件管理与文件比较软件: Beesoft Commander 与 BeeDiff
- Linux下文件与目录管理
- linux笔记05(软件包管理和文件的压缩与解压)
- linux文件和目录管理
- 【原创】linux交换空间管理--交换文件
- 管理Linux系统日志文件工具:logrotate简介
- Linux/Unix中的SUID和SGID文件权限和在CVS项目管理中的应用
- 文件系统管理 之 Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍
- linux文件管理
- CTDP linux 程序员手册 (4.8) 一个管理和读文件的例子
- 使用logrotate 管理日志文件 (Linux相关)
- 实时管理Linux内核——使用 /proc 文件系统来控制系统
- Linux 文件和目录管理之列出、删除、复制、移动及改名
- Linux 文件和目录管理之列出、删除、复制、移动及改名