您的位置:首页 > 运维架构 > Linux

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: