Hadoop调错

用32 3 10为参数为xml文件划分时,当在Hadoop执行时出错,意外的错误,不知道为什么,文件切分出现问题。目前估计是xml小片不能太大,java会溢出内存。

用32 1 10划分就OK了,目前在1G上测试过了,要在50G上测试。

Ubuntu安装dos2unix工具

 

Ubuntu下默认没有安装dos2unix工具,而且也没有一个叫这个名字的工具(我在solaris里用过dos2unix,不知道为啥Ubuntu没有)。但是有一个替代工具——tofrodos , 下面就说一下它的安装和使用。
当然还是apt安装啦。

(1)安装tofrodos
sudo apt-get install tofrodos 
实际上它安装了两个工具:todos(相当于unix2dos),和fromdos(相当于dos2unix)

 

安装完即可,现在你已经可以进行文本格式的转换啦。 
比如: todos Hello.txt (即unix2dos Hello.txt) 
fromdos Hello.txt (即dos2unix Hello.txt)

目录文件操作

 

1、列文件或目录的信息工具 ls或dir;

ls 命令可以用于显示目录的内容,也可以显示文件的属性,比如节点、文件种类、权限、拥有者、大小、创建时间等;在目前最新版本的Linux中dir和ls命令的用法是一样的;有兴趣的不仿尝试一下;


1.1 ls 的基础语法和参数;

语法格式:

 

#ls [参数]   [目录或文件名]

 

参数:

 

-a 显示所有文件,包含隐藏文件;包括“.“和“..“
-A 显示所有文件,包含隐藏文件,不包括“.“和“..“目录;
-B 不列出文件名以~结尾的文件;
-C 按列列出文件;
-d 仅可以查看目录的属性参数及信息;
-F 这个参数加上后,能给目录添加上/,给可执行文件加上*,给符号链接加上@  等等,来标记文件名,目的是让用户方便查看; 
-l 长格式输出
-h 习惯人们可阅读的方式来显示文件或目录的大小,比如K、M或G等;
-p 在目录的后面附加/标记;
-r 逆序列出文件;
-t  按文件最后访问(或修改)的时间排序,最新的排在最前面;
-U 按原始排序,
-L 递归显示,也就是说,当我们列某个目录的下的所有文件和目录时,能把它的下级目录的内容显示出来。
--help  获得帮助;

 

在这里,位于[]之内的都是可选的。如果您只输入ls ,就会列出用户所处当前目录的所有文件,用短格式输出,但不会列出隐藏文件。

判断用户所处目录的命令是pwd,也就是

 

[root@localhost ~]# pwd
/root

 


1.2 ls 的参数示例应用;


1.21 列出目录下所有文件,包含或不包含隐藏文件,-a 参数及-l参数的运用;

 

#ls -la [目录名]

 

如果不接目录名,表示输出当前用户所处目录内的所有文件,包括隐藏文件;

 

[root@localhost ~]# pwd
/root
[root@localhost ~]# ls -la

 

列出某一目录下的的文件或目录,但不包括隐藏文件,我们只用-l参数

 

#ls -l  目录

 

比如:

[root@localhost ~]# ls  -l /root/
总计 13968
-rw-r--r-- 1 root root         0 04-19 14:09 123.txt
-rw------- 1 root root      1375 03-16 08:55 anaconda-ks.cfg
-rw-r--r-- 1 root root         2 03-27 02:00 fonts.scale
-rw-r--r-- 1 root root      5423 03-16 08:52 install.log.syslog
-rw-r--r-- 1 root root  14087155 03-16 07:53 kernel-2.6.15-1.2025_FC5.i686.rpm
lrwxrwxrwx 1 root root        33 04-19 11:27 kernel.rpm -> kernel-2.6.15-1.2025_FC5.i686.rpm
drwxr-xr-x 2 1000 users     4096 04-04 23:30 mkuml-2004.07.17
-rw-r--r-- 1 root root     68012 04-04 20:28 mkuml-2004.07.17-ananas.tar.bz2
drwxr-xr-x 2 root root      4096 04-19 10:53 mydir
-rw-r--r-- 1 root root     53992 03-16 08:54 myinstall.log
-rw-r--r-- 1 root root         0 04-19 14:10 plinux.txt
drwxr-xr-x 2 root root      4096 03-17 04:25 Public
-rw-r--r-- 1 root root       613 03-26 18:41 upgrade.log
-rw-r--r-- 1 root root         0 03-26 18:39 upgrade.log.syslog
lrwxrwxrwx 1 root root         6 04-19 11:17 yourdir -> mydir/

 

说明:如果以长格式输入,总共显示出八段内容:

第一段文件种类及权限,也就是类似这样的-rw-r--r-- ,我们在前面讲到,如果在这段中,第一字符表示文件的类型,如果出现-,表示普通文件。如果是d开头的就是目录。在这个例子中,123.txt是普通文件,而mkuml-2004.07.17就是一个目录。关于文件的种类,请参考 :
rw-r--r--是权限位,我们在以后的教程中会讲到。
第二段 硬链接个数(文件系增加一个硬链接,数字会增加1,默认从1开始,1表示无硬链接文件,如果是一个目录,它的默认值应该是2。目录是不能做硬链接的)
如果我们不以长格式输出的话,可以把参数省略;
第三段 文件或目录所占用的字节数,如果您想用K来表示,请用ls -lh /root
第四段 最后访问日期
第五段 最后访问时间
第六段 文件名

 

[root@localhost ~]# ls /root

 


1.22 仅查看目录的属性的-d参数的运用示例;

 

[root@localhost ~]# ls -ld  /etc  /boot  注:查看/etc和/boot目录的信息;

drwxr-xr-x   4 root root  4096 04-11 16:22 /boot
drwxr-xr-x 108 root root 12288 04-20 12:36 /etc

 


1.23 查看文件或目录的inode节点,-i参数的运用;

查看文件或目录的节点,我们要用到i参数。如果节点相同,能确认他们是相同的文件,是通过通过ln 创建的硬链接文件;链接接有何用?如果您想把一个文件复制时保持原文件或目录的节点、大小、权限以及访问(或修改)时间都和原文件一致的文件。必须通过硬链接来实现,用cp命令是不可能实现的。

比如:

 

[root@localhost ~]# ls -li /root



[root@localhost ~]# ls -li kernel*
2408323 -rw-r--r-- 3 root root 14087155 03-16 07:53 kernel00.rpm
2408270 lrwxrwxrwx 1 root root       33 04-19 14:56 kernel1.rpm -> kernel-2.6.15-1.2025_FC5.i686.rpm
2408323 -rw-r--r-- 3 root root 14087155 03-16 07:53 kernel-2.6.15-1.2025_FC5.i686.rpm
2408323 -rw-r--r-- 3 root root 14087155 03-16 07:53 kernel.rpm

 

我们看一下kernel00.rpm 、kernel.rpm 和 kernel-2.6.15-1.2025_FC5.i686.rpm 是不是节点相同??他们的大小是不是一样,他们的访问日期是不是一样?只是他们的文件名不一样。文件名不一样没有关系,这能证明其中两个文件是由另一个文件通过ln 创建而成。

您可以尝试着用cp 把 kernel-2.6.15-1.2025_FC5.i686.rpm 复制为kernel002.rpm ,看看能不能保持节点相同?

 

