1.操作系统
- 什么是操作系统:
用户和计算机的接口, 计算机硬件与软件的接口
用户程序运行在操作系统之上
- 操作系统的功能:
管理计算机系统硬件,软件,数据资源
控制程序运行
为其他应用软件提供支持和开发必要的服务和相应的接口
- 典型Linux操作系统: Ubuntu, CentOS, RHEL, Suse
2.终端、shell与命令
- 终端(terminal):即 tty,提供命令的输入输出环境,人机交互的窗口
- shell:一种人机交互接口(外界-内核),命令解析器
- console:控制台(特殊的terminal)
Windows的cmd
Linux的Bash
GUI本身也是一种shell
用户在 shell 中提交命令,shell接收并进行命令解析
当打开终端时,OS 会将 终端与shell关联,在终端中输入命令,shell进行命令解析
0:标准输入
1:标准输出
2:标准错误
可采用重定向保存其内容,在进行文本终端操作时会自动打开
- 命令:人机交互的基本单位
命令的语法结构举例
cp(谓语) fileA(宾语) file(宾语)
cp(谓语) -ar(方式状语) fileA(宾语) fileB(宾语)
Linux命令组成 : 命令名, 分隔符, 选项, 操作对象
- 命令名:包含一级命令(apt-get, 与二级子命令 install)
- 分割符:连续多个空格仅被视为一个, 管道 | ,重定向 <<,>,<,>>, 后台运行&,通常加空格
- 选项: 常用-连接(选项首字母),--链接(选项全称)
- 操作对象:命令的受体文件
[ ] 来标记可选的选项
| 来表示不能同时使用的参数
选项紧跟命令名,也可以默认省略
命令中常用通配符:
? : 指代一个非空任意字符 : ls hello?orld.c
* : 指代若干个字符 : ls *.c
[list] : l,i,s,t中任一字符 : ls [list].out
[!list] : 除l,i,s,t之外的任一字符
[cx-cy]: cx到cy之间的任意字符
{"str", "word", ...} : 含任一字符串
3.程序与进程
程序:一组指示计算机执行动作或作出判断的指令(运行于特定目标体系结构上)
进程:程序在内存中的镜像(使用 ps 命令可以查看现有端口下的进程)
挂起 : 即终端程序在后台继续运行,而不再向终端输出, ctrl + z
>>, <<--- 可加式重定向
>, < ------ 重写式重定向
touch a.log;cat>a.log<<EOF
ping www.baidu.com
EOF
p=`cat a.log`
$p
# 即可实现ping百度的操作
A& ------- 程序A将会在后台被运行
A;B ------ 多条命令顺序执行, A后执行B
A&&B -- 前一条命令执行成功再继续执行
A||B ---- 若执行A则不再执行B (和&&依旧遵守短路原则)
`` ------ 替换符
--------- 转义符
"" ------- 软转义字符 : $, ``,依旧会生效
'' -------- 硬转义字符 : 所有操作符都将被转义
创建一个文件 : touch a.log
写入一个单词 : echo "ls" > a.log
将命令结果赋值 : p=`cat a.log`
此时其等价于ls操作 : $p
此时其仅打印命令名 : echo $p = echo `cat a.log`(即先执行``中命令, 再用其结果执行echo命令)
bg : 将 挂起的命令在 后台执行(terminal依旧显示结果,但可以输入命令)
fg : 将 后台执行的命令转为 前台执行
jobs : 查看所有在 后台执行的和 挂起的任务以及任务编号[1,2,3,...]
4.路径
绝对路径,相对路径
远程路径:协议://用户名:密码@位置/路径:端口
特殊路径:家目录 ~ ,上级路径 .. ,当前路径 . ,上次工作路径 -
cd:change directory
ls:list
pwd:print working directory
Linux常用目录系统:
/bin: 存放普通用户可执行命令等
/etc: 存放全局配置文件(全局配置可被局部配置覆盖)
/var: 存放动态变化的数据(mail记录, log日志)
/proc: 进程目录
/tmp: 存放系统临时文件(存于硬盘,但关机后将被删除)
/root: 管理员家目录
/home: 存放普通用户的家目录(与${HOME}的区别)
/sbin: 存放超级用户的可执行命令等
/usr: 存放超级用户自定义安装的软件:(bin, include, lib, local, src, share)
/mnt: 外部存储介质挂载目录(原理上任何路径都可以,但挂载时原路径下文件将暂不可用)
/sys: 存放与系统相关的文件
/lib: 存放相关库文件
/opt: 可选择存放目录
/run: 存放系统中正在运行的文件
5.用户
root用户, 普通用户
su root : 只能获得root执行权限,不能获得root环境变量(临时切换)
su - root:切换至root并获得root的环境变量与执行权限 (可以切换至家目录)
su - root is the same as su - just like login as root, then the shell is login shell, which mean it will expericene a login process, usually .bash_profile and .bashrc will be sourced su root is the same as su like you open an interactive shell in root name, then only .bashrc will be sourced. sudo !! ---即 sudo bang bang 上一条指令因权限执行失败时获取root权限后再次执行 (可以少打字...)
6.软件
MS:注册表(一类数据库),用于存储 系统和应用程序的 设置信息
Linux:被分别copy到/etc 和 同级的bin,lib,share下
/etc:存放配置文件
bin:存放程序的可执行文件(在系统环境变量中将该路径添加,就可以直接执行)
lib:集中存放库文件,方便共享
share:存放其他资源
7.文件
显示隐藏文件:ls -a
显示所有文件详细信息:ls -al (ll)
Linux文件7大类型:
- 普通文件:regular file
1. 纯文本文件:使用ASCII编码(配置文件)
2. 二进制文件:不包括脚本的可执行文件,不能cat直接读出
3. 数据格式文件:程序需要读取的特定格式文件,也不能cat直接读出
d 目录:directory
l 链接:link
b 块设备:硬盘
c 字符/串口设备:键盘鼠标
s 套接字:socket(应用层与网络层的接口)
p 管道:pipe(用于进程间通信)
8.文件权限(用户/群组/其他,读/写/执行)
|---u(user)----|--g(group)---|---o(other)---|
|--r----w----x--|--r----w----x--|--r----w----x--|
|--4----2----1--|--4----2----1--|--4----2----1--|
- 相关命令:
chcmd #更改文件权限
chown #更改文件所属用户
chgrp #更改文件所属群组
chmod a+x file //all
chmod o-x file //other
chmod u=rwx,go=rx file //u, go
chmod 755 file // 数字表示法
chown usrname:grpname file
chown -R usrname:grpname dir // -R代表对dir递归操作,遍历其下所有文件
chown usrname file
chgrp grpname file
chgrp root file
9.帮助文件
man文档相关操作:
man -f 命令 : 显示命令所属章节
man -k 命令: 显示命令曾出现的字段
man文档中, / 为搜索