Chinaunix首页 | 论坛 | 博客
  • 博客访问: 73847
  • 博文数量: 53
  • 博客积分: 3015
  • 博客等级: 中校
  • 技术积分: 560
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-26 21:53
文章分类
文章存档

2011年(1)

2009年(52)

我的朋友
最近访客

分类: LINUX

2009-08-31 22:46:43

1. ls
参数用法:-l 列出当前目录下所有文件和子目录中的文件。
   -c 以分格的形式显示文件。
   -a 列出所有文件,包括隐藏文件。
   注:第一字段记录了文件的类型。
  -  普通文件
  b  块设备文件
  c  字符设备文件
  d  目录文件
  l  符号链接文件
  p  命名管道
-------------------------------------------------------------------------------- 
2. cd
用法:"~"   表示为 home directory 的意思.
      "."   则是表示目前所在的目录.
      ".."  则表示目前目录位置的上一层目录.
      "-"   返回进入当前目录前所在目录.
--------------------------------------------------------------------------------
3.mkdir
参数用法:-p 创建所有不存在的目录.
mkdir -p /home/test/test_1
--------------------------------------------------------------------------------
4.pwd
查看当前所在目录(以绝对路径方式显示)
--------------------------------------------------------------------------------
5.rmdir
可以删除一个空目录.如果还有其他文件和子目录存在,只能使用rm -r命令强制删除.
--------------------------------------------------------------------------------
6.mv
  说明:将一个档案移至另一档案(将文档改名),或将数个档案移至另一目录。
  参数:-i 若目的地已有同名档案,则先询问是否覆盖旧档。
--------------------------------------------------------------------------------
7.find
find的语法格式是
find [path] [options] [action]
其中,path就是查找路径,options包含很多参数,用来限定符合特定条件的文件,action是所做的操作.
首先说options,常用的有
1.-name “xxxx” 文件名中包含特定字符的,可以包含正则表达式
2.-type d/f/c/.. 指定文件类型,f–普通文件,d—目录,c—块设备,还有其他的,可以查man
3.-mtime -n/+n n是天数,-n是指n天以内,+n是n天之前,mtime是最后修改时间,类似还有ctime,atime
4.-user xxx 根据属主查询
5.-group xxx 根据属组查询
6.-perm xxx 根据文件权限查询,例如777,644
7.-size xxx 根据文件大小查询
8.-nouser -nogroup 可以查询属主或属组不在/etc/passwd /etc/group中的文件
以上option可以组合使用如果仅是查找,也没什么太大意思,
find的强大之处在于可以对每个找到的文件做任何操作,这就要用到action
常用action有三个 -print -exec -ok
-print就是简单的打印出文件名
-exec和-ok可以跟任意命令,区别在于-ok执行时每步都要求确认。
调用的格式为 -exec [command] {} ;
一定要注意,和{}之间是有一个空格的。
例如,删除所有名字包含faint的文件:
find / -name “faint” -exec rm -f {} ;
此外,find命令还可以结合xargs来执行类似-exec的动作。
例如上面的命令可以变成这样
find / -name “faint” | xargs rm -f
################
xargs
用法:

xargs - build and execute command lines from standard input

在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。

find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。

在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;

而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。

来看看xargs命令是如何同find命令一起使用的,并给出一些例子。

下面的例子查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件

#find . -type f -print | xargs file
./.kde/Autostart/Autorun.desktop: UTF-8 Unicode English text
./.kde/Autostart/.directory:      ISO-8859 text\
......

在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到/tmp/core.log 文件中:

$ find / -name "core" -print | xargs echo "" >/tmp/core.log

上面这个执行太慢,我改成在当前目录下查找

#find . -name "file*" -print | xargs echo "" > /temp/core.log
# cat /temp/core.log
./file6

在当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限:

# ls -l
drwxrwxrwx    2 sam      adm          4096 10月 30 20:14 file6
-rwxrwxrwx    2 sam      adm             0 10月 31 01:01 http3.conf
-rwxrwxrwx    2 sam      adm             0 10月 31 01:01 httpd.conf

# find . -perm -7 -print | xargs chmod o-w
# ls -l
drwxrwxr-x    2 sam      adm          4096 10月 30 20:14 file6
-rwxrwxr-x    2 sam      adm             0 10月 31 01:01 http3.conf
-rwxrwxr-x    2 sam      adm             0 10月 31 01:01 httpd.conf

用grep命令在所有的普通文件中搜索hostname这个词:

# find . -type f -print | xargs grep "hostname"
./httpd1.conf:#     different IP addresses or hostnames and have them handled by the
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames
on your

用grep命令在当前目录下的所有普通文件中搜索hostnames这个词:

# find . -name \* -type f -print | xargs grep "hostnames"
./httpd1.conf:#     different IP addresses or hostnames and have them handled by the
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames
on your

注意,在上面的例子中, \用来取消find命令中的*在shell中的特殊含义。

find命令配合使用exec和xargs可以使用户对所匹配到的文件执行几乎所有的命令。

###########

-------------------------------------------------------------------------------
8.cp
语法: cp [选项] 源文件或目录 目标文件或目录
说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。
该命令的各选项含义如下:
- a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合。
- d 拷贝时保留链接。
- f 删除已经存在的目标文件而不提示。
- i 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。
- p 此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。
- r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。
- l 不作拷贝,只是链接文件。
  需要说明的是,为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名已存在,用cp命令拷贝文件后,这个文件就会被新源文件覆盖,因此,建议用户在使用cp命令拷贝文件时,最好使用i选项。
- o 通过cp命令复制文件时,如果没有制定-o选项,那么进行复制操作的时候会自动生成新文件的所有者.
---------------------------------------------------------------------------------
9.rm
  参数:
  -i 删除前逐一询问确认。
  -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
  -r 将目录及以下之档案亦逐一删除。
--------------------------------------------------------------------------------
10.cmp.diff
cmp named.conf inittab
named.conf inittab differ:char1,line1
两个文件从第一行,第一个字母就不同.
diff access.conf srm.conf
2c2
....
...
代表第一个文件第二行和第二个文件的第二行出现不同..
--------------------------------------------------------------------------------
11.cat
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting
-------------------------------------------------------------------------------
12.wc
 -c或--bytes或--chars   只显示Bytes数。
  -l或--lines   只显示列数。
  -w或--words   只显示字数。
-------------------------------------------------------------------------------
13.sort
默认情况下sort按照字母顺序排列文本.
-n  按照数字排序
-r 反向排序
-u 将重复的行去掉
-------------------------------------------------------------------------------
14.grep
在正文中查找命令
1、参数:
-I :忽略大小写
-c :打印匹配的行数
-l :从多个文件中查找包含匹配项
-v :查找不包含匹配项的行
-n:打印包含匹配项的行和行标

2、RE(正则表达式)
\ 忽略正则表达式中特殊字符的原有含义
^ 匹配正则表达式的开始行
$ 匹配正则表达式的结束行
\< 从匹配正则表达式的行开始
\>; 到匹配正则表达式的行结束
[ ] 单个字符;如[A] 即A符合要求
[ - ] 范围 ;如[A-Z]即A,B,C一直到Z都符合要求
. 所有的单个字符
* 所有字符,长度可以为0
 
3、举例
# ps -ef | grep in.telnetd
root 19955 181 0 13:43:53 ? 0:00 in.telnetd

# more size.txt 查看size文件的内容
b124230
b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
b103303
a013386
b044525
m8987131
B081016
M45678
B103303
BADc2345

# more size.txt | grep '[a-b]' 范围 ;如[A-Z]即A,B,C一直到Z都符合要求
b124230
b034325
a081016
a022021
a061048
b103303
a013386
b044525
# more size.txt | grep '[a-b]'*
b124230
b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
b103303
a013386
b044525
m8987131
B081016
M45678
B103303
BADc2345

# more size.txt | grep '' 单个字符;如[A] 即A符合要求
b124230
b034325
b103303
b044525
# more size.txt | grep '[bB]'
b124230
b034325
b103303
b044525
B081016
B103303
BADc2345

# grep 'root' /etc/group
root::0:root
bin::2:root,bin,daemon
sys::3:root,bin,sys,adm
adm::4:root,adm,daemon
uucp::5:root,uucp
mail::6:root
tty::7:root,tty,adm
lp::8:root,lp,adm
nuucp::9:root,nuucp
daemon::12:root,daemon

# grep '^root' /etc/group 匹配正则表达式的开始行
root::0:root


# grep 'uucp' /etc/group
uucp::5:root,uucp
nuucp::9:root,nuucp

# grep '\uucp::5:root,uucp


# grep 'root$' /etc/group 匹配正则表达式的结束行
root::0:root
mail::6:root