[root@localhost ~]# ls -li kernel*
2408272 -rw-r--r-- 1 root root 14087155 04-19 16:05 kernel002.rpm
2408323 -rw-r--r-- 3 root root 14087155 03-16 07:53 kernel00.rpm
2408270 lrwxrwxrwx 1 root root       33 04-19 14:56 kernel1.rpm -> kernel-2.6.15-1.2025_FC5.i686.rpm
2408323 -rw-r--r-- 3 root root 14087155 03-16 07:53 kernel-2.6.15-1.2025_FC5.i686.rpm
2408323 -rw-r--r-- 3 root root 14087155 03-16 07:53 kernel.rpm

 

不是是kernel002.rpm 的节点和 kernel-2.6.15-1.2025_FC5.i686.rpm 不一样了?


1.24 关于排序的参数的应用;

ls 显示目录的内容时,会将文件按a到z的字母顺序显示,优先级如下;

 

数字  
a-z  
A-Z

 

也就是说如果不加任何排序的参数,文件名第一个字母是数字的,将优先显示;其次才是A-Z,然后才是a-z;下面是几个排序的参数,大家练习一下就知道了;

 

在文件的大小排序上,我们要用到-S参数; 
如果是逆序排序时,我们要用到-r参数;
按最后访问的时候排序,要用到-t参数;
根据扩展名进行排序,要用到参数 -X ;

 

举例

 

[root@localhost ~]# ls
123.txt          fonts.scale         kernel                           myinstall.log  upgrade.log
anaconda-ks.cfg  install.log.syslog  mkuml-2004.07.17-ananas.tar.bz2  plinux.txt     upgrade.log.syslog

 

 

[root@localhost ~]# ls -lS /root
[root@localhost ~]# ls -lS
总计 180
-rw-r--r-- 1 root root 68012 04-04 20:28 mkuml-2004.07.17-ananas.tar.bz2
-rw-r--r-- 1 root root 53992 03-16 08:54 myinstall.log
-rw-r--r-- 1 root root  5423 03-16 08:52 install.log.syslog
drwxr-xr-x 2 root root  4096 04-19 20:04 kernel
-rw------- 1 root root  1375 04-19 15:04 anaconda-ks.cfg
-rw-r--r-- 1 root root   613 03-26 18:41 upgrade.log
-rw-r--r-- 1 root root    21 04-19 15:06 123.txt
-rw-r--r-- 1 root root     2 03-27 02:00 fonts.scale
-rw-r--r-- 1 root root     0 04-19 14:10 plinux.txt
-rw-r--r-- 1 root root     0 03-26 18:39 upgrade.log.syslog

 

举例:

 

[root@localhost ~]# ls -lr
总计 180
-rw-r--r-- 1 root root     0 03-26 18:39 upgrade.log.syslog
-rw-r--r-- 1 root root   613 03-26 18:41 upgrade.log
-rw-r--r-- 1 root root     0 04-19 14:10 plinux.txt
-rw-r--r-- 1 root root 53992 03-16 08:54 myinstall.log
-rw-r--r-- 1 root root 68012 04-04 20:28 mkuml-2004.07.17-ananas.tar.bz2
drwxr-xr-x 2 root root  4096 04-19 20:04 kernel
-rw-r--r-- 1 root root  5423 03-16 08:52 install.log.syslog
-rw-r--r-- 1 root root     2 03-27 02:00 fonts.scale
-rw------- 1 root root  1375 04-19 15:04 anaconda-ks.cfg
-rw-r--r-- 1 root root    21 04-19 15:06 123.txt

 

 

[root@localhost ~]# ls -lt
总计 180
drwxr-xr-x 2 root root  4096 04-19 20:04 kernel
-rw-r--r-- 1 root root    21 04-19 15:06 123.txt
-rw------- 1 root root  1375 04-19 15:04 anaconda-ks.cfg
-rw-r--r-- 1 root root     0 04-19 14:10 plinux.txt
-rw-r--r-- 1 root root 68012 04-04 20:28 mkuml-2004.07.17-ananas.tar.bz2
-rw-r--r-- 1 root root     2 03-27 02:00 fonts.scale
-rw-r--r-- 1 root root   613 03-26 18:41 upgrade.log
-rw-r--r-- 1 root root     0 03-26 18:39 upgrade.log.syslog
-rw-r--r-- 1 root root 53992 03-16 08:54 myinstall.log
-rw-r--r-- 1 root root  5423 03-16 08:52 install.log.syslog

 


1.25 递归显示目录的文件,-R参数的应用;

递归显示目录下的所有文件,如果该目录下有子目录,也会把子目录的文件一并显示出来。

比如

 

[root@localhost ~]# ls -lR /

 

注:也就是把Linux下/根目录下的所有文件显示出来,但不会显示隐藏文件。自己试着输入上面的命令就知道怎么回事了。


1.26 关于ls 输出内容在终端显示颜色的参数 --color;

在一般的情况下,ls输出内容是有颜色的,比如目录是蓝色,压缩文件是红字的显示。如果没有颜色,可以加上参数。当然也可以去掉颜色。

 

--color=never  表示输出输出没有彩色
--color=auto  表示自动
--color=always 表示输出内容有彩色

 

举例:

 

[root@localhost ~]# ls -la --color=never 
[root@localhost ~]# ls -la --color=any
[root@localhost ~]# ls -la --color=always

 

如果您的终端或控制台输出的内容没有颜色,可以自己来定义。在当前用户的家目录下的.bashrc 中加入下面的一行;

 

alias ls="ls --color=always"

 


1.27 ls的-F参数的示例;

 

[root@localhost ~]# ls -F
crondw.sh*  kernel/  mkuml-2004.07.17-ananas.tar.bz2  openQreadme.txt@  sun.txt  upgrade.log  youdir/

[root@localhost ~]# ls -lF
总计 92
-rwxr-xr-x 1 root root     0 04-20 14:18 crondw.sh*
drwxr-xr-x 3 root root  4096 04-20 14:17 kernel/
-rw-r--r-- 1 root root 68012 04-04 20:28 mkuml-2004.07.17-ananas.tar.bz2
lrwxrwxrwx 1 root root     7 04-20 14:18 openQreadme.txt -> sun.txt
-rw-r--r-- 1 root root    11 04-20 14:17 sun.txt
-rw-r--r-- 1 root root   613 03-26 18:41 upgrade.log
drwxr-xr-x 6 root root  4096 04-20 14:17 youdir/

 


1.3 通配符在ls命令中的应用;

 

* 代表0个或多个字符
[]内部包括任何字符
? 任何单个字符

 

举例:

比如我们显示以k开头的所有文件,在/root目录中的;

 

[root@localhost ~]# ls /root/k*
kernel002.rpm  kernel00.rpm  kernel1.rpm  kernel-2.6.15-1.2025_FC5.i686.rpm  kernel.rpm

 

我们显示以数字开头的所有文件;

 

[root@localhost ~]# ls [0-9]*
123.txt  234.txt  2kexe.txt  6mns.doc

 

下面是一个?通配符的示例:

 

[root@localhost ~]# ls *.t?t
123.txt  234.txt  2kexe.txt  333.tot  plinux.txt

 


1.4 获得ls 的帮助;

ls 的用法比较简单,至于更详细的参考,还是查man和help。遇到不会的,就查手册,我也是这么做的。

 

