文件管理相关

 rename:对文件重命名
    rename [options] expression replacement file
      
  • 示例:         
# rename -v cut.exe cut.exe3 cut.exe
            `cut.exe’ -> `cut.exe3′
                注:rename 源文件名 改后名  源文件名
  •      option
         
           -V:显示版本信息并退出            
      # rename -V
       rename from util-linux 2.23.2


tree:显示目录树
   按树状结构显示某一目录下的文件列表
      tree [options]
      
      options:
        -d:只显示目录    
     tree -d
         .
          └── mode
        -L:设定显示的层次       
   tree -L 2 lianxi/
                lianxi/
                ├── 8yu
                ├── a123
                ├── a123.bak
                ├── a123.bak.bak
                ├── access_log
                ├── acl2.txt
                ├── k\ 67
                ├── mode
                │   ├── a123
                │   ├── access_log
                │   └── cut2.txt
                ├── m.z
                ├── passw
                └── sort
                1 directory, 13 file

mkdir: 创建目录
   mkdir [OPTION]… DIRECTORY..
    

         -p:自动创建父目录 

     mkdir -p haha/hehe
 
         -v:显示详细信息
     # mkdir -pv 666/888
mkdir: created directory ‘666’
mkdir: created directory ‘666/888’
          -m:直接指定权限
     mkdir  -m 640 mc

rmdir:删除目录(非空目录不能删除)
  -p:自动删除空的父目录
rmdir -p testdir/dir2/

索引节点
  inode:表中包含文件系统的所有列表
  一个节点(索引节点)是在一个表项,包含有关文件的信息(元数据),包括:
    文件类型,权限,UID,GID
    链接数(指向这个文件名路径名称个数)
    该文件大小和不同的时间戳
    有关文件的其他数据

inode在特定范围内是唯一的

cent6.8 根分区inode默认从2开始;centos7默认64开始

lost+found :相当于收容所,系统突然断电等非正常关机所找不到存放地的文件都在此。

目录
  文件引用一个inode号(系统自动分配)
  人是通过文件名来引用一个文件
  一个目录是目录下的文件名和文件inode号之间的映射。
对于目录:目录里存放的是子目录或文件对应的节点编号,文件名存放在目录里

df 参看磁盘空间使用状况
  # df
    Filesystem     1K-blocks    Used Available Use% Mounted on
    /dev/sda2       52403200 4029708  48373492   8% /
    devtmpfs          918976       0    918976   0% /dev
    tmpfs             933644      84    933560   1% /dev/shm
    tmpfs             933644    9172    924472   1% /run
    tmpfs             933644       0    933644   0% /sys/fs/cgroup
    /dev/sda5       10475520   32944  10442576   1% /app
    /dev/sda1        1038336  172112    866224  17% /boot
    tmpfs             186732      16    186716   1% /run/user/42
    tmpfs             186732       0    186732   0% /run/user/0
   -i:查看节点使用情况,而不是空间
     # df -i
    Filesystem       Inodes  IUsed    IFree IUse% Mounted on
    /dev/sda2      26214400 119707 26094693    1% /
    devtmpfs         229744    401   229343    1% /dev
    tmpfs            233411      6   233405    1% /dev/shm
    tmpfs            233411    556   232855    1% /run
    tmpfs            233411     16   233395    1% /sys/fs/cgroup
    /dev/sda5       5242880      3  5242877    1% /app
    /dev/sda1        524288    330   523958    1% /boot
    tmpfs            233411     17   233394    1% /run/user/42
    tmpfs            233411      1   233410    1% /run/user/0

watch  -n 1 `command`
  每隔1秒就执行一次后面的命令

cp命令(复制):
  分配一个空闲的inode号,在inode表中生成新条目在目录中创建一个目录项,将名称与inode编号关联拷贝数据生成新的文件
    语法格式:
        cp [OPTION]… [-T] SOURCE DEST
        cp [OPTION]… SOURCE… DIRECTORY
        cp [OPTION]… -t DIRECTORY SOURCE..
          options:        
