Linux文件系统: Linux: glibc 程序编译方式: 动态链接 静态编译 进程的类型: 终端:硬件设备,关联一个用户接口 与终端相关:通过终端启动 与终端无关:操作引导启动过程当中自动启动 操作系统的组成: 静态:kernel,application 文件系统:层级结构 FHS:filesystem hierarchy standard文件系统层级结构标准 http://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html /bin : 所有用户可用的基本命令程序文件; /sbin:供系统管理员使用的工具 /boot:引导加载器必须用到的各种静态文件:kernel,initramfs(initrd),grub等 /dev : 存储特殊文件或设备文件; 设备有两种类型:字符设备(线性设备),块设备(随机设备); /etc :系统程序的配置文件,只能为静态; /home:普通用户的家目录的集中位置;一般每个普通用户的家目录默认为此目录下与用户同名的子目录,/home/username; /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:让系统管理员安装本地应用程序;也通常用于安装第三方程序; /var :/var hierarchy , 存储常发生变化的数据的目录; cache 应用缓存数据 lib 可变状态信息 local / usr / local的可变数据 lock 锁定文件 log 日志文件和目录 opt / opt的可变数据 run 与运行流程相关的数据 spool 应用假脱机数据 tmp 系统重新启动之间保留的临时文件 /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/l-cn-sysfs/index.html Linux文件上的文件类型: -:常规文件;即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,套接字文件; Linux基本命令: 命令类型: 外部命令 shell内嵌命令 区分内外部命令: type commend 内部:bulitin 外部:显示为命令文件路径; 注意:命令可以有别名;别名可以与原名相同,此时原名被隐藏;因此要获取原命令,则使用command; 命令别名: alias :获取所有可用别名的定义; alias cmd :定义别名(注意:仅对当前shell进程有效); unalias name:撤销别名; which: 显示命令完整路径; whereis: 显示二进制命令在何处,以及man手册; -b:只查看二进制程序路径; -m:只查看使用手册文件路径; who: 查看登入到前端口的用户; -b:显示系统最近一次启动时间; -r:运行级别; -u: w: who 的增强版,还可显示做什么,例如:CPU资源占用....; bash的基础特性1:history 历史命令:shell 进程会其会话中保存此前用户提交执行过的命令; ]# history 定制history的功能,可通过环境变量实现; HISTSIZE:shell进程可保留的历史的条数; HISTFLIE:持久保存命令历史文件; .bash_history HISTFILESIZE:命令历史文件数; 命令用法: history [-c] [-d offset] [n] history -anrw [filename] history -ps arg [arg...] -c:清空命令历史; -d offset:清除某条历史命令; -r:从文件读取命令历史至历史列表中; -w:把历史列表中的命令追加至历史文件中; history # :显示最近#条命令; 调用命令历史列表中的命令: !#:调用第#条命令执行; !!:再一次执行上一条命令; !SITRING:再一次执行命令历史列表中最近一个以SIRING(开头字母,从下往上检索)开头的命令; 注意:命令的重复执行有时候需要依赖于幂等性; 调用上一条命令的参数: 快捷键:esc+. 字符串:!$ 控制命令历史记录的方式: 环境变量:HISTCONTROL ignoredups:忽略重复的命令; ignorespace:忽略以空白字符开头的命令 ignoreboth:以上两者同时生效; 修改变量的值: NAME='VALUE' 总结: FHS,命令及bash命令历史 FHS: /bin,/sbin,/lib,/lib64,/etc /home,/root /boot /media,/mnt /proc,/sys /tmp /srv 为服务提供数据 /opt /dev /usr /bin,/sbin,lib,lib64,share,local,include /var cache,lib,log,.... 命令:which,whereis,who,w,alias,unalias 命令历史:history bash的基础特性2: 命令/路径补全 tab键 目录管理类命令:mkdir,rmdir mkdir: 创建目录 -p:递归创建目录 -v:显示创建详细过程 -m MODE:直接给定权限 rmdir: 移除空目录 -p:只要目录为空就删除,连续执行;(不提倡使用) -v:显示过程; 实践: 如何创建/tmp/x/y1,/tmp/x/y2,/tmp/x/y1/a,/tmp/x/y1/b? 如何创建a_c,a_d,b_c,b_d; 创建目录结构/tmp/mysysroot/ bin sbin etc sysconfig network-scripts usr bin local bin etc lib lib64 var cache log run ├── sysmyroot │ ├── bin │ ├── etc │ │ └── sysconfig │ │ └── network-scripts │ ├── sbin │ ├── usr │ │ ├── bin │ │ ├── lib │ │ ├── lib64 │ │ └── local │ │ ├── bin │ │ └── etc │ └── var │ ├── cache │ ├── log │ └── run bash的基础特性3:命令行展开 ~:自动展开为用户的家目录,或指定的用户的家目录; {}:可承载一个以逗号分隔的路径列表,并能够将其展开为多项式; 例如: mkdir -pv /tmp/x/{y1/{a,b},y2} mkdir -v {a,b}_{c,d} mkdir -pv /tmp/sysmyroot/{bin,sbin,etc/sysconfig/network-scripts,usr/{bin,local/{bin,etc},lib,lib64},var/{cache,log,run}} tree命令: -L level : 指定要显示的层级; bash的基础特性4: 命令的执行状态结果 命令执行的状态结果: bash通过状态返回值来输出此结果; 成功:0 失败:1-255 命令执行完成之后,其状态返回值保存于 bash 的特殊变量$?中; 命令正常执行时,有的还会有命令返回值; 根据命令及功能不同,结果个不相同; 引用命令执行结果: $(cmd) `cmd 例如: -pv /tmp/$(date +%H-%M-%S) bash的基本特性5:引用 强引用:'' 弱引用:"" 命令引用:`` bash的基础特性6:快捷键 ctrl+a ctrl+e ctrl+u ctrl+k ctrl+l 文本查看命令:cat,tac,head,tail,more,less 分屏查看命令: more 和 less more命令: more FILE 特点:翻屏至文件尾部后自动退出; less命令: less FILE head命令: 查看文件的前n行;默认前10行; -n # :查看前#行 -# :查看前#行 tail命令:查看文件的后n行; -n # -# -f:查看文件结尾内容结束后不退出,跟随显示新增的行; stat命令:显示文件或文件系统的状态; 文件:两类数据; 元数据(数据的数据):metadata 数据:date 时间戳: Access最近访问: 2018-10-09 20:04:50.310818675 +0800 Modify最近更改: 2018-10-09 20:04:50.310818675 +0800 //数据改变 Change最近改动: 2018-10-09 20:04:50.310818675 +0800 //元数据改变 touch命令: 修改/更新文件时间戳;路径没有文件默认创建文件; -c:指定的文件路径不存在时不予创建; -a:仅修改access time; -m:仅修改modify time; -t STAMP : [[CC]YY]MMDDhhmm[.ss] 文件管理工具: cp,mv,rm cp命令:copy 源文件:目标文件; 单源复制: cp [OPTION]... [-T] SOURCE DEST(目标文件) 多源复制: cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY SOURCE... 单源复制: 如果DEST不存在:则事先创建此文件,并复制文件数据流到DEST中; 如果DEST存在: 如果DEST为非目录文件:则覆盖目标文件; 如果DEST是目录文件:则事先DEST目录下创建一个与源文件同名的文件,并复制其数据流; 多源复制: 如果DEST不存在:错误; 如果DEST存在: 如果DEST为非目录文件:错误; 如果DEST是目录文件:分别复制每个文件至目标目录中,并保持原名; 常用选项: -i:交互式复制,即覆盖之前提醒用户确认; -f:force强制覆盖文件; -r,-R:递归复制文件; -d:复制符号链接文件本身,而非其指向的源文件; -a: -dR --preserve=all,archive,用于实现归档; --preserve= mode:权限 ownership:属主和属组 timestamps:时间戳 context:安全标签 xattr:扩展属性 links:符号链接 all:上述所有属性 mv命令: mv [OPTION]... [-T] SOURCE DEST mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE... 常用选项: -i:交互式; -f:force ..... rm命令: rm [OPTION]... FILE... 常用选项: -i:交互 -f:强制 -r:recursive递归 删除目录:rm -fr /PATH (删除操作危险,慎用!!!) 可以自建回收站,将要删除的文件移动到每个文件夹; 变量: 命令的内存空间: 变量类型: 字符型 数值型 精确数值; 近似数值; 存储格式,数据范围,参与运算; 变量的赋值操作:name=tom 浮点数值如何存储? 总结: bash特性:命令补全,路径补全,命令补全 文件及目录的复制,移动,删除 变量:变量类型 : 在命令前加上反斜杠临时取消使用别名 例如:ls,则直接调用ls的原始命令而不会使用alias设置的带有color选项的命令