ln
ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化。
软连接
软连接:符号连接,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间。
ln –s 源文件 目标文件
硬连接
硬连接:原文件名和连接文件都指向相同的物理地址(目录不能有硬连接,硬连接不能跨越不同的分区)
由于删除文件要在同一个索引节点属于唯一的连接时才能成功,因此可以防止不必要的误删除。
ln 源文件 目标文件
语法
ln [-参数] source dist
-f | 链结时先将与 dist 同档名的档案删除 |
-d | 允许系统管理者硬链结自己的目录 |
-i | 在删除与 dist 同档名的档案时先进行询问 |
-n | 在进行软连结时,将 dist 视为一般的档案 |
-s | 进行软链结(symbolic link) |
-v | 在连结之前显示其档名 |
-b | 将在链结时会被覆写或删除的档案进行备份 |
-S SUFFIX | 将备份的档案都加上 SUFFIX 的字尾 |
-V METHOD | 指定备份的方式 |
--help | 显示辅助说明 |
--version | 显示版本 |
例:
ln -s yy zz | 将档案 yy 产生一个 symbolic link : zz |
env
/usr/bin目录下
查看环境设定
例:
在PATH上增加一个/yusa/1,而把/yusa/2去掉(原:PATH=/usr/bin;/sbin;/yusa/2)
env PATH=/usr/bin;/sbin;/yusa/1
cat:显示或连接文件
/bin目录下
cat [-参数] 文件名称
参数:
-v | 用一种特殊形式显示控制字符,LFD和TAB除外 加了此参数后,-T和-E选项将起作用 |
-T | 将TAB展示为“UI” |
-E | 在每行末尾显示一个$符 |
-u | 输出不经过缓冲区 |
-A | 等于 -vET |
-t | 等于 -vT |
-e | 等于 -vE |
例:
cat a.txt | 展示a文件 |
cat a.txt | more | 分页显示文件 |
cat a.txt b.txt > c.txt | 连接两个文件 |
cat a.txt > b.txt | 把a文件内容copy到b文件 |
cat a.txt b.txt >> c.txt | 把a文件和b文件内容追加到c文件 |
cat > my.txt | 把键盘打人的字符存到my.txt文件中 ctrl+d结束 |
more
/bin目录下
分页显示一个文件或任何输出结果
more [-参数] [文件名]
参数:
-p | 显示下一屏之前先清屏 |
-c | 和-p一样 |
-d | 在每屏的底部出现友好提示 |
-l | 不处理(换页符) 如果没有此参数,则在显示一个包含字符串的行后暂停显示,等待命令 |
-s | 文件中连续的空白行压缩成一行 |
和more交互的命令
i空格 | 若指定i,显示下面i行,否则显示下一屏 |
i输入键 | 若指定i,显示下面i行,否则显示下一行 |
iz | 同“空格”,只是i将成为以下每个满屏的默认行数 |
is | 跳过下面i行,再显示一个整屏。默认值为1 |
if | 跳过下面i屏,再显示一个整屏。默认值为1 |
q或者Q | 退出more命令 |
= | 显示当前行号 |
v | 在当前行启动/usr/bin/vi对之进行编辑修改 |
h | 显示帮助命令 |
i/pattern | 查找匹配该模式的第i行。默认值为1 |
in | 查找符合运算式的倒数i行。默认值为1 |
! 或:! | 在子shell中执行命令 |
. | 重复上次输入的命令 |
i:n | 在命令行中指定了多个文件名的情况下,用此命令使之显示第i个文件。若i出界,则显示最后一个文件 |
i:p | 在命令行中指定了多个文件名的情况下,用此命令使之显示倒数第i个文件。若i出界,则显示第一个文件 |
i:f | 显示当前文件的文件名和行数 |
例:
ls x* | more |
more /yusa/yusa.txt |
less
/usr/bin目录下
分页显示一个文件并可以回头看
less [文件名]
操作:若需要在文件中往前移动,按键。若要移动到文件的百分比表示的位置,则指定一个0~100之间的数,并按
既可。
head
显示指定文件的前若干行
head [-n] 文件
n是前n行,如果没有给出n值,则默认10行。
tail
查看文件尾部
tail [+/- num] [参数] 文件
+num | 从num行以后开始显示,默认值是10 |
-num | 从距文件尾num行开始显示,默认值是10 |
l | 以文本行为num的计数单位 |
c | 以字节为num的计数单位 |
注:l和c可以省略,系统默认为l,以行计数。
od
查看特殊格式的文件内容。
od [-参数] 文件
- A | 指定地址基数,包括:
| ||||||||||||
- t | 指定数据的显示格式,主要的参数有:
|
除了选项c以外的其他选项后面都可以跟一个十进制数n,指定每个显示值所包含的字节数。
说明:od命令系统默认的显示方式是八进制,这也是该命令的名称由来(Octal Dump)。但这不是最有用的显示方式,用ASCII码和十六进制组合的方式能提供更有价值的信息输出。
例如:
$ od - Ax - tcx yusa.txt
whereis
/usr/bin目录下
寻找文件工具
whereis 文件名
例:
whereis php | 如果确认php是一个程序,没有找到的话,则代表系统没有安装php程序 |
find
/usr/bin目录下
寻找文件工具
语法:
find [寻找的目录] 查询条件 [操作]
寻找的目录缺省:则在当前目录下查找
查询条件:逻辑运算符
-a | 逻辑与(and),默认选项 | find –name main –xtype c –user yusa | 查询文件名为main的字符设备文件,拥有者为yusa |
-o | 逻辑或(or) | find –name main -o –name temp | |
! | 逻辑非 | find ! –name temp |
查询条件:括号的使用
find / (-name main –xtype c –user yusa /) | 当使用很多逻辑时,可以用括号括起来,为了避免shell本身对括号引起的误解,需要加转义字符 |
查询条件:以名称和文件属性查找
-name 字符串 | 查找名称为字符串的所有文件,字符串可以用*、?和[] | ||||||||||||||
-lname 字符串 | 查找名称为字符串的所有符号链接文件,字符串可以用*、?和[] | ||||||||||||||
-gid n | 查找属于ID号为n的用户组的所有文件 | ||||||||||||||
-uid n | 查找属于ID号为n的用户的所有文件 | ||||||||||||||
-group 字符串 | 查找属于组名为字符串的所有文件 | ||||||||||||||
-user 字符串 | 查找属于用户名为字符串的所有文件 | ||||||||||||||
-empty | 查找大小为0的目录或者文件 | ||||||||||||||
-path 字符串 | 查找路径名匹配字符串的所有文件,字符串可以用*、?和[] | ||||||||||||||
-perm 许可权 | 查找具有指定权限的文件和目录,权限表示可以如777 | ||||||||||||||
-size n[bckw] | 查找指定文件大小的文件,n后面的字符表示单位,默认b,代表512个字节块 | ||||||||||||||
-type x | 查找类型为x的文件,x为以下字符之一
| ||||||||||||||
-xtype x | 与-type基本相同,但之查找符号链接文件 |
查询条件:以时间为条件查找
-amin n | 查找n分钟前被访问过的所有文件 |
-atime n | 查找n天前被访问过的所有文件 |
-cmin n | 查找n分钟前文件状态被修改过的所有文件 |
-ctime n | 查找n天前文件状态被修改过的所有文件 |
-mmin n | 查找n分钟前文件内容被修改过的所有文件 |
-mtime n | 查找n天前文件内容被修改过的所有文件 |
可执行的操作
-exec 命令名称 {} |
|
-ok 命令名称 {} | 与-exec 命令名称 {}类似,不同点是询问用户是否需要执行该命令。 |
-ls | 详细列出所找到的所有文件 |
-fprintf 文件名 | 将找到的文件名写入指定文件 |
在标准输出设备上显示查找的文件名 | |
-printf 格式 | 格式的写法参照C语言书 |
例:
find / –name my* -print | 从/目录开始查找以my开头的文件。print是显示出来的意思,把它当做固定加上的项目 |
find /yusa –atime 3 -print | 从/yusa目录开始往下找,找最近3天内存取过的文件 |
find /yusa –ctime 5 -print | 从/yusa目录开始往下找,找最近5天内修改过的文件 |
find /admin –user yusa –name 'j*' -print | 从/admin目录开始往下找,找属于yusa的以j开头的文件 |
find /doc /( –name 'ja*' –o –name 'ma*' /) -print | 从/doc目录开始往下找,找ja或ma开头的文件 |
find /doc –name '*.bak' –exec rm {} /; | 从/doc目录开始往下找,找bak结尾的文件并删除。 -exec 执行命令的意思 -rm 删除命令 {} 表示文件名 /; 是规定的命令结束符 删除文件是不展示的,所以不用加-print |
locate
/usr/bin目录下
寻找文件工具,比find命令搜索速度快,它需要一个资料库,这个资料库由每天的例行工作(crontab)程序来建立。
locate 文件名
例:
locate php
grep
/bin目录下
寻找某字符串内容工具
grep [-参数] [搜索模式] [文件1,文件2,……]
-n | 同时列出是出现在文件的第几行 |
-c | 计算一下该字符串出现的次数 |
-i | 比对的时候,忽略大小写的不同 |
-E | 每个模式作为一个扩展的正则运算式对待 |
-F | 每个模式作为一组固定字符串对待(以新行分隔),而不是作为正则运算式 |
-b | 在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量 |
-h | 在查找多个文件时,指示grep不要将文件名加入到输出之前 |
-l | 显示首次匹配串所在的文件名并用换行符将其隔开。当在某文件中多次出现匹配串时,不重复显示此文件名 |
-v | 只显示不包含匹配串的行 |
-x | 只显示整行严格匹配的行 |
-e expression | 指定检索的使用模式。用于防止以“-”开头的模式被解释为命令选项 |
-f expfile | 从expfile文件中获取要搜索的模式,一个模式占一行 |
- 文件列表中也可以使用特殊符号,如*等用来生成文件名列表。
- 如果搜索模式中含有空格,则可以用单引号把搜索模式括起来。
grep命令一次只能搜索一个指定模式。egrep命令检索扩展的正则表达式(包括运算式组和可选项)。fgrep命令检索固定字符串,它不识别正则表达式,是快速搜索的命令。
egrep
egrep [-参数] [查找模式] [文件1,文件2,……]
参数同grep
fgrep
fgrep [-参数] [查找模式] [文件1,文件2,……]
参数同grep
sort
对文件中各行进行排序,并将结果显示在标准输出上。
sort [-参数] 文件
-m | 若给定文件已经排序好,合并文件 |
-c | 检查给定的文件是否已经排序好,如没有,则错误提示,并以状态值1退出 |
-u | 对排序后认为相同的行只留其中一行 |
-o 输出文件 | 将排序结果输出到文件中,如果输出文件是输入文件之一,sort先将该文件的内容写入一个暂存文件,然后再排序和写输出结果 |
-d | 按字典顺序排序。比较时仅字母、数字、空格和跳位字符有意义 |
-f | 将小写字母和大小字母同等对待 |
-I | 忽略非输出字符 |
-M | 作为月份比较 JAN |
-r | 按逆序输出排序结果 |
+pos1-pos2 | 指定一个或几个栏位作为排序关键字,栏位位置从pos1开始,到pos2为止(包括pos1,不包括pos2)。 如果不指定pos2,则关键字从pos1到行尾。 栏位和字符的位置从0开始 |
-b | 在每行中寻找排序关键字时忽略前导的空白(空格和跳位字符)。 |
-t separator | 指定字符separator作为栏位分隔符号。 |
uniq
使用sort排序后,可以使用此命令将从输出文件中删除,只留下每条记录的唯一样本。
uniq [-参数] 文件
-c | 显示输出中,在每行的行首加上本行在文件中出现的次数。它可取代-u和-d参数 |
-d | 只显示重复行 |
-u | 只显示文件中的不重复行 |
-n | 前n个栏位与每个栏位前的空白一起被忽略。一个栏位是一个非空格、非跳位字符的字串,彼此由跳位字符和空格隔开(栏位从0开始编号) |
+n | 前n个字符被忽略,之前的字符被跳过(字符从0开始编号) |
-fn | 与-n相同 |
-sn | 与+n相同 |
wc
wc [-参数] 文件……
-c | 统计字节数 |
-l | 统计行数 |
-w | 统计字数 |
comm
对两个有序文件进行比较。
comm [-123] file1 file2
comm读取这两个文件,然后生成三列输出:仅在file1中出现的行,仅在file2出现的行,在两个文件中都存在的行。
-12 | 只显示在两个文件中都存在的行 |
-23 | 只显示在第一个文件中出现而在第二个文件中未出现的行 |
-123 | 什么也不显示 |
diff
比较两个文字文件,列出其不同之处。
diff [-参数] file1 file2
如果file1和file2是目录,则diff将使用该目录中的同名文件进行对比
diff /usr/yusa mine | 把目录/usr/yusa中名为mine的文件与当前目录的mine文件进行对比 |
输出形式
n1 a n3,n4
n1,n2 d n3
n1,n2 c n3,n4
n1,n2,n3,n4是行号 |
a,d,c前是file1的行号 |
a,d,c后是file2的行号 |
a代表add d代表删除 c代表修改 |
在上述形式的每一行的后面跟随受到影响的若干行,以<打头的行属于第一个文件,以>打头的行属于第二个文件。
diff能区别块和字符设备文件以及FIFO(管道文件),不会把它们与普通文件进行比较。
-b | 忽略行尾的空格,而字符串中的一个或多个空白都视为相等 |
-c | 采用上下文输出格式(提供三行上下文) |
-C n | 采用上下文输出格式(提供n行上下文) |
-e | 产生一个合法的ed脚本作为输出 |
-r | 当file1和file2是目录时,递归作用到各个文件和目录上 |