磁盘与文件管理
磁盘管理
windows与linux磁盘管理方式区别
根目录
- linux系统中文档以树的形式组织
- '/'是所有文件的根目录
- 根目录下存在如dev,home,lib之类的子目录
重要目录
- /bin
- 包含一些常用的二进制可执行文件,如cat,ls,mkdir,rm等
- 这些二进制文件在系统运行时始终可用,可以被任何用户运行
- /etc
- 包含了系统的大多数配置文件,如网络配置,用户登录信息,软件包安装配置等
- 大多数应用程序在安装后都会在这个目录下创建自己的子目录,以便存储自己的配置文件
- /home
- 包含linux系统用户的家目录,每个用户的数据和个人文件都存放在此处
- 注意,root用户的主目录为/root
- /lib
- 包含一些共享库文件,应用程序可以通过这些共享库文件调用系统的功能,如libc.so,是C语言函数库的共享库
- /root
- 是系统管理者(超级用户)的家目录
- /tmp
- 是系统中的一个临时目录,所有用户都可以在这里创建临时文件,系统会定期清空该目录,防止文件滞留
- /user
- 包含系统启动后,所有用户能访问的应用程序和数据
- /var
- 包含可变数据的文件。包括日志,数据库,web服务器,邮件队列等文件
- 它是一个经常被修改的目录,如果在其他目录有可变数据的话,它们都应当被链接到/var中
磁盘管理常用命令/参数
- pwd
- 查看当前位置
- man
- 查看某个命令的具体用法
- 该命令通过空格进行翻页,q进行退出
- 例:man pwd
- –help
- 查看一个命令的帮助,一次性列出
- 例:touch --help
- ls
- 即list,用列表的方式列出当前目录下的目录和文件
- -a
- a即all,表示列出包含隐藏文件在内的所有文件
- linux中隐藏文件通常以’.'开始
- -l
- 即long format,使用长格式输出
- 例:-rw-r–r-- 1 root root 0 1月 12 13:04 helloword.java
- 从左往右依次为类型,权限,所有子文件的链接数,拥有者,组名,文件或子目录大小(单位字节),最后修改时间,文件或目录名
- 文件类型
- d:目录
- -:文件
- l:链接
- 第一列第一个字符
- 文件权限
- r:读
- w:写
- x:执行
- 第一列除第一位,每3个字符为不同用户描述权限,第一个为文件拥有者,第二个为和文件拥有者在同一组别的用户,第三个为其他组用户
- 例子中的为拥有者:读写;同组用户:读;其他组用户:读
- cd
- 即change directory,用于切换目录
- …
- 回到上级目录
- …/…
- 回到上级目录的上级目录
- ~
- 回到主目录(家目录)
- /
- 回到根目录
- /开始的路径为绝对路径,如cd /home(切换到根目录下的home)
- 没有/开始的路径为相对路径,如cd abc (切换到当前目录下的abc)
文件管理
新建文件/目录
- mkdir
- 即make directory 新建一个目录,后面可以直接接一个目录名
- -p
- 一次创建多层目录
- 例:mkdir -p a/b/c
- 按照之前的例子,如果此时已经存在a目录那么会在a目录下创建b/c目录
- touch
- 新建一个文件,后面直接接一个或多个文件名,文件名之间采用空格分隔
- 例:touch a.txt b.txt c.txt
删除文件/目录
- rm
- 即remove,后面接一个或多个文件名,该方式会询问是否删除
- 可以使用通配符*来模糊匹配进行文件删除
- 例:rm -f *.java 则为删除当前目录下的所有java文件
- -f
- 即force,不再询问,并立即删除
- -r
- 删除一个或多个目录,同样的这种方式也会询问
- -rf
- 强行删除目录及其子目录,子文件且不再询问
拷贝文件/目录
- cp
- 即copy,后面接两个文件或者目录名,前一个为拷贝源,后一个为复制的文件/目录名称
- 例:copy a.txt aa.txt 将当前目录下的a.txt拷贝到当前目录下并命名为b.txt
- 例:copy b bb 将当前目录下的b目录拷贝到当前目录并命名为bb
- -f
- 同rm的-f参数,不再询问,立即拷贝
- -r
- 在目录时使用用于递归拷贝,即拷贝目录下的所有子目录和子文件
- 通常情况下为了方便会搭配-f参数使用,避免重复确认,可以缩写为-rf
移动
- mv
- 即move,后面接文件名/目录名和目录名,表示将该文件移动到指定目录
- 例:mv /home/hello.java /home/java:将home下的hello.java文件移动到home下的java目录中
- 例:mv /home/a /home/b 将home下的目录a移动到home下的目录b中
文件搜索
- find
- 可以在指定目录下搜索文件,可以使用不同的选项指定搜索文件的类型,大小,修改时间等
- 例:find /user/local -name “helloword.java”
- whereis
- 可以在系统中搜索指定的命令位置
- 例:whereis mv.sh
- which
- 与whereis类似也可以搜索指定命令的位置
- 例:which command
文件的inode号
inode号即index node,是linux系统中每个文件都有的唯一标识,用于区分两个文件
- ls -i
- 后面接文件名,可以查看该文件的inode号
软连接与硬链接
软连接
软链接类似于windows操作系统中的快捷方式,由这个软连接文件来指向目标文件
此时软连接文件与源文件不是同一个文件(inode号不同),若源文件被删除则软连接失效
- ln -s
- 后面接一个文件名和一个快捷方式名
- 例:ln -s a.java a 表示为a.java创建一个名为a的软连接
硬链接
硬链接主要用于重要文件备份
硬链接可以看作是对于目标文件的一个备份,且当目标文件或硬链接内容发生变化时,则另一个文件也会发生变化
此时硬链接文件与源文件是同一个文件(inode号相同),二者只要有一个存在文件就没有被删除
- ln
- 使用方法同 ln -s
- 例:ln a.java a 表示为a.java创建一个名为a的硬链接
文件压缩与解压缩
- tar
- 用于文件的压缩与解压缩,后面跟要压缩/解压缩的文件或目录
- -z
- 指定是否使用gzip压缩方式压缩
- 扩展名通常为tar.gz,特点速度最快
- -j
- 是否需要使用bzip2压缩方式压缩
- 扩展名通常为tar.bz2,特点体积最小
- -c
- 创建压缩
- -x
- 解压缩
- -v
- 是否在压缩过程中显示文件
- -f
- 指定归档文件名
- f参数后面必须紧跟文件名,不能再f参数后再添加其他参数
- 归档文件即为压缩后的文件
- -t
- 查看tarfile中的文件
- -C
- 指定解压到具体目录
- c,x,t这三个参数只能同时存在一个
- 例:tar -zcvf log.tar.gz log.txt 表示指定gzip压缩方式创建一个名为log.tar.gz的归档文件,并在压缩过程中显示文件
- 例:tar -zcvf log.tar.gz log1.txt log2.txt 同上一个例子,只是这个为多文件压缩
- 例:tar -zcvf log.tar.gz log 同第一个例子,只是压缩源变为了log目录
- 例:tar -tf log.tar.gz 查看归档文件
文件编辑(vi&vim)
概述
- vi和vim都是在linux和unix中常用的基于字符终端的文本编辑器
- vim可以看作是vi的增强,在CentOs中vi和vim是等价的,都是使用vim编辑器
vi使用
- vi 文件名 使用vi编辑器打开文件,若文件不存在则新建
- 进入vi编辑器时为命令模式,键入i进入编辑模式,再键入esc回到命令模式
- 命令wq表示保存并退出
- 命令q!表示强制退出且不保存
常用命令
- dd
- 删除光标所在行
- yy
- 复制光标所在行到缓冲区
- p
- 粘贴缓冲区中的内容
- GG
- 光标回到文件最后一行
- ^
- 光标移动到当前行首
- $
- 光标移动到当前行尾
- /关键字
- 可以检索文件中指定的关键字,按n可以导航到下一个关键字处
- o
- 在下一行插入
- x
- 命令行模式下,会删除单个字符