Linux文件系统

Posted ChinaWJB

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux文件系统相关的知识,希望对你有一定的参考价值。

1. Linux系统主要目录及内容:
 
目录 内容
/bin           构建最小系统所需要的命令(最常用的命令)
/boot 内核与启动文件
/dev 各种设备文件
/etc 系统软件的启动和配置文件
/home
用户的主目录
/lib
C编译器的库
/media
可移动介质的安装点
/opt
可选的应用软件包(很少使用)
/proc
进程的映像
/root
超级用户root的主目录
/sbin
和系统操作有关的命令
/tmp
临时文件存放点
/usr
非系统的程序和命令
/var
系统专用的数据和配置文件
   
 
2.查看目录和文件:
 
ls  的用法
         ls  -F:  会在每个目录后加上/,在可执行文件后加*,在链接文件后加上@,在无法显示颜色的终端上有用:
         ls  -a:  显示所有的文件,包括隐藏文件如".adobe";
         ls  -l:  查看文件的各种属性。
               “-rwxr-xr-x  1  root  root  38096  2008-11-13  14:54  /bin/login”:
                         第1个字段的第1个字符表示文件类型;
                         然后3组位权限:属主,属组和其他人的权限
                         权限后的数字,表示链接数
                         root和root分别是属主和属组
                         最后4个分别表示文件大小、最后修改日期和时间、文件的完整路径
               
文件类型
符号
文件类型
符号
普通文件
-
本地域套接字
s
目录
d
有名管道
p
字符设备文件
c
符号链接
l
块设备文件
b
 
 
 
查看文本文件 cat(一次显示所有的内容)和more(一页一页的显示)和less(优先选)
         cat  文本文件名(可以加多个文件名)
         cat  -n (显示行号)  文本文件名 (可以加多个文件名)
     对于more的详细说明:      
         例子:  
               # more -dc/etc/profile    注:显示提示,并从终端或控制台顶部显示;
               # more +4/etc/profile      注:从profile的第4行开始显示;
               # more -4/etc/profile      注:每屏显示4行;
               # ls  -l/etc  | more           注:查看一个目录下的文件时,可以和管道“|”结合起来
         more [参数选项] [文件]  
                +num           从第num行开始显示;
                -num            定义屏幕大小,为num行;
                +/pattern      从pattern 前两行开始显示;
                -c                  从顶部清屏然后显示;
                -d                  提示Pressspace to continue, ‘q‘ to quit.(按空 键继续,按q键退出),禁用响铃功能; 
                -l                   忽略Ctrl+l(换页)字符;
                -p                  通过清除窗口而不是滚屏来对文件进行换页。和-c参数有点相似;  
                -s                   把连续的多个空行显示为一行;
                -u                   把文件内容中的下划线去掉
          more 的动作指令:
               Enter                            向下n行,需要定义,默认为1行;
               Ctrl+f(或空格)           向下滚动一屏;
               Ctrl+b                          返回上一屏;
               =                                  输出当前行号
               q                                   退出more(退出后,不返回刚才more的位置,回到显示文档后面)
     对less的详细说明:           
          less [参数] 文件
                -c    从顶部(从上到下)刷新屏幕,并显示文件内容。而不是通过底部滚动完成刷新;
               -f      强制打开文件,二进制文件显示时,不提示警告;
               -i      搜索时忽略大小写;除非搜索串中包含大写字母;
               -I      搜索时忽略大小写,除非搜索串中包含小写字母;
     -m    显示读取文件的百分比;
               -M    显法读取文件的百分比、行号及总行数;
               -N    在每行前输出行号;
               -p     pattern搜索pattern;比如在/etc/profile搜索单词MAIL,就用 less -p MAIL/etc/profile
               -s      把连续多个空白行作为一个空白行显示;
               -Q     在终端下不响铃;                     
          动作指令:
               回车键      向下移动一行;
               y           向上移动一行;
               空格键      向下滚动一屏;
               b           向上滚动一屏;
               d           向下滚动半屏;
               h           less的帮助;
               u           向上洋动半屏;
               w           可以指定显示哪行开始显示,是从指定数字的下一行显示;比如指定的是6,那就从第7行显示;
               g           跳到第一行;
               G           跳到最后一行;
               p n%(貌似不能用)      跳到n%,比如 10%,也就是说比整个文件内容的10%处开始显示;
               /pattern 搜索pattern ,比如 /MAIL表示在文件中搜索MAIL单词;
               v           调用vi编辑器;
               q           退出less
               !command 调用SHELL,可以运行命令;比如!ls 显示当前列当前目录下的所有文件;  
 
