2. Linux文件、目录管理

来源:互联网 发布:始于颜值…网络完整版 编辑:程序博客网 时间:2024/06/11 09:55

2.1 系统目录结构

1.Linux的目录结构
命令#ls /显示根目录(/)下的内容,主要包括:
  • /bin                 Binary的缩写,存放着最经常使用的命令
  • /boot                 存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
  • /dev                  Device(设备)的缩写,存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的
  • /etc                   用来存放所有的系统管理所需要的配置文件和子目录
  • /home               用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的
  • /lib,/lib64        存放系统最基本的动态连接共享库,几乎所有应用程序都需要用到这些共享库
  • /media              Linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux会把识别的设备自动挂载到这个目录下
  • /mnt                  系统提供该目录是为了让用户临时挂载别的文件系统,可以将光驱/硬盘挂载在/mnt/上,然后进入该目录就可以查看光驱/硬盘里的内容了
  • /opt                   给主机额外安装软件所摆放的目录,默认是空的
  • /proc                 一个虚拟的目录,它是系统内存的映射,可以通过直接访问这个目录来获取系统信息,这个目录的内容不在硬盘上而是在内存里,/proc里存放着系统启动的一些进程,每个进程对应一个目录
  • /root                 系统管理员的用户主目录
  • /run                  一些进程产生的临时文件,一关机或重启就会消失的文件
  • /sbin                s就是Super User的意思,存放的是系统管理员使用的系统管理程序
  • /selinux           Redhat/CentOS所特有的目录,Selinux是一个安全机制,存放selinux相关的文件的
  • /srv                  存放一些服务启动之后需要提取的数据
  • /sys                 存放系统内核相关的一些文件
  • /tmp                用来存放一些临时文件
  • /usr                 一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下
  • /usr/bin           系统用户使用的应用程序
  • /usr/sbin         超级用户使用的比较高级的管理程序和系统守护程序
  • /usr/src           内核源代码默认的放置目录
  • /var                 存放着在不断扩充着的东西,习惯将那些经常被修改的目录放在这个目录下,包括各种日志文件
2.tree命令
以树形的形式显示一个目录,如果提示未找到命令,需在联网情况下运行#yum install -y tree安装
  • tree   directory#显示某个目录的树形结构
  • tree -L 2  directory#显示一个目录的2层树形结构,-L指定目录的深度(Level)
3. man命令
  • man cmd #显示一个命令的帮助文档
4. ldd命令
  • ldd /bin/ls #可查看ls命令依赖的库文件
2.2 ls命令
ls:list --作用是列出指定目录或者文件,ls命令的常用选项:
  • ls -l #列出目录下的子文件和子目录的详细信息,别名为“ll

  • ls -d #只列出目录本身


  • ls -a #查看目录下所有的文件,包括隐藏的文件和目录,目录下的“.”表示当前目录,“..”表示上一级目录

  • ls -i #查看文件的inode号。inode 译成中文就是索引节点,用来存放档案及目录的基本信息,包含时间信息、文档名、属主以及属组等。Inode是Unix操作系统中的一种数据结构,本质是结构体,inode是随文件系统创建时生成的,它的个数有限

  • ls -lt -- “-t”表示以时间为序排列文件,时间越早的排在越下面

  • ls -lh -- “-h”表示以合适单位显示文件大小

2.3 文件类型
  • 普通文件(regular file):就是一般类型的文件,当用ls -l查看某个目录时,第一列的第一位属性为 '- '的文件就是正规文件,或者叫普通文件。正规文件又可分成纯文本文件(ascii)和二进制文件(binary)。纯文本文件是可以通过cat, more, less等工具直接查看内容的,而二进制文件不能查看,比如/bin/ls

  • 目录(directory): 当用ls -l 查看某个目录时,第一列的第一位为 ‘d’

  • 链接文件(link): 当用ls -l查看某个目录时,第一列的第一位为 ‘l’
  • 块(block)设备文件 :是一些储存数据,以提供系统存取的接口设备,简单的说就是硬盘,比如一号硬盘的代码是 /dev/sda1, 其第一位属性为 ‘b’

  • 字符(character)设备文件 :是一些串行端口的接口设备,例如键盘、鼠标等等,第一位属性为 ‘c’
  • 套接字文件(socket): 用于进程间通信,其第一位属性为 ‘s’
2.4 alias命令
1. alias命令
alias表示由一个命令加选项的组合形成的一个新的命令
语法:alias 新命令='原命令 -选项/参数'
  • alias #查看系统中所有具有别名的命令
  • alias fei='ls -lha' #自定义命令fei(实际命令要加单引号),#unalias fei取消该命令自定义

