find
find命令的作用是在目录中搜索文件,它的使用权限是所有用户。
find [path][options][expression]
path指定目录路径,系统从这里开始沿着目录树向下查找文件。它是一个路径列表,相互用空格分离,如果不写path,那么默认为当前目录。
-depth:使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容。
-maxdepth
levels:表示至多查找到开始目录的第level层子目录。level是一个非负数,如果level是0的话表示仅在当前目录中查找。
-mindepth levels:表示至少查找到开始目录的第level层子目录。
-mount:不在其它文件系统(如Msdos、Vfat等)的目录和文件中查找。
-version:打印版本。
[expression]是匹配表达式,是find命令接受的表达式,find命令的所有操作都是针对表达式的。它的参数非常多,这里只介绍一些常用的参数。
—name:支持统配符*和?。
-atime n:搜索在过去n天读取过的文件。
-ctime n:搜索在过去n天修改过的文件。
-group grpoupname:搜索所有组为grpoupname的文件。
-user 用户名:搜索所有文件属主为用户名(ID或名称)的文件。
-size n:搜索文件大小是n个block的文件。
-print:输出搜索结果,并且打印。
find命令查找文件的几种方法:
(1)根据文件名查找
例如,我们想要查找一个文件名是lilo.conf的文件,可以使用如下命令:
find / -name lilo.conf
find命令后的“/”表示搜索整个硬盘。
(2)快速查找文件
根据文件名查找文件会遇到一个实际问题,就是要花费相当长的一段时间,特别是大型Linux文件系统和大容量硬盘文件放在很深的子目录中时。如果我们知道了这个文件存放在某个目录中,那么只要在这个目录中往下寻找就能节省很多时间。比如smb.conf文件,从它的文件后缀“.conf”可以判断这是一个配置文件,那么它应该在/etc目录内,此时可以使用下面命令:
find /etc -name smb.conf
这样,使用“快速查找文件”方式可以缩短时间。
(3)根据部分文件名查找方法
有时我们知道只某个文件包含有abvd这4个字,那么要查找系统中所有包含有这4个字符的文件可以输入下面命令:
find / -name
´*abvd*´
输入这个命令以后,Linux系统会将在/目录中查找所有的包含有abvd这4个字符的文件(其中*是通配符),比如abvdrmyz等符合条件的文件都能显示出来。
(4) 使用混合查找方式查找文件
find命令可以使用混合查找的方法,例如,我们想在/etc目录中查找大于500000字节,并且在24小时内修改的某个文件,则可以使用-and
(与)把两个查找参数链接起来组合成一个混合的查找方式。
find /etc -size +500000c -and -mtime +1
mv
mv命令用来为文件或目录改名,或者将文件由一个目录移入另一个目录中,它的使用权限是所有用户。该命令如同DOS命令中的ren和move的组合。
mv[options] 源文件或目录 目标文件或目录
-i:交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答“y”或“n”,这样可以避免误覆盖文件。
-f:禁止交互操作。mv操作要覆盖某个已有的目标文件时不给任何指示,指定此参数后i参数将不再起作用。
(1)将/usr/cbu中的所有文件移到当前目录(用“.”表示)中:
$ mv /usr/cbu/ * .
(2)将文件cjh.txt重命名为wjz.txt:
$ mv cjh.txt wjz.txt
ls
ls命令用于显示目录内容,类似DOS下的dir命令,它的使用权限是所有用户。
ls [options][filename]
-a, --all:不隐藏任何以“.” 字符开始的项目。
-A, --almost-all:列出除了“ . ”及 “..
”以外的任何项目。
--author:印出每个文件著作者。
-b, --escape:以八进制溢出序列表示不可打印的字符。
--block-size=大小:块以指定<大小>的字节为单位。
-B, --ignore-backups:不列出任何以 ~ 字符结束的项目。
-f:不进行排序,-aU参数生效,-lst参数失效。
-F, --classify:加上文件类型的指示符号 (*/=@| 其中一个)。
-g:like -l, but do not list owner。
-G, --no-group:inhibit display of group information。
-i, --inode:列出每个文件的inode号。
-I,
--ignore=样式:不印出任何符合Shell万用字符<样式>的项目。
-k:即--block-size=1K。
-l:使用较长格式列出信息。
-L,
--dereference:当显示符号链接的文件信息时,显示符号链接所指示的对象,而并非符号链接本身的信息。
-m:所有项目以逗号分隔,并填满整行行宽。
-n, --numeric-uid-gid:类似-l,但列出UID及GID号。
-N,
--literal:列出未经处理的项目名称,例如不特别处理控制字符。
-p, --file-type:加上文件类型的指示符号 (/=@| 其中一个)。
-Q, --quote-name:将项目名称括上双引号。
-r, --reverse:依相反次序排列。
-R, --recursive:同时列出所有子目录层。
-s, --size:以块大小为序。
ls命令是Linux系统使用频率最多的命令,它的参数也是Linux命令中最多的。使用ls命令时会有几种不同的颜色,其中蓝色表示是目录,绿色表示是可执行文件,红色表示是压缩文件,浅蓝色表示是链接文件,加粗的黑色表示符号链接,灰色表示是其它格式文件。ls最常使用的是ls-
l,
cat
cat(“concatenate”的缩写)命令用于连接并显示指定的一个和多个文件的有关信息,它的使用权限是所有用户。
cat [options] 文件1 文件2……
-n:由第一行开始对所有输出的行数编号。
-b:和-n相似,只不过对于空白行不编号。
-s:当遇到有连续两行以上的空白行时,就代换为一行的空白行。
(1)cat命令一个最简单的用处是显示文本文件的内容。例如,我们想在命令行看一下README文件的内容,可以使用命令
$ cat README
(2)有时需要将几个文件处理成一个文件,并将这种处理的结果保存到一个单独的输出文件。cat命令在其输入上接受一个或多个文件,并将它们作为一个单独的文件打印到它的输出。例如,把README和INSTALL的文件内容加上行号(空白行不加)之后,将内容附加到一个新文本文件File1
中:
$ cat README INSTALL File1
(3)cat还有一个重要的功能就是可以对行进行编号,这种功能对于程序文档的编制,以及法律和科学文档的编制很方便,打印在左边的行号使得参考文档的某一部分变得容易,这些在编程、科学研究、业务报告甚至是立法工作中都是非常重要的。
使用cat命令/etc/named.conf文件进行编号
对行进行编号功能有-b(只能对非空白行进行编号)和-n(可以对所有行进行编号)两个参数:
$ cat -b /etc/named.conf
ln
ln命令用来在文件之间创建链接,它的使用权限是所有用户。
ln [options] 源文件 [链接名]
-f:链结时先将源文件删除。
-d:允许系统管理者硬链结自己的目录。
-s:进行软链结(Symbolic Link)。
-b:将在链结时会被覆盖或删除的文件进行备份。
链接有两种,一种被称为硬链接(Hard
Link),另一种被称为符号链接(Symbolic
Link)。默认情况下,ln命令产生硬链接。
硬连接指通过索引节点来进行的连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode
Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件才会被真正删除。
与硬连接相对应,Lnux系统中还存在另一种连接,称为符号连接(Symbilc
Link),也叫软连接。软链接文件有点类似于Windows的快捷方式。它实际上是特殊文件的一种。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
上面我们介绍了Linux文件处理命令,下面介绍几个实例,大家可以动手练习一下刚才讲过的命令。
1.利用符号链接快速访问关键目录
符号链接是一个非常实用的功能。假设有一些目录或文件需要频繁使用,但由于Linux的文件和目录结构等原因,这个文件或目录在很深的子目录中。比如,Apache
Web服务器文档位于系统的/usr/local/httpd/htdocs中,并且不想每次都要从主目录进入这样一个长的路径之中(实际上,这个路径也非常不容易记忆)。
为了解决这个问题,可以在主目录中创建一个符号链接,这样在需要进入该目录时,只需进入这个链接即可。
为了能方便地进入Web服务器(/usr/local/httpd/htdocs)文档所在的目录,在主目录下可以使用以下命令:
$ ln -s /usr/local/httpd/htdocs gg
这样每次进入gg目录就可访问Web服务器的文档,以后如果不再访问Web服务器的文档时,删除gg即可,而真正的Web服务器的文档并没有删除。
2.使用dd命令将init.rd格式的root.ram内容导入内存
dd if=/dev/fd0 of=floppy.fd
dd if=root.ram of=/dev/ram0 #
3.grep命令系统调用
grep是Linux/Unix中使用最广泛的命令之一,许多Linux系统内部都可以调用它。
(1)如果要查询目录列表中的目录,方法如下:
$ ls -l | grep ´∧d´
(2)如果在一个目录中查询不包含目录的所有文件,方法如下:
$ ls -l | grep
´∧[∧d]´
(3)用find命令调用grep,如所有C源代码中的“Chinput”,方法如下:
$find /ZhXwin -name *.c -exec grep -q -s Chinput {} ;-print
PWD
cd ..
cd ../.. 退回上两层目录
cd /home/alex3531/
cd -
ls
-l
touch
在目标目录中生成空文件aquota.user或aquota.group
# touch /home/aquota.user /home/aquota.group
改变现有文件的时间标志,使用不带开关的Touch命令时,文件的最后访问时间变成当前时间。
# touch /root/f0601.tif
CP命令:
cp file1
file2
cp file*
Dir1
cp -f file1
file2
cp -i file1
file2
cp -p file1
file2
cp -r Dir1
Dir2
cp -u file1
file2
说明:从一个分区向另一个分区复制文件时,不能使用cp -p file1 file2命令。
MV命令:如果要在Linux中更名文件,则要移动文件。
mv file1
file2
mv file*
Dir1
mv -f file1
file2
mv -i file1
file2
RM命令:用于删除文件与目录
rm
file1
rm -d
Dir1
rm -i file1
rm -f file2
rm -r
*
ln
如果你和同时都在使用文件project,这个可以在主目录中生成一个连接文件。
命令格式:
假设project文件在/home/jm目录中,要生成mj的主目录中文件连接,使用下列命令:
# ln /home/jm/project /home/mj/project (硬链接)
# ln -s /home/jm/project /home/mj/project (软链接)
mkdir和rmdir命令
mkdir -p
Dir1/Dir2
mkdir -m 755 /usr/Dir3
rmdir -p
Dir1/Dir3
Linux常用命令
(1)命令规则、路径和文件
命令规则:命令动词
路径:绝对路径、相对路径
文件:命名规则
文件通配符:* 匹配多个字符
?匹配单个字符
[abc] 匹配abc中任意一个字符
[!abc] 匹配abc之外的任意一个字符
(2)文件目录操作命令
ls
ls ----list 列文件或目录
用法:ls 参数:
-a:显示所有文件,包括隐藏文件
-l:以长格式显示
-F:附加文件类别信息
-d:显示目录
-t:按修改时间先后显示
-R:显示目录及下级子目录结构
范例:
ls
–a
touch: 生成一个空文件或修改文件的时间
范例:
touch * :将当前目录下所有文件时间修改为当前系统时间
touch –d 20010602 test:将文件test的时间修改为20010602
touch test2:如果abc存在,则修改为当前系统时间,如果不存在,则生成一个为当前时间的空文件
cp – copy file
用法:cp –afpx source target
-a:尽可能保持文件的结构和属性
-p:保持原始文件日期
-f :如果目标文件已经存在,则覆盖它
-i :提示是否覆盖现有的普通目标文件
-R:包含子目录
范例:
cp ls.txt mydir1
cp –a mydir1 mydir2
cp /etc/syslog.conf
cp -a /etc/sound/
mv – move file
用法:mv –b source target
-b:给被覆盖的文件建立一个备份
范例:
rm – remove
rm –irf 文件或目录
i:交互模式
r:删除目录及以下所有内容
f:强制删除
注意:Root用户在删除文件时要特别小心、权限问题
cat
cat:输出文本文件内容(文本文件合并)
范例: cat tt.txt
more:按页显示文件
范例:more tt.txt
less:按页显示文件,可以使用翻页键
范例:less tt.txt
head:显示文件的前?行
范例:head –20 /etc/passwd
tail:显示文件的后?行
范例:tail –20
/etc/passwd
pwd
cd – change directory
用法:cd [目录]
范例:cd
..
pwd – print work directory
用法:pwd
作用:显示当前工作目录
范例:配合cd
mkdir创建和删除目录
mkdir 用法: mkdir
作用:创建目录新的目录
范例:mkdir abc
rmdir
用法: rmdir目录名
作用:删除空目录
范例:rmdir
find
find作用:查找文件或目录
用法:find 查找路径
动作 常用匹配条件
name ‘字符串’
lname ‘字符串’
user 用户名
group 组名
perm xxxx
links n
atime n
mtime n
grep功能:在文件中查找匹配的字符串
格式:grep
例子: grep ‘abc’
grep
tar
压缩与解压缩-常用压缩工具
gzip,gunzip
zip,unzip
tar
compress
bzip2
sort
sort:将文本文件排序
范例
sort passwd
sort –n test :将test按照数字大小排序
sort test1 test2 test3:将文件test1,test2,test3的内容联合排序
paste:将不同文件合并
范例:paste test1 test2 > test3
(3)信息显示命令
dmesg显示机器引导时内核显示的状态信息
file :测试文件类型
stat:显示文件访问、修改、变更时间、大小、属主和组以及许可模式等信息范例:
stat abc.txt
who
who和w使用范例
who
who -wi
w
whoami:查看登录用户自己的信息
hostname:查看主机名
uname:显示系统信息
du:报告指定的文件(目录)已使用的磁盘空间的总量
df:报告文件系统磁盘空间的使用情况
free:查看当前内存和交换空间的使用情况
(4)用户通信与网络命令
write:向另外一个用户发信息。以CTRL+D作为结束
使用举例 : $ write webmaster
wall:向所有用户广播信息。
格式:wall [message] [文件名]
$ wall Happy new year!
mesg:是否接受其它用户发来的信息 mesg
[y|n]
talk:适用于双向通信的工具 ,格式:talk 用户名
mail:字符界面下的MUA
格式:mail [选项] [用户地址]
使用:阅读邮件
发送邮件
删除邮件
保存邮件到文件
保存到
将信的内容保存邮件到文件或文件夹(w)
从文件中读取邮件
从文件夹中读取邮件
回复邮件
ftp:客户端程序,常用子命令:
lynx:字符界面的浏览器
(5) 其他命令:
su:切换登录用户
passwd:更改用户密码
help:用于查看Linux内置命令的帮助信息
man:列出指定命令的帮助手册
7、Shell的高级使用
(1)重定向:
标准输入、输出:Study、 Stout、Stderr
输出重定向:> 、>>
错误输出重定向:2> 、&>
输入重定向:< 、<<!…………!
(2)管道:将一个命令的输出传送给令一个命令,作为另一个命令的输入
使用方法:命令1|命令2|命令3……|命令n
使用举例:$ ls –Rl /etc |more
$ cat /etc/passwd | wc
$ cat /etc/passwd | grep lrj
$ ps –aux |tail +2 |more
(3)命令替换
`cmd`或$(cmd)
例如:$wall
$cd `pwd`
(4)命令执行顺序:命令间隔符说明
;
&&
||
几个命令间隔符同时出现在同一个命令行上时,其优先级为:
;的优先级最低
命令的多种执行顺序举例:
$ date ;pwd
顺序执行date和pwd命令。
$ mail jjh < message && rm message
若文件message被mail发送出去,就把它删除,否则不删除。
$ write jjh < report || mail jjh < report
若对方拒绝对话,就将信息发送到他的信箱里。
$ date ; cat file |wc
只有cat命令的信息通过管道送给wc命令。
$ (date; cat file) |wc
(5)文件系统管理的常用命令
df:
du:
ln:
find :查找文件
dd:
几个参数