12. 显示一个命令的帮助:
         命令  --help(或--h)
 
13. 阅读文件的开头和结尾
         head  -n  2(指定显示行数)  文件名(可多个)
         tail(用法同head)
 
14. 查找文件内容
         grep  un  day(为了在文件day中查找包含un的行)
 
15. 在指定目录下查找东西
         find  目录  -name  *.zip  -print(打印出绝对路径)
 
16.更快速的定位文件:locate
          locate  *.doc          ##locate用于搜索大批量的文件,不需要知道放在了哪个盘
 
17.通配符
          ”*“   用于匹配文件名中任意长度的字符串;
          ”“ 只匹配一个字符;
          ”[ ]“ 用于匹配所有出现在方括号内的字符;例:ls text [1A]  ##列出以text开头而仅以1或A结束的文件名;
          ”-“   指定一个字符集范围;例:ls text [1-3];
 
18.命令行补全:
          一次table键,或连续两次table键
 
3.修改文件和目录         
  1. 新建目录:mkdir
              mkdir  -v  【文件夹名】          ##-v会显示最后结果
              mkdir  document  picture       ##新建两个目录
              mkdir  ~/picture/remp             ##在主目录下新建名为temp的目录(不能在一个没有的文件中创建文件)
              mkdir  -p  ~/tempx/job          ##可以完整的创建一个子目录
 
  1. 删除目录和文件:rmdir 和 rm
               rmdir  test               ## rmdir 只能删除空目录
               rm  test/*.pnp          ## rm可以一次删除一个或几个文件
               rm  -i  test/hello          ##删除文件前会提示,并等用户通知(对于有写保护的普通文件,不加“-i”也会提示)
               rm  -f  hello_bak          ##“-f”避免交互,自动对这些问题回答y
               rm  -r  Photos/          ##递归的删除目录下的所有文件和子目录,最后删除Photos目录            
 
  1. 新建空文件: touch
               touch hello               ##新建一个hello的空文件
               touch hello.php         ##修改文件的建立日期      
 
  1. 移动和重命名:mv 
               mv hello bin/          ##复制文件
               mv Photos/ 桌面/     ##复制目录
               mv  -i  hello  test/         ##如果已有文件,显示:mv:是否覆盖“test/hello?"
               mv  -b  hello  test/          ##在移动文件之前,首先在同名文件的文件名后加一个”~“
 
  1. 改变文件所有权:chown和chgrp
               sudo chown  lewis:root  days            ##修改days的所有权
               sudo chown  guest  days                  ##只修改文件属主
               sudo chown  :root  days                    ##只修改文件的属组
               sudo chown  -R  lewis  iso/               ## "-R" 表示改变一个目录及其下所有文件(和子目录)的所有权
               sudo chgrp  nogroup  days              ##改变文件的属组
               sudo chgrp  nogroup  ios/              ##改变目录的属组
 
  1. 改变文件的权限:chmod
               chmod  u+rwx  days          ## "用户组+(增加)/-(撤销)权限",用户组包括了文件属主(u), 文件属组(g),其他人(o),和所有人(a)
                                                          ##不写该字段默认改变所有人的权限
                                                          ## 权限包括了读取(r)、写入(w)、执行(x)
               chomd  ug=rw,o=r  days     ## "用户组=权限" 
               chmod  o=u  days               ## "用户组1=用户组2",将用户组1的权限和用户组2的权限设为完全相同。
               八进制表示文件权限“rwx”二进制(111)=八进制(4+2+1)=7
 
  1. 建立链接:ln
               “符号链接”(软链接)需要使用带 -s 参数的 ln 命令,只是取了一个别名,删除链接的名字,不会影响源文件
               ln  -s  days  my_days          ##文件建立一个名为my_days的符号链接指向文本文件days(起别名)
               ln  -s  /usr/local/share/  local_share          ## 目录建立符号链接
               “硬链接”,不带参数,将两个独立的文件联系在一起,和符号链接的区别:硬链接是直接引用,符号链接是名称引用
               ln  days  hard_days
 
  1. 输出重定向:“>”“>>”"<<"
               标准输出总是指向显示器
               ls  >  ~/ls_out                    ##如果ls_out文件不存在,那么“>”会试图建立这个文件,
                                                         ##如果已经存在,则“>“会删除文件中原有的内容,然后用新内容替代
               echo  "Hello"  > hello         ##将Hello字符串输入到hello文件中
               echo  "www"  >> hello      ##将字符串 追加 到文本的后面
               uname  -r  >> hello          ##将uname产生的版本信息 追加 到hello中   
               date  >>  hello                  ##将date命令产生的当前日期时间追加到hello中
              例子: “立即文档”
               cat  <<  EOF                    ##cat命令从键盘接收两行输入,并送往标准输出
                    >hello
                    >bye
                    >EOF
               cat  << END > hello          ##首先让cat命令以立即文档的方式获取输入,然后再把cat的输出重定向到hello文件中
                    >hello world
                    >bye
                    >END
  1. 管道“|”          
            例子:ls 首先列出当前目录下的所有文件名,管道“|”接收到这些输出,并把它们发送给grep命令作为输入。最后grep在这堆文件列表中查找              
           包含字符串ay的文件名,并在标准输出(也就是显示器)中显示。
           ls  |  grep  ay
           days
           hard_days
           mplayer
           mplayer~
           my_days
 
  1. 打开文本文件:vi、vim、sudo gedit  文件路径(可绝对可相对,在gedit中打开) 
          sudo gedit 文件路径          ##如果没有该文件,系统会自动创建
 
  1. 压缩工具:gzip和bzip2
          gzip(或gunzip)支持的扩展名有 . gz、. Z、-gz、. z、-z 和 z
          gzip  test.tar               ##压缩 ,会被压缩成test.tar.gz(替换)
          gunzip test.tar.gz       ##解压缩,方法1
          gzip  -d  test.tar.gz     ##解压缩,方法2
          gzip  -l  test.tar.gz      ##查看压缩效果,文件大小以字节为单位
          gzip  -tv  test.tar.gz    ##-t选项用来测试压缩文件的完整性,-v 显示测试结果
       
          bzip2可以识别压缩文件的格式包括.bz2、.bz、.tbz2、.tbz和bzip2,与gzip用法基本一致,有更高的压缩率,但是以压缩速度为代价
          bzip2  test.tar             ##压缩,会被压缩成test.tar.bz2(替换)
          bunzip2 test.tar.bz2    ##解压缩,方法1
          bzip2 -d test.tar.bz2    ##解压缩,方法2
 
  1. 存档工具:tar、dd
          文件打包:tar(和gzip不同的是,tar不会删除原来的文件
               tar  -cvf  test.tar  test/          ##将Shell目录连同其下的文件一同打包成文件test.tar
                    -c 指导tar创建归档文件,
                    -v 用于显示命令的执行过程,
                    -f 则用于指定归档文件的文件名                  
               tar  -xvf  test.tar                    ##解开归档文件
                    -x 用于解开归档文件
               tar  -cvwf  test.tar  test/          ##压缩征求用户意见
               tar  -xvwf  test.tar                    ##抽出时征求用户意见
                    -w 用于每次将单个文件加入(或者抽出)归档文件时征求用户的意见,y/n
               tar  -czvf  shell.tar.gz  shell/     ##直接将文件压缩成shell.tar.gz格式
                    -z 先调用tar命令,再调用gzip命令,等同于两条指令                   
               tar  -xzf shell.tar.gz                   ##直接解压成shell
                    -z 先调用gunzip指令,再调用tar指令
          转移文件:dd
               dd  if=/dev/cdrom  of=CD.iso          ##dd命令使用 if 选项指定输入端的文件系统,而 of选项则指定其输出端。
                                                                       ##这条命令将一张CD完整的转储为iso镜像文件
 
 
 
 ————————参考《Linux从入门到精通》刘忆智

以上是关于Linux文件系统的主要内容,如果未能解决你的问题,请参考以下文章

Linux 文件系统管理

linux文件系统类型

linux系统中对文件系统的原理进行分析

Linux文件系统操作命令

linux kernel 文件系统编程接口

linux下啥文件系统支持超个4G的单个(重点)文件?