-a :same as -dR –preserve=all
           -i : 交互式操作
           -f : 强制操作
           -r :递归
           -v :显示过程信息
           …              
    # cp -v sort haha/
    ‘sort’ -> ‘haha/sort’

rm 命令(删除文件或目录):
  
  连接数递减,从而释放的inode号可以被重用
  把数据块放在空闲列表中
  删除目录项
  数据实际不会被马上删除,但当另一个文件使用数据块时将被覆盖。
   语法格式
      rm [OPTION]… FILE…
      
   -i : 交互式操作,需要用户确认(例如:输入y)
         -f : 强制操作
         -r :递归操作
         -v :显示过程信息
         …
 # rm -i k\ 67
          rm: remove regular empty file ‘k 67’? y

mv命令:
 
 如果mv命令的目标和源在相同的文件系统,作为mv命令用新的文件名创建对应新的目录项,删除旧目录条目对应的旧的文件名,不影响inode表 (除时间戳)或磁盘上的数据位置;没有数据被移动!
  如果目标和源在一个不同的文件系统,mv相当于cp和rm
  语法格式
   
     mv [OPTION]… [-T] SOURCE DEST
     mv [OPTION]… SOURCE… DIRECTORY
     mv [OPTION]… -t DIRECTORY SOURCE…
       options:
         -i: 交互式操作
         -f: 强制操作
         -v: 显示过程信息
  
 示例:
       # mv -v fule bufu
      ‘fule’ -> ‘bufu’


shred  :碎纸机k,覆盖文件内容,并删除该文件内容
  语法格式
     shred [OPTION]… FILE…
     options:
       -z 清零
       -v 显示过程信息
       -n 操作次数
    
 示例:
           # shred -zvn5 bufu
    shred: bufu: pass 1/6 (random)…
    shred: bufu: pass 2/6 (ffffff)…
    shred: bufu: pass 3/6 (random)…
    shred: bufu: pass 4/6 (000000)…
    shred: bufu: pass 5/6 (random)…
    shred: bufu: pass 6/6 (000000)…

hexdump:以不同的格式显示文件内容
  语法格式:
     hexdump [options] file […]
     options:
  •          -b: 以八进制格式显示
  •          -C:以十六进制+ascII显示
  •          -d: 以十进制显示

ln filename linkname 创建硬链接
  •   硬链接:不同的路径名指向同一个文件
  •   硬链接不支持目录,只支持文件
  •   硬链接不能跨文件系统
  •   创建硬链接会增加链接计数
  •   每个目录引用相同的inode号
  

ln -s filename linkname:创建软连接,符号链接
  •   一个符号链接指向另一文件
  •   符号链接可以跨文件系统
  •   不会增加inode引用计数
  •   可以跨文件系统
  •   可以跨目录
  •   符号链接指向的是另一个文件路径,大小为指定路径的大小。


file 显示文件类型
   语法格式:
     file [options] filename
     示例:
           
   # file 666
    666: setgid directory
       options:
          -b:列出文件辨识结果时,不显示文件名
               
     # file -b 666
        setgid directory
          -f:列出文件中文件名的文件类型(前提是文件内保存的文件名是真实存在)
      
        # file -f file.txt
            /etc/passwd: ASCII text
            /usr/share/: directory
          -F:使用指定分隔符替换输出文件名后默认的”:”分隔符
          -L:查看软连接对应的文件的文件类型    
     file -L /etc/localtime
     /etc/localtime: timezone data, version 2, 2 gmt time flags, 2 std time flags, no leap seconds, 16 transition times, 2 abbreviation chars

reset:重置当前的工作环境

Linux给程序提供三种IO设备
  •   标准输入(STDIN) -0 默认接受来自键盘的输入
  •   标准输出 stdout -1 默认输出到当前终端窗口
  •   标准错误 stderr -2 默认输出到终端窗口