[root@localhost ~]# ls --help
[root@localhost ~]# man ls
[root@localhost ~]# info ls

 


2、移动文件或目录的命令 mv ;

mv 命令是用来移动文件或目录的;有以下几种格式;

 

#mv file1 file2  注:把file1移动到file2,如果file2不存在,则创建file2文件名;
#mv file1 dir 注:把一个文件移动到一个事实存在的目录;
#mv dir1 dir2   移动目录dir1 到 dir2 ,如果dir2不存在,则创建它;
#mv file1 file2 file3 ... ...  dir   移动file1、file2、file3等多个文件到dir目录中;
#mv dir1 dir2 ... ... dirn   注:移动目录dir1和dir2等多个目录到dirn目录中

 

参数-i ,表示人机交互模式;提示警告信息;

举例:

 

[root@localhost ~]# mv -i 123.txt  234.txt
mv:是否覆盖“234.txt”? y 注:要在这里输入y,表示允许覆盖234.txt文件;如果是n,请示不允许;

 

mv 也能和通配符结合一起使用,这样能把相似特征的文件移动到某处;

 

* 代表0个或多个字符
[]内部包括任何字符
? 任何单个字符

 


举例:比如移动以数字开头的文件或目录到 root目录下的tmp目录中;

 

[root@localhost ~]# pwd
/root
[root@localhost ~]# mv [0-9]* tmp/
[root@localhost ~]# ls -lh tmp/
总计 4.0K
-rw-r--r-- 1 root root 21 04-19 15:06 234.txt
-rw-r--r-- 1 root root  0 04-19 22:23 2kexe.txt
-rw-r--r-- 1 root root  0 04-19 22:25 333.tot
-rw-r--r-- 1 root root  0 04-19 22:23 6mns.doc

 


3、文件或目录的复制工具cp ;


3.1 cp 的语法和参数

 

#cp  [参数选项]   源文件或目录      目标文件或目录

 

注:参数是可选的,常用参数比如 -r,-R,-p,-i ;

参数说明(部份)

-a 等同于-dpR参数一起使用;在复制过程中尽可能保留源文件或目录的属性;
-b 给被覆盖的文件做备份。比如我们把file1 复制到file2时,如果file2存在,我们把file2覆盖掉,用这个参数就能同时生成一个file2~的文件,注意文件名后有~结尾
-d 不间接引用符号链接,保持源文件和目标文件之间的硬链接关系;
-f 删除已存在的目标文件;
-i 覆盖已存在的目标文件之前给出警告提示,这是人机交互的选项;
-l 建立文件硬链接,而不是复制;
-p 保存源文件或目录的最后修改时间和模式,比如要保持目标目录或文件的属主、组、权限和最后访问(或修改)时间;
-R 复制目录时,包括淅目录下所有的子目录和文件;
-s 建立源文件的符号链接,而不是复制源文件。源文件名必须用绝对路径;
-r 复制目录时,包括淅目录下所有的子目录和文件;-r选项不同于-R之处在于 尝试打开目的地文件前先删除已存在的目的地文件
-i 人机交互模式,显法覆盖已存在的文件或目录的警告信息;
-v 在复制之前,输出每个文件的名字;
--help 查看帮助 ;


3.2 示例说明cp应用;


3.21 参数-i的示例;

 

[root@localhost ~]# ls
anaconda-ks.cfg  install.log.syslog  Kernel.rpm                       mydir       Plist  upgrade.log         youdir
fonts.scale      kernel              mkuml-2004.07.17-ananas.tar.bz2  plinux.txt  sun    upgrade.log.syslog
[root@localhost ~]# pwd
/root

[root@localhost ~]# cp  -i Kernel.rpm Plist
cp:是否覆盖“Plist”? y

 

注:人机交互在数-i的运用;如果源文件复制到目标文件,如果目标文件存在,则提示警告;


3.22 参数-a的示例及说明;

把源目录复制到另外的一个目标,相当于克隆了一个目录,源目录和目标目录在用户组、权限及修改或访问时间保持一致;

 

[root@localhost ~]# cp -a mydir youdir

 

注:复制目录mydir 到youdir ,如果yourdir目录不存在,则创建。并且把mydir中所有的文件下级子目录都复制到 yourdir目录中。也就是说mydir目录的文件和youdir是一样的。-a 参数等同于-dpR,并且源目录和目标目录的属性(用户组、权限、最后访问及修改时间)都一致;


3.23 参数-b的示例应用;

把源文件复制为目标文件;并且尝试-b参数的运用;

 

[root@localhost ~]# cp fonts.scale fonts.dir  把一个文件复制为另一个文件;

[root@localhost ~]# cp -bi fonts.scale fonts.dir 

cp:是否覆盖“fonts.dir”? y  注:因为用了-i 参数,如果目标文件存在,则报警提示;

[root@localhost ~]# ls -lh fonts.*
-rw-r--r-- 1 root root 2 04-20 10:24 fonts.dir
-rw-r--r-- 1 root root 2 04-20 10:24 fonts.dir~  注:-b参数运用的效果就是生成已存在目标文件的覆盖之前备份。
-rw-r--r-- 1 root root 2 03-27 02:00 fonts.scale

 


3.24 把多个文件复制到目录目录中示例;

比如我们把位于用户当前目录下的fonts.dir、Kernel.rpm和Plist文件,复制到当前用户所处的目录下的sun目录中;

 

[root@localhost ~]# pwd  注:判断用户所处的位置,也就是所处的目录;
/root

[root@localhost ~]# mv fonts.dir Kernel.rpm  Plist  sun/ 
[root@localhost ~]# ls sun/
fonts.dir  Kernel.rpm  Plist

 

注:如果您想把多个目录或文件复制到目标目录时,您得加参数 -R


3.25 复制目录时-R参数的应用;

复制一个目录到另一个目录时,我们要用到 -r或-R 或-a , 如果目标目录不存在,则创建它,如果目标目录存在,则复制源目录到目标目录之下;看看-a和-R或-r有什么不同?尝试看看;

比如我们在用户当前操作的目录中,有mydir目录,我们想把mydir复制为medir(在复制之前medir是不存在的)。

 

[root@localhost ~]# cp -R mydir medir 注:如果medir目录不存在,则创建medir目录,并且medir目录中的内容和mydir中的一样;

 

如果您把-R参数换成-a参数,会有什么不同?看看前面的例子所说的;


4、 目录创建工具mkdir和删除空目录工具rmdir;


4.1 mkdir 是目录创建工具;


4.11 mkdir语法格式及参数;

语法格式

 

#mkdir [参数选项]  目录

 

参数常用的如下:

-m 在创建目录时要授其权限,要和chmod的授权格式;
-p 如果中间目录不存在,则创建它


4.12 参数 -p 的应用示例

我们要创建一个目录linuxsir,并且linuxsir目录下包含子目录sirdoc,sirdoc目录下还有 redhat目录;

 

[root@localhost ~]# mkdir -p  linuxsir/sirdoc/redhat

 

举例: -m 参数的应用示例;

我们以不同的权限来创建目录,然后查看我们所创建目录的属性;这要涉及到chown 来改变目录的权限的格式。我们会在以后讲到chown改变目录或文件的权限。在这里不同的是,在目录创建之时就给其授权了;

 

