shell学习———第三课时(文件操作)
时间:2010-11-16 来源:liurhyme
ls 命令经常要使用,通过使用 ls 命令可以查看linux文件夹包含的文件,查看文件权限(包括目录、文件夹、文件权限),查看目录信息等等,ls 命令在平常的linux操作中使用很频繁,所以这里介绍下 ls 命令的相关使用方法。
一、ls命令使用介绍
ls命令使用权限:所有用户。
格式:ls [选项] [目录名]。
功能:列出目标目录中所有的子目录和文件。
选项说明:
-a 用于显示所有文件和子目录(保罗点文件)。
-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。
-r 将目录的内容清单以英文字母顺序的逆序显示。
-t 按文件修改时间进行排序,而不是按文件名进行排序。
-A 同-a,但不列出“.”(表示当前目录)和“..”(表示当前目录的父目录)。
-F 在列出的文件名和目录名后添加标志。例如,在可执行文件后添加“*”,在目录名后添加“/”以区分不同的类型。
-R 如果目标目录及其子目录中有文件,就列出所有的文件。
-Cx 按行跨页对文件名进行排序。
-CF 按列列出目录中的文件名,并在文件名后附加一个字符以区分目录和文件的类型:目录文件名之后附加一个斜线(/)。可执行文件名之后附加一个星号(*)。符号链接文件名之后附加一个@符号。普通文件名之后不附加任何字符。
-CR 以分栏格式显示目标目录及其各级子目录中的所有文件(目录和文件都可以称为文件),也称为递归列表。
下面来举两个例子具体说明Linux ls 命令如何使用。
二、ls命令使用举例
例一:列出/home/cc/Ruijie 文件夹下的所有文件和目录的详细资料。
[cc@cc ~]$ ls -l -R /home/cc/Ruijie
输入上面的命令回车后,就会显示目录下所有文件的详细信息,如下:
[cc@cc ~]$ ls -l -R /home/cc/Ruijie
/home/cc/Ruijie:
总计2168
-rwxr-xr-x 1 cc cc 112876 2008-06-26 libpcap.so.0.6.2 -rwxr-xr-x 1 cc cc 737192 2008-06-26 libstdc++.so.5 -rwxr-xr-x 1 cc cc1938 2004-04-23 readme.txt
-rwxr-xr-x 1 cc cc 1350772 2005-08-31 xrgsu
[cc@cc ~]$
初学者在使用 ls 命令时要注意命令的格式:在命令提示符后,首先是命令的关键字,接下来是命令参数,在命令参数之前要有一短横线“-”,所有的命令参数都有特定的作用,自 己可以根据需要选用一个或者多个参数,在命令参数的后面是命令的操作对象。在以上这条命令“ ls -l -R /home/cc/Ruijie”中,“ls” 是命令关键字,“-l -R”是参数,“ /home/cc/Ruijie ”是命令的操作对象。在这条命令中,使用到了两个参数,分别为“l”和“R”,当然,你也可以把他们放在一起使用,如下所示:
[cc@cc ~]$ ls -lR /home/cc/Ruijie
这种形式和上面的命令形式执行的结果是完全一样的。另外,如果命令的操作对象位于当前目录中,可以直接对操作对象进行操作;如果不在当前目录则 需要给出操作对象的完整路径,例如上面的例子中,我的当前文件夹是cc文件夹,我想对cc文件夹下的Ruijie文件进行操作,我可以直接输入 ls -lR Ruijie,也可以用 ls -lR /home/cc/Ruijie 。
例二:列出当前目录中所有以“t”开头的目录的详细内容,可以使用如下命令:
[cc@cc ~]$ ls -l t*
这样,就可以查看当前目录下文件名以“t”开头的所有文件的信息。
其实,在命令格式中,方括号内的内容都是可以省略的,对于命令ls而言,如果省略命令参数和操作对象,直接输入“ ls ”,则将会列出当前工作目录的内容清单。
cat 浏览文件内容目录
使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName
说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)
参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting
范例:
cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。
范例:
把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -n textfile1 > textfile2
把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。
cat -b textfile1 textfile2 >> textfile3
cat /dev/null > /etc/test.txt 此为清空/etc/test.txt档案内容
cat 也可以用来制作 image file。例如要制作软碟的 image file,将软碟放好后打
cat /dev/fd0 > OUTFILE
相反的,如果想把 image file 写到软碟,请打
cat IMG_FILE > /dev/fd0
注:
1. OUTFILE 指输出的 image 档名。
2. IMG_FILE 指 image file。
3. 若从 image file 写回 device 时,device 容量需与相当。
4. 通常用在制作开机磁片。
1.一次显示整个文件。$ cat filename ~,y6;e
2.从键盘创建一个文件。$ cat > filename 0#!7
只能创建新文件,不能编辑已有文件. :z)
3.将几个文件合并为一个文件。 $cat file1 file2 > filet?=
参数: p:DS
-n 或 --number 由 1 开始对所有输出的行数编号 r5
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号 |,3S
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行 !s
-v 或 --show-nonprinting tds?O
范例: `@uq*Y
cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里 d
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。 ;L-#pj
范例: +Hu
把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里 z]G=
cat -n textfile1 > textfile2 vz&r3
把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。 RG.7n
cat -b textfile1 textfile2 >> textfile3 1M?1O
cat /dev/null > /etc/test.txt 此为清空/etc/test.txt档案内容 J2fx
cat 也可以用来制作 image file。例如要制作软碟的 image file,将软碟放好后打 {zQ
cat /dev/fd0 > OUTFILE %W~Ik.
相反的,如果想把 image file 写到软碟,请打 GKd
cat IMG_FILE > /dev/fd0 e
注: ©Newboys -- Newboys综合论坛 G
1. OUTFILE 指输出的 image 档名。 +cMcCt
2. IMG_FILE 指 image file。 Ew
3. 若从 image file 写回 device 时,device 容量需与相当。 $;28
4. 通常用在制作开机磁片。 <
swc 统计文件中单词数、行数和字符数
通常利用Linux的wc命令和其他命令结合来计算行和其他信息。
在Linux下用wc进行计数。返回文件的行数、字数、字节数等。
看个例子:
wc wc1.txt
3 5 16 wc1.txt
输出信息依次是:行数 字数 字节数 文件名称。再具体点,单个统计。
wc -m filename:显示一个文件的字符数
wc -l filename:显示一个文件的行数
wc -L filename:显示一个文件中的最长行的长度
wc -w filename:显示一个文件的字数
需要留意的:貌似wc统计的行算是用换行符来确定的。就是说最后一行要有换行符,最后wc的行数才是正确的,否则将会少一行。
为了说明这个问题,看一个perl的测试:
perl -e ‘print “a”‘|wc
0 1 1
perl -e ‘print “a\n”‘|wc
1 1 2
上面的例子中print命令将a打印出来,如果不带换行符\n,则认为这一行不存在。
有以下几点说明:
1:一个汉字占三个字节(未经验证,个人认为是两个字节),一个回车符等不可见字符也占一个字节
2:一行的末尾如果没有回车符,则不算是一行,也就是说,如果一个文件的最后一行末尾没有换行符,wc命令统计的行数会比实际行数少一,所谓实际行数是你 所看到的行数,实际上,没有回车符,确实不能算作一行(注:若是在一个已存在的文本中,则默认为所有的行都有一个不可见的回车符)
cp 拷贝文件的命令
- cp命令
- 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,同MSDOS下的copy命令一样,功能十分强大。
- 语法: cp [选项] 源文件或目录 目标文件或目录
- 说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。
- 该命令的各选项含义如下:
- - a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合。
- - d 拷贝时保留链接。
- - f 删除已经存在的目标文件而不提示。
- - i 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。
- - p 此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。
- - r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。
- - l 不作拷贝,只是链接文件。
- 需要说明的是,为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名已存在,用cp命令拷贝文件后,这个文件就会被新源文件覆盖,因此,建议用户在使用cp命令拷贝文件时,最好使用i选项。
mv 重命名文件的命名
命令名称:mv
使用权限:所有使用者
使用方式:
mv [options] source dest
mv [options] source... directory
说明:将一个档案移至另一档案,或将数个档案移至另一目录。
参数:-i 若目的地已有同名档案,则先询问是否覆盖旧档。
范例:
将档案 aaa 更名为 bbb :
mv aaa bbb
将所有的C语言程序移至 Finished 子目录中 :
mv -i *.c
rm 删除文件的命令
linux下rm命令使用详解---linux删除文件或目录命令
用户可以用rm命令删除不需要的文件。该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是断开了链接,原文件保持不变。
rm命令的一般形式为:rm [选项]... 目录... 删除指定的<文件>(即解除链接)。
-d --directory 删除可能仍有数据的目录 (只限超级用户)
-f --force 略过不存在的文件,不显示任何信息
-i --interactive 进行任何删除操作前必须先确认
-r/R --recursive 同时删除该目录下的所有目录层
-v --verbose 详细显示进行的步骤
--help 显示此帮助信息并离开
--version 显示版本信息并离开
要删除第一个字符为‘-’的文件 (例如‘-foo’),请使用以下其中一种方法:
rm -- -foo
rm ./-foo
请注意,如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。如果想保证
该文件的内容无法还原,请考虑使用 shred。
范例:
删除所有rb语言程序档;删除前逐一询问确认 :
rm -i *.rb
将 Finished 子目录及子目录中所有档案删除 :
rm -r Finished
将 Finished 子目录及子目录中所有档案删除,并且不用--确认 :
rm -rf Finished
普通文件:系统中包含数据、文本或程序指令的文件
目录:存储其他文件的一种文件类型。《==》等同于windows下的文件夹
不可见或隐藏文件:文件名以“.”符号开始的文件ls命令在缺省的情况下不列出这些文件,可在ls -a 选项来列出这些文件