RHCSA --- Linux命令替换

命令替换
    把命令中某个子命令替换为其执行结果
    $()
        echo "The current directory is $(pwd)."
        touch ./file$(date +%H-%M-%S).txt    以文件创建时间并以相应格式命名文件

        date    显示时间
    ``    
        echo "The current directory is `pwd`"
        echo 'The current directory is `pwd`'
    bash支持的引号
        ``    反引号,命令替换
        ""    双引号,可以实现变量替换
        ''    强引用,不完成变量替换


vim    文本编辑器    纯文本    重点中的重点    
    vi    文本编辑    vim   

RHCSA --- Linux命令替换_第1张图片
交互式   
    命令模式    执行操作命令
    插入模式    输入内容
    末行模式    做一些操作    保存退出  导入文本   


    命令模式
        删除:
            d    进入删除状态   
                d    删除当前行   
                $    删除光标所在字符到行尾,包含光所在字符
                ^    删除光标所在字符到行首,不包含光标所在字符
                gg    删除光标所在行到文档首部
                G    删除光标所在行到文档尾部   
                w    删除光标所在字符往后一个单词(同类字符)
            x    在命令行按字符进行往右删除
            s    删除光标所在处的字符并进入插入模式
            r    替换光标所在处的字符

        光标的跳转:
            $    跳转到行尾
            ^    跳转到行首
            gg    跳转到文档首行行首
            G    跳转到文档末行行首
            line_num  G    跳转到 line_num 数字行号的行首
            w    按单词(同类字符)往右跳转

            h    光标往左移动(字符)
            l    光标往右移动
            j    光标往下移动
            k    光标往上移动(行)
            
        其他指令:
            u    撤销之前的操作    1 2 3    3 2 1  
            Ctrl + r    重做    1 2 3    3 2    2 3 

            line_count(数字) yy    复制光标所在行之后的 line_count 数量的行 
            yy    表示复制当前行  
            p    表示粘贴复制的行  

            line_count(数字) cc    剪切光标所在行之后的 line_count 数量的行 
            cc    表示剪切当前行    直接进入插入模式   
            p    表示粘贴剪切的行   

        末行模式:
            :w
            :q
            :wq
            :w filename(文件名)
            :q!    强制退出不保存
            :set nu    显示行号
            :set nonu    取消显示行号
            :r /dir1/dir2/filename    表示读取指定文件的内容到当前文件
            /var/log/messages    案例文件
            :line_num    表示直接跳转到指定行行首

             cp /etc/passwd .    拷贝文件到当前目录

            查找替换
            :%s/被替换内容/替换后的内容    表示查找当前文件中所有的  被替换内容  替换成  替换后的内容,但是每行匹配到的只替换第一个匹配到的
            :%s/被替换内容/替换后的内容/g    表示替换所有被匹配到的关键字  g  表示全局   
            :%s/被替换的关键字//g    表示删除匹配到的所有关键字  
        查找字符串:
            /关键字    表示在文档中查找关键字  
                n    在所有匹配到的关键字之间往后循环切换
                N     在所有匹配到的关键字之间往前循环切换

            ?关键字    表示在文档中查找关键字
                    n    在所有匹配到的关键字之间往前循环切换
                    N    在所有匹配到的关键字之间往后循环切换


文本排序
    seq    打印一个数字序列
        arg1    结束位置
        arg1 arg2    起始位置    结束位置
        arg1 arg2 arg3    起始位置    步长    结束位置
    tac     按行逆序显示
    sort    默认根据每个字符比较在ASCII码中的升序排序
        man sort    查看sort帮助文档
        -n    按数值排序   
        -r(reverse)    先排序后逆序
        -t    指定字段分隔符
            cp /etc/passwd .
        -k(key)    指定字段进行排序
            sort -t : -k 3 passwd    按ASCII表排序
            sort -t : -k 3 -n passwd    按数值排序
        -u(unique)    排序后去重
        -f    排序时忽略字符大小写
        
    uniq    等同于sort -u,报告重复的行,注意,重复的行必须相邻
        sort 1 | uniq
        -d    只显示重复的行
        -D    显示所有重复的行
        -c    显示重复行重复的次数
        
        
