美文网首页
2017-05-23 第二周第一天任务

2017-05-23 第二周第一天任务

作者: linux小白 | 来源:发表于2017-05-24 00:48 被阅读0次

    第二周第一天任务

    *日期:2017-05-23

    1.5 文件查看命令
    1.6 文件和目录属性
    1.7 chmod命令
    1.8 chown命令
    权限部分是难点,多多练习,学会如何根据umask推算默认权限。
    如果学过,要复习一下,加深印象。晚上主动汇报专贴,表示自己学了。

    [TOC]

    02.1.5 文件查看命令

    cat 直接读取文件内容,从前向后查看;

    ​ cat -A 主要读取特殊文件,后面会一个$符号,意思是这行的结束;注意:这里必须是大写 -A。

    例如:

    [root@bogon ~]# 
    [root@bogon ~]# ls
    111      222  anaconda-ks.cfg  install.log.syslog
    123.txt  234  install.log
    [root@bogon ~]# cat install.log
    
    cat --help
    [root@bogon ~]# cat --help
    用法:cat [选项]... [文件]...
    将[文件]或标准输入组合输出到标准输出。
    
      -A, --show-all           等于-vET
      -b, --number-nonblank    对非空输出行编号
      -e                       等于-vE
      -E, --show-ends          在每行结束处显示"$"
      -n, --number             对输出的所有行编号
      -s, --squeeze-blank      不输出多行空行
      -t                       与-vT 等价
      -T, --show-tabs          将跳格字符显示为^I
      -u                       (被忽略)
      -v, --show-nonprinting   使用^ 和M- 引用,除了LFD和 TAB 之外
          --help        显示此帮助信息并退出
          --version     显示版本信息并退出
    
    如果没有指定文件,或者文件为"-",则从标准输入读取。
    
    示例:
      cat f - g  先输出f 的内容,然后输出标准输入的内容,最后输出g 的内容。
      cat        将标准输入的内容复制到标准输出。
    
    请向bug-coreutils@gnu.org 报告cat 的错误
    GNU coreutils 项目主页:<http://www.gnu.org/software/coreutils/>
    GNU 软件一般性帮助:<http://www.gnu.org/gethelp/>
    请向<http://translationproject.org/team/zh_CN.html> 报告cat 的翻译错误
    要获取完整文档,请运行:info coreutils 'cat invocation'
    [root@bogon ~]# 
    

    tac 直接读取文件内容,从后向前查看;

    对比:

    [root@bogon ~]# cat install.log
    [root@bogon ~]# tac install.log
    

    两个的显示顺序是相反的;

    tac --help
    [root@bogon ~]# tac --help
    用法:tac [选项]... [文件]...
    将每个指定文件按行倒置并写到标准输出。
    如果不指定文件,或文件为"-",则从标准输入读取数据。
    
    长选项必须使用的参数对于短选项时也是必需使用的。
      -b, --before          在行前而非行尾添加分隔标志
      -r, --regex           将分隔标志视作正则表达式来解析
      -s, --separator=字符串   使用指定字符串代替换行作为分隔标志
          --help        显示此帮助信息并退出
          --version     显示版本信息并退出
    
    请向bug-coreutils@gnu.org 报告tac 的错误
    GNU coreutils 项目主页:<http://www.gnu.org/software/coreutils/>
    GNU 软件一般性帮助:<http://www.gnu.org/gethelp/>
    请向<http://translationproject.org/team/zh_CN.html> 报告tac 的翻译错误
    要获取完整文档,请运行:info coreutils 'tac invocation'
    [root@bogon ~]# 
    

    more 只能向下翻,

    空格可以一屏一屏翻,
    回车是一行一行翻,
    b向上翻页和f向下翻页
    q键退出
    例如:

    [root@bogon ~]# cp /etc/init.d/iptables 1.txt
    [root@bogon ~]# cat 1.txt
    

    less

    空格可以一屏一屏翻,
    回车是一行一行翻,
    j可以往下一行,
    k可以向上一行,
    Ctrl B 向上 一屏幕,
    Ctrl F 向下 一屏幕
    g 跳到最前面一行
    G 跳到最后面一行

    还可以搜索关键字,使用/内容 就可以高亮显示, n 向后 N向上 还可以?搜索 与/相反 退出使用q 或者exit b和f翻页

    例如:

    [root@bogon ~]# cat 1.txt
    

    输入:/关键字 或者使用:“shift+?”
    这两个的区别在与查找的方向不一样,

    head 最前面的几行

    Ctrl C 退出
    例如:默认查看前10行:

    [root@bogon ~]# head 1.txt 
    #!/bin/sh
    #
    # iptables  Start iptables firewall
    #
    # chkconfig: 2345 08 92
    # description:  Starts, stops and saves iptables firewall
    #
    # config: /etc/sysconfig/iptables
    # config: /etc/sysconfig/iptables-config
    #
    [root@bogon ~]# head -3 1.txt
    #!/bin/sh
    #
    # iptables  Start iptables firewall
    [root@bogon ~]# 
    

    tail 最后面的几行

    Ctrl C 退出
    例如:查看后5行

    [root@bogon ~]# tail 1.txt 
        save
        RETVAL=$?
        ;;
        *)
        echo $"Usage: ${IPTABLES} {start|stop|reload|restart|condrestart|status|panic|save}"
        RETVAL=2
        ;;
    esac
    
    exit $RETVAL
    [root@bogon ~]# tail -5 1.txt 
        RETVAL=2
        ;;
    esac
    
    exit $RETVAL
    [root@bogon ~]# 
    

    tail -f可以动态的查看一个内容。CTRL + C 就可以退出了

    例如:需要两个终端;

    使用一个终端查看1.txt文档执行命令:tail -f 1.txt另一终端不断执行追加重定向执行命令:echo "Holle World!" >> 1.txt

    02.1.6 文件和目录属性

    例如:

    [root@bogon ~]# ls -l
    总用量 88
    drwxr-xr-x  2 root root  4096 5月  20 03:26 111
    -rw-r--r--  1 root root 21845 5月  20 03:25 123.txt
    -rwxr-xr-x  1 root root 10688 5月  20 04:12 1.txt
    drwxr-xr-x  2 root root  4096 5月  20 03:26 222
    drwxr-xr-x  2 root root  4096 5月  20 03:26 234
    -rw-------. 1 root root  1161 2月  21 21:44 anaconda-ks.cfg
    -rw-r--r--. 1 root root 21845 2月  21 21:44 install.log
    -rw-r--r--. 1 root root  5079 2月  21 21:44 install.log.syslog
    [root@bogon ~]# 
    

    第一列 共十一位

    第一个 表示文件类型;

    第一列共有十一位。
    第一位是:

    c表示字符设备

    b表示是块设备

    l 表示软连接文件

    s表示一种特有文件,本地通信文件

    d表示目录文件

    -表示普通文件

    p 表示管道文件,也是通信文件
    第二位到第十个是文件的权限 r读 w写 x执行 -无
    前三个是表示文件(user)本身的权限 rwx 顺序不变。
    中间三个表示文件(group)所属组的权限 。
    后面三个表示文件(others)除属组以外的权限。
    第十一位 是 . 平时很少使用。

    第二列

    表示用多少个目录或者文件占用的节点数(inode)
    一般情况文件都是1 ;

    目录和下面的子目录数有关。

    文件的话显示有几文件使用了同一个inode号;

    使用ls -li 可以像是inode号

    第三列 表示该文件的所有者

    第四列 表示该文件的所属组

    第五列 表示该文件的大小

    第六、七、八列 为该文件的创建时间或者修改时间。

    那么如何分别是创建的时间还是修改的时间呢!可以根据创建或修改的时间查找文件吗?

    第九列 表示文件名称。

    02.1.7 chmod命令

    chmod 更改权限

    chmod --help
    [root@bogon ~]# chmod --help
    用法:chmod [选项]... 模式[,模式]... 文件...
     或:chmod [选项]... 八进制模式 文件...
     或:chmod [选项]... --reference=参考文件 文件...
    将每个文件的模式更改为指定值。
    
      -c, --changes     类似 --verbose,但只在有更改时才显示结果
          --no-preserve-root    不特殊对待根目录(默认)
          --preserve-root       禁止对根目录进行递归操作
      -f, --silent, --quiet 去除大部份的错误信息
      -v, --verbose     为处理的所有文件显示诊断信息
          --reference=参考文件  使用指定参考文件的模式,而非自行指定权限模式
      -R, --recursive       以递归方式更改所有的文件及子目录
          --help        显示此帮助信息并退出
          --version     显示版本信息并退出
    
    每种 MODE 都应属于这类形式"[ugoa]*([-+=]([rwxXst]*|[ugo]))+"。
    
    请向bug-coreutils@gnu.org 报告chmod 的错误
    GNU coreutils 项目主页:<http://www.gnu.org/software/coreutils/>
    GNU 软件一般性帮助:<http://www.gnu.org/gethelp/>
    请向<http://translationproject.org/team/zh_CN.html> 报告chmod 的翻译错误
    要获取完整文档,请运行:info coreutils 'chmod invocation'
    [root@bogon ~]# 
    
    r为4,w为2,x为1,-为0

    组合:

    • rwx 表示 7
    • rw- 表示 6
    • r-x 表示 5
    • r-- 表示 4
    • -wx 表示 3
    • -w- 表示 2
    • --x 表示 1
    • --- 表示 0

    例如:

    [root@bogon ~]# ls -l 1.txt
    -rwxr-xr-x 1 root root 10688 5月  20 04:12 1.txt
    [root@bogon ~]# chmod 744 1.txt
    [root@bogon ~]# ls -l 1.txt 
    -rwxr--r-- 1 root root 10688 5月  20 04:12 1.txt
    [root@bogon ~]# 
    

    也可以这样写:

    [root@bogon ~]# chmod u=rwx,g=r--,o=r-- 1.txt
    [root@bogon ~]# chmod u-x 1.txt
    [root@bogon ~]# chmod u+x,g+w,g-r 1.txt
    [root@bogon ~]# chmod a+r 1.txt
    

    这里第一行表示指定属主可读可写可执行,属组可读,其他可读;第二行表示给属主取消可执行权限;第三行表示给属主增加可执行权限,给属组增加可读权限,给其他用户取消可读权限;第四行表示给所有人都增加可读权限;

    -R 权限的继承选项

    例如:

    [root@bogon ~]# tree 111
    111
    ├── 123.txt
    └── 234
        └── 22.txt
    
    1 directory, 2 files
    [root@bogon ~]# ls -l 111
    总用量 28
    -rw-r--r-- 1 root root 21845 5月  20 03:26 123.txt
    drwxr-xr-x 2 root root  4096 5月  20 05:26 234
    [root@bogon ~]# ls -l 111/234
    总用量 24
    -rw-r--r-- 1 root root 21845 5月  20 03:26 22.txt
    [root@bogon ~]# chmod -R 700 111
    [root@bogon ~]# ls -l 111
    总用量 28
    -rwx------ 1 root root 21845 5月  20 03:26 123.txt
    drwx------ 2 root root  4096 5月  20 05:26 234
    [root@bogon ~]# ls -l 111/234
    总用量 24
    -rwx------ 1 root root 21845 5月  20 03:26 22.txt
    [root@bogon ~]# 
    

    chmod -R 权限 文件夹 可以让文件夹内的文件及子文件夹都继承指定权限;

    umask 用户默认目录和文件的权限

    用来规定默认情况下的目录和权限,一般情况目录权限值为755,普通文件权限值为644,

    例如:

    [root@bogon ~]# whoami
    root
    [root@bogon ~]# umask
    0022
    [root@bogon ~]# mkdir 1112
    [root@bogon ~]# ls -ld
    dr-xr-x---. 6 root root 4096 5月  20 05:34 .
    [root@bogon ~]# touch 12.txt
    [root@bogon ~]# ls -l 12.txt 
    -rw-r--r-- 1 root root 0 5月  20 05:35 12.txt
    [root@bogon ~]# 
    
    修改umask的语法:

    umask xxx (这里的xxx代表三个数字)

    例如:

    [root@bogon ~]# umask
    0022
    [root@bogon ~]# umask 011
    [root@bogon ~]# umask
    0011
    [root@bogon ~]# 
    

    (1)若用户建立为普通文件,则预设没有可执行权限,只有rw两个权限。最大为666(-rw-rw-rw)。
    (2)若用户建立为目录,则预设所有权限均开放,即777(drwxrwxrwx)。

    注意:umask可以在/etch/bashrc里面更改,预设情况下,root的umask为022,而一般使用者则为002,因为可写权限非常重要,因此预设会去掉写权限。
    当umask=033是目录权限是777-033为744;文件权限是666-033。这样是错误的,实际上目录权限是"rwxrwxrwx"-"----wx-wx"=“rwxr--r--”为744。文件权限是"rw-rw-rw-"-"----wx-wx"=“rw-r--r--”为644。

    02.1.8 chown命令

    修改文件的属主和属组

    chown --help
    [root@bogon ~]# chown --help
    用法:chown [选项]... [所有者][:[组]] 文件...
     或:chown [选项]... --reference=参考文件 文件...
    更改每个文件的所有者和/或所属组。
    当使用 --referebce 参数时,将文件的所有者和所属组更改为与指定参考文件相同。
    
      -c, --changes         类似 verbose,但只在有更改时才显示结果
          --dereference     受影响的是符号链接所指示的对象,而非符号链接本身
      -h, --no-dereference      会影响符号链接本身,而非符号链接所指示的目的地
                    (当系统支持更改符号链接的所有者时,此选项才有用)
          --from=当前所有者:当前所属组
                                只当每个文件的所有者和组符合选项所指定时才更改所
                    有者和组。其中一个可以省略,这时已省略的属性就不
                    需要符合原有的属性。
          --no-preserve-root    不特殊对待"/"(默认值)
          --preserve-root       不允许在"/"上递归操作
      -f, --silent, --quiet 去除大部份的错误信息
          --reference=参考文件  使用参考文件的所属组,而非指定值
      -R, --recursive       递归处理所有的文件及子目录
      -v, --verbose         为处理的所有文件显示诊断信息
    
    以下选项是在指定了 -R 选项时被用于设置如何穿越目录结构体系。
    如果您指定了多于一个选项,那么只有最后一个会生效。
    
      -H         如果命令行参数是一个通到目录的符号链接,则遍历符号链接
      -L         遍历每一个遇到的通到目录的符号链接
      -P         不遍历任何符号链接(默认)
    
          --help        显示此帮助信息并退出
          --version     显示版本信息并退出
    
    如果没有指定所有者,则不会更改。 所属组若没有指定也不会更改,但当加上
    ":"时 GROUP 会更改为指定所有者的主要组。所有者和所属组可以是数字或名称。
    
    示例:
      chown root /u     将 /u 的属主更改为"root"。
      chown root:staff /u   和上面类似,但同时也将其属组更改为"staff"。
      chown -hR root /u 将 /u 及其子目录下所有文件的属主更改为"root"。
    
    请向bug-coreutils@gnu.org 报告chown 的错误
    GNU coreutils 项目主页:<http://www.gnu.org/software/coreutils/>
    GNU 软件一般性帮助:<http://www.gnu.org/gethelp/>
    请向<http://translationproject.org/team/zh_CN.html> 报告chown 的翻译错误
    要获取完整文档,请运行:info coreutils 'chown invocation'
    [root@bogon ~]# 
    

    具体使用方法:

    [root@bogon ~]# useradd byk
    [root@bogon ~]# ls -l 12.txt 
    -rw-r--r-- 1 root root 0 5月  20 05:35 12.txt
    [root@bogon ~]# chown byk 12.txt 
    [root@bogon ~]# ls -l 12.txt 
    -rw-r--r-- 1 byk root 0 5月  20 05:35 12.txt
    [root@bogon ~]# groupadd byk
    groupadd: group 'byk' already exists
    [root@bogon ~]# chown :byk 12.txt 
    [root@bogon ~]# ls -l 12.txt 
    -rw-r--r-- 1 byk byk 0 5月  20 05:35 12.txt
    [root@bogon ~]# chown root:root 12.txt 
    [root@bogon ~]# ls -l 12.txt 
    -rw-r--r-- 1 root root 0 5月  20 05:35 12.txt
    [root@bogon ~]# chown byk.byk 12.txt 
    [root@bogon ~]# ls -l 12.txt 
    -rw-r--r-- 1 byk byk 0 5月  20 05:35 12.txt
    [root@bogon ~]# 
    

    chown 文件的所有者以及所属组
    例如:

    #useradd yyy (字符) 创建用户
    #chown yyy (字符) 更改文件拥有者
    #groupadd xxx (字符) 创建属组
    #chown :xxx (字符) 更改文件所属组
    #chown yyy:xxx (yyy是字符,xxx是字符) 同时更改文件拥有者yyy和文件所属组xxx
    或者使用
    #chown yyy.xxx (yyy是字符,xxx是字符) 同时更改文件拥有者yyy和文件所属组xxx
    

    chown -R 表示更改目录下所有文件及目录的所有者和所属组。

    同时更改所属组也可以使用chgrp
    语法: chgrp [参数][组名] [文件名]
    参数有-R 选项只作用于目录,作用是级联更改,即不仅更改当前目录,连目录或者文件全部更改。

    chown -R 参数有-R 选项只作用于目录,作用是级联更改,即不仅更改当前目录,连目录或者文件全部更改。

    历史命令

    !ls

    表示执行历史命令里面离本次最近的命令以ls开头的历史命令。

    !数字

    表示执行历史命令里面编号命令

    查看历史命令使用 history
    上下键也可以查看历史命令

    相关文章

      网友评论

          本文标题:2017-05-23 第二周第一天任务

          本文链接:https://www.haomeiwen.com/subject/amggxxtx.html