英文单词 recursive 递归 reverse 倒序 glob 通配符 archive 存档

PS1是linux里头的一个默认的环境变量,用来设置命令提示符的环境变量。 \d :代表日期,格式为weekday month date,例如:"Mon Aug 1" \H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux \h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略 \t :显示时间为24小时格式,如:HH:MM:SS \T :显示时间为12小时格式 \A :显示时间为24小时格式:HH:MM \u :当前用户的账号名称 \v :BASH的版本信息 \w :完整的工作目录名称。家目录会以 ~代替 \W :利用basename取得工作目录名称,所以只会列出最后一个目录 # :下达的第几个命令 $ :提示字符,如果是root时,提示符为:# ,普通用户则为:$

编辑~/.bashrc,将所有的PS1中的\w替换为\W就可以让shell只显示最后一个目录名而不显示完整的路径。

复习: 与系统配置的文件 别名—— ~.bashrc 变量——/etc/profile.d/env.sh(自己键的文件)

fhs 分层结构

sbin 系统管理员使用命令 bin
字符设备-顺序查看 块设备-随机查看

var 可变数据文件 srv 服务器数据 proc 映射 sys 硬件信息 opt 第三方软件

可以用神奇的目录进行挂载光盘到/media 方法: cd /misc 在cd cd/ 进行两个命令操作之后光盘自动挂载到/media

一般情况下,相对路径是相对于当前目录 二般情况下,相对其他目录

. 当前目录 .. 上一级目录,父目录

更改命令 绝对路径或者相对路径 cd

列出目录内容 列出当前或者指定目录内容 ls -a 包含隐藏文件 -l 显示额外信息,较全信息 -ld 目录和符号连接信息 -ad 不具体打开文件夹 -R 目录递归显示 -1 文件分行显示 -S 按照从大到小排序 -t 按mtime排序 修改时间排序 -u 配合-t选项,显示并按atime新到旧排序 -X 按文件后缀排序 显示隐藏文件可以ls -ad .[^.]* 如果直接..有可能进入到父母来里去 通配符(匹配文件名) 字符不是字节 * 匹配零个或多个字符 ? 匹配任何单个字符 ~ 当前用户家目录 ~name用户name家目录 ~- 前一个工作目录 [0-9] 匹配数字范围 [a-z] 字母。有可能显示大写字母 [A-Z] 字母。有可能显示小写字母小写字母比大写字母优先 [quan] 匹配列表中的任何一个字符[1..20]表示1 2 0与{1..3}=1 2 3 [^quan] 匹配列表中的所有字符以外的字符 预定义字符类 man 7 glob查看 [:digit:]任意数字,相当于0-9 [:lower:]任意小写字母=a-z [:upper:]任意大写字母=A-Z [:alpha:]任意大小写字母 [:alnum:]任意数字或字母 注意:用的时候外面有可能还要加[] ls -d /etc/ 显示etc下的所有文件,不用打开下面的文件夹 ls -d /etc/ =ls -d /etc 只是显示etc文件夹 cp /etc/hosts motd ll !* 前一条命令的所有参数即/etc/hosts motd \command 使用原始命令,不用别名 stat 可以查看文件的三个时间,atime 对文件进行一次读操作,它的访问时间就会改变。 例如像:cat、more等操作 ctime 当文件的状态被改变的时候,状态时间就会随之改变, 例如当使用chmod、chown等改变文件属性的操作是会改变文件的ctime的 mtime 文件的内容被最后一次修改的时间,我们经常用的ls -l命令显示出来的文件时间就是这个时间 当用vim对文件进行编辑之后保存,它的mtime就会相应的改变

创建空文件 touch -c 如果文件不存在,则不给予创建 默认如果存在就刷新三个时间,不存在则创建文件 例子:touch date -d "-1 day " +%F.log

