Linux 英文解释为 Linux is not Unix。
文件管理
cat 打印内容到输出设备上
1 2 3 4 5 6 7 8 9 10 11 12 13
cat [ -A 等价于 -vET -b 输出行编号(不对空白行编号) -e 等价于 -vE -n 输出行编号(空白行编号) -s 多行空白行替换成一行空白行 -t 等价于 -vT -u 关闭输出buffer -v 使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外 -E 每行结尾显示($) -T 将TAB字符显示^| ] 文件名
chattr 改变文件或目录属性(ext2)
属性共有以下8种模式
a: 让文件或目录仅供附加用途
b: 不更新文件或目录的最后存取时间
c: 将文件或目录压缩后存放
d: 将文件或目录排除在倾倒操作之外
i: 不得任意更动文件或目录
s: 保密性删除文件或目录
S: 即时更新文件或目录
u: 预防意外删除
1 2 3 4 5 6
chattr [ -R 递归处理 -V 显示指令执行过程 ][ +/-/= 开启/关闭/指定设置 ] 文件名/目录名
chgrp 改变文件或目录组群
1 2 3 4 5 6 7 8 9
chgrp [ -c 类似-v,仅回报更改的部分 -f 不显示错误信息 -h 只更改连接文件 -R 递归处理 -v 显示执行过程 ] 群组名 文件名/目录名 -------------------------------------------------- chgrp --reference=文件名 文件名 // 根据指定文件指定文件
chmod 改变文件调用者权限
1 2 3 4 5 6 7 8 9 10 11 12 13 14
chmod [ -c 文件权限确实更改才显示信息 -f 不限时错误信息 -v 显示执行过程 -R 递归处理 ][ u|g|o|a 拥有者|拥有组|其他人|全部 ][ +/-/= 开启/关闭/指定设置 ][ r|w|x 读取|写入|可执行 ] 文件名 -------------------------------------------------- chmod 777 文件名
1 2 3
举个🌰: $ chmod 777 file $ chmod ug=rwx,o=x file
chown 改变文件拥有者
1 2 3 4 5 6 7
chown [ -c 类似-v,仅回报更改的部分 -f 忽略错误 -h 修复符号连接 -v 显示执行过程 -R 递归处理 ] 文件拥有者[:使用组] 文件名或目录名
cksum 检测文件是否被更改(CRC排错检查)
CRC是一种排错检查方式
该指令会返回校验结果供用户核对
文件是否正确无误
1 2 3
举个🌰: $ cksum 文件名 1263453430 78 文件名 // "1263453430"表示校验码,"78"表示字节数
cmp 比较两个文件是否相同
相互比较的两个文件完全一样时,则该指令不会显示任何信息。
预设会标示出第一个不同之处的字符和列数编号。
1 2 3 4 5 6 7
cmp [ -c 显示不一样的地方的字符 -l 标示出所有不一样地方 -s 不显示错误信息 ][ -i <字符数目> ] [第一个文件][第二个文件]
diff 比较文件差异
以逐行的方式,比较文本文件的异同处
如果比较目录,会比较目录中相同文件名
的文件,不比较其子目录。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
diff [ -a diif预设逐行比较文本文件 -b 不检查空格字符 -B 不检查空白行 -c 显示全部内文, 标出不同之处 -d 使用不同的演算法, 以较小单位做比较 -e 输出格式可用于ed的script文件 -f 输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处 -H 比较大文件时,可加快速度 -i 不检查大小写 -q 只显示有无差异,不显示详细信息 -r 递归,比较子目录中的文件 -s 若没有发现任何差异,仍然显示信息 -t 在输出时,将tab字符展开 -T 在每行前面加上tab字符以便对齐 -u 以合并的方式来显示文件内容的不同 -w 忽略全部的空格字符 -y 以并列的方式显示文件的异同之处 ][ -<行数> // 指定要显示多少行的文本。此参数必须与-c或-u参数一并使 ][ -C <行数> // 与执行"-c-<行数>"指令相同 ][ -I <字符或字符串> // 忽略匹配指定字符或字符串的文件差异性 ][ -S <文件> // 在比较目录时,从指定的文件开始比较 ][ -W <宽度> // 在使用-y参数时,指定栏宽 ][ -x <文件或目录> // 不比较选项中所指定的文件或目录 ][ -X <文件> // 您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件 ][ --left-column // 在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容 ][ --suppress-common-line // 在使用-y参数时,仅显示不同之处 ] 文件或目录1 文件或目录2
diffstat 根据diff的比较结果,显示统计数字
1 2 3 4 5 6 7
diff [ -w 指定输出时栏位的宽度 ][ -n <文件名长度> // 指定文件名长度,设置终端显示的长度 ][ -p <文件名长度> // 与-n参数相同,但此处的<文件名长度>包括了文件的路径 ]
1 2 3 4 5
举个🌰: $ diff test1 test2 | diffstat unknown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
file 辨别文件类型
1 2 3 4 5 6 7 8 9 10 11
file [ -b 列出辨识结果时,不显示文件名称 -c 详细显示指令执行过程 -L 直接显示符号连接所指向的文件的类别(如果文件是连接的话) -z 尝试去解读压缩文件的内容 -i 显示MIME类别 // text/plain; charset=utf-8 ][ -f <名称文件> ][ -m <魔法数字文件>... ] 文件或目录... // 多个文件之间使用空格分开
find 指定目录下查找文件
不设置任何参数,则find命令将在当前目录下查找子目录与文件
并且将查找到的子目录和文件全部进行显示
Path + Expression // 路径加命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
find 路径 option [ -exec 执行command操作 -ok 与exec相同, 只是操作前要询用户 命令 ] {} \; Expression: -mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件 -amin n : 在过去 n 分钟内被读取过 -anewer file : 比文件 file 更晚被读取过的文件 -atime n : 在过去n天内被读取过的文件 -cmin n : 在过去 n 分钟内被修改过 -cnewer file :比文件 file 更新的文件 -ctime n : 在过去n天内被修改过的文件 -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写 -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写 -size n : 文件大小 是 n 单位, b:512 位元组的区块 c:字元数,k:kilo bytes w:二个位元组。 -type c : 文件类型是 c 的文件。 d: 目录 c: 字型装置文件 b: 区块装置文件 p: 具名贮列 f: 一般文件 l: 符号连结 s: socket -pid n : process id 是 n 的文件
cut 显示每行从开头算起 num1 到 numn 的文字
1 2 3 4 5 6 7 8 9 10 11 12 13
cut -b 数字1,数字n [-n] [file ...] cut -c 数字1,数字n [file ...] cut -f 数字1,数字n [-s] [-d 分隔符] [file ...] -b: 字节为单位进行分割 -c: 字符为单位进行分割 -f: 自定义分隔符,默认为制表符 -d 自定义分隔符 1,n 显示第1个和第n个 1- 第1个字节、字符、字段到结尾 1-10 从第1个字节、字符、字段到第10个(包括10在内)字节、字符、字段 -10 从第1个字节、字符、字段到第10个(包括10在内)字节、字符、字段
1 2 3 4 5 6 7
举个🌰: $ cut -f2 -d";" test2.txt No;Name;Mark;Percent 01;tom;69;91 --------------------- Name tom
ln 建立同步链接
软链接:
以路径的形式存在。类似于Windows操作系统中的快捷方式
可以跨文件系统
可以对一个不存在的文件名进行链接
可以对目录进行链接
硬链接:
以文件副本的形式存在。但不占用实际空间
不允许给目录创建硬链接
硬链接只有在同一个文件系统中才能创建
1 2 3 4 5 6 7 8 9
ln [ -b 删除, 覆盖以前的链接 -d 允许超级用户制作目录和硬链接 -f 强制执行 -i 交互模式, 文件存在交互提示 -n 符号链接视为一般目录 -s 软链接(符号链接) -v 显示处理过程 ] 源文件或目录 目标文件或目录
1 2
举个🌰: $ ln -s s.txt t.txt
less 随意浏览文件
less 在查看之前不会加载整个文件
less使用
locate 用于查找文件或目录
速度比find -name快, 只是读取数据库文件/var/lib/mlocate/mlocate.db
linux会自动创建这个数据库,且每天刷新一次
为了避免查询到文件已经删除或刚刚创建, 在使用命令前先updatedb
手动更新数据库
1 2 3 4
/usr/bin/updatedb 主要用来更新数据库,通过crontab自动完成的 /usr/bin/locate 查询文件位置 /etc/updatedb.conf updatedb的配置文件 /var/lib/mlocate/mlocate.db 存放文件信息的文件
1 2 3 4 5 6 7 8
locate [ -c 只输出找到的数量 -d 指定dbpath指定的数据库 -i 忽略大小写 -q 不显示任何错误讯息 -r 使用基本正则表达式 -n 显示条数 ] 文件或目录或正则
updatedb 创建或更新locate
1 2 3 4 5
updatedb [ -o<文件> 忽略默认的数据库文件, 使用指定locate数据库文件 -U<目录> 指定目录的locate数据库 -v 查看执行过程 ]
lsatte 显示文件属性
1 2 3 4 5
lsattr [ -a 显示所有文件和目录 -d 显示目录名称, 并非其内容 -R 递归处理, 目录及目录下文件 ] 文件或目录...
mktemp 建立暂存文件或文件夹
创建临时文件,但不会使用默认的umask值(管理权限的) 将文件的读写权限分配给文件属主 [ 文件名参数 ] 文件名参数必须是以 “ 自订名称 .XXXXXX” 的格式
1 2 3 4 5
mktemp [ -d 创建文件夹 -u 暂存文件会在mktemp结束前先行删除 -q 执行发生错误, 不显示任何信息 ] 临时文件.XXX // XXX必须3个以上
1 2 3
举个🌰: $ mktemp tmp.XXXX // 生成临时文件 file test testfile testfile1 tmp.3847 // 生成了tmp.3847
more 逐页阅读
最基本功能空格
下一页, 按b
返回
1 2 3 4 5 6 7 8 9 10 11 12 13
more [ -d 显示帮助,而不是响铃🔔 -f 统计逻辑行数 -c 不滚屏, 显示文本并清除行尾 -s 连续多行空白行,代替为一行空白 -u 不显示下划线 ][ -num 一次显示行数 ][ +/查找字符串 从查找的字符串开始显示 ][ +行数 从第几行开始 ] 文件
1 2 3 4 5 6 7 8 9
常用操作命令: Enter: 向下n行(默认1行) Ctrl+F: 向下滚动一屏 空格: 向下滚动一屏 Ctrl+B: 向上滚动一屏 =: 显示当前行的行号 v: 调用vi编辑器 !命令: 调用shell q: 退出
mv 移动/改名 文件和目录
1 2 3 4
mv [ -i 如果文件存在会提示是否覆盖 -f 覆盖已有的文件不进行任何提示 ] 源文件或目录 目标文件或目录
od 文件内容按照八进制显示
默认第一列显示地址, 一些有空洞的文件可以通过od命令来查看空洞的位置
1 2 3 4 5 6 7 8 9 10 11 12 13 14
od[ -A<字码基数> 指定地址(文件offset)基数打印 d:十进制;o:八进制;x:十六进制;n:不打印位移值 ][ -t<输出格式> 输出文本的格式 c:ASCII字符或反斜杠序列; d:有符号的十进制 f:浮点数 o:八进制 u: 无符号十进制 x: 十六进制 ][ -N<字符数目> 到设置的字符数目为止 ] 文件
1 2 3 4 5 6
举个🌰: $ od -Ax file.txt 0000000 005061 005062 005063 005064 005065 005066 005067 005070 0000010 005071 005060 031462 032012 033065 000012 000001b
paste 合并文件的列
把每个文件以列对列的方式,一列列地加以合并
1 2 3 4 5
paste [ -s 串列进行而非平行处理(默认是按行平行, 去除就是按照[文件数列]) ][ -d <间隔字符> 用指定的间隔字符取代tab字符 ] 文件...
1 2 3 4 5
举个🌰: $ paste -d '|' -s file1.txt file2.txt 1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |23 |456 1 |2 |4 |5 |6 |777 |7 |8 |999 |0
rm 生成文件或目录
1 2 3 4 5 6
rm [ -i 删除前询问 -f 无需确认直接删除(即使文件设置为只读) -r 递归删除(目录) -d 删除目录 ] 文件或目录(目录存在内容需要-r/d)
split 分割文件(按大小分割)
1 2 3 4 5 6 7
split [ -<行数> 指定每多少行切成一个小文件 ][ -b<字节> 指定每多少字节切割成多少小文件 ][ -C<字节> 与-b相同, 切割时会维持每行的完整性 ] 切割文件 输出文件名
1 2 3 4
举个🌰: $ split -5 file.txt file_ file_aa file_ab file_ac file_.....
csplit 分隔文件(按特点分割)
csplit命令是split的一个变体,split只能够根据文件大小 或行数 来分割,但csplit能够根据文件本身特点 来分割文件。csplit命令用于将一个大文件分割成小的碎片,并且将分割后的每个碎片保存成一个文件。
1 2 3 4 5 6 7 8 9 10 11 12 13
csplit [ -s 静默, 不答应任何信息 -n<数量> 指定分隔后的文件后缀数字个数 -f<前缀> 指定文件分隔文件前缀 -b<后缀> 指定文件分隔文件后缀 类似c的参数格式 "%02d.log" ] 文件 规范 规范: /[正则]/ 包含模式的行成为当前行 % 匹配% 包含模式的行成为当前行 不为段创建一个文件 {数量} 如果紧跟一个模式, 表示使用指定次数的模式 +数量 提前几行 -数量 退后几行
1 2
举个🌰: csplit ff.txt /\[[A_Z]*\]/ # 好像csplit正则很多不匹配 .;+无法使用
tee 读取标准输入输出成文件
1 2 3 4
tee [ -a 追加, 而非覆盖到源文件 -i 忽略中断信号 ] 文件...
tmpwatch 删除暂存文件
可删除不必要的暂存文件,您可以设置文件超期时间,单位以小时计算
1 2 3 4 5 6 7
tmpwatch [ -a 删除任何类型 -f 强制删除文件或目录 -v 显示执行过程 -q 不显示执行过程 -test 只是做测试 ] 超时时间 文件目录
1 2
举个🌰: $ tmpwatch 24 /tmp/ // 删除/tmp目录中超过一天未使用(未访问)的文件
touch 修改文件或者目录的时间属性
1 2 3 4 5 6 7
touch [ -a 修改读取时间 -m 修改修改时间 -c 文档不存在, 不建立新的档案 ][ -r<文件|目录> 参考文档的时间 ]文件或目录...
umask 获取当前权限掩码
1 2 3 4 5 6
举个🌰: $ umask -S u=rwx,g=rx,o=rx $ umask 022 // 777-022 = 755
which 查找文件
which指令会在环境变量$PATH设置的目录里查找符合条件的文件
1 2 3 4 5
which [ -n<文件名长度> 指定文件名长度, 必须大于或等于所有文件中最长的文件名 -p<文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件的路径 -w<宽度> 输出栏位的宽度 ] 文件...
cp 文件目录拷贝
1 2 3 4 5 6 7 8
cp [ -a 通常复制目录使用, 保留链接、文件属性、文件下内容, 相当于dpR -d 保留链接🔗 -f 覆盖不提示 -i 与f相反, 需要提示 -p 修改时间和访问权限也复制到新文件中 -r 递归复制 ] source dest
whereis 查找文件
特定目录中查找符合条件的文件
1 2 3 4 5 6 7 8 9 10 11 12 13
whereis [ -b 只查找二进制文件 -f 不显示文件前面的路径 -m 只查找说明文件 -s 只查找源码文件 -u 查找不包含指定类型文件 ][ -B <目录> 设置目录查询二进制 ][ -M <目录> 设置目录查询说明文件 ][ -S <目录> 设置目录查询源码文件 ] 文件...