I/O 改变默认位置
  输出重定向
  •     > file: 覆盖输出重定向
  •     >> file:追加输出重定向
  错误输出重定向
  •     2> file 错误覆盖输出重定向
  •     2>> file 错误追加输出重定向
  联合重定向,正确和错误的都输出到同一个文件:
  •   ls /err /boot > /app/all 2>&1
  •   ls /err /boot &> /app/all
  •   ls /err /boot >& /app/all
 
  set -C :禁止覆盖已有文件
  set +C: 取消上述功能
  ls /boot >| /app/ls.log 强行覆盖
  (echo err 1>&2) > /app/f1把正确输出转为错误输出
  (cmd1;cmd2) > f1 把两个命令的结果输出到f1
  多行重定向
    cat > filename << EOF(结束符)(此处生成文档)
      >ddd
      >skdfjlsd
      >EOF
     mail -s ‘sanqueyi’ username@hostname <<EOF 
       mail 邮件发送程序 -s 指定标题 username@hostname 邮件接收者地址,执行上述命令,则开始输入正文,输入EOF则结束输入,邮件发送
  输入重定向操作(tr命令请看下面内容):
  tr ‘a-z’ ‘A-Z’ > f2 < /etc/issue
  cat > f1单行重定向
wall  xxxx ;发送广播信息


tr:转换或删除字符
  语法格式:
  tr [options] set1 [set2]
  options:
  •       -c:取补集
  •       -d:把set1中定义的内容删除
  •       -s:把set1中重复的字符压缩为一个
  •       -t:将set1中的字符转换为set2,对位替换


管道   
  cmd1 | cmd2  :把命令1的标准输出当作命令2的标准输入,一般情况前面的成功才能正确执行
  •     ls /boot /err 2>&1 | tr ‘a-z’ ‘A-Z’
  •     ls /boot /err |& tr ‘a-z’ ‘A-Z’\
  stderr默认不能通过管道转发,不过可以利用2>&1或者|& 实现
  最后一个命令会在当前shell进程的子shell进程执行、
  一页一页地查看输入:
    ls -l /etc | less
  mail:通过电子邮件发送输入:
    echo “test” | mail \ -s “test” user@hostname.com
  lpr:把输入发送给打印机
    echo “test print” | lpr -P printer_name
  – 符号:
       -是取前一个命令的stdout
 
     tar -zcf – /home | tar -zxf –
  ls /etc | tee file3: tee命令可以把前一个命令的输出同时保存到指定文件又输出到屏幕

 tee:重定向到多个目标
        command1 | tee 文件名 | command2
        把命令1的stdout保存到文件名中,然后管道输入给命令2
           tee -a :附加,原文件的内容不进行覆盖操作,保留原有内容。
 作用:
  •         保存不同阶段的输出
  •         复杂管道的故障排除
  •         同时查看和记录输出

readlink linkname 查看链接文件对应的原始文件

 chown 设置的属主属组(普通用户不可以执行,无权限)
  •       chown onwer: file 默认把文件的属主改为onwer属组改为onwer的属组
  •       chown :grp file 默认修改file的属组为grp,属主不改变
  •       chown owner:grp file
  •       chown [options] –reference=RFILE FILE..



chgrp 设置文件的属组信息 (普通用户属于的组可以执行)
  •       chgrp [options]..group file..
  •       chgrp [options] ..–reference=RFILE FILE..
                options: 
                   -R 递归修改

文件的权限主要针对三类对象进行定义:
      owner:属主,u
      group:属组,g
      other:其它,o

每个文件针对对每类访问者都定义了三种权限:
      r:readable
      w:writeable
      x:eXcutable

对目录
  •        r读:可以使用ls查看文件列表,使用ls等
  •        w写:可以对目录内创建删除目录内的文件
  •        x执行:cd到目录内或者ls -l
  对文件
  •        r读:可以使用文件查看类工具获取其内容
  •        w写:可以修改文件内部内容
  •        x执行:可以将可执行文件提请为一个进程
  •        X:大x,给目录设定x权限,不给文件x权限
                    X只设定目录执行权限,而不给文件执行权限(但是,当文件本身任何一权限拥有执行权限的时候,大X将赋予该文件执行权限)
                    例: aa文件权限为-r–rw—x+
                    执行chmod a+X 后,权限为-r-xrwx–x+
                    bb文件权限为-r–rw—-+
                    执行chmod a+X 后,权限为-r–rw—-+
                   X一般配合-R对目录使用;对目录下的子目录加x权限,但对无执行权限的文件不会加x
                   目录的执行权限是一个基本权限,通常会有该权限;
