Linux开发环境及应用·第一周·开始使用Linux(二)

因为是高三学生,空闲时间比较少,所以这些笔记整理出来比较慢,见谅,见谅。

既然是做笔记,这一次就不全部照抄ppt了,要加入自己的理解。

用户

Linux中的用户分为,普通用户和超级用户(root)。

root用户(超级用户)不受权限的制约,可以随意修改和删除文件,甚至是删除整个根目录:rm -rf / 千万不要作死用root权限运行上述命令!在root权限下一定要小心、谨慎地操作 (°ー°〃)

普通用户由root用户使用useradd命令创建,用户的信息放在/etc/passwd文件中,包括 用户名用户ID,以及 Home目录 的位置。

登录Shell

登录Shell一般为bash,也可以选择其它shell,其它系统程序,甚至自己设计的程序。

用户可以从普通终端或者网络虚拟终端登入系统。

登入shell后,出现的shell提示符有以下两种

  • $ Bourne Shell系列(sh,ksh,bash)
  • # 表示当前用户为root用户

出现shell提示符就可以输入命令了,Linux的系统命令是区分大小写的,比如:lsLS是两个不同的命令,只是举个例子,LS这个命令不一定存在。

基本命令

  • man 查阅手册
  • date 日期和时间
  • cal 日历
  • bc 计算器
  • passwd 修改口令

man

man命令用户查阅联机手册,内容包括:

  • 各种命令的说明书
  • 系统调用的使用手册
  • C语言和其它语言的库函数手册
  • 系统配置文件格式

最常用的命令一般是由两到三个字母组成,就如man命令的名字取自manual的前三个字母。

用法:

  • man name 最基本用法,查看man命令本身的用法可以用man man
  • man section name 章节编号: 1为命令,2为系统调用,3为库函数,5为配置文件
  • man -k regexp 列出关键字与正则表达式regexp匹配的手册项目录
  • q退出,按空格翻到下一页,上下箭头控制上下滚动一行。

手册页的内容为:

  • 列出基本功能和语法
  • 对于C语言的函数调用,列出头文件和链接函数库
  • 功能说明
  • SEE ALSO:有关其它项目的名字和章节号

运行man man

MAN(1)                         手册分页显示工具                         MAN(1)

名称
       man - 在线参考手册的接口

概述
       man  [-C  文件]  [-d]  [-D] [--warnings[=警告]] [-R 编码] [-L 区域] [-m
       系统[,...]] [-M 路径] [-S 列表] [-e 扩展] [-i|-I]  [--regex|--wildcard]
       [--names-only]  [-a]  [-u] [--no-subpages] [-P 分页程序] [-r 提示] [-7]
       [-E 编码]  [--no-hyphenation]  [--no-justification]  [-p  字符串]  [-t]
       [-T[设备]] [-H[浏览器]] [-X[dpi]] [-Z] [[章节] 页[.章节] ...] ...
       man -k [apropos 选项] 正则表达式 ...
       man -K [-w|-W] [-S list] [-i|-I] [--regex] [章节] 词语 ...
       man -f [whatis 选项] 页 ...
       man  -l [-C 文件] [-d] [-D] [--warnings[=警告]] [-R 编码] [-L 区域] [-P
       分页程序]  [-r  提示]  [-7]  [-E  编码]  [-p  字符串]  [-t]  [-T[设备]]
       [-H[浏览器]] [-X[dpi]] [-Z] 文件 ...
       man -w|-W [-C 文件] [-d] [-D] 页 ...
       man -c [-C 文件] [-d] [-D] 页 ...
       man [-?V]

描述
       man         是系统的手册分页程序。指定给        man        的        页
 Manual page man(1) line 1 (press h for help or q to quit)

date

date命令最基本用法就是不带任何参数运行:

$ date
2019年 01月 19日 星期六 13:45:33 CST

我们还可以带一个参数来控制输出格式。

$ date '+%Y-%m-%d'
2019-01-19

这个参数叫做格式控制字符串,用法如下:

  • 第一个字符必须为+
  • %Y year 年
  • %m month 月
  • %d day 日
  • %j 这一年的第几天,用三位数表示
  • %H hour 时
  • %M minute 分
  • %S second 秒
  • %s 这个s是小写,表示 时间戳,是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒
  • %a 星期几的缩写,大写%A则表示全称,比如SatSaturday,我的系统语言是中文的,所以是星期六
  • %% 表示%本身这个字符

下面来输出类似如下的日期

% 2018年 1月1日 星期一 第001天 时间 -> 14:07:01 时间戳 -> 1234567 % 

代码如下:

$ date '+%% %Y年 %m月%d日 %A 第%j天 时间 -> %H:%M:%S 时间戳 -> %s %%'
% 2019年 01月19日 星期六 第019天 时间 -> 14:12:05 时间戳 -> 1547878325 %

date还可以设置系统时间,不过需要root权限,更详细的用法可用man命令查看

可以通过NTP协议校准系统时间,命令为ntpdate:

  • ntpdate -q 0.pool.ntp.org 查询0.pool.ntp.org的时间,普通用户也可以用
  • ntpdate 0.pool.ntp.org 设置时间,必须为root用户

cal

直接输入cal不带任何参数则显示当前月份,如下:

$ cal
      一月 2019     
日 一 二 三 四 五 六
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31               

上面的19背景颜色是不一样的,表明今天是19日。

其它用法:

  • cal year 例:打印2020年的日历 cal 2020
  • cal month year 例:打印2019年1月的日历 cal 1 2019

bc

bc是一个功能强大的计算器,除了基本计算外,还支持变量,函数,条件和循环等编程功能,使用类似C语言语法的小型编程语言,并且可以进行任意精度的计算!

启动后以交互式的方式运行,输入quit退出,基本用法如下

  • bc 无参数启动,缺省精度是小数点后0位
  • bc -l-l参数启动,缺省精度是小数点后20位
  • 在交互式环境中输入scale=100可以设置精度为100(小数点位数)
  • 在交互式环境中,可以像C语言一样进行编程,变量不需要指定类型,比如计算1加到100,可以输入for(i=1;i<=100;i++){sum+=i}然后输入sum显示变量的值(所有未初始化的变量默认自动初始化为0)
  • bc file 可以将指令写在一个文件内,用文件名作为参数给bc运行

passwd

passwd用于更换用户口令(可以认为是密码,不过严格来说密码和口令是两个概念)。

普通用户使用passwd更换自己的口令,更改前要先验证原来的口令。

root用户修改口令不用验证原来的口令,还可以强行设置其它用户的口令。比如:passwd aaa可强行设置用户aaa的口令,但是root用户不可以读取其它用户的口令,因为口令是加密存储的,而且这种加密是不可逆的。


口令的设置与验证

口令的保存为如下形式:

系统生成的序列 + 用户口令加密成长度固定的哈希值

验证口令时,先用提供的口令用同样的加密方式加密,将得到的哈系值与系统储存的哈系值比较即可。