file file_name 可以判定一个文件类型的命令,可以区别普通文件的不同之处。
Linux的时间 开机时系统读取一下硬盘时间,以此为时间起点,系统和硬件各自开始维持自己的时间
系统时间 用date 查看
硬件时间 用clock 查看
hwclock 设定时间
-w 以系统时间为主,把硬件时间设定为系统时间
-s 同上相反
date mmddHHMMyy.ss 将系统时间设定为某一固定的时间
date +FORMAT 设定显示的时间格式
date
"+%H" 显示时间中的小时
“+%M”
“+%s” 查看时间戳 显示从1970年到现在所经过的秒数
“+%S”
“+%y”
“+%F”
cal 显示当月日历
cal 2011 显示2011年的日历
cal 1 2011 显示2011年1月的日历
Linux从1970年为元年
which 查看一个命令的二进制文件的存放位置
type 查看一个命令是外部还是内部命令
Linux命令的类别
内部命令:shell自身所自带的命令
外部命令:所有的外部命令都有一个可执行的二进制文件
如何获得一个命令的帮助信息
外部命令帮助信息获得:command --help
内部命令帮助信息获得:help command
whatis command 显示一个命令的简单说明 同时显示出此命令不同部分在man手册上的章节数。
whatis 是在数据库中调用这个命令的相关简单说明,如果系统刚刚安装,有些命令可能还没来得及创建数据库,
因此便无法使用whatis开查看此命令的帮助信息。可以使用mkwhatis command帮命令生成一个有关此 命令的数据库
man command 显示一个命令的使用手册即详细的使用信息
info command 显示一个命令的背后故事,通常作为man的补充信息使用
也可以进入官方网站查看相关的命令手册
/usr/share/doc 也有一定的帮助信息
man为命令提供的使用手册是分章节的
第一章节:关于普通的用户命令的说明
第二章节: 系统调用
第三章节: 库调用
第四章节: 特殊件文件格式文件
第五章节:关于配置文件的语法说明
第六章节: 游戏
第七章节: 杂项
第八章节:关于管理类的命令说明
man N(章节数)command 显示这个命令在man命令相关章节的说明
man -k +关键字 在数据库中查找和关键字有关的命令说明
man -K +关键字 在man手册中查找,速度慢
man命令的每个段名字
NAME
DESCRIPTION
EXAMPLES
FILES 这个命令所关联的配置文件
查看有关命令的man帮助信息时使用技巧
空格键 向前翻一页
b键 向后翻一页
回车键 向前翻一行
k 向后翻一行
/+关键字 从头至尾查找关键字的位置
?+关键字 从尾到头查找
n 在多个关键字之间进行向下一个关键字切换
N 向上一个关键字切换
q 退出man手册
/usr/share/man 存储man命令手册各个章节的压缩文件
文本查看命令
cat 可以将多个文件连接起来倾倒在屏幕上显示出来,自动直接退出。
-n 显示出行号
-e 用于显示行结束符$
tac 与cat相反,从后向前显示
more 以页的形式进行显示,分屏查看。向后翻屏功能好,翻到最后直接退出,向前翻屏功能不好
less 功能强大,使用技巧和man相同
head 显示文件的前多少行
-n 20 = 20 查看文件的前20行,默认显示前10行
tail 查看一个文件的后多少行,格式同head相同
-f 显示之后不退出,并能时时更新显示新增内容,用Ctrl+c退出
wc 统计一个文件有多少行,单词数,字节数。
-l 显示文件的行数
-w 显示文件的单词数
-c 显示文件的字节数
系统上如何实现用户管理
User 用户是一个使用者使用系统资源的凭证,主要用于多用户系统而言。
Group 是一个存放用户的容器,是一个权限的集合,加入组的用户自动就获得了这个组所拥有的权限。
Permission
UID
在系统上保存的无符号的整数,这样的0-65535十进制数,管理员的ID永远为0。
系统用户ID号:1-499不允许登录系统。
普通用户ID号:500-65534。
nobody用户:来宾账号65536或-1.
GID
组分为私有组和公共组:任何用户必然会属于一个组。
私有组:只有一个用户,属于这个用户的私有组
公共组:建立之后加入了多个用户的组
进程:资源分派的单位,是一个程序正在执行的副本。(以进程为单位划分CPU、内存的资源)
安全上下文:当一个进程发起的时候,
三种权限对于文件的作用:
r:能查看
w:能够编辑
x:能够让文件执行起来
三种权限对于目录的作用:
r:能够查看目录中的内容
w:能够在目录中新建文件
x:能够进如目录
权限和八进制数字之间的转换 r=4,w=2,x=1
---:000 0
--x: 001 1
-w-: 010 2
-wx: 011 3
r--: 100 4
r-x: 101 5
rw-: 110 6
rwx: 111 7
chown USERNAME file 改变文件的属主
USERNAME:GRPNAME file 同时改变文件的属主和属组
USERNAME.GRPNAME file 同上
.GRPNAME file 只改变文件的属组
--reference =a b 将文件b的属性以文件a为标准进行修改
-R 递归修改目录内的文件属性(将目录内的文件属性连同目录属性一起改变)
chgrp 改变文件的属组
只有管理员才能改变文件的属主、属组的权限。
chmod 改变文件的权限
1、chmod 777 a.txt 将文件a.txt 的所有属性都改成rwx。
2、属主=u 属组=g 其他=o 所有=a chmod u=rwx a.txt 将文件a.txt的属主属性改为rwx,其他属性不变
3、通过u、g、o加减r、w、x 修该相关的属性
033 课本88习题2 方法1、chmod u-w,go-x 2、chmod 544 3、chmod u=rx,go=r
/etc/passwd 存放所有用户的帐号
/etc/shadow 存放所有用户的密码
/etc/group 存放所有组的帐号
/etc/gshadow 存放所有组的密码
mingetty 建立生成tty
login 登录
finger 显示用户的基本信息
id 查看用户的ID相关信息
who 查看系统上正在登录的用户信息
useradd uername 添加一个用户
-u +UID 指定创建用户的ID
-g +GID 指定创建用户组的ID
-G 指定用户的附加组(额外组)
-c 指定用户的其他信息(CONNENT)
-d 指定用户家目录
-s 指定非默认的shell
-r 将用户添加为系统用户
userdel 删除一个用户(不删除用户的家目录)
-r 连同用户的家目录一起删除
usermod 修改用户的指定信息
-u 指定用户的ID
-d 指定用户的家目录
-a 在用户附加组之上修改
-G 修改用户的附加组(若用户有附加组则原附加组将被覆盖,一般与-a一起运用)
-l 修改用户的名字
-e 指定用户的过期时间
-L 锁定用户不让被登录
-U 解锁
groupmod
-n 改变组名
-g 改变组的ID
groupdel 删除一个组
guoupadd 添加组
-g 指定组的GID
-r 将该组添加为系统组
passwd
-l 锁定用户帐号
-u 解锁用户帐号
--stdin 把标准输入改为其他输入,使用管道技术时经常用到这个选项 如:利用管道将redhat账户的密码改为123456 echo “123456" | passwd --stdin redhat (对passwd采用键盘输入之外的其他输入)
tail -l /etc/passwd 显示用户帐号的信息 显示的信息格式如下
用户名:x(密码占位):UID:GID(用户所属基本组的ID):CONNENT(全名或电话信息):用户的家目录:用户默认时的shell
tail -l /etc/shadow 显示用户密码的信息 显示的信息格式如下
登录名:md5散列加密过密码(前两个$之间说明加密的算法,中间两个$之间为计入的杂质,后两个$之间为加密后的结果)
:密码最近的修改时间(从1970年1月开始到上次密码修改所经过的天数):密码最短的使用期限(以上次修改时间为起点)
:密码的最长使用天数(算法同上):提前多长时间提示用户密码将要过期:密码过期几天后帐号将被禁用
:用户帐号过期时间(默认为99999天):保留域
tail -2 /etc/group 显示组的帐号信息 信息显示格式如下
组名:密码占位:组ID:以此组为附加组的用户名
cat /etc/shells 查看系统上可以使用的所有shell
bc 为系统中简单的计算器
加密的方法
1、对称加密
2、公钥加密
3、单向加密:提取数据的特征值 特点:(雪崩效应(两次输入只要有一点点改变,将对结果产生巨大影响),定长输出md5(128bit)、shal(160bit))
BASH的功能 !$,Alt+. Esc+. 调用上一条命令的最后字符
1、
Ctrl+a 移动至行首
Ctrl+e 将光标移动至行尾
Ctrl+u 删除光标到行首的内容
Ctrl+k 删除光标到行尾的内容
Ctrl+Arrow 按箭头的方向依次移动一个单词
2 文件名通配
*:可以表示任意长度的任意字符
?:可以表示任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:表示不匹配指定范围内的任意单个字符
[:upper:]所有的大写字母 [[:upper:]]表示匹配所有大写字母
[:lower:]所有小写字母
[:punct:]所有的标点符号
[:space:]所有的空白字符
[:alpha:]所有字母
[:alnum:]所有字母和数字
[:digit:]任意单个数字
man 7 glob 显示有多少个如上可以使用的字符组合
3、命令行和路径补全
echo $PATH 显示命令补全的路径集
4、命令行展开
~:展开为对应用户的家目录 如cd ~Redhat 进入Redhat的家目录
{}:一次创建 x_1,x_2,y_1,y_2四个文件 mkdir -pv {x,y}_{1,2}
一次创建x/y x/z/1 x/z/2 三个文件 mkdir -pv x/{y,z/{1,2}}
5、命令引用
${}='': 将命令的执行结果作为参数传递给另外一个命令 如:显示passwd的权限
ls -l ‘which passwd’ = ls -l ${which passwd}
6、变量引用
变量;是命令的内存空间
NAME=jerry 或 set NAME=jerry 创建一个变量名字为NAME,里边存入jerry
$NAME 引用变量NAME中的jerry
unset NAME=jerry 撤销这个变量
echo $NAME 显示NAME这个变量的内容
“” 为弱引用,可以进行变量替换,将变量的值进行引用。
·· 为强引用,不可进行变量的替换
bash 中变量不需要声明,可直接占用。默认都为字符串型,不能参与数学计算
echo 显示一串文字
-n 显示后不换行
-e
-t
编程语言:
脚本语言:以源程序的方式存在,执行之前不需要编译,而是靠一个编译器解释执行,维护简便,但是执行效率差。
代表:bash,perl(完全面向对象,语法非常严格,),python,ruby,php(最为难懂的语言,然后出现perl)
编译型语言:流程为 编辑-->编译-->连接-->运行 ,维护非常困难,执行效率高。
代表:c,c++
脚本:就是命令的堆砌。
bash脚本第一行格式:#!/bin/bash 第一行用来让Linux中的相应解释器来识别并进行解释。
课堂习题:
复制/etc/skel目录至/home,并且重命名为centos
cp -r /etc/skel /home/centos
设定此目录极其内部文件或子目录的属主属组为Redhat用户,Redhat组
chown -R redhat:redhat centos
设定此目录极其内部文件或子目录的属组及其他权限为空。
chmod go=--- centos
将Redhat的家目录改为/home/centos
usermod -d /home/centos redhat
切换至Redhat用户,验证其家目录是否正常可用
finger redhat 查看Redhat的家目录
创建文件 ./a.txt