复制文件和目录 cp 普通用户时,存在文件不会再继续询问是否覆盖, 因为root用户的是用别名cp=cp-i,且覆盖不了root拥有的文件 目标 不存在 存在且为文件 存在且为目录 源文件 一个文件 新建文件,并同名 覆盖(-i避免) 该目录下新建文件 同名 多个文件 错误 错误 该目录下新建文件 同名 目录(-r) 新建目录 同名 错误 该目录下新建文件 同名 -i 覆盖提示 -r/R递归复制目录及其所有内容 -a 保留—— -dR --preserv=all -d --no-dereference--preserv=links 不复制源文件,只复制链接名 -v --verbose 复制显示详细过程 -u 只复制比源文件更新的文件 --backup=numbered 目标存在,覆盖前先备份加数字后缀,文件 cp -r /etc /data/backup`date +%F

批量改名 rename “改的地方” “改成什么” 改的文件名 eg:rename “.conf” ".conf.bak" file*

移动 mv (文件和文件夹都可以) -t 目的 文件 文件=将多个文件移动到同一个文件夹内 -i 交互式,询问是否覆盖 -f 强制性 注:同一个目录里面的移动为重命名 也可以对移动的目录更改名字

删除 rm -i 交互式 -f 强制性 -r 递归删除 可以将rm别名成为mv -t 目录 避免大事 lsof | grep deleted 查看文件删除却没释放内存的进程 当我们要删除巨型文件再利用时,即使删除后,内存并没有释放 只能等到进程关闭后才释放 安全的释放空间和删除文件 建立与源文件的名字一样的文件(> 文件名)—删除文件后——在将其删除

目录操作 tree 显示目录结构 -d 只显示目录 默认显示所有文件 -L level 指定显示的层数 -P pattern 只显示由指定pattern匹配到的路径 mkdir 创建目录 -p 存在与不报错,且可以多级创建个目录 -v 显示过程 -m MODE 创建目录直接指定权限 rmdir 删除空目录 -p 递归删除空目录 -v 显示 rm -r 递归删除目录树

		对于敏感数据的彻底的删除 用shred -zvu 文件名 

mkdir -p /testdir/dir2/{x/{a,b},y} 创建dir2/x dir2/y dir2/x/a dir2/x/b 
echo /etc/hosts{,,.bak}
---------/etc/hosts /etc/hosts /etc/hosts.bak

分配数据最少块为 4k

索引节点 inode =index node 表中包含文件系统所有文件列表 一个节点是在一个表项,包含有关文件的信息(元数据) 连接数 文件大小 文件时间 指向磁盘上文件的数据块指针 有关文件的其他数据

直接指针最多12个指向最大为12X4=48k 间接指针:一个指针指向一个块4K 一个指针为4个字节=1024个指针 可以多重间接指针达到指向更大的数据

mv和inode 如果mv命令的目标在相同的文件系统,作为mv命令

文件

如果空间满了。可能是节点满了

rm命令 连接数递减,释放的inode号可以被重用 把数据块放在空闲列表中 数据实际上不会马上被删除,当另外一个文件使用数据块时被覆盖

ln link硬链接 一个文件多个文件名 ln 源文件 连接名字 连接数+1 新建的文件夹至少连接数为2,因为目录下面有个 . 代表当前目录 再建一个子文件夹 连接数为3 ,因为子目录下面有 ..代表上一级目录 且目录不能创建硬链接 不能跨分区创建 硬链接之间是平行关系 ln -s 创建软连接 原始文件的连接数不增 可以跨分区创建 目录也是可以的 需要绝对路径,如果用相对路径则需要相对的是软连接的路径 大小由原始路径的字符决定 软硬的区别 连接数 可不可以跨分区 目录可不可以创建 原始和连接的文件关系 删除后果 大小

readlink 查看软连接指向

生产中升级软件调试软件的方法 创建软连接 需要升级的时候将原来的软连接删掉,重新创建同名软连接指向升级包

linux后缀对系统没影响,对用户方便 所以不能通过文件后缀判断文件类型

file 判断文件类型 -b 只显示结果 -f filelist列出文件filelist中文件名的文件类型 -L 查看软连接对应的文件的文件类型 文件类型主要体现在文件的开头magic number 魔数

命令 file tree cp -a -r -p -v ln -s mv rm -rf rmdir mkdir -p rename stat 文件具体元数据 shred readlink lsof 查看删除对应的

标准输入和输出 程序:指令+数据 读入数据:Input 输出数据:Output 打开的文件都有一个fd :file descriptor(文件描述符) linux给程序提供三种I/O设备 标准输入STDIN -0 默认来自键盘的输入 标准输出STDOUT -1 默认输出到终端窗口 标准错误STDERR -2 默认输出到终端窗口 I/O重定向:改变默认位置 ls /data /error >all.log 2>&1 2>&1 把错的变成对的,且>all.log 与2>&1不能调换 也可以用 &>all.log

	cmd >log 2>&1
	cmd 2>&1 >log
	cmd &>log
	cmd 2>log >&2
	四个哪个与众不同

/dev/null相当于黑洞

输出和错误重定向到文件内
>bigfile 空文件 也可以用>>创建空文件 
命令  操作符号 文件名 
支持的操作符号
	> 把STDOUT重定向到文件
	2> 把STDERR重定向到文件
	&> 把所有输出重定向到文件
	单个> 文件会覆盖
		set -C 禁止覆盖可追加
		>|file 强制覆盖
		set +C 允许覆盖
	>>追加