课堂学习内容
-ahistory list –.bash_histroy 保存历史列表到历史文件
-cclear history list 清空历史列表
-d deletehistory entru 清除历史列表某一条命令
-rread .bash_history 读历史文件中的命令到历史列表
-n 读历史文件中没有读过的命令到历史列表(例如另外一个终端登录输入的命令写到了历史文件,但是这边没有读过,就是读到现在的历史列表)
-w 将历史列表写到指定的其他文件中(我们可以通过变量来修改历史文件)
-p 将执行的命令不写入历史列表
-s 将命令放入历史列表,但是不执行
History的相关变量
HISTSIZE:历史列表记录条数
HISTFILESIZE:历史文件记录条数
HISTFILE:指定历史文件
HISTTIMEFORMAT:让历史命令显示其他的一些选项
HISTCONTROL(控制变量)= ignoredups(忽略重复),ignorespace(忽略命令前带空格命令),ignoreboth(忽略重复和忽略命令前带空格命令的结合体),erasedups(删除重复的行,不论命令在不在一起)
调用上一层命令的方法
!!
Ctrl+p
方向键
!-1
指定命令执行这条命令的下一条命令
Ctrl+n
调用历史某个字符串开头的行
!string
调用历史包含某个字符串的行
!?string
调用上一个历史列表中多个参数的方法
!^ 调用第一个参数
!$ 调用最后一个参数
!:2调用第二个参数
!* 调用命令行的所有参数
帮助文件
Man和info
Info的帮助相比man会更详细
文件系统
FHS文件分层标准
/boot引导文件和系统内核
/bin普通用户相关的二进制程序
/sbin管理员相关的二进制程序
/lib/modules存储各种驱动
/lib6464位库文件
/etc存储配置文件
/home普通用户的家目录
/media/misc(centos 6自动挂载点)
/proc虚拟的进程和内核的一些信息
/proc/meminfo内存信息
/proc/cpuinfocpu信息
/proc/partitions分区信息
echo“- – -” > sys/class/scan_host/host2/scan
增加硬盘时,免重启刷新硬盘
/sys存储硬件信息 (属于内存信息,虚拟的)
/opt第三方软件存储
/tmp临时文件
/usr操作系统软件资源存储位置
/usr/local
/usr/share/manman帮助
/usr/share/docdoc帮助
/usr/share/dict字典
/var存放日志及可变信息位置
/var/log
/var/www
/var/ftp
/dev设备存储位置
/dev/null/dev/zero
俩个特殊设备,属于字符设备
/dev/random随机数
/dev/tty终端设备
/srv
/root
查看文件各项属性及权限
shat
三个时间戳
Accesstime :访问时间. Atime,读取文件的内容
(读取文件时的时间的前提是,mtime 要比atime 新)
Modifytime :修改时间. Mtime,改变文件内容(数据)但是内容改变,元数据也会改变.
Changetime :改变时间,ctime.元数据发生改变的时间
ls 的用法
-a 显示所有文件夹
-R 递归,进入到查看目录的每个文件夹
-r 逆序排序,默认是数字带字母的排序
-S 按文件大小排序
-tlmtime顺序查看文件
-ld目录和符号连接信息(表示只显示目录本身属性,而不是其内容)
-1 文件分行显示(行排序改变成列排序)
-S 按文件从大到小排序
-u 配合-t选项,显示并按照atmie从新倒旧排序
-U 不排序,按目录存放顺序显示
Mangolb :通配符的man帮助
配合IS使用的文件通配符
* 匹配零个或多个字符
? 匹配任何单个字符
~ 当前用户家目录
~username用户家目录
~+ 当前工作目录
~- 前一个工作目录
[0-9]匹配数字范围例:lsf[1-3]
[a-z]匹配大小写字母 例:字母顺序的排序是aAbBcCdD
[A-Z]匹配大小写字母 例:字母顺序的排序是aAbBcCdD
[wxc]匹配列表中的任何的一个字符
[^wxc]匹配列表中的所有字符以外的字符(^取反符)
touch命令的用法
touch[OPTION]… FILE…
-a:改变atime时间,但是ctime时间也会跟着改变.
-m:改变mtime时间,但是ctime时间也会跟着改变
-t 设置文件时间戳(默认修改atime时间和mtime时间)
-c 不创建文件,如果此文件存在则刷新该文件时间戳
cp命令的是使用方法
-f –-force强制覆盖,如果文件存在则删除将文件改名
-r 递归(复制目录必须使用的选项)可以复制目录及内部所有的内容
-I 交互式
-a 归档(属于备份,保留源文件所有属性)
-d–-no-dereference –preserv=links 不复制原文件,只复制链接名
–preserv=[ATT_LIST]复制原文件内容到链接文件中
Mode:权限
Ownership:属主属组
Timestamp:时间
Links:链接名文件
Xattr:扩展文件属性
Context:上下文
All:所有
-p 等同于 –-preserv=mode,ownership,timestamp
-v–-verbose 显示复制过程
练习题
1、 使用别名命令baketc,每日将/etc/目录下所有的文件,备份到/testdir/下的独立的新目录下,并要求新目录的格式为backupYYYY-MM-DD,备份过程可见
2.先创建/testdir/rootdir目录,再复制/root所有下啊文件到该目录内,并要求保留原有权限
显示当前shell进程所有可用的命令别名
alias
定义的别名需重新登录才生效,如果不想重新登录,有以下方法实现
Source /path/to/config_file
. /path/to/config_file
.和source等价
撤销别名 unalias
在命令行中定义的别名,仅对当前shell进程有效,而且重启失效
如果想永久有效,要定义在配置文件中
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
mv命令的用法
mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE
-I 交互式 例:如果移动的目标已存在,询问覆盖不覆盖
-f 强制
rm 命令的用法
常用选项
-i 交互式
-f 强制
-r 递归
安装tree
rpm –I /run/media/root/CentOS\ 7\x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm
即可完成安装
tree 命令的用法
tree –L level :显示几层目录树结构
-d 只显示目录,不显示文件
mkdir 创建目录
-p 存在与不报错,且可自动创建所需目录
例:mkdir dir1/dir2/dir3/dir4 目录全不存在,带上这个选项,可以忽略错误,直接创建到第四层目录.
-v 显示详细信息
-m创建目录时直接指定权限
rmdir删除目录命令
这个命令只能删除空目录
练习
1,如何创建/testdir/dir1/x,/testdir/dir1/y,/testdir1/dir1/x/a,/testdir1/dir1/x/b, /testdir1/dir1/y/a, /testdir1/dir1/y/b
2,如何创建/testdir/dir2/x, /testdir/dir2/y,
/testdir/dir2/x/a, /testdir/dir2/x/b
3.如何创建/testdir/dir3, /testdir/dir4, /testdir/dir5,/testdir/dir5/dir6, /testdir/dir5/dir7
Inode (index node)表中包含文件系统所有的文件列表
一个节点(索引节点)是在一个表项,包含有关文件的信息(元数据),包括
文件类型,权限,UID,GID
链接数(指向这个文件名路径名称个数)
该文件的大小和不同的时间戳
指向磁盘上的文件的数据块指针
有关文件的其他数据
一个分区中,每个节点号是位移的
我们在boot文件夹中做了相关的实验.
节点有51200个
我们可以看到挂载点的利用已经满了,但是磁盘空间还有很多.所以验证了节点也是占用磁盘空间的,虽然磁盘看到还有容量,但是可能就是节点空间占满了·
实现俩个文件同一个节点(inode)号
ln命令 (link )
节点编号在同一分区如果一样,就是一个文件
硬链接不能跨文件系统,不能跨分区.
软链接的inodes节点号是不同的,因为他们不是同一个文件.
硬链接不能对目录进行操作
目录的inodes的可以变化,方法就是通过增加这个目录下的目录就可以,因为每个父目录的子目录下都有个..目录是指向父目录
在centos6里面节点号为2为分区的根(挂载点),节点号为1都是虚拟目录
在centos 7里面节点号为128为分区的根(挂载点),2为虚拟目录
软链接
本质上不是同一个文件.
原始文件的相对路径:是相对与软链接文件的路径,而不是相对与当前工作目录的路径
ln–s 原始文件路径(filename)软链接(linkname)
每一个文件的数据分成两个部分
元数据放在inode table(节点表)里面
数据放在block(块)当中
每一个文件的节点的条目(inode entry)
文件引用一个是inode号
人是通过文件名来引用一个文件.
一个目录是目录下的文件名和文件inode号之间的映射
一个分区一个独立的索引表
通过inode节点表来理解cp和rm和mv命令
cp命令的理解
分配一个空闲的inode号,在inode表中生成新条目
在目录中创建一个目录项,将名称与inode编号关联,
拷贝数据生成新的文件
rm命令的理解
链接数递减,从而释放的inode号可以被重新使用
把数据块放到空闲列表
删除目录项
数据实际不会马上被删除,但当另一个文件使用数据块时将被覆盖.
mv命令的理解
如果mv命令的目标和源在相同的文件系统,作为mv命令
用新的文件名创建对应的目录项
删除旧目录项条目对应的旧的文件名
不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!
如果目标和源在一个不同的文件系统,mv相当于cp和rm
file命令的用法
-b 列出文件的辨识结果,但是不显示文件名
-c详细显示指令过程,便于排错或分析程序执行过程
-f 列出文件中文件名的文件类型(例将多数文件名写入一个文件执行这条命令,就可以批量显示)
-F使用指定分隔符号替换输出文件名后默认的“:”分隔符
(例file –F”–” 文件名)
-I输出mime类型的字符串
-L查看对应软链接对应文件的文件类型
-z 尝试去解读压缩文件的内容
标准的输入输出
程序:指令+数据
读入数据:Input
输出数据:Ouput
打开的文件都有一个fd:file descriptor(文件描述符)
可以在proc中看到
Linux给程序提供三种i/o设备
标准输入(STDIN)-0 默认接受来及键盘的输入
标准输出(STDOUT)-1 默认输出到终端窗口
标准错误(STDERR)-2 默认输出到终端窗口
(STD=stardard标准)
I/O重定向:改变默认位置
STDOU和STDERR可以被重定向到文件:
命令 操作符号 文件名
支持的操作符号包括
>把STDOU重定向到文件
2>把STDERR重定向到文件
&>把所有输出重定向到文件
>这个符号会使文件内容覆盖
>>这个符号是附加到这个文件中,不会覆盖原有内容
Set命令可以调整文件是否可以覆盖
例
Set–C 禁止将文件内容覆盖到已有文件,但可追加
Set+C 允许覆盖
>|强制覆盖
2>>追加重定向错误输出数据流到文件中
标准输出和错误输出各自定向至不同位置
COMMAND> /path/to/file.out 2> /path/to/error.out
合并标准输出和错误输出为同一个数据流进行重定向
&>覆盖重定向
&>>追加重定向
COMMAND> /path/to/file.out 2>&1 (顺序很重要就要放到后面
)
COMMAND>> /path/to/file.out 2>>&1
Find/etc –name passwd 2> /dev/null
原创文章,作者:Kartik,如若转载,请注明出处:http://www.178linux.com/28192