时间管理:
linux: 系统时间,硬件时间
date 查看系统时间 clock查看硬件时间
hwclock -w:表示系统时间是准确的,把硬件时间设定为与系统时间一致
-s:相反
date mm[月]dd[日]hh[小时]yy[年].ss[秒]设定时间格式
date +FORMAT
date "+%H"
date "+%H:%M:%S" %y简写的年份%Y完整的年份
%d %D %y-%m-%d
cal 显示日历 cal 2011显示2011日历
cal 1 2011 显示2011年一月日历
date "+%s"时间戳值
bc 计算器
命令:
内部:shell自身带的命令,所有的内部命令都没有对应的可执行文件
外部:尤其相反
which +命令 查看是内部还是外部命令
type +命令 查看是内部还是外部命令
--help 通常是外部命令获得帮助的方式
help cd
内部 help command
外部 command --help
man一个命令的使用手册
man ls
info command
info主要讲述命令背后的故事 一般作为man 的补充信息使用
/usr/share/doc/ls-2.1.3/
whatis commad 用于说明命令的简单意义
man 为命令提供的使用手册是分章节的
第一章节:普通用户的命令
第二章节:显示系统调用
第三章节:库调用
第四章节:特殊文件
第五章节:文件格式
第六章节:游戏说明
第七章节:杂项
第八章节:管理类命令
man n[章节数] command
whatis command
cd /usr/share/man
export LANG=c避免乱码
man内关注的信息:
NAME
DESCRIPTION
EXAMPLES
FILES
OPTIONS
man的使用:
空格 翻页 为一屏幕
输入b 会看
回车键 为翻一行
k 会翻一行
man -f ls = whatis ls
makewhatis 帮whatis生成一个数据库文件
man -k ls显示有ls 的简要信息
man -K ls在man 的数据库中查找
输入/查找的关键字/在man 内搜索
?也是 查找顺序相反 ?从尾部开始 用n切换下一个N切换上一个
文本查看命令:
cat,more,less,tail,head,tac
cat: concatinate,dump
连接,
cat -n
cat -e显示控制字符【换行符$】
tac 与cat
more 可以翻页cat不能
less 支持前后翻页man基于less
head -n -20 =head -20 前20行显示
tail -n -20 =tail -20 后20行显示
tail -f 显示文件不退出
wc:word count统计行数 单词书 字节数
wc -l -w -L -c
如何实现用户管理:
user group permission
user:权限的集合 user name 会对应一个UID[用户表示]
验证用户
group:容器,用户的集合,主要用于实现权限指派
GID:0-65535 root:0永久 验证组
id root查看用户id
系统用户:1-499
普通用户:500-65534
nobody:65535
私有组,公共组
任何一个用户必然会属于某一个组,私有组,基本组
建立后加入多个组,附加组
安全上下文:Secure context
进程:资源分派的单位,一个实体,是以程序正在执行的副本
df -f
用户账号存放于/etc/passwd
密码 /etc/shadow
组 /etc/group
密码 /etc/gshsdow
useradd 用户名[添加用户]
username:x:UID:基本组的GID:备注[COMMENT]:家目录HOME:用户默认使用的shell
cat /etc/shells
/etc/shadow
student:$1$2UdlmYPt$XHJHaz8U79fzqPU1iKd8P/:15174:0:99999:7:::
用户名:加密的密码:从1970年开始到上次修改密码的时间:
密码的最短使用期限:密码最长使用期限:
提前多久提示用户密码即将过期:密码过期多少天以后账号将被禁用:
账号的使用期限:
MD5散列加密
对称加密
公钥加密
单项加密:提取数据的特征值[1.雪崩效应2.定长输出]MD5(128位定长输出),sha1(160位定长输出)
salt
dean:x:503:
创建用户并制定属性信息:
useradd:
-u 指定UID
-g 指定组
-G GROUP1,GROUP2指定附加组
-c "comment[备注]"
-d /path/to/home
-s 指定非默认shell
-r 把一个用户添加为系统组
groupadd:
-g GID
-r把一个组添加为系统组
删除:
userdel -r 连同用户及其家目录全部删除
groupdel
修改用户属性:
usermod:与useradd类似
-u 修改用户的UID
-g
-a -G修改额外组
-s
-c
-M -d
-l修改用户登录名称
-e 修改用户的过期时间
-U解锁用户允许登录
-L锁定用户账号不允许登录
groupmod:
-g 改变组的GID
-n改变组名
passwd
-l锁定用户账号
-u解锁用户账号
--stdin把标准输入改为别的输入
-n
-x
finger:
id:
who:当前系统用户登录
属主:rwx u
属组:rwx g
其他:rwx o 所有用a表示
chown:【chown用户名 文件名】来修改文件的所有者,
chown [options] USERNAME file
-R 递归修改
--reference=a.txt b.txt 把b改成与a相同的属组与属主
chgrp [options] USERNAME file
chown USERNAME:GROUPNAME file 同时更改属组与属主
chmod:
chmod [optione] mode files
chmod 777 a.txt
chmod u=rw- a.txt
+/-
chmod g-w a.txt
chmod a+x a.txt
若改变目录则目录内的文件权限不改变
若修改内部文件 则与chown类似 -R --reference=
BASH:
history,
!$,esc+.,alt+.
1.命令行编辑:
ctrl+a直接到行首
ctrl+e直接到行尾
ctrl+u从光标开始到行首全部删除
ctrl+k 到行尾
ctrl+左右箭头,左右跳一个单词
2.文件名的通配:
*:表示任意长度的任意字符
?: 任意单个字符,只匹配一个字符
[]:匹配指定范围内的任意单个字符,[a-z]
[^a-z]表示去反 [a-zA-Z0-9]
[:keyword:] [:lower:],[:upper:],[:space:],[:punct:]
[:alnum:],[:digit:]
man 7 glob查看所有以上文件名通配
3.命令行补全和路径补全:tab键
命令行补全:
echo $PATH环境变量
路径补全:在父目录下查找语气相关的路径补全
cd /etc/sysconfig
4.命令行展开:
~:展开为对应用户的家目录
{}:展开为多个路径:mkdir -pv x/{y,z/{1,2}}
mkdir -pv {x,y}_{1,2}
5.命令扩展:
$():
``:把一个命令执行结果当做一个对象来使用
都表示命令引用
变量引用“”
“”弱引用,可以进行变量替换
‘’强引用,不会进行变量替换
变量:命名的内存空间,通常只对当前有效,不会长久有效
bash可以使用变量,变量不需要声明,变量不区分类型,默认都是字符串型
不能参与数学运算
NAME=jerry
变量名=“strings”
set 变量名=“strings”
撤销用 unset 变量名
echo $NAME显示变量NAME的值
echo -n 不显示换行
-e 控制转译字符
${NAME}标准格式
编程语言:
脚本语言:以源程序的方式存在,执行前不需要编译,
而是靠一个解释器解释解释执行;维护简便,执行效率差
bash,per1,python,ruby,php
编译型语言:
编辑-->编译-->连接-->运行
维护麻烦,执行效率高
c,c++,
脚本:是命令的堆砌
#!/bin/bash