文本统计
    wc(word count)    显示顺序为:行 - 单词数(同类字符) - 字节数
                    字节(容量)    字符(描述)
                    二进制    bit    0    1
                    ASCII    8bit字节    =   字符    
                    字符集    utf-8    Linux     gb2312
                        1字符    =       3字节
        -w    单词
        -c    字节
        -l(小写字母l)    行
        -m    字符
        -L    最长的一行有多少宽度(不含结尾符$)  

date(软件时间:系统计算)    输出和更改日期时间    19700101开始    到    当前经历的秒数
    更改日期的格式    月日时分年.秒    ntp(网络时间协议)    时间同步   
    date -s //设置当前时间,只有root权限才能设置,其他只能查看
    date -s 20160813 //设置成20160813,这样会把具体时间设置成空00:00:00
    date -s 01:01:01 //设置具体时间,不会对日期做更改
    date -s “01:01:01 2016-08-13″ //这样可以设置全部时间
    date -s “01:01:01 20160813″ //这样可以设置全部时间
    date -s “2016-08-13 01:01:01″ //这样可以设置全部时间
    date -s “20160813 01:01:01″ //这样可以设置全部时间

clock(硬件时间)    查看时间    BIOS计时器    晶振

hwclock    查看硬件时间
    -r or hwclock --show
    -w or hwclock --systohc    软件时间导入到硬件时间
    -s or hwclock --hctosys    硬件时间导入到系统时间

cal    查看日历,如果只有一个参数则表示年份,如果有两个则表示月份,年份
    cal    [参数]    [月份] [年份]
    
    -1    显示一个月的月历
    -3    显示系统前一个月,当前月,下一个月的月历    
    -s    显示星期天为一个星期的第一天,默认的格式    
    -m    显示星期一为一个星期的第一天
    -j    显示在当前年份中的第几天
    -y    显示当前年份的日历

1752年9月为什么少了11天?


用户和组  
    创建
    删除
    修改

创建用户
    useradd  userName    表示创建userName 为名称的用户   
    id userName    表示查看 userName 名称的用户是否存在
            如果存在,则默认显示用户的相关信息
                uid    表示的是用户的数字编号  
                gid    用户组的数字编号。 
                groups    表示该用户属于哪个用户组  
    passwd    修改用户密码 
        如果是root用户执行该操作,则:
            如果passwd指令后带参数(用户名),则直接修改指定用户名的密码
            如果没有带参数,则修改root用户的密码 
        其他用户:则只能修改自己的密码,且不能指定用户   

        root用户在修改密码时,默认可以修改成任何密码   
            如果是其他用户,则密码必须符合密码复杂型规则要求

        root用户修改任何用户的密码,都不需要原密码。

    su(switch user)    切换用户   
        如果需要切换用户环境,则使用su username,如果不需要切换用户环境,则直接用su切换即可,但是一般不建议,除非你知道你在做什么。

        root用户切换任何用户都不需要密码,其他任何用户切换任何用户都需要切换到的用户的密码

    exit    切换到某个用户之后,用完以后,麻烦退出该用户  


创建用户组
    groupadd  groupname   创建 groupname用户组  

        创建用户时,如果没有指定让用户所属哪个组,那么会自动创建一个与用户名相同的组。
        如果指定让用户所属哪个组,则使用 -g 选项 ,选项后 跟上 组名,而且组名必须存在

[root@localhost ~]# ll /etc/passwd    用户数据库
-rw-r--r--. 1 root root 2632 Jan 16 15:15 /etc/passwd
[root@localhost ~]# ll /etc/group    
-rw-r--r--. 1 root root 1012 Jan 16 15:11 /etc/group
[root@localhost ~]# ll /etc/shadow
----------. 1 root root 1395 Jan 16 15:15 /etc/shadow
[root@localhost ~]# ll /etc/gshadow
----------. 1 root root 814 Jan 16 15:11 /etc/gshadow


