CPU:运算器、控制器、内部存储器(寄存器、缓存);
存储器:分主存储器(内存)和辅助存储器(外存);内存RAM(Random Access
Memory),仅仅用于存放当前正在运行的程序和数据,断电后数据消失。外存,通常指磁盘、光盘等,能长期保存数据信息;
输入设备:下指令,提供数据等(鼠标、键盘等);
输出设备:输出数据加工后的结果(显示器等);
最小存储单元Cell:1 Bytes=8 bits
程序:
指令 + 数据
算法 + 数据结构
CPU寻址能力:
32位CPU只能使用最多4G的内存,计算方法:
232 = 210 * 210 * 210 * 22
= 1024 * 1024 * 1024 * 4 = 4294967296(Bytes)
= 1024 * 1024 * 4 = 4194304(KB)
= 1024 * 4 = 4096(MB)
= 4(GB)
过程式编程语言:
顺序执行:依次;
循环执行:将整个循环体执行n次;
选择执行:仅执行其中的一个分支;
驱动程序
进程管理
安全
网络功能
内存管理
文件系统
…
Kernel+Application
狭义上的OS: kernel
GNU/Linux
GUI: Graphic User Interface
GNome: c, gtk
KDE: c++, qt
CLI: Command Line Interface
bash
zsh
sh
csh
tcsh
ksh
API:
Application Program Interface
程序员面对的编程接口
POSIX: Portable Operating System
ABI:
Application Binary Interface
程序应用者面对运行程序的接口
CPU架构:
X86
X64(amd64)
m68000, m68k
arm
ultrasparc
power
powerpc, ppc
MIPS
alpha hp-ux
…
移植:portable
cross compile: 交叉编译
在x64机器上编译的程序,编译时可以指定编译后的程序是运行在什么机器上,如指定arm机器,那就编译成能在arm 机器上运行的汇编程序,然后再由汇编器编译成机器语言供机器运行。
总线(BUS)包括以下两种,为避免结构更复杂这两组总线是合并起来复用的,即可读数据也可读指令
数据总线:CPU从内存读取数据的总线
指令总线:CPU从内存读取指令的总线
前端总线:指CPU用来和内存交换数据的总线
带宽:
频率:单位时间内的变化量
CPU主频
CPU外频
微码:汇编语言
程序:就是能被CPU识别自动装入并能自动的运行起来
CPU:运算器、控制器、寄存器
输入设备:穿孔纸带(8位,打孔表示1,不打孔表示0)
北桥:高速总线的连接设备,连接CPU和内存间的总线,用于CPU与内存进行数据传输
南桥:连接所有慢带设备(如键盘、鼠标等),汇总后统一连接到北桥
批处理、脱机批处理
Linux入门:
Linux系统管理:
Linux服务及安全管理:
httpd, lamp, lnmp
Cache: memcached, varnish
DB: mysql (mariadb)
Linux Cluster:
LB Cluster: Nginx, LVS
HA Cluster: Keepalived
Linux Ops: ansible
Monitoring: zabbix
shell脚本编程
http:
tomcat, lnmt, lamt, session replication cluster
分布式存储系统:
MogileFS, GlusterFS
LB Cluster: haproxy
HA Cluster: Corosync+Pacemaker, pcs/crmsh
MySQL: HA Cluster、MHA、备份和恢复、MySQL Replaction、Read-Write splitting
NoSQL: redis, mongodb, HBase
运维工具:puppet [saltstack], cobbler
虚拟化:
Linux操作系统原理:虚拟化技术原理:
kvm虚拟化应用详解:xen虚拟化:
虚拟化网络:SDN
OpenStack云栈
Docker: 容器云:
ELK Stack: ElasticSearch, Logstash, Kibana
大数据:Hadoop v2, 并行存储及分析平台:
HBase, Hive
Storm, Spark
系统优化:
Python编程
RedHat:
认证考试:
RHCSA
RHCE
RHCA
学习阶段:
教室学习:4个月;
工作学习:8个月,14个月;
IT技术领域:
研发:
硬件:接口;
CPU(运算器和控制器),内存,输入,输出
冯 诺依曼
机器语言:二进制语言,二进制数据
软件:
低级语言:汇编语言,汇编器
写驱动;
高级语言:编译器
系统级:C, C++,
操作系统,对性能要求较高的软件
应用级:JAVA,Python, ruby
应用程序:snsible, puppet, …
程序员写的程序代码:编程语言;
应用:
Linux运维:Linux生态圈中的各种应用程序的应用;
shell脚本编程:让某些应用工作能自动完成;
Python:专业编程语言;
ansible, openstack
DevOps:
Development
Operations
GNU:
源码: 编译成为二进制格式
gcc, glibc, vi, linux
发行版:数百种之多;
Debian
ubuntu
mint
knopix
Slackware
S.u.S.E
SLES
OpenSUSE
RedHat:
Redhat 9.0:
RedHat Enterprise Linux: RHEL
CentOS: Community ENTerprise OS
Fedora Core: 6个月,
Gentoo
ArchLinux
软件程序:版本号:
major.minor.release
Linux: 0.99, 2.2, 2.4, 2.6, 3.0, 4.0
www.kernel.org
发行版本也有自己的版本号:
RHEL: 5.x, 6.x, 7.x
Debian: 8.x
OpenSuSE: 13.x
Stallman: GNU
闭源:
开源:提供源代码
开源协定:
GPL: General Public License
copyrigth, copyleft
LGPL: Lesser GPL
GPLv2, GPLv3
FSF: Free
BSD:
Apache:
ASF: Apache Software Foundation
双线授权:
Community: 循开源协定;
Enterprise:
stallman:
自由含义:自由学习和修改;自由使用;自由分发;自由创建衍生版;
开源协定:GPL, LGPL, BSD, Apache
BSD:
1. 如果二次发布的产品中包含源代码,则在源代码中必须带有原来的代码中的BSD协定;
2. 如果二次发布的产品是二进制格式的库或程序,需要在发布的文档或版权声明中说明包含原来代码中的BSD协定;
3. 不可以用开源代码的作者或组织,以及原来的产品的名字做市场推广;
开源是代码的共产主义运动;
程序的组成部份:二进制程序文件、库文件、配置文件、帮助文件;
二进制程序文件、库文件:可执行文件
库文件:不能独立执行,只能被调用执行;
配置文件、帮助文件:可被查看其内容的文件
安装Linux:
虚拟机:Linux
计算机:CPU, 内存,IO
虚拟化软件程序:
vmware workstation
virtualbox
CentOS的镜像站点:
http://mirrors.aliyun.com
http://mirrors.163.com
http://mirrors.sohu.com
在教室安装的系统:
Cobbler:
硬盘大小:120G
网卡:桥接
管理员:root/mageedu
ISO镜像:
硬盘分区:留出一些空间,实在不成,可安装完成以后新增一块虚拟硬盘;
CentOS6和CentOS7的区别还是有一点的;
程序的组成部份:
二进制程序;
配置文件;
库文件;
帮助文件;
X, Y, Z
程序包管理器:
X:
程序的组成文件打包成一个或有限几个文件;
安装;
卸载;
查询;
Debian: deb, apt-get
RedHat: rpm, yum --> dnf
S.u.S.E: rpm, zypper
ArchLinux: port
Gentoo:
LFS: Linux From Scratch
Kali:
GUI:
GNome
KDE
CLI:
bash, zsh, sh, csh, tcsh, ksh
查看所用shell的类型:
~]# echo $SHELL
终端设备:terminal
多任务、多用户
物理终端:控制台:console
虚拟终端:6个,tty
Ctrl+Alt+F[1-6]
图形终端:
CentOS 6:
Ctrl+Alt+F7
CentOS 7:
在哪个虚拟终端启动,即位于哪个虚拟终端;
串行终端:ttys
伪终端:pty
注意:在启动设备之后,在其上关联一个用户接口程序,即可实现与用户交互;
查看终端设备:
~]# tty
查看接口程序:
~]# echo $SHELL
启动GUI:
在某一虚拟终端接口运行命令:startx &
ssh协议:secure shell;
~]# ss -tnl
查看系统是否监听于tcp协议的22号端口;
~]# ip addr list
或
~]# ifconfig
查看IP地址
确保防火墙处于关闭状态:
~]# iptables -L -n
CentOS 7:
~]# systemctl disable firewalld.service
~]# systemctl stop firewalld.service
CentOS 6:
~]# service iptables stop
~]# chkconfig iptables off
命令行接口(CLI接口):
[root@node1 ~]# COMMAND
prompt:
root: 当前登录的用户
node1: 当前主机的主机名,非完整格式:此处的完整格式为:node1.magedu.com
~: 用户当前所在的目录(current directory),也称为工作目录(working directory);相对路径;
#: 命令提示符:
#:管理员账号,为root;拥有最高权限,能执行所有操作;
$:普通用户,非root用户不具管理权限,不能执行系统管理类操作;
注意:建议使用非管理员账号登录;
执行管理员操作临时切换至管理员,操作完成即退出;
思考:文件是什么?众多文件如何有效组织起来?
目录:路径映射;
文件:存储空间存储的一段流式数据,对数据可以做到按名存取;
文件系统:层次结构,有索引;
/: 原初起点;
倒置树状结构;
/dev/pts/2;
最左侧/: 表示根目录;
其它的/: 表示路径分隔符
Linux的路径分隔符是/
Windows的路径分隔符是\
文件的路径表示:
绝对路径:从根目录开始表示的路径;
相对路径:从当前位置开始表示出的路径;
文件名使用法则:
文件名严格区分大小写;
目录也是文件,在同一路径下两个文件不能重名;
支持除/符号外的所有字符作为文件名;
文件名最长不能超过255字符;
以.开头的文件件为隐藏文件;
.: 当前目录;
…: 当前目录的上一级目录;
/etc/sysconfig/
.: /etc/sysconfig
…: /etc
用户有家目录:home
用户的起始目录,普通用户管理文件的位置;
工作目录:
/etc/sysconfig/network-scripts/ifcfg-eno16777736
basename: 最右侧的文件或目录名;
dirname: basename左侧的路径;
命令:
~]# basename /etc/aa/bb/2.txt
2.txt
~]# dirname /etc/aa/bb/2.txt
/etc/aa/bb
1、一切皆文件:
把几乎所有资源抽象为文件形式:包括硬件设备,甚至通信接口等;
open(), read(), write(), close(), delete(), create()
表现之一:硬件设备也通过文件表示:
物理终端:/dev/console
虚拟终端:/dev/tty# [1,6]
串行终端:/dev/ttyS#
伪终端:/dev/pts/#
2、由众多功能单一的程序组成,一个程序只做一件事,并且做好;
组合小程序完成复杂任务;
3、尽量避免跟用户交互:
目标:易于以编程的方式实现自动化任务;
4、使用文本文件保存配置信息;
命令的语法通用格式:
~]# COMMAND OPTIONS ARGUMENTS
发起-命令:请求内核将某个二进制文件运行为一个进程;
程序 --> 进程
静态 --> 动态(有生命周期)
COMMAND
命令本身是一个可执行的程序文件:二进制格式的文件,有可能会调用共享库文件;
多数系统程序文件都存放在:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
普通命令:/bin, /usr/bin, /usr/local/bin
管理命令:/sbin, /usr/sbin, /usr/local/sbin
共享库:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
32bits的库:/lib, /usr/lib, /usr/local/lib
64bits的库:/lib64, /usr/lib64, /usr/local/lib64
注:并非所有的命令都有一个在某目录与之对应的可执行程序文件;
命令必须遵循特定格式规范:exe, msi, ELF(Linux)
~]# file /bin/ls
命令分为两类:
内置命令(builtin):由shell程序自带的命令;
外部命令:独立的可执行程序文件,文件名即命令名;
shell程序是独特的程序,负责解析用户提供的命令;
环境变量:
PATH: 从哪些路径中查找用户键入的命令字符串所对应的命令文件(查找次序自左向右);
~]# echo $PATH
查看命令类型:
type COMMAND
OPTIONS:
指定命令的运行特性;
选项有两种表现形式:
短选项:-C, 例如:-l -d
注意:有些命令的选项没有
如果同一命令同时使用多个短选项,多数可合并:-l -d = -ld
长选项:–word, 例如:–help, --human --readable
注意:长选项不能合并;
ARGUMENTS:
命令的作用对象,命令对什么生效;
注意:不同命令的参数:有些命令可同时带多个对象,多个之间以空白字符分隔;
例如:ls -ld /var /etc
获取命令的使用帮助:
内部命令:
~]# help COMMAND
外部命令:
(1) 命令自带简要格式的帮助
~]# COMMAND --help
(2) 使用手册:manual
位置:/usr/share/man
~]# man COMMAND
SECTION:
NAME: 功能性说明
SYNOPSIS: 语法格式
DESCRIPTION: 描述
OPTIONS: 选项
EXAMPLES: 使用示例
AUTHOR: 作者
BUGS: 报告程序bug的方式
SEE ALSO: 参考
…
SYNOPSIS:
[]: 可选内容
<>: 必须提供的内容
a|b|c: 多选一
…: 同类内容可出现多个
使用手册:压缩格式的文件,有章节之分:
/usr/share/man
man1, man2, man3, man4, …
1:用户命令;
2:系统调用;
3:C库调用;
4:设备文件及特殊文件;
5:文件格式:(配置文件格式)
6:游戏使用帮助;
7:杂项;
8:管理工具及守护进程;
~]# man CHAPTER COMMAND
注意:并非每个COMMAND在所有章节下都有手册;
查看COMMAND在哪些章节下有手册:
~]# whatis COMMAND
注意:其执行过程是查询数据库进行的;
手动更新数据库:
~]# makewhatis
man命令找开手册以后的操作方法:
翻屏:
空格键:向文件尾部翻一屏;
b:向文件首部翻一屏;
Ctrl+d: 向文件尾部翻半屏;
Ctrl+u: 向文件首部翻半屏;
回车:向文件尾部翻一行;
k: 向文件首部翻一行;
G: 跳转至最后一行;
1G: 跳转至文件首部;
#G: 跳转至指定行;
文本搜索:
/keyword: 从文件首部向文件尾部依次查找,不区分字符大小写;
?keyword: 从文件尾部向文件首部依次查找;
n: 与查找命令方向相同;
N: 与查找命令方向相反;
退出:
q: quit;
选项:
-M /PATH/TO/SOMEDIR: 到指定目录下查找命令手册并打开之;
练习:获取useradd命令的用法
(1) 添加用户gentoo;
~]# useradd gentoo
~]# id gentoo
(2) 添加用户slackwark, 要求指定其所用的shell为/bin/tcsh;
~]# useradd -s /bin/tcsh slackwark
~]# id slackwark
~]# tail -1 /etc/passwd
(3) info COMMAND
获取命令在线文档
(4) 很多应用程序会自带帮助文档: /usr/share/doc/APP-VERSION
README: 程序的相关的信息;
INSTALL: 安装帮助;
CHANGES: 版本迭代时的帮助信息;
(5) 主流发生版本官方文档
http://www.readHat.com/doc
(6) 程序官方文档
官方站点上的"Document"
(7) 搜索引擎
google
keyword filetype:pdf
keyword site:domain.tld
…
tty: 查看当前的终端设备;
ifconfig或ip addr list: 查看活动接口的ip地址;
echo: 回显
ping: 探测网络的目标主机与当前主机之间的连通性;
Ctrl+c: 终止命令执行;
关机命令:
CentOS 7:
~]# systemctl poweroff
~]# systemctl reboot
*:
~]# poweroff
~]# halt
~]# reboot
which: 查看命令路径
~]# which ls
工作目录:working directory
家目录:home
pwd: printing working directory
显示工作目录
cd: change directory
cd [/PATH/TO/SOMEDIR]
cd: 切换回家目录;
注意bash中,~表示家目录;
cd ~: 切换回自己的家目录;
cd ~USERNAME: 切换至指定用户的家目录;
cd -: 在上一次所在目录与当前目录之间一为回切换;
相关的环境变量
PWD": 当前工作目录
OLDPWD: 上一次的工作目录
.
…
ls: list, 列出指定目录下的内容
ls [OPTION]… [FILE]…
-a: 显示所有文件包括隐藏文件;
-A: 显示除.和…之外的所有文件;
-l: long, 长格式列表,即显示文件的详细属性信息;
-rw-r–r--. 1 root root 8957 10月 14 19:34 boot.log
-: 文件类型,-,d,b,c,l,s,p
rw-r–r--
rw-: 文件属主的权限;
r–: 文件属组的权限;
r–: 其他用户(非属主、属组)的权限;
1: 文件被硬链接的次数;
root: 文件的属主;
root: 文件的属组;
8957: 表示文件的大小,单位是字节;
10月 14 19:34: 文件最后一次被修改的时间;
boot.log: 文件名;
-h: --human-readable: 对文件大小单位换算,换算后结果可能会非精确值;
-d: 查看目录自身而非其内部的文件列表;
-r: reverse, 逆序显示;
-R: recursive, 递归显示;
cat: concatenate
文本文件查看工具,连接并打印文件内容;
~]# cat /etc/fstab
~]# cat /etc/passwd
~]# cat /etc/fstab /etc/passwd
cat [OPTION]… [FILE]…
-n: 给显示的文件行编号(若显示多个文件也是统一编号,没有按文件的行进行编号);
-E: 显示行结束符;
tac
文本文件查看工具(逆序显示文件内容)
~]# tac /etc/fstab
~]# tac /etc/passwd
~]# tac /etc/fstab /etc/passwd
tac [OPTION]… [FILE]…
-n: 给显示的文件行编号(若显示多个文件也是统一编号,没有按文件的行进行编号);
-E: 显示行结束符;
file: 查看文件内容类型
file [FILE]…
echo: 回显
echo [SHORT-OPTION]… [STRING]…
-n: 不进行换行操作;
-e: 让转义符生效;
\n: 换行
\t: 制表符
\r: 回车符
\b: 删除前一个字符
STRING可以使用引号,单引号和双引号均可用;
单引号:强引用,变量引用不执行替换;
~]# echo 'KaTeX parse error: Expected 'EOF', got '#' at position 44: …替换; ~]#̲ echo "SHELL"
注意:变量引用的正规符号
${name}
关机或重启命令:shutdown
shutdown [OPTIONS…] [TIME] [WALL…]
OPTIONS:
-h: halt
-p: poweroff
-r: reboot
-c: cancel
TIME:
now: 马上执行相关操作
hh:mm: 指定时间执行相关操作
+m: 指定分钟数后执行相关操作
WALL:
发信息给所有终端
~]# shutdown -r +10 ‘hello everyone’ -WALL
日期的相关命令:
Linux: 系统启动时从硬件读取日期和时间信息,读取完成后就不再与硬件相关联;
系统时钟
硬件时钟
date: 系统时钟
显示日期时间:date [OPTION]… [+FORMAT]
FORMAT: 格式符
%F: 显示年月日(2020-03-01)
%T: 显示时分秒(10:17:44)
%Y: 显示年份
%m: 显示月份
%d: 显示天数
%H
%M
%S
%s: 从1970年1月1号(unix元年)0点0分0秒到命令执行那一刻经过的秒数;
…
设定日期时间:date [MMDDhhmm[[CC]YY][.ss]]
~]# date 022813592019.59
hwclock, clock: 硬件时钟
显示或设定硬件时钟
-s, --hctosys: 以硬件为准,把系统时间调整为与硬件时间相同;
-w --systohc: 以系统为准,把硬件时间调整为与系统时间相同;
cal: 日历
cal [[month] year]
课外作业:
which, whereis, who, w
Linux: glibc
程序编译方式:
动态链接
静态编译
进程的类型:
终端:硬件设备,关联一个用户接口
与终端相关:通过终端启动
与终端无关:操作系统引导启动过程当中自动启动
操作系统的组成:
静态:kernel, application
文件系统:层级结构
FSH:
Filesystem Hierarchy Standard
/bin: 所有用户可用的基本命令程序文件;
/sbin: 供系统管理使用的工具程序;
/boot: 引导加载器必须用到的各静态文件:kernel, initramfs(initrd), grub等;
/dev: 存储特殊文件或设备文件;
设备有两种类型:字符设备(线性设备)、块设备(随机设备);
/etc:系统程序的配置文件,只能为静态;
/home:普通的家目录的集中目录;一般每个普通的家目录默认为此目录下与用户名同名的子目录,/home/USERNANE
/root: 管理员的家目录;可选;
/lib: 为系统启动或根文件上的应用程序(bin,sbin等)提供共享库,以及为内核提供内核模块;
libc.so.: 动态链接的c库;
ld: 运行时链接器/加载器;
modules: 用于存储内核模块的目录;
/lib64: 64位系统特有的存放64共享库的路径;
/media: 便携式设备挂载点,cdrom, floppy等;
/mnt: 其它文件系统的临时挂载点;
/opt: 附加应用程序的安装位置;可选路径;
/srv: 当前主机为服务提供的数据;
/tmp: 为那些会产生临时文件的程序提供的用于存储临时文件的目录;可供所有用户提供写入操作;有特殊权限;
/usr: usr hierarchy, 全局共享的只读数据路径;
bin,sbin
lib,lib64
include: C程序头文件;
share: 命令手册页和自带文档等架构特有的文件的存储位置;
local: 加一个层级目录;
X11R6: X-Window程序的安装位置;
src: 程序源码文件的存储位置;
/usr/local: local hierarchy, 让系统管理员安装本地应用程序;也通常用于安装第三方应用程序;
/var: /var hierarchy,存储常发生变化的数据的目录;
cache Application cache information
local Variable state for /usr/local
lock Lock files
log Log files and directories
opt Variable data for /opt
Run Data relevant to running process
spool Application spool data
tmp Temporary files presserved between system reboots
/proc: 虚拟文件系统,用于为内核及进程存储其相关信息;它们多为内核参数,例如net.ipv4.ip_forward,虚拟为net/ipv4/ip_forward,存储于/proc/sys,因此其完整路径为/proc/sys/net/ipv4/ip_forward;
/sys: sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;其主要作用在于为管理Linux设备提供一种统一模型的接口;
参考:https://www.ibm.com/developerworks/cn/linux/1-cn-sysfs/
-: 常规文件;即f;
d: directory,目录文件;
b: block device,块设备文件,支持以“block”为单位进行随机访问;
c: character device,字符设备文件,支持以“character”为单位进行线性访问;
major number: 主设备号,用于标识设备类型,进而确定要加载的驱动程序;
minor number: 次设备号,用于标识同一类型中的不同设备;
8位二进制:0-255
l: symbolic link,符号链接文件;
p: pipe,命名管道;
s: socket,套接字文件;
命令类型:
外部命令
shell内部命令
type COMMAND:
内部:builtin
外部:显示为命令文件路径;
注:命令可以有别名,别名可以与原名相同,此时原名被隐藏,此时如果要运行原命令,则使用\COMMAND;
命令别名:
获取所有可用别名的定义:
~]# alias
定义别名:
~]# alias NAME=’COMMAND’
注:仅对当前shell进程有效
撤消别名:
~]# unalias NAME
which命令:
which - shows the full path of (shell) commands
which [options] programname […]
–skip-alias: 忽略别名
whereis命令:
whereis - locate the binary,source,and manual page files for a command
whereis [options] name …
-b: 仅搜索二进制程序路径;
-m: 仅搜索使用手册文件路径;
who命令:
who - show who is logged on
who [option]…
-b: 系统此次启动的时间;
-r: 运行级别;
w命令:
增强版的who命令
w - show who is logged on and what they are doing.
tree命令:
tree [OPTIONS] [directory]
-L level:指定要显示的层级;
COMMAND
mkdir, rmdir
mkdir: make directories
mkdir [OPTION]… DIRECTORY …
-p: 自动按需创建父目录;
-v: verbose, 显示详细过程;
-m MODE: 直接给定权限;
注:路径基名方为命令的作用对象;基名之前的路径必须得存在;
rmdir: remove empty directories
rmdir [OPTION]… DIRECTORY …
-p: 删除某目录后,如果父目录为空,则一并删除;
-v: 显示过程;
问题1:如何创建 /tmp/x/y1, /tmp/x/y2, /tmp/x/y1/a, /tmp/x/y1/b?
mkdir -pv /tmp/x/{y1/{a,b},y2}
问题2:如何创建 a_c, a_d, b_c, b_d
mkdir {a,b}_{c,d} -v
问题3:创建如下目录结构:
/tmp/mysysroot/
bin
sbin
etc
sysconfig
network-scripts
usr
bin
sbin
lib
lib64
local
bin
sbin
etc
lib
var
cache
log
run
~]# mkdir -pv /tmp/mysysroot/{bin,sbin,etc/sysconfig/network-scripts,usr{bin,sbin,lib,lib64,local/{bin,sbin,etc,lib}},var/{cache,log,run}}
cat, tac, head, tail, more, less
分屏查看命令:more和less
more命令:
more FILE
特点:翻屏至文件尾部后自动退出;
less命令:
less FILE
man命令的实现形式就是less
head命令:
查看命令的前n行:
head [OPTIONS] FILE
-n #
-#
tail命令:
查看命令的后n行:
tail [OPTIONS] FILE
-n #
-#
-f:查看文件尾部内容结束后不退出,跟随显示新增的行,可用于监控日志文件;
stat命令:
stat - display file or file system status
stat FILE…
文件:两类数据
元数据:metadata
数据:data
时间戳:
access time: 2015-12-10 16:12:12.77633854 +0800
modify time: 2015-12-10 16:12:12.77633854 +0800
change time: 2015-12-10 16:12:12.77633854 +0800
touch命令:
touch - change file timestamps
touch [OPTION]… FILE…
-c: 指定的文件路径不存在时不予创建;
-a: 仅修改access time;
-m: 仅修改modify time;
-t STAMP
[[CC]YY]MMDDhhmm[.ss]
cp, mv, rm
cp命令:copy
源文件;目标文件;
单源复制:cp [OPTION]… [-T] SOURCE DEST
如果DEST不存在,则事先创建此文件,并复制源文件的数据流至DEST中;
如果DEST存在:
DEST为非目录:覆盖目标文件;
DEST为目录:先创建一个与源文件同名的文件,并复制其数据流;
多源复制:cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE…
如果DEST不存在:错误;
如果DEST存在:
如果DEST是非目录文件:错误;
如果DEST是目录文件:分别复制每个文件至目标目录中,并保持原名;
常用选项:
-i: 交互式复制,即覆盖之前提醒用户确认;
-f: 强制覆盖目标文件;
-r, -R: 递归复制目录;
-d: 复制符号链接文件本身,而非其指向的源文件;
-a: -dR --preserve=all, archive, 用于实现归档;
--preserve=
mode: 权限
ownership: 属主和属组
timestamps: 时间戳
context: 安全标签
xattr: 扩展属性
links: 符号链接
all: 上述所有属性
mv命令: move
mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE…
常用选项:
-i: 交互式;
-f: force;
rm命令:remove
rm [OPTION]… FILE…
常用选项:
-i: interactive
-f: force
-r: recursive
删除目录:rm -rf /PATH/TO/DIR
危险操作:rm -rf /*
注意:建议所有不用的文件不要直接删除,而是移动至某个专用目录;(模拟回收站)
变量:命名的内存空间
变量类型:
字符型:
数值型:
精确数值:
近似数值:
存储格式、数据范围、参与运算;
课外作业:浮点数据如何存储?
变量的赋值操作:
name=tom