命令
1.
file
作用:
file 通过探测文件内容来判断文件类型。
使用file命令可以知道某个文件究竟是二进制(ELF格式)的可执行文件, 还是Shell scrīpt文件,或者是其它的什么格式。file能识别的文件类型有目录、Shell脚本、英文文本、二进制可执行文件、C语言源文件、文本文件、DOS的可执行文件。 需要说明的是,file命令不能探测包括图形、音频、视频等多媒体文件类型。
权限:
所有用户
格式:
file [options] 文件名
options:
-v 在标准输出后显示版本信息,并且退出
-z 探测压缩过的文件类型
-L 允许符合连接
-f name 对name文件中的文件名列表进行file操作
举例:
mxc@mxc-laptop:~$ file -v test.c
file-4.26
magic file from /etc/magic:/usr/share/file/magic
mxc@mxc-laptop:~$ file -z poppler-data-0.1.tar.gz
poppler-data-0.1.tar.gz: POSIX tar archive (GNU) (gzip compressed data, from Unix, last modified: Fri Sep 22 09:34:46 2006)
mxc@mxc-laptop:~$ file -f test.c
/home/mxc/test.c: ASCII text
/home/mxc/wget-log: UTF-8 Unicode text, with CR, LF line terminators
2
mkdir
作用:
建立名称为dirname的子目录
权限:
所有用户
格式:
mkdir [options] 目录名
options:
-m --mode=模式:设定权限<模式>;,与chmod类似,而不是 rwxrwxrwx 减 umask
-p --parents:需要时创建上层目录;如果目录早已存在,则不当作错误
-v --verbose:每次创建新目录都显示信息
--version:显示版本信息后离开
--help:显示帮助信息后离开
举例:
mxc@mxc-laptop:~$ mkdir --version -p -v -m 777 test
mkdir (GNU coreutils) 6.10
Copyright (C) 2008 Free Software Foundation, Inc.
GPLv3+协议: GNU GPL 第3版或更新版本 <http://gnu.org/licenses/gpl.html>
这是自由软件:您可以自由修改或再发布。
在法律许可的范围内没有担保。
由 David MacKenzie 编写。
3
chmod
作用:
修改文件权限
权限:
所有用户
格式:
:chmod [选项]... 模式[,模式]... 文件...
或:chmod [选项]... 八进制模式 文件...
或:chmod [选项]... --reference=参考文件 文件...
将每个[文件]的模式更改为[模式]。
options:
-c, --changes 类似 --verbose,但只在有更改时才显示结果
--no-preserve-root 不会对根目录给予特别对待 (默认)
--preserve-root 对根目录进行递归操作时会失败
-f, --silent, --quiet 去除大部份的错误信息
-v, --verbose 处理任何文件都会显示信息
--reference=参考文件 使用[参考文件]的模式,而非自行指定权限模式
-R, --recursive 以递归方式更改所有的文件及子目录
--help 显示此帮助信息并离开
--version 显示版本信息并离开
举例:
查看文件权限的语句:
mxc@mxc-laptop:~$ ls -l test.c
-rw-r--r-- 1 mxc mxc 36 2009-09-27 22:28 test.c
一共有10位数
其中: 最前面那个 - 代表的是类型
中间那三个 rw- 代表的是所有者(user)
然后那三个 rw- 代表的是群组(group)
最后那三个 r-- 代表的是其他人(other)
然后我再解释一下后面那9位数:
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
- 表示相应的权限还没有被授予
现在该说说修改文件权限了
在终端输入:
mxc@mxc-laptop:~$ chmod -v -R -c o+w test.c
“test.c” 的权限模式已更改为 0646 (rw-r--rw-)
表示给其他人授予写test.c 这个文件的权限
mxc@mxc-laptop:~$ chmod -v -R -c go-rw test.c
“test.c” 的权限模式已更改为 0600 (rw-------)
表示删除test.c 中组群和其他人的读和写的权限
其中:
u 代表所有者(user)
g 代表所有者所在的组群(group)
o 代表其他人,但不是u和g (other)
a 代表全部的人,也就是包括u,g和o
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
其中:rwx也可以用数字来代替
r ------------4
w -----------2
x ------------1
- ------------0
行动:
+ 表示添加权限
- 表示删除权限
= 表示使之成为唯一的权限
当大家都明白了上面的东西之后,那么我们常见的以下的一些权限就很容易都明白了:
mxc@mxc-laptop:~$ chmod -v -R -c 777 test.c
“test.c” 的权限模式已更改为 0777 (rwxrwxrwx)
-rw------- (600) 只有所有者才有读和写的权限
-rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
-rwx------ (700) 只有所有者才有读,写,执行的权限
-rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
-rwx--x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
-rw-rw-rw- (666) 每个人都有读写的权限
-rwxrwxrwx (777) 每个人都有读写和执行的权限
4
grep
作用:
查找指定文件里符合条件的字符串,并将这些行标准输出。
若不指定任何文件名称,或是所给予的文件名为“-”,则grep指令会从标准输入设备读取数据。
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包 括grep、 egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是 fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux 使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。
grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。
grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。
权限:
所有用户
格式:
grep [options] [pattern] 文件名或目录名
options:
-?
同时显示匹配行上下的?行,如:grep -2 pattern filename同时显示匹配行的上下2行。
-b,--byte-offset
打印匹配行前面打印该行所在的块号码。
-c,--count
只打印匹配的行数,不显示匹配的内容。
-f File,--file=File
从文件中提取模板。空文件中包含0个模板,所以什么都不匹配。
-h,--no-filename
当搜索多个文件时,不显示匹配文件名前缀。
-i,--ignore-case
忽略大小写差别。
-q,--quiet
取消显示,只返回退出状态。0则表示找到了匹配的行。
-l,--files-with-matches
打印匹配模板的文件清单。
-L,--files-without-match
打印不匹配模板的文件清单。
-n,--line-number
在匹配的行前面打印行号。
-s,--silent
不显示关于不存在或者无法读取文件的错误信息。
-v,--revert-match
反检索,只显示不匹配的行。
-w,--word-regexp
如果被/<和/>引用,就把表达式做为一个单词搜索。
-V,--version
显示软件版本信息。
--version:显示版本信息后离开
--help:显示帮助信息后离开
pattern:
grep正则表达式元字符集(基本集)
/
转义字符,乎略正则表达式中某些字符原有的含义。
^
匹配行的开始 ,如:'^grep'匹配所有以grep开头的行。
$
匹配行的结束 ,如:'grep$'匹配所有以grep结尾的行。
/<
匹配单词的开始,如:‘/<grep'匹配包含以grep开始的单词的行。
/>
匹配单词的结束,如:'grep/>'匹配包含以grep结尾的单词的行。
.
匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
*
匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。'grep*'匹配gre后面紧跟一个或者多个p的行。
.*一起用代表任意字符。
[]
匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^]
匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
/(../)
标记匹配字符,如'/(love/)',love被标记为1。
x/{m/}
重复字符x,m次,如:'0/{5/}'匹配包含5个o的行。
x/{m,/}
重复字符x,至少m次,如:'o/{5,/}'匹配至少有5个o的行。
x/{m,n/}
重复字符x,至少m次,不多于n次,如:'o/{5,10/}'匹配5--10个o的行。
/w
匹配文字和数字字符,也就是[A-Za-z0-9],如:'G/w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
/W
/w的反置形式,匹配一个或多个非单词字符,如点号句号等。
/b
单词锁定符,如: '/bgrep/b'只匹配grep。
用于egrep和 grep -E的元字符扩展集
+
匹配一个或多个先前的字符。如:'[a-z]+able',匹配一个或多个小写字母后跟able的串,如loveable,enable,disable等。
?
匹配零个或多个先前的字符。如:'gr?p'匹配gr后跟一个或没有字符,然后是p的行。
a|b|c
匹配a或b或c。如:grep|sed匹配grep或sed
()
分组符号,如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。
x{m},x{m,},x{m,n}
作用同x/{m/},x/{m,/},x/{m,n/}
POSIX字符类
为了在不同国家的字符编码中保持一至,POSIX(The Portable Operating System Interface)增加了特殊的字符类,如[:alnum:]是A-Za-z0-9的另一个写法。要把它们放到[]号内才能成为正则表达式,如[A- Za-z0-9]或[[: alnum:]]。在linux下的grep除fgrep外,都支持POSIX的字符类。
[:alnum:]
文字数字字符
[:alpha:]
文字字符
[:digit:]
数字字符
[:graph:]
非空字符(非空格、控制字符)
[:lower:]
小写字符
[:cntrl:]
控制字符
[:print:]
非空字符(包括空格)
[:punct:]
标点符号
[:space:]
所有空白字符(新行,空格,制表符)
[:upper:]
大写字符
[:xdigit:]
十六进制数字(0-9,a-f,A-F)
举例:
要用好grep这个工具,其实就是要写好正则表达式,所以这里不对grep的所有功能进行实例讲解,只列几个例子,讲解一个正则表达式的写法。
$ ls -l | grep '^a'
通过管道过滤ls -l输出的内容,只显示以a开头的行。
$ grep 'test' d*
显示所有以d开头的文件中包含test的行。
$ grep 'test' aa bb cc
显示在aa,bb,cc文件中匹配test的行。
$ grep '[a-z]/{5/}' aa
显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
$ grep 'w/(es/)t.*/1' aa
如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(/1),找到就显示该行。如果用egrep或grep -E,就不用"/"号进行转义,直接写成'w(es)t.*/1'就可以了。
5
dd
作用:
读取、转换并输出数据。
dd可从标准输入或文件读取数据,依指定的格式来转换数据,再输出到文件,设备或标准输出。
dd的复制是完全基于二进制的物理复制,从硬盘的第一个字节道最后一个字节,完全一样的克隆了一遍,所以是最保险、最准确的。而且由于dd是物理复制,所 以只要是硬盘上存在的分区,无论Linux是否认识,甚至是Linux认不出是什么的一段数据,都可以原原本本的复制,例如FreeBSD分区、其他操作 系统的分区,甚至加密扇区什么的,就连逻辑坏块也原样复制!因此除非出现物理问题,不然dd是绝对不会出错的!
权限:
所有用户
格式:
dd [options]
options:
指定数字的地方若以下列字符结尾乘以相应的数字:
b=512, c=1, k=1024, w=2, xm=number m
if=file
输入文件名,缺省为标准输入。
of=file
输出文件名,缺省为标准输出。
ibs=bytes
一次读入 bytes 个字节(即一个块大小为 bytes 个字节)。
obs=bytes
一次写 bytes 个字节(即一个块大小为 bytes 个字节)。
bs=bytes
同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。
cbs=bytes
一次转换 bytes 个字节,即转换缓冲区大小。
skip=blocks
从输入文件开头跳过 blocks 个块后再开始复制。
seek=blocks
从输出文件开头跳过 blocks 个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)
count=blocks
仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数。
conv=conversion[,conversion...]
用指定的参数转换文件。
转换参数:
ascii 转换 EBCDIC 为 ASCII。
ebcdic 转换 ASCII 为 EBCDIC。
ibm 转换 ASCII 为 alternate EBCDIC.
block 把每一行转换为长度为 cbs 的记录,不足部分用空格填充,过长则截断。
unblock 使每一行的长度都为 cbs ,不足部分用空格填充。
lcase 把大写字符转换为小写字符。
ucase 把小写字符转换为大写字符。
swab 交换输入的每对字节。 Unlike the Unix dd, this works when an odd number of bytes are read. If the input file contains an odd number of bytes, the last byte is simply copied (since there is nothing to swap it with).
noerror 出错时不停止。
notrunc 不截短输出文件。
sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
--version:显示版本信息后离开
--help:显示帮助信息后离开
举例:
把第一个硬盘的前 512 个字节存为一个文件:
dd if=/dev/hda of=disk.mbr bs=512 count=1
要把一张软盘的内容拷贝到另一张软盘上,利用/tmp作为临时存储区。把源盘插入驱动器中,输入下述命令:
$ dd if =/dev/fd0 of = /tmp/tmpfile
拷贝完成后,将源盘从驱动器中取出,把目标盘插入,输入命令:
$ dd if = /tmp/tmpfile of =/dev/fd0
软盘拷贝完成后,应该将临时文件删除:
$ rm /tmp/tmpfile
你可
以拿这个命令来方便的拷贝光碟(注意,你的光碟是标准的 iso9660格式才可以这么做唷!)
dd if=/dev/cdrom of=cdrom.iso
其中 if 后面以及 of 后面的内容依你的需求调整。
然后给系统这个指令就可以烧了:
cdrecord -v cdrom.iso
把net.i这个文件写入软盘中,并设定读/写缓冲区的数目。(注意:软盘中的内容会被完全覆盖掉)
$ dd if = net.i of = /dev/fd0 bs = 16384
将文件sfile拷贝到文件 dfile中。
$ dd if=sfile of=dfile
dd命令常常用来制作Linux启动盘。先找一个可引导内核,令它的根设备指向正确的根分区,然后使用dd命令
将其写入软盘:
$ rdev vmlinuz /dev/hda
$dd if=vmlinuz of=/dev/fd0
上面代码说明,使用rdev命令将可引导内核vmlinuz中的根设备指向/dev/hda,请把“hda”换成自己的根分区,接下来用dd命令将该内核写入软盘。
7235




被折叠的 条评论
为什么被折叠?