[root@localhost ~]# mkdir -m  644 sundir
[root@localhost ~]# mkdir -m 755 moondir
[root@localhost ~]# mkdir -m 000 beinandir
[root@localhost ~]# ls -ld sundir moondir beinandir
d--------- 2 root root 4096 04-20 11:01 beinandir 
drwxr-xr-x 2 root root 4096 04-20 11:01 moondir
drw-r--r-- 2 root root 4096 04-20 11:00 sundir

 


4.2 删除空目录工具 rmdir 和rm ;

rmdir 是用来删除空目录用的,如果目录中有文件或子目录,必须先删除文件或子目录,其语法格式如下:

 

#rmdir [参数]  目录

 


rmdir 参数常用的有:

-p 删除目录时是一级一级的时行的,值得注意的是,首先从最里面的目录开始。下面是一个例子;

 

[root@localhost ~]# mkdir -p  linuxsir/sirdoc/redhat/  

注:首先在当前目录下创建linuxsir目录,他的子目录是sirdoc,sirdoc内又有一个子目录redhat 

[root@localhost ~]# rmdir -p linuxsir/sirdoc/redhat/  注:删除linuxsir目录,要用到参数-p
[root@localhost ~]# ls linuxsir  注:检查一下是不是还有这个目录? 
ls: linuxsir: 没有那个文件或目录

 

rmdir 所删除的目录,每级目录中都是空的,没有其它的文件。如果任何一级的目录有文件,也不能删除。这时您要用到rm -rf 命令强制删除。不过用rm -rf 删除时有点不安全,还是用rf -ri 比较好一点,因为在删除的时候,会有警告提示。这对于安全操作来说是很重要的;

 

[root@localhost ~]# ls -lh sun/  注:这是sun目录,里面有内容;
总计 28K
-rw------- 1 root root 1.4K 04-19 15:04 anaconda-ks.cfg
-rw-r--r-- 1 root root    2 04-20 10:24 fonts.dir
-rw-r--r-- 1 root root    2 03-27 02:00 fonts.scale
-rw-r--r-- 1 root root 5.3K 03-16 08:52 install.log.syslog
-rw-r--r-- 1 root root    0 04-19 20:44 Kernel.rpm
-rw-r--r-- 1 root root    0 04-20 10:20 Plist
[root@localhost ~]# rmdir sun/  注:我们尝试用rmdir来删除,
rmdir: sun/: 目录非空   

[root@localhost ~]# rm -rf sun/  注:强制用rm -rf 来删除;

[root@localhost ~]# ls sun    注:检查是否删除,删除成功;
ls: sun: 没有那个文件或目录

 


5、创建一个空文件的工具:用 touch、echo、cat等工具;

有时我们为了方便,可能在控制台或终端下创建一个不存在的空文件,然后我们再用编辑器来编辑它;创建空文件有时还有点用。说说也无妨。我们在这里用touch、ech0及cat 工具。其实这些工具,创建文件只是他们的一个小小的功能,我们以后再介绍这些工具,先说他们创建文件的功能。

注意:创建这些文件,在我们操作创建文件之前,这些文件在用户当前操作目录下是不存在的,我们在这里只是创建一个新的文件名,并且它里面没有任何空容的;

 

[root@localhost ~]# ls 123456.txt 654321.txt 98765.txt
ls: 123456.txt: 没有那个文件或目录
ls: 654321.txt: 没有那个文件或目录
ls: 98765.txt: 没有那个文件或目录

 

 

[root@localhost ~]# echo > 123456.txt  注:用ech0 来创建,在创建之前在此操作目录下不存不123456.txt文件;
[root@localhost ~]# ls 123456.txt     注:查看一下看有没有生成?
123456.txt

 

 

[root@localhost ~]# touch 654321.txt  注:用 touch 来创建,在创建之前在此操作目录下不存在654321.txt文件;
[root@localhost ~]# ls 654321.txt  注:查看一下看有没有生成?
654321.txt

 

 

[root@localhost ~]# cat > 98765.txt  注:用ech0 来创建,在创建之前在此操作目录下不存在98765.txt 文件;然后按ctrl+c组合键退出;

[root@localhost ~]# ls 98765.txt   注:查看一下看有没有生成?
98765.txt

 


6、删除文件工具rm;

rm 是用来删除一个或多个文件的工具,并且能用于删除非空目录。我们前面提到了可以加参数-rf 就可以强制删除一个非空目录。

rm的语法格式;

 

#rm [参数选项] file1 file2 ... ... 
#rm  [参数选项]  dir1 dir2 dir3 ... ...

 

rm 常用参数:

 

-f  不显示警告或提示信息就删除,用的时候需要小心;
-i  删除文件时,显示警告信息,要多用,这样比较安全;根据提示,输入y就表示删除,输入n,请示不删除;
-r或-R  表示可以删除整个目录(包括子目录及所有文件),要小心用;

 

 

[root@localhost ~]# rm -i 123.sh  注:这是删除一个文件,用-i参数的示例,有警告提示;

rm:是否删除一般空文件“123.sh”? y

 

比如我们想删除mydir目录及所有下级目录和文件,要有提示的警告信息,可以用-r参数和-i参数的组合;如果您想终止rm命令,请按ctrl+c组合健退出rm;

 

[root@localhost ~]# rm -ri mydir/

rm:是否进入目录“mydir/”? y
rm:是否进入目录“mydir//youdir”? y
rm:是否删除一般文件“mydir//youdir/enteruml.sh”?

 

如果您想没有任何警告信息的删除mydir目录下的所有文件及子目录,可以用-r和-f参数的组合;

 

[root@localhost ~]# rm -rf mydir

 


7、修改文件名工具 mv

mv 可以移动一个文件(或目录)到另一个文件(或目录),如果文件(或目录)不存在,则创建它。其实mv 这个过程也可以理解为改名过程,所以说mv工具能修改文件名和目录名。

 

#mv 原文件名或目录名  新文件或目录名

 

注意:新文件名或目录名应该不能与现有文件名(或目录名)同名。

举例:

 

[root@localhost ~]# ls
crondw.sh  kernel  mkuml-2004.07.17-ananas.tar.bz2  mydir  openQreadme.txt  sun.txt  upgrade.log  youdir

[root@localhost ~]# mv crondw.sh 123.sh  注:移动crondw.sh 到123.sh ,其实就是把文件名改为了123.sh

[root@localhost ~]# ls
123.sh  kernel  mkuml-2004.07.17-ananas.tar.bz2  mydir  openQreadme.txt  sun.txt  upgrade.log  youdir

 

再看一例mv 修改目录的。当然mv是把文件(或目录)从一个地方移到另一个地方。如果另一地方没有和源文件(或目录)同名的,就创建。这也相当于改名;

 

[root@localhost ~]# ls
123.sh  kernel  mkuml-2004.07.17-ananas.tar.bz2  mydir  openQreadme.txt  sun.txt  upgrade.log  youdir

[root@localhost ~]# mv kernel/ kernelBak

[root@localhost ~]# ls
123.sh  kernelBak  mkuml-2004.07.17-ananas.tar.bz2  mydir  openQreadme.txt  sun.txt  upgrade.log  youdir

 

 

linux的文件系统

 

文件系统的组织结构分析,我们能分析什么呢?也就是当我们列/目录时,所看到的/usr、/etc ... ... /var 等目录是做什么用的,这些目录是不是有些特定的用途。无论哪个哪个版本的Linux系统,都有这些目录,这些目录应该是标准的。当然各个Linux发行版本也会存在一些小小的差异,但总体来说,还是大体差不多。

Linux发行版本之间的差别其实很少,差别主要表现在系统管理的特色工具以及软件包管理方式的不同,除此之外,没有什么大的差别; 比如Fedora软件包管理工具是rpm,而Slackware是pkgtool 或installpkg等;

言归正传,我们接着说文件系统组织结构。

/ Linux文件系统的入口,也是处于最高一级的目录;

/bin 基础系统所需要的那些命令位于此目录,也是最小系统所需要的命令;比如 ls、cp、mkdir等命令;功能和/usr/bin类似,这个目录中的文件都是可执行的,普通用户都可以使用的命令。做为基础系统所需要的最基础的命令就是放在这里。

/boot Linux的内核及引导系统程序所需要的文件,比如 vmlinuz initrd.img 文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录;

/dev 设备文件存储目录,比如声卡、磁盘... ...

/etc 系统配置文件的所在地,一些服务器的配置文件也在这里;比如用户帐号及密码配置文件;

/home 普通用户家目录默认存放目录;

/lib 库文件存放目录

/lost+found 在ext2或ext3文件系统中,当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。 有时系统发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或移到文件到原来的位置上。

/media 即插即用型存储设备的挂载点自动在这个目录下创建,比如USB盘系统自动挂载后,会在这个目录下产生一个目录 ;CDROM/DVD自动挂载后,也会在这个目录中创建一个目录,类似cdrom 的目录。这个只有在最新的发行套件上才有,比如Fedora Core 4.0 5.0 等。可以参看/etc/fstab的定义;

/misc

/mnt 这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom 等目录。可以参看/etc/fstab的定义。有时我们可以把让系统开机自动挂载文件系统,把挂载点放在这里也是可以的。主要看/etc/fstab中怎么定义了;比如光驱可以挂载到/mnt/cdrom 。

/opt 表示的是可选择的意思,有些软件包也会被安装在这里,也就是自定义软件包,比如在Fedora Core 5.0中,OpenOffice就是安装在这里。有些我们自己编译的软件包,就可以安装在这个目录中;通过源码包安装的软件,可以通过 ./configure --prefix=/opt/目录 。

/proc 操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录伪装的文件系统proc的挂载目录,proc并不是真正的文件系统,它的定义可以参见 /etc/fstab 。

/root Linux超级权限用户root的家目录;

/sbin 大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令,这个目录和/usr/sbin;/usr/X11R6/sbin或/usr/local/sbin目录是相似的; 我们记住就行了,凡是目录sbin中包含的都是root权限才能执行的。

/tmp 临时文件目录,有时用户运行程序的时候,会产生临时文件。/tmp就用来存放临时文件的。/var/tmp目录和这个目录相似。

/usr 这个是系统存放程序的目录,比如命令、帮助文件等。这个目录下有很多的文件和目录。当我们安装一个Linux发行版官方提供的软件包时,大多安装在这里。如果有涉及服务器配置文件的,会把配置文件安装在/etc目录中。/usr目录下包括涉及字体目录/usr/share/fonts ,帮助目录 /usr/share/man或/usr/share/doc,普通用户可执行文件目录/usr/bin 或/usr/local/bin 或/usr/X11R6/bin ,超级权限用户root的可执行命令存放目录,比如 /usr/sbin 或/usr/X11R6/sbin 或/usr/local/sbin 等;还有程序的头文件存放目录/usr/include。

/var 这个目录的内容是经常变动的,看名字就知道,我们可以理解为vary的缩写,/var下有/var/log 这是用来存放系统日志的目录。/var/www目录是定义Apache服务器站点存放目录;/var/lib 用来存放一些库文件,比如MySQL的,以及MySQL数据库的的存放地;

我们再补充一下一些比较重要的目录的用途;

/etc/init.d 这个目录是用来存放系统或服务器以System V模式启动的脚本,这在以System V模式启动或初始化的系统中常见。比如Fedora/RedHat;
/etc/xinit.d 如果服务器是通过xinetd模式运行的,它的脚本要放在这个目录下。有些系统没有这个目录, 比如Slackware,有些老的版本也没有。在Rehat/Fedora中比较新的版本中存在。

/etc/rc.d 这是Slackware发行版有的一个目录,是BSD方式启动脚本的存放地;比如定义网卡,服务器开启脚本等。

/etc/X11 是X-Windows相关的配置文件存放地;
比如下面的例子:

 

[root@localhost ~]# /etc/init.d/sshd start   注:启动sshd服务器
[root@localhost ~]# /etc/init.d/sshd stop 注:停止sshd服务器
启动 sshd:                                                [确定]

 

这就是典型的sshd 服务器 System V模式启动脚本,通过这运行这个脚本可以启动sshd服务器了。

/usr/bin 这个目录是可执行程序的目录,普通用户就有权限执行; 当我们从系统自带的软件包安装一个程序时,他的可执行文件大多会放在这个目录。比如安装gaim软件包时。相似的目录是/usr/local/bin; 有时/usr/bin中的文件是/usr/local/bin的链接文件;

/usr/sbin 这个目录也是可执行程序的目录,但大多存放涉及系统管理的命令。只有root权限才能执行;相似目录是/sbin 或/usr/local/sbin或/usr/X11R6/sbin等;

/usr/local 这个目录一般是用来存放用户自编译安装软件的存放目录;一般是通过源码包安装的软件,如果没有特别指定安装目录的话,一般是安装在这个目录中。这个目录下面有子目录。自己看看吧。

/usr/lib 和/lib 目录相似,是库文件的存储目录;

/usr/share 系统共用的东西存放地,比如 /usr/share/fonts 是字体目录,是用户都共用的吧。

/usr/share/doc和/usr/share/man帮助文件,也是共用的吧;

/usr/src 是内核源码存放的目录,比如下面有内核源码目录,比如 linux 、linux-2.xxx.xx 目录等。有的系统也会把源码软件包安装在这里。比如Fedora/Redhat,当我们安装file.src.rpm的时候,这些软件包会安装在/usr/src/redhat相应的目录中。请参考: 《file.src.rpm 使用方法的简单介绍》 。另外Fedhat 4.0 5.0,他的内核源码包的目录位于/usr/src/kernels目录下的某个目录中(只有安装后才会生成相应目录);

/var/adm 比如软件包安装信息、日志、管理信息等,在Slackware操作系统中是有这个目录的。在Fedora中好象没有;自己看看吧。
/var/log 系统日志存放,分析日志要看这个目录的东西;
/var/spool 打印机、邮件、代理服务器等假脱机目录;

 

linux路径相关

 

1、Linux文件系统是从/开始的;

在Linux操作系统的文件管理中,命令行模式(在控制台或终端下)的文件或目录管理,要涉及路径这一概念,这是Linux命令行操作的最基础的基础。如果我们了解了路径的概念,就可以随心所欲的进入任何目录,进行我们想的工作。

Linux 文件系统,是一个呈树形结构,是从/做为入口,/(也被称为根目录)下有子目录,比如etc、usr、lib等,在每个子目录下又有文件或子目录,这样就形成了一个树形结构,这种树形结构比较单一。而Windows文件系统呢?它引入了C盘、D盘类似的磁盘概念,使得习惯Windows操作的用户在转向Linux时,会发现Linux根本就有C盘、D盘的概念,有时甚至不知所措。


2、理解路径概念的目的;

引入路径概念目的最终是找到我们所需要的目录或文件。比如我们想要编辑 file.txt 文件,我们首先要知道他存放在哪里,也就是说我们要指出他所在的位置,这时就要用到路径了。


3、路径的构成要素;

路径是由目录或目录和文件名构成的。比如/etc/X11 就是一个路径,而/etc/X11/xorg.conf也是一个路径。也就是说路径可以是目录的组合,分级深入进去,也可以是文录+文件构成。比如我们想用vi编辑xorg.conf文件,在命令行下输入 vi /etc/X11/xorg.conf ,如果我们想进入/etc/X11目录,就可以通过cd /etc/X11来实现。


4、路径的分类;

路径分为绝对路径和相对路径;


4.1 绝对路径;

在Linux中,绝对路径是从/(也被称为根目录)开始的,比如/usr、/etc/X11。如果一个路径是从/开始的,它一定是绝对路径,这样就好理解了;

 

[root@localhost ~]# pwd  注:判断用户当前所处的位置,也就是说他到底位于哪?
/root    注:用户当前位于/root;

[root@localhost ~]# cd /usr/share/doc/  注:我们以绝对路径方式进入/usr/share/doc目录下;
[root@localhost doc]# pwd   注:判断用户当前所处的位置
/usr/share/doc   注:用户位于/usr/share/doc,看来已经达到我们的目的了;

 


4.2 相对路径;

相对路径是以 . 或 .. 开始的,.表示用户当前操作所处的位置,而.. 表示上级目录;在路径中,.表示用户当前所处的目录,而..上级目录,要把.和..当做目录来看。

 

[root@localhost ~]# pwd  注:通过pwd来判断当前用户所在的位置;
/root    注:得出目录处于/root目录中;

[root@localhost ~]# cd .  注:我们进入.
[root@localhost ~]# pwd  注:判断当前用户所处的位置;
/root    注:得出在/root   目录中 ;

[root@localhost ~]# cd ..  注:我们切入/root的上级目录 
[root@localhost /]# pwd  注:判断当前用户所处的位置。
/   注:用户当前位于/(根目录)中;

 


5、在路径中一些特殊符号的说明;

这些符号在相对路径中应用的,这些符号能为我们带来方便,所以有必要说说;

 

.   表示用户所处的当前目录;
..  表示上级目录
~  表示当前用户自己的家目录
~USER   表示用户名为USER的家目录,这里的USER是在/etc/passwd中存在的用户名;

 


5.1 符号.应用示例;

通过下面的例子,让我们增强.所表示的意义;

 

[root@localhost ~]# pwd 注:判断用户当前所处的目录;
/root  注:位于/root目录;

[root@localhost ~]# cd .  注:进入.目录,这里的.就是用户当前所处的位置;
[root@localhost ~]# pwd  注:在哪呢?
/root  注:在/root中。

 

理解./的意义;

 

[root@localhost ~]# pwd   注:判断用户当前所处的目录;
/root 注:位于/root目录;

[root@localhost ~]# ls  注:显示用户所处/root目录的文件及子目录;也可以用ls .

[root@localhost ~]# ls . 
mkuml-2004.07.17-ananas.tar.bz2  mydir  openQreadme.txt  sun.txt  tmp  upgrade.log

[root@localhost ~]# ls ./tmp/  查看用户所处当前目录下的tmp目录的内容
kernelBak  youdir

或 

[root@localhost ~]# ls tmp/
kernelBak  youdir
[root@localhost ~]#

 

在有些文档中,我们看到类似./filename 来运行一个脚本或程序的例子。其实它就是在用户当前目录下运行的;请看下面的示例;

 

[root@localhost ~]# pwd  注:判断用户当前所处的目录;
/root  注:位于/root目录;
[root@localhost ~]# touch lsfile.sh   注:创建一个文件名为lsfile.sh的文件;
[root@localhost ~]# chmod 755 lsfile.sh  注:修改权限让其可执行;
[root@localhost ~]# echo "ls -la"> lsfile.sh  注:向lsfile.sh文件中加入ls -la 一句指令
[root@localhost ~]# more lsfile.sh  注:用more 工具来查看lsfile.sh 文件的内容;
ls -la

[root@localhost ~]# ./lsfile.sh 注:运行lsfile.sh ,在这里用的是相对路径;
[root@localhost ~]# /root/lsfile.sh  注:这是绝对路径运行lsfile.sh 脚本;

 


5.2 符号..应用示例;

 

[root@localhost ~]# pwd 注:判断用户当前所处的目录;
/root
[root@localhost ~]# cd /etc/X11/  注:进入/目录下的etc目录下的X11目录;
[root@localhost X11]# pwd 注:判断用户当前所处的目录; 
/etc/X11  注:看来用户真的位于/etc/X11目录了;
[root@localhost X11]# cd ..   注:退到上级目录;
[root@localhost etc]# pwd  注:判断用户当前所处的目录; 
/etc
[root@localhost etc]# cd ../root/ 注:退到上级目录,也就是退到/,然后再进入root目录;  
[root@localhost ~]# pwd  判断是不是进入/目录下的root目录? 
/root  注:的确是实现了。

 


5.3 符号~和~USER示例;

~表示当前操作用户的家目录,看下面的例子;

[root@localhost ~]# id  注:查看当前用户的用户信息;我们用哪个用户来操作命令的?
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)  注:看到了,是root用户;

[root@localhost ~]# finger root 注:查看root用户的信息;
Login: root                                               Name: root
Directory: /root    注:这表示root用户的家目录位于/root目录中                    Shell: /bin/bash   

 

 

[root@localhost ~]# pwd  注:判断用户所处的目录;
/root  注:是/root目录;

[root@localhost ~]# cd /etc/X11/  注:进入/etc/X11
[root@localhost X11]# pwd  注:判断用户所处的目录;
/etc/X11 注:看来已经到了/etc/X11;

[root@localhost X11]# cd ~  注:我们返回root用户的家目录;
[root@localhost ~]# pwd
/root  注:是不是返回了??

 

 

~USER的示例;

 

如果我们添加一个用户时,系统会添加一条用户纪录到/etc/passwd文件中,所以/etc/passwd 就是用户的管理文件;~USER中的USER是必须在/etc/passwd中“注册“的用户,这样在~USER中的USER才是有效的。怎么“注册“,当然是用户管理工具来添加用户了。关于用户管理工具,请参考:《Linux 用户管理工具介绍》

为了说明~USER的应用,我们首先添加一个新用户;

 

[root@localhost ~]# adduser linuxsirorg  注:添加linuxsirorg这个用户;
[root@localhost ~]# passwd linuxsirorg 注;为linuxsirorg 设置密码;
Changing password for user linuxsirorg. 
New UNIX password: 注:添加linuxsirorg用户密码
Retype new UNIX password: 注:再输入一次;
passwd: all authentication tokens updated successfully.注;添加用户成功;


[root@localhost ~]# finger linuxsirorg  注:查看linuxsirorg用户信息;
Login: linuxsirorg                      Name: (null)
Directory: /home/linuxsirorg            Shell: /bin/bash

注:我们看到新添加的用户家目录在/home/linuxsirorg;

 

~USER的示例;

比如我用root用户操作,并且处于/root目录中;我想进入linuxsirorg用户的家目录;

 

[root@localhost ~]# pwd
/root

[root@localhost ~]# cd ~linuxsirorg/   

注:进入linuxsirorg用户的家目录;其等效命令是cd /home/linuxsirorg;

[root@localhost linuxsirorg]# pwd  注:判断用户所处位置;
/home/linuxsirorg  

[root@localhost linuxsirorg]# cd ~root 注:等同于cd /root ,或等同行cd ~ ;表示返回root的家目录;

 


6、切换用户当前目录的指令 cd ;

用户从一个当前目录时入另一个目录的指令就是用cd ;我们在前面示例中大量应用过,在这里不再多说了;

用法:

 

#cd 路径

 

举例:

 

[root@localhost ~]# cd /usr/share/man/

 

更多的帮助,请参考 man cd 或cd --help


7、判断用户当前所处的工作目录的指令 pwd ;

pwd 指令用来显示用户当前所处的位置的,前面我们也说的很多。

示例:

[root@localhost man]# pwd 注;判断用户当前所处的目录;
/usr/share/man 注:位于/usr/share/man 中;

 


8、关于用户环境变量PATH的设置;

在一般情况下,Linux文件系统中bin或sbin目录中的文件都是可执行的。有时我们为了方便不输入路径就能调用指令或工具,这时要就要设置用户的环境变量PATH。

看下面的一例:

 

[root@localhost ~]# ls
adduml.sh  lsfile.sh  mkuml-2004.07.17  mkuml-2004.07.17-ananas.tar.bz2  mydir  openQreadme.txt  sun.txt  tmp  upgrade.log

[root@localhost ~]# /bin/ls
adduml.sh  lsfile.sh  mkuml-2004.07.17  mkuml-2004.07.17-ananas.tar.bz2  mydir  openQreadme.txt  sun.txt  tmp  upgrade.log

 

上面的例子,第一个指令就是直接运行了ls命令来显示当前目录下的文件和子目录;第二个条/bin/ls 指令是用绝对路径的ls来运行的;这两种方式运行的结果看来是一样的。

在论坛上,有些弟兄总是我已经安装了某某软件包,却没有某个指令。其实就是环境变量设置的事。如果您直接输入某个指令不存在,解决办法有两个,一个方法是要指定用可执行文件的绝对路径(也可以是相对路径,怎么方便怎么用吧),另一个方法是设定用户的环境变量。

我们可以用export PATH来设置环境变量。比如把下面一行加入到用户家目录下的.bashrc 或.profile文件中;

 

export PATH=".:/bin:/sbin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/X11R6/bin"

 

解释:您可以找出Linux文件系统中所有bin或sbin目录的的绝对路径,然后把它们用:号分割,比如上面所设置的。第一个.表示用户当前所处的目录;

添加好后,我们再运行一下source,也就是:

 

#source .bashrc 

#source .profile

 

如果发现指令只有root权限才运行,这时您要用到su; 如果您用的是普通用户,可能无权查看一些文件的目录的内容,您也需要用到su来切换身份;请参考:《Linux 系统中的超级权限的控制》

head+tail命令

 

4、head 工具,显示文件内容的前几行;

head 是显示一个文件的内容的前多少行;

用法比较简单;

 

head  -n  行数值  文件名;

 

比如我们显示/etc/profile的前10行内容,应该是:

 

[root@localhost ~]# head -n 10 /etc/profile

 


5、tail 工具,显示文件内容的最后几行;

tail 是显示一个文件的内容的前多少行;

用法比较简单;

 

tail   -n  行数值  文件名;

 

比如我们显示/etc/profile的最后5行内容,应该是:

 

[root@localhost ~]# tail  -n 5 /etc/profile

 

 

less命令

 

3、less 查看文件内容 工具;

less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大;您是初学者,我建议您用less。由于less的内容太多,我们把最常用的介绍一下;


3.1 less的语法格式;

 

less [参数]  文件

 

常用参数

-c 从顶部(从上到下)刷新屏幕,并显示文件内容。而不是通过底部滚动完成刷新;
-f 强制打开文件,二进制文件显示时,不提示警告;
-i 搜索时忽略大小写;除非搜索串中包含大写字母;
-I 搜索时忽略大小写,除非搜索串中包含小写字母;
-m 显示读取文件的百分比;
-M 显法读取文件的百分比、行号及总行数;
-N 在每行前输出行号;
-p  pattern 搜索pattern;比如在/etc/profile搜索单词MAIL,就用 less -p MAIL /etc/profile
-s 把连续多个空白行作为一个空白行显示;
-Q 在终端下不响铃;

 

比如:我们在显示/etc/profile的内容时,让其显示行号;

 

[root@localhost ~]# less -N    /etc/profile

 


3.2 less的动作命令;

进入less后,我们得学几个动作,这样更方便 我们查阅文件内容;最应该记住的命令就是q,这个能让less终止查看文件退出;

动作

回车键 向下移动一行;
y 向上移动一行;
空格键 向下滚动一屏;
b 向上滚动一屏;
d 向下滚动半屏;
h less的帮助;
u 向上洋动半屏;
w 可以指定显示哪行开始显示,是从指定数字的下一行显示;比如指定的是6,那就从第7行显示;
g 跳到第一行;
G 跳到最后一行;
p n% 跳到n%,比如 10%,也就是说比整个文件内容的10%处开始显示;
/pattern 搜索pattern ,比如 /MAIL表示在文件中搜索MAIL单词;
v 调用vi编辑器;
q 退出less
!command 调用SHELL,可以运行命令;比如!ls 显示当前列当前目录下的所有文件;

 

就less的动作来说,内容太多了,用的时候查一查man less是最好的。在这里就不举例子了;

more命令

 

2、more 文件内容或输出查看工具;


more 是我们最常用的工具之一,最常用的就是显示输出的内容,然后根据窗口的大小进行分页显示,然后还能提示文件的百分比;

 

[root@localhost ~]# more /etc/profile

 


2.1 more 的语法、参数和命令;

 

more [参数选项] [文件]

 

参数如下:
+num			从第num行开始显示;
-num			定义屏幕大小,为num行;
+/pattern  	从pattern 前两行开始显示;
-c			从顶部清屏然后显示;
-d			提示Press space to continue, 'q' to quit.(按空格键继续,按q键退出),禁用响铃功能; 
-l 			忽略Ctrl+l (换页)字符;
-p 			通过清除窗口而不是滚屏来对文件进行换页。和-c参数有点相似;  
-s				把连续的多个空行显示为一行;
-u				把文件内容中的下划线去掉

退出more的动作指令是q


2.2 more 的参数应用举例;

 

[root@localhost ~]# more -dc /etc/profile    注:显示提示,并从终端或控制台顶部显示;
[root@localhost ~]# more +4 /etc/profile      注:从profile的第4行开始显示;
[root@localhost ~]# more -4 /etc/profile      注:每屏显示4行;  
[root@localhost ~]# more +/MAIL /etc/profile     注:从profile中的第一个MAIL单词的前两行开始显示; 

 


2.3 more 的动作指令;