/etc/passwd 

haha:x:1001:1001::/home/haha:/bin/bash

    haha:    用户名
    x:    密码占位符
    1001:       该用户的uid
    1001:      该用户所属组的gid
        :   昵称或描述 
    /home/haha:  用户的家目录
        /bin/bash:   用户的shell(一个进程,将用户的操作传给内核)   


    什么是shell?    中间  shell   多个shell 
    系统默认是/bin/bash    
    
    /sbin/nologin   不允许登录  
    
/etc/group

zhangsan:x:1002:

    zhangsan:   组名称  
    x:          密码占位符
    1002:       组的gid
    :          该组作为附加组的用户

    附加组:  用户除了基本组之外的其他的所属组。
    基本组:  当用户在创建时自动创建的和用户名一样的组,当创建用户时指定-g 的组为 基本组

/etc/shadow

redhat:    用户名  

$6    加密算法
$NQb.pJ6PUCD0Bo90    盐(salt)  
$IIMJUCKuizRT4RPBbZBv66hIUaeE2ZDfZ/u0ixu14xKmX19WUk1EBdyx8/8oPBchfxHaJ8LE/qU7BQ9LBG0Lj0:    密文  

张三    明文    加密算法 + salt    密文    不可逆算法(md5)    摘要算法
李四    明文    加密算法 + salt    密文    瀑布效应    蝴蝶效应

19008:    自动1970年1月1日开始到上一次修改密码的时间所经历的天数   

0:    密码最短使用期限    为0表示不限制
99999:    密码最长使用期限    密码使用多长时间之后必须要改密码,99999表示可不更改    100*365=36500
7:    密码过期警告时间    密码过期前多少天进行警告,提示用户改密码,但是不锁定用户
:    密码过期宽限期限    密码过期后必须改密码的时间,如果还没改,锁定用户,就只能找网管了
:     账号过期精确时间    如果为99999,意味着永不过期
:    保留字段  

/etc/gshadow
 
zhangsan:    组名称
$6$fXxkaFG/e$wFrtezmR.cPVQ3mnWBwnErUQNSotaeeldDbcYiX0uhzsvzGtouhDCB2xUHa3vOueS1011KGmDm6z7.wvX2qiI/    密文 
:    
:

/etc/login.defs    创建用户时使用的一些配置信息。

/etc/skel    有默认四个隐藏文件,该隐藏文件会在创建用户时,自动复制到用户所在的家目录

当创建一个用户时,做了些什么:
    1、/etc/passwd    用户
    2、/etc/shadow    用户密码
    3、/etc/group    组
    4、/etc/gshadow    组密码
    5、/home/    创建家目录
    6、/var/spool/mail    创建用户的邮箱

手动创建一个新用户
       vim /etc/passwd
    bluefly:x:1003:1003:miaoshu:/home/bluefly:/bin/bash
  348  id bluefly
  349  vim /etc/group
    bluefly:x:1003:
  350  id bluefly
  351  cd /home
  352  ll
  353  mkdir bluefly
  354  ll
  355  chown 1003:1003 bluefly/
  356  ll
  357  cd /var/spool/
  358  ll
  359  cd mail/
  360  ll
  361  mkdir bluefly
  362  ll
  363  rm -rf bluefly/
  364  touch bluefly
  365  chown bluefly:mail bluefly 
  366  ll
  367  cd
  368  cd /home/bluefly/
  369  ls -A
  370  cp /etc/skel/.bash* .
  371  ls -A
  372  cp -r /etc/skel/.mozilla/ .
  373  ls -A
  374  ls -lA
  375  cd
  376  su - bluefly
  377  id bluefly
  378  history 

你可能感兴趣的:(linux,运维,服务器)