[linux学习笔记]第2天:时间管理,命令帮助信息,文本查看,权限及用户管理,BASH和变量,脚本

linux的时间管理

关于时间的命令:date,clock ,hwclock ,cal

  date          //查看系统时间
  clock         //查看硬件时间  
  hwclock
         -w     //将硬件时间设为系统时间
         -s     //将系统时间设为硬件时间

   cal          //显示日历
  cal 2011     //显示2011年的日历
  cal 1 2011   //显示2011年1月的日历 


  若要修改时间,注意格式
  date mmddHHMMyy.ss  //月月日日时时分分年年秒秒      
  date +FORMAT
  date "+%H"         //显示小时
        +%F          //日期 2011-11-11         
        +%T          //时间 11:11:11
  date "+%H:%M:%S"   //显示小时:分钟:秒
       y Y d D       //d 天 D 日期
                       y 年 Y 完整年份           
  date "+%s"         //从1970年到现在的秒数       

比如修改系统时间为2000-10-10 20:20:10

[root@server45 ~]# date "101020202000.10"
2000年 10月 10日 星期二 20:20:10 CST         


———————————————————————————————————————————

命令帮助信息

命令:
 内部命令: shell本身自带的命令,没有对应的可执行文件 
 外部命令: 有对应的可执行文件
 
 which cd        //查看长cd 命令所在目录(cd没有对应文件)
 type cd         //查看命令类型
 type ls          
 command --help   //外部命令帮住信息  摘要信息
 help command     //内部命令帮助信息  摘要信息

使用--help查看ls的帮助信息

[root@server45 ~]# ls --help
用法:ls [选项]... [文件]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort.


  
 man command      //显示命令的使用手册 mainpage
 man为命令提供的使用手册是分章节的
   1:普通的用户命令
   2:系统调用
   3:库调用
   4:特殊文件
   5:文件格式
   6:游戏
   7:杂项
   8:管理类命令     //重要

 #man里需要关注的项
  NAME
  DESCRIPTION
  EXAMPLES
  FIFES
  OPTIONS


info command     //讲述命令背后的故事

————————————————————————————————————————————————————

文本察看类命令:
 cat,more,less,tail,head,tac
 cat: concatinate , dump     //连接,倾倒式显示
 cat -n     //显示行号
     -e     //显示特殊隐藏字符 $在linux里是换行符

 tail -n 后n行 默认10行
 head -n 前n行 默认10行

 wc : word count
 wc /etc/rc.d/rc.sysinit //统计文件的字数行数等
 -l //只显示有多少行
 -w -m -L //单词,字符大小,最长的行多长

例如:查看/etc/shadow,要求显示行号

[root@server45 ~]# cat -n /etc/shadow
     1	root:$1$3V8BcCva$MkHdNIWmVtTD10JU95Uxf/:15173:0:99999:7:::
     2	bin:*:15173:0:99999:7:::
     3	daemon:*:15173:0:99999:7:::

如果要查看的文本过长,可使用more,less分页查看
 more  只能向后翻
 less  前后都可以翻

##命令格式

more /ect/shadow

————————————————————————————————————————————————

如何实现用户管理
 User, Group, Permission

相关概念:

   User:用户是使用权限的集合,是一种凭证
   User Name:UID        //系统通过UID识别用户
   验证用户:密码,指纹等。。 
   Group:权限的集合      
   Group Name : GID     
   UID GI0  :  0 - 65535
   ROOT     :  0
   系统用户 :  1-499     
   普通用户 :  500-65534
   nobody   :  65535   //相当于windows的guest
   私有组  : 组里只有一个用户 用户的基本组
   任何一个用户必然属于某个组,私有组
   公有组  : 多个用户    用户的额外组

 

 permission 权限
  drwx------ 2 root root  4096 Jul 18 20:23 gconfd-root
   |  |  |
    属 属 其   用户 属组
    主 组 它
   r 读 w 写 x 执行 t ?
   4    2    1      

 chown,chgrp,chmod命令使用说明
   chown [option] USERNAME file      //改属主
        -R        //递归修改 目录下的文件也改
        --reference=a.txt b.txt  //把b改成a的标准 
   chown USERNAME:GRPNAME a.txt
   chown USERNAME.GRPNAME a.txt
   chown :GRPNAME a.txt                                   
   chown dean a.txt
   chgrp                             //改属组
   chgrp dean a.txt
   chmod [options] mode files...
   chmod 777 a.txt
   chmod u=rw- a.txt
   +/-                           //+授予-撤销
   chmod g-w a.txt                  
   chmod +x a.txt
         -R
         --reference=

练习:创建一个文件aa,把它的权限改为777,显示结果

[root@server45 ~]# touch aa                          
[root@server45 ~]# cat aa
[root@server45 ~]# ll aa
-rw-r--r-- 1 root root 0 10-10 20:45 aa              //权限为644
[root@server45 ~]# chmod 777 aa                      //修改aa的权限
[root@server45 ~]# ll aa
-rwxrwxrwx 1 root root 0 10-10 20:45 aa              //权限变为777


用户的添加,修改,组的添加和修改

useradd 命令
   -u UID
   -g GID         //用户所属基本组
   -G -a GROUP1,GROUP2   //指定附加组
   -c “COMMENT”
   -d /path/to/home
   -s SHELL
   -r          //添加为系统用户
  /home/username    //里面存放用户的环境变量
 
  groupadd 命令
    -g GID
    -r            //添加为系统组

  userdel
   -r            //连同家目录一起删除
  groupdel

  usermod
    -u       //修改UID
    -g
    -a -G    //修改额外组
    -s
    -c
    -N -d
    -l       //改变登录名称
    -e       //过期时间
    -L       //锁定用户
    -U       //解锁用户ca
  groupmod
    -g
    -n       //改变组名
 
  passwd
    -l       //锁定用户帐号
    -u       //解锁用户帐号
    --stdin  //把标准输入改为别的输入
    -x       //密码最长使用期限
    -n       //最短使用期限

