• Ubuntu-Basis-2nd


    周六,晴,记录生活分享点滴

    参考博客:https://www.cnblogs.com/resn/p/5800922.html

    推荐阅读:https://www.runoob.com/linux/linux-tutorial.html

    cat 、tac

    cat : 链接文件后输出文件内容到屏幕上,其实就是查看文件内容

    tac : 反转行的输出

    cat file1  #显示 file1的文件内容
    cat file1 file2   # 显示file1和file2的文件内容 
    cat -n file1  #  由1开始对所有输出的行数编号
    cat -s file  # 当遇到连续2行以上的空白行,只保留一行空白行

    小结:有空格的时候不是空白行

     

    wc

    wc:统计指定文件中的字节数、字数、行数,并将统计结果显示输出

    -c 统计字节数。
    -l 统计行数。
    -m 统计字符数。这个标志不能与 -c 标志一起使用。
    -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串

    小结:-w可以理解为一个单词,单词与单词之间需要用空格之类的符号间隔开

     

    sort

    sort:排序

    sort [-fbMnrtuk] [file or stdin]
    选项与参数:
    -f  :忽略大小写的差异,例如 A 与 a 视为编码相同;
    -b  :忽略最前面的空格符部分;
    -n  :使用『纯数字』进行排序(默认是以文字型态来排序的);
    -r  :反向排序;
    -u  :就是 uniq ,相同的数据中,仅出现一行代表;
    -t  :分隔符,默认是用 [tab] 键来分隔;
    -k  :以那个区间 (field) 来进行排序的意思

    uniq

    uniq:忽略或报告重复行

    uniq [-icu]
    选项与参数:
    -i   :忽略大小写字符的不同;
    -c  :进行计数
    -u  :只显示唯一的行

    小结:uniq即去重(删去重复的),同 sort-u

     

    cut

    cut:从一个文本文件或者文本流中提取文本列

    选项与参数:
    -d  :后面接分隔字符。与 -f 一起使用;
    -f  :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思;
    -c  :以字符 (characters) 的单位取出固定字符区间

    小结:cut 分隔文本,当一个文件有多列的时候,希望把一列取出来

     

    tee

    tee:读取标准输入的数据,并将其内容输出成文件。

    cat sec.log | tee file1  # 读取sec.log ,并生成file1文件
    cat sec.log | tee - a file1   # 读取sec.log ,并追加,
    cat sec.log  |tee  file1 file2 

    小结:

    • stdin标准输入:系统通过 stdin 接收输入的命令,并执行,出反馈结果
    • stdout标准正确输出:如果执行正确,发送到 stdout 里面,可以从这看到
    • stderr标准错误输出:如果执行错误,发送到 stderr 里面,可以从这看到

     

    history

    history:查看执行过的命令。

    history  # 显示最近1000条历史命令
    history 5   # 显示最后5条命令
    !number# number为history之后命令前的序号:执行该条命令
    !cat # 执行最后一条以cat开头的命令

    more

    more:查看文件内容

     

    less

    less:查看文件内容

    小结:如果查看 cat 文件内容,先输入 /  (正斜杠) ,再输入cat

     

    head

    head:输出文件的开始的部分, 可以指定行数 , 默认显示10行

    head -n 5 file 

    tail

    tail:查看文件尾部的内容。默认显示最后10行

    tail file1
    tail -n 5 file1
    tail -f file1  # 动态监控文件

    小结:tailf 等价于 tail -f

     

    which

    which:查找其他命令的位置

    which ls

    文件权限

    rwxrwxr-- : 三组rwx 分别表示 所有者、所有组、其他人 的权限。

    r : 表示可读, 可以用数字 4 来表示
    w : 标识可写 ,可以用数字 2 来表示
    x : 表示可执行 , 可以用数字 1 来表示
    - :表示没有相应权限  可以用数字 0 来表示

    修改权限的方法: 

    chmod o+w  file1
    chmod g-w file1
    chmod go-w file1
    chmod u=rwx file1
    
    chmod 755  file1  # -rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
    chmod 644  #  -rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
    
    
    #  其中:
    #  u 代表所有者(user)
    #  g 代表所有者所在的组群(group)
    #  o 代表其他人,但不是u和g (other)
    #  a 代表全部的人,也就是包括u,g和o

    目录上的权限: 

    r :  表示是否可以读取目录下的文件名

    w :  表示是否可以在目录下创建修改文件

    x  : 表示目录是否可以被搜索

    有x权限后,就可以使用  ./a.py 的方式执行文件。

    chown : 更改文件的所有者和所有组

    chown root:root  file
    chown root   file  
    chown :root   file 

    小结:

    • chmod:修改权限位rwx,
    • 表示方式:+  -  =  number(eg:123)
    • 表示用户身份:u  g  o  a(所有人)
    • chown:更改所有者、所有组
    • 参数:-R 递归的修改当前目录及其下的所有文件和目录的权限,即chmod修改的是权限位,chown修改的是所有者、所有组

     

    用户和用户组

    linux使用文件保存用户信息

    文件
    #      /etc/passwd 用户账户信息。
    #       /etc/shadow 安全用户账户信息。
    #       /etc/group 组账户信息。
    #       /etc/gshadow 安全组账户信息。
    #       /etc/default/useradd 账户创建的默认值。
    #       /etc/skel/ 包含默认文件的目录。
    #       /etc/login.defs Shadow 密码套件配置。

    useradd

    useradd:  添加用户

    # -c 备注 加上备注。并会将此备注文字加在/etc/passwd中的第5项字段中         
    # -d 用户主文件夹。指定用户登录所进入的目录,并赋予用户对该目录的的完全控制权        
    # -e 有效期限。指定帐号的有效期限。格式为YYYY-MM-DD,将存储在/etc/shadow         
    # -f 缓冲天数。限定密码过期后多少天,将该用户帐号停用       
    # -g 主要组。设置用户所属的主要组  www.cit.cn           
    # -G 次要组。设置用户所属的次要组,可设置多组         
    # -M 强制不创建用户主文件夹         
    # -m 强制建立用户主文件夹,并将/etc/skel/当中的文件复制到用户的根目录下         
    # -p 密码。输入该帐号的密码         
    # -s shell。用户登录所使用的shell         
    # -u uid。指定帐号的标志符user id,简称uid
    
    useradd user1 # 添加用户 user1
    useradd  -d /home/userTT user2 

    userdel 

    userdel : 删除用户

    userdel  user1 
    userdel -r user1
    
    # -r, --remove   用户主目录中的文件将随用户主目录和用户邮箱一起删除。在其它文件系统中的文件必须手动搜索并删除。
    # -f, --force    此选项强制删除用户账户,甚至用户仍然在登录状态。它也强制删除用户的主目录和邮箱,即使其它用户也使用同一个主目录或邮箱不属于指定的用户

    usermod

    usermod : 修改用户信息

    # -c<备注>  修改用户帐号的备注文字。 
    # -d登入目录>  修改用户登入时的目录。 
    # -e<有效期限>  修改帐号的有效期限。 
    # -f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。 
    # -g<群组>  修改用户所属的群组。 
    # -G<群组>  修改用户所属的附加群组。 
    # -l<帐号名称>  修改用户帐号名称。 
    # -L  锁定用户密码,使密码无效。 
    # -s<shell>  修改用户登入后所使用的shell。 
    # -u<uid>  修改用户ID。 
    
    
    # -U  解除密码锁定。
    
    usermod -G staff user2  # 将 newuser2 添加到组 staff 中 
    usermod -l newuser1 newuser  # 修改 newuser 的用户名为 newuser1 
    usermod -L newuser1  # 锁定账号 newuser1
    usermod -U newuser1  # 解除对 newuser1 的锁定

    groupadd

    groupadd : 添加组

    groupadd group1 
    groupadd -g  1000 group1  # 指定gid

    groupdel

    groupdel : 删除组

    groupdel group1 # 删除组

    小结:

    • useradd :添加用户
    • userdel :删除用户
    • userdel username :只删除用户信息,用户的家目录不会被删除
    • userdel -r username1 :删除用户信息,用户的家目录被删除
    • usermod :修改用户信息
    • passwd :修改用户密码
    • groupadd、groupdel、groupmod与 user 类似

    su与 sudo

    su 

    su  : 切换用户,没有参数时,默认切换为root用户;

    su   # 切换为root
    
    ## 推荐
    su -   # 切换为root 并加载user1的环境配置
    su -  user1 # 切换为user1 并加载user1的环境配置

    sudo

    sudo :   让当前用户暂时以管理员的身份root来执行命令。

    Ubuntu 默认没有启用root用户, 普通用户执行一些特殊的操作时,使用sudo就可以让普通用户以root用户的身份执行命令

    sudo有一个配置文件: /etc/sudoers  ;  通过修改配置文件可以让指定用户使用sudo命令

    man sudoers # 查看man手册
    看下面几行: 
    # Host alias specification # 配置Host_Alias:就是主机的列表 
    Host_Alias      HOST_FLAG = hostname1, hostname2, hostname3
    # User alias specification # 配置User_Alias:就是具有sudo权限的用户的列表 
    User_Alias USER_FLAG = user1, user2, user3 
    
    # Cmnd alias specification # 配置Cmnd_Alias:就是允许执行的命令的列表,命令前加上!表示不能执行此命令.命令一定要使用绝对路径,避免其他目录的同名命令被执行,造成安全隐患 ,因此使用的时候也是使用绝对路径! 
    Cmnd_Alias      COMMAND_FLAG = command1, command2, command3 ,!command4
    
    # 配置Runas_Alias:就是用户以什么身份执行(例如root,或者oracle)的列表 
    Runas_Alias RUNAS_FLAG = operator1, operator2, operator3 
    
    
    # User privilege specification  
    # 配置权限的格式如下: 
    #  USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG 
    
    root    ALL=(ALL:ALL) ALL
    如果不需要密码验证的话,则按照这样的格式来配置 
    USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG 
    
    
    格式为:用户名(用户别名) 主机名(主机别名)=[(运行用户或是Runas_Alias)可选] [tag可选]  可以执行的命令(或Cmmd_Alias)  这样描述语法很生硬,不易理解,举例子
    user1  host1 = /bin/kill # user1 可以在host1上使用命令/bin/kill
    user1  host1 = NOPASSWD: /bin/kill # user1 可以在host1上使用命令/bin/kill 同时可以不必输入密码(这里就是使用了NOPASSWD # 这个tag,默认是PASSWD)
    user1  host1 = NOPASSWD: /bin/kill , PASSWORD: /bin/ls # user1 可以在host1上使用命令/bin/kill无需输入密码,但是使用/bin/ls则需要输入密码
    user1  host1 = (opterator) /bin/kill # user1 可以在host1上使用命令/bin/kill但是必须是以operator用户运行这个命令,等价于# su -u opertor /bin/kill
    user1  host1 = (:group_name) /bin/kill # user1 可以在host1上使用命令/bin/kill,且必须以group_name这个用户群组里面的用户来运行。
    %group_name host1 = /bin/kill # 所有group_name里面的用户都可以在host1上执行/bin/kill(Linux中一般代表整个用户群组用# %group_name)
    再举个实际例子,我之前对sudo su这个命令不理解,为什么我可以直接就su到root用户了呢,连密码都不需要?查看了一下sudoers文件才知道原来里面有这么一行:
    xxx     ALL=NOPASSWD: /bin/su

    小结: 

    • su :切换用户
    • su - :加载用户
    • sudo :
    • 一般情况下让用户以管理员的身份执行某条命令;
    • 二般情况下让用户以指定的身份执行某条命令。
    • 进入sudo的方式:vi /etc/sudoers 或 visudo

     


    alias

    alias : 给命令起别名

    alias ll='ls -alF'
    alias la='ls -A'
    alias l='ls -CF'

    如果需要别名永久生效,需要保存到 .bashrc 文件

  • 相关阅读:
    python 3 创建虚拟环境(Win10)
    pip install 清华源加速
    Golang ioutil读写文件测试
    Golang 简单web测试
    Java AES加密解密工具 -- GUI 、在线传输文件
    201621123080《java程序设计》第14周实验总结
    201621123080 《Java程序设计》第13周学习总结
    201621123080《Java程序设计》第12周学习总结
    201621123080《Java程序设计》第十一周学习总结
    201621123080 《Java程序设计》第10周学习总结
  • 原文地址:https://www.cnblogs.com/chungzhao/p/12941671.html
Copyright © 2020-2023  润新知