ls指令
参数 | 含义 |
---|---|
无 | 直接列举所有可见文件,不包含隐藏 |
-a | 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出) |
-l | 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出 |
-r | 将文件以相反次序显示(原定依英文字母次序) |
-t | 将文件依建立时间之先后次序列出 |
-A | 同 -a ,但不列出 “.” (目前目录) 及 “…” (父目录) |
-F | 在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/” |
-R | 若目录下有文件,则以下之文件亦皆依序列出 |
文件显示命令
file
file | 查看文件类型 |
---|
cat
参数 | 含义 |
---|---|
无 | 默认只显示文本。 |
-n | 由 1 开始对所有输出的行数编号。 |
-b | 和 -n 相似,只不过对于空白行不编号。 |
-s | 当遇到有连续两行以上的空白行,就代换为一行的空白行。 |
-E | 在每行结束处显示 $。 |
注:
- cat主要用于查看短文件
- cat filename 多⽤于显⽰短⽂件,当⽂件过长出现滚屏时,⽤ctrl+s暂停滚屏,⽽ctrl+q继续,完全终⽌显⽰ Del。
- cat连接⽂件
$ cat file1 file2 > file3
$ cat file3
more
参数 | 含义 |
---|---|
无 | 正常显示文件 |
-num | 一次显示的行数 |
-d | 提示使用者,在画面下方显示 [Press space to continue, ‘q’ to quit.] ,如果使用者按错键,则会显示 [Press ‘h’ for instructions.] 而不是 ‘哔’ 声 |
-f | 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上) |
-p | 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容 |
-c | 跟 -p 相似,不同的是先显示内容再清除其他旧资料 |
-s | 当遇到有连续两行以上的空白行,就代换为一行的空白行 |
+num | 从第 num 行开始显示 |
注:
- more主要用于查看长文件
- Enter 向下n行,需要定义。默认为1行
- Ctrl+F 向下滚动一屏,空格键 向下滚动一屏
- Ctrl+B 返回上一屏
- = 输出当前行的行号
- f 输出文件名和当前行的行号
- V 调用vi编辑器
- !命令 调用Shell,并执行命令
- q 退出more
- pg用法与more相似。
- more查看多文件
$ more file1 file2 file3
less
参数 | 含义 |
---|---|
无 | 正常显示文件 |
-b | <缓冲区大小> 设置缓冲区的大小 |
-e | 当文件显示结束后,自动离开 |
-f | 强迫打开特殊文件,例如外围设备代号、目录和二进制文件 |
-g | 只标志最后搜索的关键词 |
-i | 忽略搜索时的大小写 |
-m | 显示类似more命令的百分比 |
-N | 显示每行的行号 |
-o<文件名> | 将less 输出的内容在指定文件中保存起来 |
-Q | 不使用警告音 |
-s | 显示连续空行为一行 |
-S | 行过长时间将超出部分舍弃 |
-x<数字> | 将"tab"键显示为规定的数字空格 |
注;
- less主要用于查看长文件
- /字符串:向下搜索"字符串"的功能
- ?字符串:向上搜索"字符串"的功能
- n:重复前一个搜索(与 / 或 ? 有关)
- N:反向重复前一个搜索(与 / 或 ? 有关)
- b 向上翻一页
- == d 向后翻半页==
- h 显示帮助界面
- Q 退出less 命令
- u 向前滚动半页
- y 向前滚动一行
- 空格键 滚动一页
- 回车键 滚动一行
- [pagedown]: 向下翻动一页
- [pageup]: 向上翻动一页
- less为more的进阶版
head和tail
查看头尾 | 含义 |
---|---|
head | head filename 查看⽂件的头10行 |
tail | tail filename查看⽂件的最后10行 |
注:
- 可加数字选项,使其按指定⾏数显⽰
$ head -20 file6.txt
grep
参数 | 含义 |
---|---|
无 | 区分大小写 |
-a | 要忽略二进制的数据 |
-A<显示行数> | 除了显示符合范本样式的那一列之外,并显示该行之后的内容。 |
-b | 在显示符合样式的那一行之前,标示出该行第一个字符的编号。 |
-B<显示行数> | 除了显示符合样式的那一行之外,并显示该行之前的内容。 |
-c | 计算符合样式的列数。 |
-C<显示行数> | 除了显示符合样式的那一行之外,并显示该行之前后的内容。 |
-d <动作> | 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作 |
-e<范本样式> | 指定字符串做为查找文件内容的样式 |
-E | 将样式为延伸的正则表达式来使用。 |
-f<规则文件> | 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。 |
-F | 将样式视为固定字符串的列表。 |
-G | 将样式视为普通的表示法来使用。 |
-h | 在显示符合样式的那一行之前,不标示该行所属的文件名称。 |
-H | 在显示符合样式的那一行之前,表示该行所属的文件名称。 |
-i | 忽略字符大小写的差别。 |
-l | 列出文件内容符合指定的样式的文件名称。 |
-L | 列出文件内容不符合指定的样式的文件名称。 |
-n | 在显示符合样式的那一行之前,标示出该行的列数编号。 |
-o | 只显示匹配PATTERN 部分 |
-q | 不显示任何信息 |
-r | 此参数的效果和指定"-d recurse"参数相同。 |
-s | 不显示错误信息 |
-v | 显示不包含匹配文本的所有行。 |
-w | 只显示全字符合的列。 |
-x | 只显示全列符合的列。 |
注:
- grep -E == egrep
- 主要结合正则表达式来使用
eg:找到abc连续出现至少两次的字符串
$ grep -n ‘\(abc\)\{2,\}’ reg.txt
sed
是一个文本编辑器,可以对来自文件、以及标准输入的文本进行编辑。
语法:
$ sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数说明
参数 | 含义 |
---|---|
-e<script>或–expression=<script> | 以选项中指定的script来处理输入的文本文件。 |
-f<script文件>或–file=<script文件> | 以选项中指定的script文件来处理输入的文本文件。 |
-h或–help | 显示帮助。 |
-n或–quiet或–silent | 仅显示script处理后的结果。 |
-V或–version | 显示版本信息 |
动作说明
动作 | 含义 |
---|---|
a | 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行) |
c | 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行 |
s | 取代,可以直接进行取代的工作!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g |
d | 删除,因为是删除,所以 d 后面通常不接任何 |
i | 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行) |
p | 打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行 |
例如:
(1):在testfile文件的第四行后添加一行,并将结果输出到标准输出,在命令行提示符下输入如下命令:
$ sed -e 4a\newLine testfile
(2):将a.txt中的所有car替换为cars
$ sed 's/car/cars/' a.txt
sort
语法
$ sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
参数 | 含义 |
---|---|
无 | 将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出 |
-b | 忽略每行前面开始出的空格字符。 |
-c | 检查文件是否已经按照顺序排序 |
-d | 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。 |
-f | 排序时,将小写字母视为大写字母。 |
-i | 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。 |
-m | 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。 |
-M | 将前面3个字母依照月份的缩写进行排序。 |
-n | 依照数值的大小排序。 |
-u | 意味着是唯一的(unique),输出的结果是去完重了的。 |
-o<输出文件> | 将排序后的结果存入指定的文件。 |
-r | 以相反的顺序来排序。 |
-t<分隔字符> | 指定排序时所用的栏位分隔字符。 |
+<起始栏位>-<结束栏位> | 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。 |
–help | 显示帮助 |
–version | 显示版本信息 |
eg1:
将排序后的输出重定向到⼀个⽂件中,⽽不显⽰在屏幕上,⽤-o参数。
$ sort names >names1
或
$ sort -o names1 names
eg2:
⽤sort将两个⽂件按顺序合并
$ sort filename1 filename2 > filename3
eg3:
$ cat birthday
charles FEB
bridget DEC
sarah JAN
$ sort -M +1 birthday
注:
- +1标志将告诉sort根据第⼆个字段排序。
- 选项+pos1 [-pos2] 排序关键字由pos1开始⾄pos2结束,省略pos2⾄⾏尾结束。pos1和pos2的格式mm.nn(第mm+1字段的第nn+1字符,省略nn相当于nn为0)
eg4:选项-k keydef,keydef可以定义⼀个以上的排序关键字段,每⼀个的形式为:start [,end] (sart和end的格式为m.n,m和n从1开始编号,省略n相当于n为1)
$ sort -k 2 , 2 ff
或
$ sort +1 -2 ff
以第2个字段为关键字。
find
语法:
$ find path -option [ -print ] [ -exec -ok command ] {} \;
参数 | 说明 |
---|---|
-mount | 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件 |
-amin n | 在过去 n 分钟内被读取过 |
-anewer file | 比文件 file 更晚被读取过的文件 |
-atime n | 在过去n天内被读取过的文件 |
-cmin n | 在过去 n 分钟内被修改过 |
-cnewer file | 比文件 file 更新的文件 |
-ctime n | 在过去n天内被修改过的文件 |
-empty | 空的文件 |
-ipath p, -path p | 路径名称符合 p 的文件,ipath 会忽略大小写 |
-name name, -iname name | 文件名称符合 name 的文件。iname 会忽略大小写 |
-size n : | 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组 |
-type x | 文件类型是 x 的文件(x为:d: 目录 c: 字型装置文件 b: 区块装置文件 p: 具名贮列 f: 一般文件 l: 符号连结 s: socket) |
-pid n | process id 是 n 的文件 |
-exec cmd {} | 对查找出来的⽂件执⾏cmd命令,{}表⽰找到的⽂件,命令要以“\;”结束 |
-and | 选择条件与 |
-or | 选择条件或 |
可以用(expr.)将运算式分割,括号中作为⼀个整体判断,并且使用运算:
- exp1 -and exp2
- ! exp
- -not exp
- exp1 -or exp2
- exp1, exp2
eg1:(expr.)举例
$ find /home \(-name core -or -name a.out\) -atime +3 -exec rm {} \;
eg2:将目前目录及其子目录下所有延伸档名是 c 的文件列出来。
$ find . -name "*.c"
eg3:将目前目录其其下子目录中所有一般文件列出
$ find . -type f
eg4:将目前目录及其子目录下所有最近 20 天内更新过的文件列出
$ find . -ctime -20
eg5:查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们
$ find /var/log -type f -mtime +7 -ok rm {} \;
eg6:查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件
$ find . -type f -perm 644 -exec ls -l {} \;
eg7:为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径
$ find / -type f -size 0 -exec ls -l {} \;
文件内容比较
comm
comm命令比较两个已排过序的文件。这项指令会一列列地比较两个已排序文件的差异,并将其结果显示出来。
参数 | 含义 |
---|---|
无 | 把结果分成 3 列显示:第 1 列仅是在第 1 个文件中出现过的列,第 2 列是仅在第 2 个文件中出现过的列,第 3 列则是在第 1 与第 2 个文件里都出现过的列。若给予的文件名称为 - ,则 comm 指令会从标准输入设备读取数据。 |
-1 | 不显示只在第 1 个文件里出现过的列 |
-2 | 不显示只在第 2 个文件里出现过的列。 |
-3 | 不显示只在第 1 和第 2 个文件里出现过的列。 |
diff
diff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录
参数 | 含义 |
---|---|
==-<行数> == | 指定要显示多少行的文本。此参数必须与-c或-u参数一并使用 |
-a | diff预设只会逐行比较文本文件。 |
-b | 不检查空格字符的不同。 |
-B | 不检查空白行。 |
-c | 显示全部内文,并标出不同之处。 |
-d | 使用不同的演算法,以较小的单位来做比较。 |
-e | 此参数的输出格式可用于ed的script文件 |
-f | 输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。 |
-l<字符或字符串> | 两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。 |
-i | 不检查大小写的不同。 |
-p | 比较的文件为C语言的程序码文件时,显示差异所在的函数名称。 |
-q | 仅显示有无差异,不显示详细的信息。 |
-r | 比较子目录中的文件。 |
-s | 若没有发现任何差异,仍然显示信息。 |
-u | 以合并的方式来显示文件内容的不同。 |
-w | 忽略全部的空格字符。 |
-y | 以并列的方式显示文件的异同之处。 |
cmp
cmp命令用于比较两个文件是否有差异。
参数 | 含义 |
---|---|
无 | 相互比较的两个文件完全一样时,则该指令不会显示任何信息。若发现有所差异,预设会标示出第一个不同之处的字符和列数编号。若不指定任何文件名称或是所给予的文件名为"-",则cmp指令会从标准输入设备读取数据。 |
-C | 除了标明差异处的十进制字码之外,一并显示该字符所对应字符。 |
-i<字符数目> | 指定一个数目。 |
-I | 标示出所有不一样的地方。 |
-s | 不显示错误信息。 |
⽂件的复制删除和移动
cp
将⼀个或多个⽂件拷贝到⽬标⽬录;
- 当复制⽂件时,你就⾃动成为新⽂件的属主
- 只有具有⽂件读权限 的⽤户才可以将⽂件复制,并放置于任何该⽤户有写权限的⽬录中
- 如果你只想复制⽂件但不改变其所有权,就可以使⽤copy -p命令
参数 | 含义 |
---|---|
-a | 此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。 |
-d | 复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式 |
-f | 覆盖已经存在的目标文件而不给出提示。 |
-i | 与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖 |
-p | 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。 |
-r | 若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。 |
-l | 不复制文件,只是生成链接文件。 |
mv
mv 命令用来为文件或目录改名、或将文件或目录移入其它位置。
参数 | 含义 |
---|---|
-i | 若指定目录已有同名文件,则先询问是否覆盖旧文件 |
-f | 在 mv 操作要覆盖某已有的目标文件时不给任何指示 |
命令格式 | 运行结果 |
---|---|
mv 文件名 文件名 | 将源文件名改为目标文件名 |
mv 文件名 目录名 | 将文件移动到目标目录 |
mv 目录名 目录名 | 目标目录已存在,将源目录移动到目标目录;目标目录不存在则改名 |
mv 目录名 文件名 | 出错 |
rm
rm命令用于删除一个文件或者目录。
参数 | 含义 |
---|---|
-i | 删除前逐一询问确认。 |
-f | 即使原档案属性设为唯读,亦直接删除,无需逐一确认 |
-r | 将目录及以下之档案亦逐一删除。 |