2. which命令
查看一个文件(命令)的绝对路径(系统从环境变量PATH中去寻找),包括其是否有别名,例如:
#which ll、#which ls,有的命令是有别名的,有的命令没有别名

2.5 相对路径和绝对路径
1. 相对路径和绝对路径
  • 相对路径:路径的写法不是由根目录 ‘/’写起,而是基于某一个路径,例如,首先用户进入到/, 然后再进入到home ,命令为 cd /home 然后 cd test 此时用户所在的路径为/home/test 第一个cd命令后跟 ‘/home’ 第二个cd命令后跟 ‘test’, 并没有斜杠,这个 ‘test’ 是相对于 ‘/home’ 目录来讲的,所以是相对路径。
  • 绝对路径:路径的写法一定由根目录 ‘/’写起,例如/usr/local/mysql就是绝对路径
2. pwd命令
查看当前所在路径

2.6 cd命令
1. cd命令
#cddirectory #更改当前路径(changedirectory)
2. cd用法
  • #cd - #由当前目录切换到上一次所在的目录
  • #cd#cd ~ #直接切换到当前登录用户的家目录下
  • #cd .. #进入到当前目录的上一级目录

2.7 创建和删除目录
1.创建目录
  • #mkdir directory#创建一个目录
  • #mkdir -pdirectory1/directory2/directory3  --“-p”表示创建级联目录
  • #mkdir -pv directory1/directory2/directory3  --“-v”表示可视化创建级联目录,能看见创建各级目录的过程
2. 删除目录
  • #rmdirdirectory  #删除一个空目录,不能删除非空目录,不能删除文件,具有局限性
  • #rmdir-pdirectory1/directory2/directory3#删除级联空目录
2.8 rm命令
1.rm命令
rm命令即可删除文件,也可删除目录(包括非空目录)
  • #rm  directory1/directory2/directory3/file   #删除一个文件.每次删除时系统均会询问确认,输入“y”才删除
  • #rm -f directory1/directory2/directory3/file  #不让系统询问,“-f”表示强制删除
  • #rm -r directory1/directory2/directory3--“-r”表示删除一个空或非空目录,系统均会询问确认
  • #rm -rf directory1/directory2/directory3  #强制删除一个目录而不让系统询问,如果带有 “-f”选项去删除一个不存在的目录不会报任何错,而不带“-f”时会报错;可加“-v”选项,可视化
2. !$
!$ #表示示上一条命令的最后一个参数
3. history命令
#history #显示历史命令
2.9 环境变量PATH
  • echo $PATH                           #查看环境变量PATH包含的路径
  • PATH=$PATH:/tmp/#将/tmp目录加到PATH环境变量下
真正使用一个命令,应该使用绝对路径(绝对路径使用#whichcmd查找),比如:/usr/bin/ls ,而实际使用时并未带绝对路径,因为已知命令均在PATH所对应的路径下。
运行命令#cp /usr/bin/ls /tmp/ls2将ls命令复制到/tmp目录下,但如果直接运行#ls2会报错:未找到命令(使用绝对路径/tmp/ls2正常运行),因为/tmp不在PATH下,而运行#ls2这样在相对路径下的命令,系统只会在PATH对应的目录下去寻找命令,只有将/tmp加到PATH环境变量后才可直接运行#ls2命令,此时可运行#which ls2查看到ls2的绝对路径并添加到PATH环境变量下。
如果打开另一个终端或重启机器之后再运行#ls2命令依然不生效,此时需要把/tmp永久加到PATH环境变量下,运行命令#vi /etc/profile在该文件最后添加字段PATH=$PATH:/tmp,若删除这一行则取消ls2命令生效(定位到该行,连敲dd快速删除本行,或者直接在该行前面加#注释即可),或者重新编辑PATH去掉/tmp:PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
2.10 cp命令
  • #cp /directory-1/ source-file /directory-2/destination-file  #将源目录下的文件拷贝到目标目录下,若目标目录文件已存在,系统会询问是否覆盖
  • #cp -r /directory-1/source-directory/  /directory-2/target-directory #拷贝目录的话需要加-r参数,且源和目的目录后推荐统一均加上“/”,拷贝目录时,如果目标目录已存在,则会直接把源目录放到目标目录之下(若再次执行同样命令拷贝,系统会询问是否覆盖,因目标目录下已存在同名目录),如果目标目录不存在,则会把源目录拷贝过来并改名为目标目录名。实际上#cp是“cp -i”的别名,-i是一个安全参数,运行cp命令时系统会询问确认,如果使用绝对路径命令#/usr/bin/cp则不会询问确认而直接执行

原创粉丝点击