alias rm=‘mv -t /app/‘
tree 显示目录树
- d 只显示目录
- L 层数
mkdir 创建目录
-p 自动创建所需的个目录
-v 显示详细信息
-m 创建目录是直接指定权限
rmdir 删除空目录
-p 递归的删除父空目录
-v 显示详细信息
rm -r 递归删除目录树
df 用于显示磁盘分区上的可使用的磁盘空间
-h 以KB以上的单位来显示
-a 查看全部文件系统
-T 文件系统类型
-i 列出inode信息而不是块使用情况
watch 定期执行程序,显示全屏输出
-n 指定更新间隔
ln 目标 链接名字 文件之间建立链接(硬链接)
-s 使符号链接,而不是硬链接(软链接)
stat 选项 文件名 显示文件或文件系统状态
shred 选项 文件名 覆盖文件以隐藏其内容,并可选地删除它
-n 覆盖次数,默认3次
-u 覆盖后删除
-v 查看过程
-z 用零添加最后的覆盖来隐藏粉碎
例:shred -zvun 10
readlink 查看链接文件路径
file 文件名 确定文件类型 (看首部信息,不关心文件后缀)
-b 不显示文件名
-f 把需要处理的东西存在一个文件,读取文件的内容,适合批处理
-F 使用指定分隔符号替换输出文件名后默认的”:”分隔符
-L 查看对应软链接对应文件的文件类型
dd if=/dev/zero of =/boot/bigfile bs=1M count=500 可控的添加文件内容
lsof | grep deleted 查看哪些文件已删除但未释放空间
killall 进程 关掉进程
ps aux|grep vim 查看进程
ls -il 显示节点编号
echo f{1..50000} | xargs touch 创建大批量文件
watch -n 1 -df -i
通常rm删除大文件未必会立即释放空间,所以建议先使用 > 清空文件内容,在使用rm 删除文件。
Centos 6使用的文件系统 ext4 Centos7使用的文件系统 xfs
文件分为两部分元数据(文件的属性 )和用户数据(即文件数据块,数据块是记录文件真是内容的地方)。元数据中的inode号才是文件的唯一标识而非文件名,文件名(存在于数据块中)只是方便人的使用和记忆。
数据的位置:
直接指针(有12个,0-11)直接指向数据块(4K),数据低于48K可以通过直接指针直接找到
间接指针:直接指向的是指针块(4K),消耗4个字节来描述数据块的位置
节点编号会被重复利用
centos6 根的节点编号是 2 (挂载点都是为2)
centos7的节点编号是64
每个分区分配自己的节点编号,不同分区节点编号可以一样,同一个文件不能拥有不同的节点编号
文件名不在节点表里,存在于文件夹的文件内容中(数据块中)
链接数:一个节点编号对应的有几个文件名
删除文件只是删除节点信息,并没有把数据删除
硬链接:可以存放在同一目录上,也可以在不同目录上(不允许跨分区创建)
软链接大小是链接路径的大小
软链接和硬链接区别:
1.本质不同:硬链接是同一个文件。软链接不是同一个文件
2.删除:删除一个硬链接的文件并不影响有相同inode的文件使用。删除软链接的原始文件则软链接失效
3.创建:链接创建完成连接数会增加。软链接则不会
4.跨分区:硬链接不可以跨分区创建。软链接可以
5.目录:硬链接不 可以创建目录。软链接可以
软链接:源文件的路径是相对路径,一定是相对于软链接文件的路径,而非相对于当前工作目录的路径
程序:指令+数据
打开的文件都有一个fd: file descriptor (文件描述符)
I/O重定向:改变默认
STDOUT和STDERR可以被重定向到文件
命令 操作符号 文件名
支持的操作符号包括:
> 把STDOUT重定向到文件
2> 把STDERR重定向到文件
&> 把所有输出重定向到文件
> 文件内容会被覆盖
set –C 禁止将内容覆盖已有文件,但可追加
>| file 强制覆盖
set +C 允许覆盖
>> 原有内容基础上,追加内容
< 标准输入重定向
/dev/null 垃圾箱
ls /misc/
systemctl enable autofs ; systemctl start auttofs 让auttofs可用,auttofs可用了 /misc/cd 才可用
ls -l /proc/进程号/fd/
():合并多个程序的STDOUT
例如:
(ls;pwd;hostname) >> f3.log 多条命令同时重定向一个文件中
(errcmd;hostname) > /app/true.log 2> /app/error.log 正确的信息和错误信息分开重定向
(errcmd;hostname) > /app/true.log 2>&1 等同于 &> 等同于下面
((errcmd;hostname) 2>&1) > /app/true.log 错的变成对的,在重定向到文件
(echo error 1>&2) 2> /dev/nul 对的变成错的,错的重定向到 垃圾箱
linux和windows的文本格式不一样,linux一个符号来标识换行,Windows两个符号来标识 (0d 0a)
tr 转换和删除字符
-c 取补集(除了)
例:tr -sc ‘a‘ 除了a全都压缩
aaabbbcccaaa
aaabcaaa
例:tr -dc ‘a‘ 除了a全删,ctrl+d才能结束
abcabcabc
aaa
例:tr -dc ‘a\n’ 保留a和回车
-d 删除
-s 连续重复字符会被压缩(2个以上)
-t
\t 表示tab键
\n 换行
\r 表示回车键
例:tr -d ‘\n‘ < f1 删除回车并重定向 f1
tr ‘\n‘ ‘ ‘ < f1 换行替换成空格重定向 f1
tr -d ‘\r‘ < win.txt > newin.txt windows文本格式转换为linux
dos2unix windows文本格式转换为linux
unix2dos linux文本格式转换为windows
cat -A win.txt(windows文本)
a^M$
b^M$
c^M$
^M$
^M$
例:
hexdump -c win.txt
mail -s 邮件标题 收件人 发邮件
mail 接受邮件 输入主题名查看
单行重定向,
多行重定向 <<
例:cat > f1 << EOF(end of file) 统一提交
aaabbbbccc
bbbbbccccc
EOF
命令 | 命令 |命令 管道符号(只能处理标准输出)
例: ls | tr ‘a-z‘ ‘A-Z‘
F1
F2
例: who | tr ‘a-z‘ ‘A-Z‘
ROOT PTS/0 2017-11-14 17:33 (192.168.27.1)
ROOT PTS/1 2017-11-14 21:32 (192.168.27.1)
LIYIHANG TTY2 2017-11-14 21:27
例:error 2>&1 | tr ‘a-z‘ ‘A-Z‘ (通过 2>&1把错误输出转换为正确输出)
BASH: ERROR: COMMAND NOT FOUND...
error |& tr ‘a-z‘ ‘A-Z‘ 等同 error 2>&1 | tr ‘a-z‘ ‘A-Z‘
例:error |& tr ‘a-z‘ ‘A-Z‘ | tr -d ‘O‘
BASH: ERRR: CMMAND NT FUND...
例:ls -R /etc/ | more 管道符号配合 more 分段查看
tee 重定向到多个目标 (因为屏幕上可以显示,所以可以做第二次处理)
-s 追加到给定的文件,不要覆盖
例: who | tee f1 | tr -d r
oot pts/0 2017-11-14 17:33 (192.168.27.1)
oot pts/1 2017-11-14 21:32 (192.168.27.1)
liyihang tty2 2017-11-14 21:27
例:who | tee who.out |grep liyihang grep(搜索)
liyihang tty2 2017-11-14 21:27