我们查看一个内容较大的文件时,要用到more的动作指令,比如ctrl+f(或空格键) 是向下显示一屏,ctrl+b是返回上一屏; Enter键可以向下滚动显示n行,要通过定,默认为1行;

我们只说几个常用的; 自己尝试一下就知道了;

Enter   	   向下n行,需要定义,默认为1行;
Ctrl+f  		向下滚动一屏;
空格键        		向下滚动一屏;
Ctrl+b		返回上一屏;
=		     		输出当前行的行号;
:f 	  		输出文件名和当前行的行号;
v		  		调用vi编辑器;
! 命令          		调用Shell,并执行命令;
q 				退出more 

当我们查看某一文件时,想调用vi来编辑它,不要忘记了v动作指令,这是比较方便的;


2.4 其它命令通过管道和more结合的运用例子;

比如我们列一个目录下的文件,由于内容太多,我们应该学会用more来分页显示。这得和管道 | 结合起来,比如:

 

[root@localhost ~]# ls -l /etc  |more

 

 

cat命令

 

1、cat 显示文件连接文件内容的工具;

cat 是一个文本文件查看和连接工具。查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名。

比如:

[root@localhost ~]# cat /etc/fstab

 

为了便于新手弟兄灵活掌握这个工具,我们多说一点常用的参数;


1.0 cat 语法结构;

 

cat [选项] [文件]...

 

选项
  -A, --show-all           等价于 -vET
  -b, --number-nonblank    对非空输出行编号
  -e                       等价于 -vE
  -E, --show-ends          在每行结束处显示 $
  -n, --number             对输出的所有行编号
  -s, --squeeze-blank      不输出多行空行
  -t                       与 -vT 等价
  -T, --show-tabs          将跳格字符显示为 ^I
  -u                       (被忽略)
  -v, --show-nonprinting   使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
      --help     显示此帮助信息并离开


1.1 cat 查看文件内容实例;

 

[root@localhost ~]# cat /etc/profile    注:查看/etc/目录下的profile文件内容;
[root@localhost ~]# cat -b /etc/fstab   注:查看/etc/目录下的profile内容,并且对非空白行进行编号,行号从1开始;
[root@localhost ~]# cat -n /etc/profile    注:对/etc目录中的profile的所有的行(包括空白行)进行编号输出显示;
[root@localhost ~]# cat  -E /etc/profile     注:查看/etc/下的profile内容,并且在每行的结尾处附加$符号;

 

cat 加参数-n 和nl工具差不多,文件内容输出的同时,都会在每行前面加上行号;

 

[root@localhost ~]# cat -n /etc/profile
[root@localhost ~]# nl  /etc/profile

 

cat 可以同时显示多个文件的内容,比如我们可以在一个cat命令上同时显示两个文件的内容;

 

[root@localhost ~]# cat /etc/fstab /etc/profile

 

cat 对于内容极大的文件来说,可以通过管道|传送到more 工具,然后一页一页的查看;

 

[root@localhost ~]# cat /etc/fstab /etc/profile | more

 


1.2 cat 的创建、连接文件功能实例;


cat 有创建文件的功能,创建文件后,要以EOF或STOP结束;

 

[root@localhost ~]# cat >  linuxsir.org.txt  << EOF  注:创建linuxsir.org.txt文件; 
> 我来测试 cat 创建文件,并且为文件输入内容;       注:这是为linuxsir.org.txt文件输入内容;
> 北南南北 测试;                   注:这是为linuxsir.org.txt文件输入内容;
> EOF   注:退出编辑状态;

[root@localhost ~]# cat linuxsir.org.txt  注:我们查看一下linuxsir.org.txt文件的内容;

我来测试 cat 创建文件,并且为文件输入内容;
北南南北 测试;

 

cat 还有向已存在的文件追加内容的功能;

 

[root@localhost ~]# cat  linuxsir.txt 注:查看已存在的文件linuxsir.txt 内容;
I am BeiNanNanBei From LinuxSir.Org .    注:内容行 
我正在为cat命令写文档


[root@localhost ~]# cat >> linuxsir.txt << EOF   注:我们向linuxsir.txt文件追加内容; 
> 我来测试cat向文档追加内容的功能;       注:这是追回的内容
> OK?
> OK~
> 北南 呈上
> EOF   注:以EOF退出;


[root@localhost ~]# cat linuxsir.txt  注:查看文件内容,看是否追回成功。
I am BeiNanNanBei From LinuxSir.Org .
我正在为cat命令写文档

我来测试cat向文档追加内容的功能;   
OK?
OK~
北南 呈上



cat 连接多个文件的内容并且输出到一个新文件中;

 

假设我们有sir01.txt、sir02.tx和sir03.txt ,并且内容如下;

 

[root@localhost ~]# cat sir01.txt   
123456
i am testing

[root@localhost ~]# cat sir02.txt
56789
BeiNan Tested

[root@localhost ~]# cat sir03.txt
09876
linuxsir.org testing

 

我想通过cat 把sir01.txt、sir02.txt及sir03.txt 三个文件连接在一起(也就是说把这三个文件的内容都接在一起)并输出到一个新的文件sir04.txt 中。

注意:其原理是把三个文件的内容连接起来,然后创建sir04.txt文件,并且把几个文件的内容同时写入sir04.txt中。特别值得一提的是,如果您输入到一个已经存在的sir04.txt 文件,会把sir04.txt内容清空。

 

[root@localhost ~]# cat sir01.txt sir02.txt sir03.txt > sir04.txt

[root@localhost ~]# more sir04.txt
123456
i am testing
56789
BeiNan Tested
09876
linuxsir.org testing

 

cat 把一个或多个已存在的文件内容,追加到一个已存在的文件中

 

[root@localhost ~]# cat sir00.txt
linuxsir.org forever

[root@localhost ~]# cat sir01.txt sir02.txt sir03.txt >> sir00.txt

[root@localhost ~]# cat sir00.txt
linuxsir.org forever
123456
i am testing
56789
BeiNan Tested
09876
linuxsir.org testing

 

警告:我们要知道>意思是创建,>>是追加。千万不要弄混了。造成失误可不是闹着玩的;

修改Ubuntu下Chrome的字体

新版的Chrome无法修改全部字体,

随着浏览器更新到10.0版,设置界面完全推倒重来,由对话框变成了页面。但是引入了一个大问题:修改默认字体的时候,对大多数网站不起作用了!我自己遇到此问题的时候,在论坛上搜索了一下,发现中招的人好多。初步观察结果,是仅对在meta标签里指定了charset=gbk的网页起作用,其他网页一律还是难看得要死的楷体。

 

浏览器关闭的状态下,打开~/.config/google-chrome(如果是chromium的话目录名就是chromium)/Default/Preferences文件,翻到最后,看这一段
 
"webkit": {
"webprefs": {
"default_fixed_font_size": 16,
"default_font_size": 16,
"fixed_font_family": "Sans",
"minimum_font_size": 12,
"sansserif_font_family": "Sans",
"serif_font_family": "Sans",
"uses_universal_detector": true
}
}
 
 
红色的就是指示浏览器默认字体的部分。老版本的chrome/chromium里,你在界面里选好字体后,这四行会自动生成,但是在10.0里,浏览器无法自动设置sansserif_font_family字体,需要手动添加这一行。如果你的配置文件中缺少了其他行的话,也给他加上,保存并重启浏览器,这个该死的字体就变过来了。