# more size.txt | grep -i 'b1..*3' -i :忽略大小写

b124230
b103303
B103303

# more size.txt | grep -iv 'b1..*3' -v :查找不包含匹配项的行

b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
a013386
b044525
m8987131
B081016
M45678
BADc2345

# more size.txt | grep -in 'b1..*3'
1:b124230
9:b103303
15:B103303

# grep '$' /etc/init.d/nfs.server | wc -l
128
# grep '\$' /etc/init.d/nfs.server | wc –l 忽略正则表达式中特殊字符的原有含义

15
# grep '\$' /etc/init.d/nfs.server
case "$1" in
>;/tmp/sharetab.$$
[ "x$fstype" != xnfs ] && \
echo "$path\t$res\t$fstype\t$opts\t$desc" \
>;>;/tmp/sharetab.$$
/usr/bin/touch -r /etc/dfs/sharetab /tmp/sharetab.$$
/usr/bin/mv -f /tmp/sharetab.$$ /etc/dfs/sharetab
if [ -f /etc/dfs/dfstab ] && /usr/bin/egrep -v '^[ ]*(#|$)' \
if [ $startnfsd -eq 0 -a -f /etc/rmmount.conf ] && \
if [ $startnfsd -ne 0 ]; then
elif [ ! -n "$_INIT_RUN_LEVEL" ]; then
while [ $wtime -gt 0 ]; do
wtime=`expr $wtime - 1`
if [ $wtime -eq 0 ]; then
echo "Usage: $0 { start | stop }"


# more size.txt

the test file
their are files
The end

# grep 'the' size.txt
the test file
their are files

# grep '\the test file
their are files

# grep 'the\>;' size.txt
the test file

# grep '\;' size.txt
the test file

# grep '\<[Tt]he\>;' size.txt
the test file
The end
-------------------------------------------------------------------------------
15.cut
参数:
-b List 指定字节位置。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c List 指定字符位置。例如,如果您指定 -c 1-72,cut 命令将写出文件每一行的头 72 个字符。
-d Character 使用 Character 变量指定的字符作为指定 -f 标志时的字段定界符。您必须在对 shell
有特殊意义的字符(比如空格字符)上加上引号。
-f List 指定文件中设想被定界符(缺省情况下为制表符)隔开的字段的列表。例如,如果您指定 -f 1,7,cut
命令将仅写出每个行的第一和第七个字段。如果行中不包含字段定界符,cut 命令将通过它们而不对其进行任何操作
(对表格的副标题有用),除非指定了 -s 标志。
-n 取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
范围之内,该字符将被写出;否则,该字符将被排除。
-s 取消不包含定界符的行。仅和 -f 标志一起使用。
-------------------------------------------------------------------------------
16.压缩
说明:
  1.lgzip,gunzip  inux标准压缩工具。对文本文件可以达到75%的压缩率。
  2.compress,uncompress   旧的unix压缩工具。
  3.bzip2,bunzip2  更新的linux压缩工具。比gzip有着更高的压缩率。
-------------------------------------------------------------------------------
17.mesg
功能说明:设置终端机的写入权限。
语  法:mesg [ny]
补充说明:将mesg设置y时,其他用户可利用write指令将信息直接显示在您的屏幕上。
参  数:
n 不允许气筒用户将信息直接显示在你的屏幕上。
y 允许气筒用户将信息直接显示在你的屏幕上。
write
功能说明:传送信息。
语  法:write [用户名称][终端机编号]
补充说明:通过write指令可传递信息给另一位登入系统的用户,当输入完毕后,键入EOF表示信息结束,write指令就会将信息传给对方。如果接收信息的用户不只登入本地主机一次,你可以指定接收信息的终端机编号。
wall
功能说明:传送信息。
语  法:wall [公告信息]
补充说明:通过wall指令可将信息发送给每位同意接收公众信息的终端机用户,若不给予其信息内容,则wall指令会从标准输入设备读取数据,然后再把所得到的数据传送给所有终端机用户。
----------------------------------------------------------------------------------
18.Z系列指令
对于用gzip压缩的文件,有一系列以Z开头的文件,可以在不经解压的情况下,直接操作文件
     zcat : 直接显示压缩文件的内容。
     zless: 直接逐行显示压缩文件的内容。
     zdiff: 直接报告压缩文件的差异。
     zcmp :  直接报告压缩文件的差异处。
阅读(1281) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:linux目录结构

给主人留下些什么吧!~~