文件管理
1.Linux目录结构
1.1 WINDOWS/LINUX 对比
Windows: 以多根的方式组织文件 C:\ D:\ E:\Linux: 以单根的方式组织文件 /
1.2 简介
[root@GZ ~]# ls /
bin dev lib media net root srv usr
boot etc lib64 misc opt sbin sys var
cgroup home lost+found mnt proc selinux tmp
1.3 图示
1.4 目录功能
bin 普通用户使用的命令 /bin/ls, /bin/datesbin 管理员使用的命令 /sbin/service dev 设备文件 /dev/sda,/dev/sda1root root用户的HOMEhome 存储普通用户家目录 lost+found fsck修复时,存储没有链接的文件或目录proc 虚拟的文件系统,反映出来的是内核,进程信息或实时状态
usr 系统文件,相当于C:\Windows/usr/local 软件安装的目录,相当于C:\Program
boot 存放的系统启动相关的文件,例如kernel,grub(引导装载程序)etc 配置文件(系统相关如网络/etc/sysconfig/network)
lib 库文件Glibclib64 库文件Glibc
tmp 临时文件(全局可写:进程产生的临时文件) var 存放的是一些变化文件,比如数据库,日志,邮件....
==设备(主要指存储设备)挂载目录==
media 移动设备默认的挂载点mnt 手工挂载设备的挂载点
2.文件管理
2.1 文件类型(理解)
普通文件(文本文件,二进制文件,压缩文件,电影,图片。。。)
d 目录文件(蓝色)
b 设备文件(块设备)存储设备硬盘,U盘 /dev/sda, /dev/sda1
c 设备文件(字符设备)打印机,终端 /dev/tty1
l 链接文件(淡蓝色)
s 套接字文件
p 管道文件
2.2示例1
查看各式各样的文件类型。你能找出几种呢?
[root@GZ ~]# ll -d /etc/hosts /bin/ls /home /dev/sda /dev/tty1 /etc/grub2.cfg /dev/log /run/dmeventd-client
-rwxr-xr-x. 1 root root 117616 Nov 20 2015 /bin/ls
srw-rw-rw- 1 root root 0 Mar 14 2017 /dev/log
brw-rw---- 1 root disk 8, 0 Mar 14 09:03 /dev/sda
crw--w---- 1 root tty 4, 1 Mar 14 09:03 /dev/tty1
lrwxrwxrwx. 1 root root 22 Dec 21 01:40 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
-rw-r--r-- 1 root root 392 Feb 22 15:51 /etc/hosts
drwxr-xr-x. 10 root root 4096 Mar 14 11:00 /home
2.3 示例2
[root@GZ ~]$ file /etc/hosts
/etc/hosts: ASCII text
root@GZ ~]$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=aa7ff68f13de25936a098016243ce57c3c982e06, stripped
[root@GZ ~]$ file /dev/sda
/dev/sda: block special
[root@GZ ~]$ file /dev/tty1
/dev/tty1: character special
[root@GZ ~]$ file /etc/grub2.cfg
/etc/grub2.cfg: broken symbolic link to `../boot/grub2/grub.cfg'
[root@GZ ~]$ file /home
/home: directory
[root@GZ ~]$ file /run/dmeventd-client
/run/dmeventd-client: fifo (named pipe)
注意
通过颜色判断文件的类型是不一定正确的!!!Linux系统中文件是没有扩展名!!!
3.文件管理命令
3.1 改变目录
cd 绝对路径 cd /home/alice
cd 相对路径 cd . ..
cd 专用:
cd - 返回上次目录
cd 直接回家
pwd 查询当前目录
ls -l =ll 打开文件
ll 查询当前目录下的文件 ll/查询根目录所有文件
2.2 创建文件
touch file1.txt //无则创建,有则修改时间
touch file3 file4
touch /home/file10.txt
touch /home/file5 file6
touch /home/{zhuzhu,gougou}
touch file{1..20}
touch file{a..c}
touch yang{a,b,c} //{}集合,等价touch yanga yangb yangc
2.3 创建目录
语法:mkdir -v 详细 -p 递归 目录
mkdir dir1
mkdir /home/dir2 /home/dir3
mkdir /home/{dir4,dir5}
mkdir -v /home/{dir6,dir7} #显示详细信息,遍历
mkdir -v /home/dir8/111/22
mkdir -pv /home/dir8/111/222 #包括其父母的创建,不会有任何消息输出
mkdir -pv /home/{yang/{dir1,111},GZ}
2.4.复制
==复制 cp -r 目录 -v 详细 -f 强制 -n 静默
Usage: cp [OPTION]... [-T] SOURCE DEST
cd
mkdir /home/dir{1,2}
cp -v install.log /home/dir1 //-v 显示详细信息cp
cp -v install.log /home/dir1/yang.txt
cp -rv /etc /home/dir1 //-r 拷贝文件夹
cp -rv 源文件1 源文件2 源文件N 目标文件 //将多个文件拷贝到同一个目录
cp -rv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/passwd /etc/grub.conf /etc/hosts .
cp -r /etc /tmp
cp -rfn /etc /tmp //-f, --force 强制
2.5 移动
1.创建一个新文件file1
touch /root/file1
2.把file1文件移动到/tmp目录中。
mv /root/file1 /tmp
ls /tmp/file1
3.把file1文件更名为file2
mv /tmp/file1 /tmp/file2
4.观察file1文件已经更名为file2
ls /tmp/file1 /tmp/file2
2.6 删除
==删除 rm -r 递归 -f force强制 -v 详细过程 *通配符
示例1:删除/home/dir1
cd /home
rm -rf dir1
-r 递归-f force强制-v 详细过程
示例2:
[root@GZ ~]# mkdir /home/dir10
[root@GZ ~]# touch /home/dir10/{file2,file3,.file4}
[root@GZ ~]# rm -rf /home/dir10/* //不包括隐藏文件
[root@GZ ~]# ls /home/dir10/ -a
示例3:
[root@GZ ~]# rm -rf file*
[root@GZ ~]# rm -rf *.pdf
2.7 查看文件内容
cat全部
cat /etc/passwd
-n 显示行号
-A 包括控制字符(换行符/制表符)
more翻页
more /etc/passwd
(回车下一行,空格翻页,q退出,CTRL +c)
head头部
[root@GZ ~]# head /etc/passwd
[root@GZ ~]# head -2 /etc/passwd //查看前两行
tail尾部
[root@GZ ~]# tail /etc/passwd
[root@GZ ~]# tail -1 /etc/passwd
[root@GZ ~]# tail /var/log/messages
[root@GZ ~]# tail -20 /var/log/messages
[root@GZ ~]# tail -f /var/log/secure //-f
[root@GZ ~]# tail -F /var/log/secure //-F
tail -f 等同于--follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止
tail -F 等同于--follow=name --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再 次创建相同的文件名,会继续追踪
tailf 等同于tail -f -n 10(貌似tail -f或-F默认也是打印最后10行,然后追踪文件),与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件,所以tailf特别适合那些便携机上跟踪日志文件,因为它减少了磁盘访问,可以省电。
注:vim, gedit编辑文件时,索引号会改变
grep过滤关键字 grep 针对文件内容进行过滤
grep 'root' /etc/passwd
grep '^root' /etc/passwd ^root以root开头
grep 'bash/pre> /etc/passwd bash$以bash结尾
grep 'failure' /var/log/secure
2.8 修改文件内容
VI 的三个模式
命令模式
光标定位:
hjkl #上下左右 (h:左;j:下; k:上; l:右 )0 $ #行首行尾 gg G #页首页尾
3G #进入第三行
/string #查找字符,n下一个 N上一个 (n N 可以循环的查找)
文本编辑:
文本编辑(少量)
y 复制 yy 3yy ygg yG (以行为单位)
d 删除 dd 3dd dgg dG (以行为单位)
p 粘贴
x 删除光标所在的字符
D 从光标处删除到行尾
u undo撤销
^r redo重做
r 可以用来修改一个字符
进入其它模式:
a 进入插入模式 从光标后插入
i 进入插入模式 从光标前插入
o 进入插入模式 所在行下一行插入
A 进入插入模式 光标所在行尾
I进入插入模式 光标所在行首
O进入插入模式 光标所在行的上一行
shirt+a 编辑模式,进入所在行尾
G(页尾) gg (页首)
: 进入末行模式(扩展命令模式)
v 进入可视模式
^v 进入可视块模式 (vi没有块模式)
ctrl+v shift+i 选择 输入内容 两次Esc 同时插入内容 x删除
V 进入可视行模式 (ctrl+v可视行模式,V可视块模式)
V 进入可视行模式 选择内容 y p
R 进入替换模式
扩展命令模式:
保存退出
:10 进入第10行
:w 保存
:q 退出
:wq 保存并退出
:w! 强制保存
:q! 不保存并退出
:wq! 强制保存退出
:x 保存并退出 ZZ:保存并退出
-
:wq 强制写入并退出(文件修改时间一定变)
:x 写入文件并退出(文件真正被修改时,文件修改时间发生改变。未修改时文件修改时间不变)
查找替换
:范围 s/old/new/选项
参数 g 全局替换
/搜索内容 搜索
:1,5 s/root/yang/g 从1-5行的root 替换为yang g为全局
读入文件/写文件(另存为)
:w 存储到当前文件
:w /tmp/aaa.txt 另存为/tmp/aaa.txt
:1,3 w /tmp/2.txt
:r /etc/hosts 读入文件到当前行后
:5 r /etc/hosts 读入文件到第5行后
设置环境 (临时):
:set nu 设置行号
:set ic 不区分大小写
:set ai 自动缩进
:set list 显示控制字符
:set nonu 取消设置行号
:set noic 区分大小写
2.9 文件基本信息:
时间类型
stat 文件名
访问时间:atime,查看内容 //RHEL6会延后修改atime修改时间:mtime,修改内容改变时间:ctime,文件属性,比如权限删除时间:dtime,文件被删除的时间
查询示例
[root@GZ ~]# ls -l install.log
-rw-r--r-- 1 root root 34793 10-23 13:49 install.log
[root@GZ ~]# stat install.log
File: “install.log”
Size: 34793 Blocks: 80 IO Block: 4096 一般文件
Device: 802h/2050d Inode: 65282 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2012-10-23 16:53:20.000000000 +0800
Modify: 2012-10-23 13:49:46.000000000 +0800
Change: 2012-10-23 13:49:52.000000000 +0800
ls -l 文件名 仅看的是文件的修改时间