权限检查顺序
      所有者,组,其他人
     先检查当前用户与当前文件的属主是否相同,相同则只运用文件的属主权限,而不管其他用户权限;如果用户属主不是文件的属主,则检查用户属组和文件属组是否相同,同,则运用属组权限,而不管其他权限;以上两者都不是,则只运用其他权限

chmod :改变文件的各执行权限
  语法格式:
  •     chmod [OPTION]… MODE[,MODE]… FILE…
  •     chmod [OPTION]… OCTAL-MODE FILE…
  •     chmod [OPTION]… –reference=RFILE FILE…(复制RFILE到FILE中)
      options:
        -R 递归修改
  mode表示法      
  赋权表示法,直接操作某一类用户的所有权限
  •             属主u=
  •             属组g=
  •             其他o=
  •             所有a=
授权表示法:直接操作一个用户的一个权限
  •             u+,u-
  •             g+,g-
  •             o+,o-
  •             a+,a-
数字法:
  •        chmod 640 file

umask本质意义:
    对位最大权限的unamsk相应位的权限去除,得出默认权限
  •       目录的默认权限:777-umask
  •       文件的默认权限:666-umask
                   结果中,有奇数加一,偶数不
  •       umask -S 模式方式显示
  •       umask -p 输出方式可调用
  •       umask -p >> /etc/bashrc
    非特权用户umask是002
    root的umask 是022·

文件的特殊权限:
  SUID,SGID,Sticky
  SUID:
    只能作用在可执行的二进制程序,作用在目录上无意义,执行该程序时,继承的是该程序的属主身份,访问文件时,则以程序属主去访问文件
    设置SUID(显示占用u的执行权限位):
          chmod u[+|-]s file
      如果文件本身有执行权限,则u的执行权限位为s,否则,为S。
   SGID:可以作用在文件和目录上,对于目录,有SGID,在内部创建文件,默认继承目录的属组,对文件,如某程序,执行该程序时,继承了该程序的属组,访问某文件,就是以程序的属组身份去访问文件。
       chmod g[+|-]s file
  sticky:只作用在目录上有意义,用户只能在此目录内删除自己创建的文件,但可以看其他人的文件。
     chmod o[+|-]t file
隐藏属性
  chattr +i 不能删除,修改,更改
  chattr +a 只能增加、追加,(编辑文件算修改),新建用户也不行,
  lsattr 查看隐藏属性
  chattr +A 锁定文件访问时间