练习:创建一个用户xiaohong,家目录为/tmp/xiaohong,创建一个组ren,把xiaohong加入到组ren里

[root@server45 ~]# useradd -d /tmp/xiaohong xiaohong
[root@server45 ~]# tail -1 /etc/passwd
xiaohong:x:515:515::/tmp/xiaohong:/bin/bash                      //家目录成功修改
[root@server45 ~]# groupadd ren
[root@server45 ~]# usermod -G ren xiaohong
[root@server45 ~]# tail -1 /etc/passwd
xiaohong:x:515:515::/tmp/xiaohong:/bin/bash     
[root@server45 ~]# tail -1 /etc/gshadow 
ren:!::xiaohong                                                  //xiaohong成功加入ren

##其他有用的命令
  figer       //用户信息
  id          //用户id相关信息
  who         //当前系统所登录用户

————————————————————————————————————————————————————

BASH和变量

 bash的使用技巧

 

 history                //显示执行过的命令,默认1000条
 !$, Alt+. Esc+.     //输入上一条命令的最后一个参数
  
  1.命令行编辑的快捷键
   CTROL+a     //行首
   CTROL+e     //行尾
   CTROL+u     //光标开始到行首删除
   CTROL+k     //          行尾
   CTROL+Arrow //一次跳单词一个

 2.文件名通配符
  *      //任意长度任意类型
  ?     //任意单个字符
  []     //匹配指定范围内的任意单个字符,[a-z]
   ^      //取反
    特殊通配符
    [:alnum:]  [:alpha:]  [:blank:]  [:cntrl:]
    [:digit:]  [:graph:]  [:lower:]  [:print:]
    [:punct:]  [:space:]  [:upper:]  [:xdigit:]  //用man 7 glob查看 
     

    #例如显示/etc/目录下,所有以不区分大小写p字母开的,后面跟了任意字符的文件

    ls /etc/[pP]*
   # 显示/etc/目录下,以小写字母开头,第二个字符是数字,后面跟了任意字符的文件
    ls /etc/[:lower:][:digit:]*


    
 3.命令行补全和路径补全                   //连续敲击Tab键
   命令行补全:执行命令是到$PATH变量里的路径下匹配最佳命令
   路径不全:在父目录下找最佳匹配
 
 4.{}展开
  ~         //展开为对应用户的家目录
    {}        //展开多个目录
     mkdir -pv x/y x/z/1 x/z/2
     mkdir -pv x/{y,z/{1,2}}    
     x_1,x_2,y_1,y_2
     mkdir -pv {x,y}_{1,2}      //多项式展开


     
 5.命令扩展     
    $()         //命令执行结果作为参数
     mkdir $(date “+%Y-%M”)               //以当前日期名作为文件夹名字创建,很实用
    ``          //表示命令引用和$()类似
     ls -l `which passwd`                       //优先执行which passwd  ,这条命令的作用是找到并显示passwd命令所在路径里的内容

—————————————————————————————————————————————————— —— ———— 
  变量:命名的内存空间
变量的定义、取消和显示

变量名=“strings”
set 变量名=“strings”
unset 变量名

  NAME=JERRY     //定义NAME变量为JERRY
  echo $NAME        //显示NAME变量的内容
  echo ${NAME}     // 标准写法
   -n  //不显示换行符
   -e  //应用转义字符
 
  变量引用:
   “”  : 弱引用,可以进行变量替换
   ‘’  : 强引用,不会进行变量替换
   
  变量不会永久有效,通常只对当前shell有效,退出shell后,定义的临时变量会自动取消,另外

  bash里
   1.变量不需要声明
   2.变量不区分类型,所有变量默认字符串型,不能参加数字运算

  
 ————————————————————————————————————————————————————————————————

 shell脚本
 编程语言的分类
  脚本语言
:bash,perl(语言学家),python(灵活,简洁),ruby,php
   以源程序的方式存在,执行前不需要编译,而是靠一个解释器执行
   维护简便
   执行效率差
   
  编译型语言:
   编辑-->编译-->链接-->运行  ,更接近底层,执行效率很高,如C , C++但是需要编译,话费的时间长,适合开发


 SEHLL脚本:可以理解为命令的堆砌

SHELL脚本的格式和使用方法
  #!/bin/bash            //第一行标准 称为shebang
  #                              //备注符号

  nano myscript.sh        //先用nano创建一个脚本文件
  chmod +x myscript.sh    //再编辑脚本后给脚本文件赋值
  ./myscript.sh          //执行脚本

写一个脚本:
1、创建目录/tmp/scripts
2、切换工作目录至此目录中
3、复制/etc/pam.d目录至当前目录,并重命令为test
4、将当前目录中的test及其里面的文件和子目录的属主改为redhat
5、将test及其子目录中的文件的其它用户的权限改为没有任何权限

#!/bin/bash
#
DIR='/tmp/csripts2'          //先声明一个变量DIR
mkdir $DIR
cd $DIR
cp -rf /etc/pam.d ./test     //使用递归复制        
chown -R redhat ./test\      //改属主 
chmod -R o=--- ./test        //递归修改权限
ls -lR $DIR                  //显示结果
unset DIR                    //取消变量,其实脚本执行完毕后会自动释放变量



 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

           

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值