目录
1 字符终端
终端:主机的输入和输出设备
终端通过电缆把用户的按键信息送到主机,把主机发来的信息显示在屏幕。
主机:程序和数据的存储及处理
数据及程序存放在主机的硬盘,程序的运行由主机中的CPU占用主机内存来完成。
2 初识 Linux
2.1 Linux基本信息
root 用户(超级用户)
- 不受权限的限制,可以随意修改和删除文件;
- 误删文件可能造成严重后果。
创建新用户
- 由root用户创建(useradd命令),用户信息存在 /etc/passwd 文件中,包括用户名和用户ID,以及Home目录,登录shell。
- 登录shell: 一般为 bash,也可以选择其他的shell以及系统程序等。
- 用户可以从普通终端或者网络虚拟终端登录进入系统。
Shell提示符
- 登录成功后出现shell提示符
- $ Bourns Shell 系列(sh, ksh, bash)
- # 超级用户root
系统使用
- 出现shell提示符以后就可以输入系统命令。
- Linux系统对英文字母大小写敏感。
2.2 基本的Linux命令
man 查阅联机手册
- 列出基本的功能和语法
- 功能说明等信息
- C语言的库函数信息
man 命令用法
- 取自manual的前三个字母;
- man <name> # <name>可以是命令或库函数
- man <section> <name> # <section>为章节编号。1-命令 2-系统调用 3-库函数(C语言库函数等) 5-配置文件
- man -k <regexp> # 列出关键字与正则表达式<regexp>匹配的手册项目录
data 读取系统日期和时间
- date "+%Y-%m-%d %H:%M:%S Day %j" # 2021-12-22 21:23:34 Day 311
cal 打印日历
- cal # 打印当前月日历
- cal <year> # 打印<year>年的日历
- cal <month> <year> # 打印<year>年<month>月的日历
bc 计算器
- 基本计算功能
- 支持函数、变量,条件和循环等编程功能(类似C语言的小编程语言)
- 可以进行任意精度的计算(精度非常高)
精度
- bc # 缺省精度为小数点后0位
- bc -l # 缺省精度为小数点后20位
passwd 更改口令
- 普通用户:使用passwd命令更改自己的口令,更改前系统先验证原来的口令
- 超级用户root:修改口令前不验证旧的口令;可修改自己的口令,还可强迫设置其他用户口令
口令的验证方法:无法由哈希值倒推出口令原文。
分页器
- q - 退出
- 空格 - 下一页
- 上下箭头 - 上下移
2.3 系统运行状态
who 确定有谁在系统中
命令 who 列出当前已登录入系统的用户
sum tty01 Jul 3 12:21
第一列:用户名;第二列:终端设备的设备文件名(设备在文件系统中只有一个文件名,设备文件一般放在目录 /dev 下)
- tty # 可以打印出当前终端的设备文件名
- who am i # 可以列出当前终端上的登录用户
- whoami # 仅列出当前终端上的登录用户
uptime 系统已经开机的实际时间
top 列出资源占用排名靠前的进程
第一行:当前时间;系统自启动到现在的运行时间(412天4小时15分钟);当前登录系统的用户数;系统负载的平均数(从现在开始往前推,近期1分钟、5分钟、15分钟内系统CPU的负载平均调度队列长度,即运行态+阻塞态)。
第二行:134个进程,1个在运行,133个在阻塞状态。
ps 查阅进程状态(process status)
将内核中进程状态信息有选择地打印出来
- 无选项:只列出在当前终端上启动的进程。(PID, TTY, TIME, COMMAND)
- -e:列出系统中所有的进程(进程范围)
- -f:以full格式列出每一个进程(控制列的数目)
- -l:以Long格式列出每一个进程(控制列的数目)
free 了解内存使用情况
vmstat 了解系统负载
3 文本文件及处理
3.1 Linux中的文本信息
3.2 文本文件处理机制
进程的标准输入和输出
写好的程序可以认为是一个文件,该进程运行起来就叫做一个进程,从进程开始运行到结束的一个声明周期内系统需要配置内存、CPU等信息。
- 标准输入 stdin # 默认通过键盘输入
- 标准输出 stdout # 默认通过屏幕输出
重定向与管道
重定向机制:将标准输入/输出重定向到一个文件中。
(1)输出重定向
- ls -l > filelist.txt # 将原本显示在屏幕的信息存在文件中
(2)输入重定向
- sort < filelist.txt # 将原本从键盘输入的信息改为从文件读取
管道机制:将两个命令连接在一起。
- ls -l | sort # 第一个命令本应该输出在屏幕,现在沿着管道进入第二个命令的输入口,作为第二个命令的输入信息。
3.3 常用的文本文件处理命令
more/less 逐屏显示文本信息
- more shude.c # 指定一个文件。less 用法同more
- more *.[ch] # 指定多个文件
- ls -l | more # 指定0个文件
less 命令同 more,但是比more更方便一点,可以通过上下方向按键进行翻页等操作。
cat 与 od:列出文件内容
cat 命令
od 命令
head 与 tail:显示文件的头部或者尾部
tee 三通
将从标准输入stdin得到的数据抄送到标准输出stdout显示,同时存入磁盘文件中。在屏幕显示的同时也保存在文件中。
- ./myin | tee myin.log
wc 字计数
- 列出文件中一共有多少行,有多少单词,多少字符
- 当指定的文件数大于1时,最后还列出一个合计
- 常用选项 -l:只列出行计数
sort 对文件内容排序
- ls -s | sort | tail -10
- ls -s | sort -n | tail -10 # 列出文件进行排序(按照数字大小),打印后10行
tr 翻译字符
tr string1 string2
把标准输入拷贝到标准输出,string1中出现的字符替换为string2中的对应字符。
- cat telnos | tr UVX uvx # 将里面的UVX替换为uvx
- cat report | tr '[a-z]' '[A-Z]' # 将report文件中的所有小写字符替换为大写字母
- cat file | tr % '\012' # 将文件中的%改为换行符(因为换行符是不可打印的)
uniq 筛选文件中的重复行
后面只能有一个文件,否则后面的文件会被当做输出文件使用。
说明:重复的行指的是上下紧邻的两行相同才视为重复的行。