ACL访问控制列表
  •    Access Control List:实现灵活的权限管理,除了文件的所有者,所属组和其他人,可以对更多的用户设置权限。
  •    centos7 默认创建的xfs和ext4文件系统有ACL功能。
  •    centos7之前的版本,默认手工创建的ext4文件系统无ACL功能,需要手动增加:
  •    tune2fs -o acl /dev/sdb1 调整文件系统的属性、增加acl功能
  •    mount -o acl /dev/sdb1 /mnt/test     挂载文件系统,支持acl
  •    文件属性上末尾有+代表设置了acl,一旦有了acl,中间原来文件属组位权限所代表的不是原来的含义了,即为facl的umask。
  •    getfacl file|directory:获取文件或目录的访问控制列表
  •    setfacl -m u:wang:r file 设定用户facl
  •    setfacl -Rm u:wang:r f2 递归设置facl权限
  •    setfacl -M file.acl file|directory
  •      file.acl为facl模版文件,通常可执行getfacl f1.txt > file.acl 获取某文件facl来充当模版
  •    setfacl -m g:admin:rw f2 设定指定组的facl权限
  •    setfacl -m d:u:wang:rx directory:设定指定目录下文件的facl权限,但目录不设置,默认acl
  •    setfacl -x u:wang f2 删除后续用户的facl权限
  •    setfacl -X file.acl directory 以前一个文件内部的facl模版删除后续文件的facl权限
  •    base ACL不能删除
  •    setfacl -d dir 设置默认的facl权限 ( setfacl -m d:u:wang:rx directory )
  •    setfacl -k dir 删除默认的facl权限(仅限于目录)
  •    setfacl -b file 删除全部的扩展facl权限
  •    setfacl -m mask::r file 设定facl的mask值
    注意:后续设置的facl权限会影响到mask,mask会自动调整以使后续设置的facl生效,达到目的。
       mask: 限高线,所有facl列表扩展用户的最高权限不能超过mask
        acl mask只影响所有者和other以外的所有人:所属组,自定义用户,自定义组
          setfacl -m mask::rx file:设定mask值
    批量设置facl权限(备份和恢复acl):
    1、getfacl file1 > file.acl
    2、setfacl –set-file=file.acl file2
    备份和恢复ACL
       getfacl -R /tmp/dir > acl.txt :递归备份该文件和文件下的子文件acl
       setfacl -R -b /tmp/dir 递归删除acl
       setfacl -R –set-file=acl.txt /tmp/dir 递归恢复acl
       setfacl –restore acl.txt :–restore=file:从文件恢复备份的acl规则(这些文件可由getfacl -R产生)。通过这种机制可以恢复整个目录树的acl规则。此参数不能和除–test以外的任何参数一同执行。
       –set选项会把原有的ACL项都删除,用新的代替,需要注意是一定要包含UGO的设置,不能像-m一样只是添加ACL
          setfacl –set u::rw,u:wang:r,g::r,o::- file
    执行时,遍历facl列表,如果某个用户存在于多个acl设定,可进行权限累加 ,最终权限是多个acl的权限和。
    ACL生效顺序:所有者,所属组,自定义用户,自定义组,其他人 
     tune2fs -l /dev/ 查看文件系统的属性
    mkfs.ext4 /dev/ 创建文件系统
    blkid /dev/查看磁盘文件系统格式,UUID
    mount -o loop  /xx/file mountpoint 挂载本地文件,模拟成挂载磁盘
字典:  /usr/share/dict/linux.words
netstat -nt 显示访问当前ip的链接信息

原创文章,作者:switch,如若转载,请注明出处:http://www.178linux.com/70027

(0)
switchswitch
上一篇 2017-02-25
下一篇 2017-02-25

相关推荐

  • Shell脚本自动部署(编译)LAMP平台

    Shell脚本自动部署(编译)LAMP平台 Shell脚本自动部署(编译)LAMP平台 为什么要用脚本进行部署? 脚本功能介绍 笔者环境 准备工作 声明 使用测试 脚本代码 Shell脚本自动部署(编译)LAMP平台 LAMP是当下非常流行的一套Web架构,我们可以在GNU/Linux下通过其他人打包的程序包来进行安装; 但是在生产环境中,很多时候都需要我们…

    Linux干货 2016-03-26
  • shell编程之变量,数值计算,字符比较,文件测试小记

     变量     变量:能储存计算结果或能表示值抽象概念,其指向的内存空间中一段地址。        变量赋值:name=value    溢出:字符超过定义内存中间大小    变量类型:数据类型,存储的格式,参与的运算   &nb…

    Linux干货 2016-08-15
  • linux基础知识之nmcli

           CentOS7才有的功能网络组:将多块网卡聚合在一起的方法,从而实现冗错和提高吞吐量        网络组不同于旧版中的bonding技术,提供了更好的性能和扩展性        网路组由内核驱动和teamd守护进程实现 &n…

    Linux干货 2016-09-07
  • N26-第八周

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。     网桥(birdge):工作于OSI模型中的数据链路层,是连接两个局域网的一种存储/转发设备,能将一个大的LAN分割为多个网段,或将两个以上的LAN互联为一个逻辑LAN,使LAN上的所有用户都可访问服务器,可以分割冲突域。   &nb…

    2017-03-08
  • 任务计划管理

    一:单一工作调度:at命令       列出在指定的时间和日期在计算机上运行的已计划命令或计划命令和程序。必须正在运行“计划”服务才能使用 at 命令。 示例: [root@CentOS 6 ~]#/etc/init.d/atd restart   启动服务 …

    Linux干货 2016-09-12