【Linux原理】第三章目录和文件管理(一)

时间:2020-11-27 05:21:51

“命令”严格一点来说,通常只代表了实现某一类功能的指令或程序的名称。

一、Linux命令的执行必须依赖于shell命令解释器,它位于操作系统内核与用户之间,负责接收用户输入的命令并进行解释,将需要执行的操作传递给系统内核执行,充当翻译官的角色。

BashLinux系统中默认使用的shell程序,文件位于/bin/bash。根据Linux命令和shell程序的关系,一般分为以下两种类型:

→内部命令:指的是集成与shell解释器程序内部的一些指令。

→外部命令:指的是属于shell解释器之外的命令。其使用方法基本上是一致的。

二、Linux命令行的格式。通用的命令行格式是:

命令字  [选项]  [参数]

中间以空格分开,多余的空格将被忽略。

1、命令字:即命令的名称,区分大小写,操作时需要细心。

2、选项:调节命令的具体参数,是一个功能选项,决定这条命令如何执行,有如下一些特性:

不同的命令字,其能够使用的选项也不相同(就算字符相同意思也不相同)。

→选项的数量可以是多个,有时也可以省略(使用缺省默认功能)。同时使用多个选项,选项之间用空格分隔。

→使用单个字符的选项时,一般在选项前使用横杠“-”符号引导。称为短格式选项,也可以组合在一起使用。

→使用多个字符的选项时,一般在选项前面加“--”引导,称为长格式选项。如--help或者--color

3参数:命令字的处理对象,通常情况下命令参数是文件名、目录名或用户名等内容。可以使用一下几个辅助操作提高效率:

tab键:自动向后补齐不完整的命令。按两次系统会输出可用列表。

→反斜杠“\”:强制换行,下一行出现的“>”提示符后继续输入

→快捷键Ctrl+U删除当前光标之前的所有字符内容。

→快捷键Ctrl+K删除当前光标之后的所有字符内容。

→快捷键Ctrl+L快速清空当前屏幕中的显示内容。

→快捷键Ctrl+C取消当前命令行的编辑。

三、获得Linux的命令帮助。

1、使用help命令。其用途是查看各shell内部命令的帮助信息。例如“help pwd”命令可以查看shell内部命令pwd的帮助信息。

例如ls --help用于显示对应命令字的格式及选项等帮助信息。

2、使用man手册页。比如执行man file命令用于判断文件的类型。

在阅读man手册页时将以全屏幕的文本方式显示,并且提供了交互式的操作环境可以往上翻页。如果需要将man手册页的内容保存到文本文件以便在其他系统中查看,可以结合col命令去除手册页中的格式控制字符,并将显示结果保存为新的文件。例如:

[root@lisi ~]#man ls | col -b > lshelp.txt表示将ls命令的帮助手册保存为文本文件lshelp.txt文件。

col是一个命令程序,用于过滤文本中的一些特殊控制字符。

→管道符号“|”:用于将前面命令的输出结果作为后面命令的操作对象(输入),就好像一根管道一样。

→重定向输出:使用大于符号“>”表示,前面命令执行以后,其屏幕输出结果将保存到“>”后面指定的文件中,但是如果原来有这个文件那么文件内容将会被覆盖。另外使用“>>”追加符号,是在文件后面附加信息,不会覆盖原来的信息。

四、目录和文件的基本操作。

1、pwd命令----查看当前的工作目录(print working directory)。

2、Cd命令----切换工作目录(change directory默认将切换到当前用户的宿主目录(家目录)Linux用户登录系统后的默认目录。根据其起始的参照目录不同,可以分为两种不同的形式:

→绝对路径:以根目录“/”作为起点,为了明确表明所要达到的是一个目录可以在后面加上一个目录分隔符“/”。

→相对路径:这种方式一般以当前工作目录作为起点,在开头不使用“/”符号,主要有以下几种形式:

直接使用目录名或文件名,表示当前目录中的子目录或文件位置。

使用一个“.”开头,明确表示以当前的工作目录作为起点。

使用两个“..”开头,表示以当前目录的上一级目录作为起点。

使用“~用户名”的形式开头,指定用户的宿主目录作为起点。

另外使用cd -表示返回原来所在的目录

3、ls命令----列表(list)显示目录内容。

Ls主要用于显示目录中的内容,包括子目录和文件的相关属性信息等。下面列出几个比较常用的选项参数:

 -l以长格式(long)显示文件和目录的列表,以及详细信息。不使用时默认将以短格式进行显示。

 -a显示所有(all自目录和文件的信息,包括以“.”开头的隐藏目录和隐藏文件。

 -A-a的作用基本类似,但是.”“..”的隐藏目录将不显示。

 -d显示目录(directory)本身的属性,而不是目录内容。

 -h以更人性化(human)的方式显示文件或目录的大小,需要结合-l一起使用。

 -R以递归(recursive)方式显示指定目录及子目录中的内容。

 --color在字符模式中使用颜色区分不同的文件,一般是这样的:

   深蓝色表示目录(类型用“d”表示)。

   白色表示一般文件(用“-”表示)。

   青蓝色链接文件(用l表示)。

   绿色表示可执行的文件一般在/bin/sbin目录下

       ***表示设备文件/dev目录下)(一般bc表示)b表示的是物理设备;c表示的是字符终端设备.

   红色表示压缩文件。

      粉红色:图片文件或是socket文件(用s表示)

      青***:管道文件 (用p表示)

同时查看多个文件的信息可以在中间使用空格键分开。

另外ls还可以结合通配符“?”或“*”以提高命令编写效率。对于经常使用的比较长的命令行,可以通过alias别名机制进行简化例如:

[root@lisi ~]# alias eth0='vi /etc/sysconfig/network-scripts/ifcfg-eth0'在等于号“=”后面是进入vi编辑器对eth0网卡进行配置的意思;前面是给后面这一长串命令创建一个简单明了的别名,下次使用时只要输入“eth0”别名就等同于执行后面的操作。单独执行alias时,将显示当前用户环境中已经定义的别名列表。

4、du命令----统计目录及文件的空间占用情况(disk usage)。

 -a:表示统计磁盘空间占用时的所有文件,不仅仅只是目录。

 -h:以更人性化的方式显示统计结果,会显示KM等单位。

 -s:只统计每个参数所占用空间的(summary)大小而不是统计每个子目录文件的大小。

结合-sh选项可以统计文件夹内所有文件总共占用的空间大小,并且进行友好显示。

结合-ah选项可以查看所有文件和子目录所占用的空间大小。

五、创建目录和文件。

1、mkdir命令----创建新的目录(make directory)。

用于创建一个空目录,使用创建的目录位置作为参数(可以有多个)。如果需要一次性创建嵌套的多层目录,必须结合“-p”选项。

2、touch----创建空文件,可以同时创建多个文件。例如:

[root@lisi benet]# touch huamulan.rmvb nazhanaohai.mp4

另外一种方法是使用vi编辑器直接创建文件以及输入文件内容。例:

[root@lisi benet]# vi aaa.txt在当前目录下就会自动创建文件aaa

还有一种方法是使用命令echo创建。

[root@lisi benet]# echo 111> "bbb.txt"创建文件bbb.txt内容111

3、ln命令----创建链接(Link)文件,类似与快捷方式。提高用户定位文件或目录的效率,分为软连接和硬链接两种类型。

软链接与硬链接之间的区别在于:软连接删除原始文件后将失效,但硬链接仍旧可用;软链接适用于文件或目录,硬链接只可用于文件。

使用ln命令时,默认创建的是硬链接,在创建软链接时必须结合“-s”而且他们的节点会不相同,文件都是以节点的形式存在的。例如:

[root@lisi benet]# ln -s aaa.txt 111.txt表示建立aaa.txt的软链接。

[root@lisi benet]# ls -i 111.txt  查看软链接111.txt的节点ID

六、复制、删除、移动目录和文件。

1、Cp命令----复制(copy)文件或目录。基本使用格式如下:

cp   [选项]…   源文件或目录…  目标文件或目录…

需要复制多个文件或目录时,目标位置必须是目录,而且必须已经存在,cp常用的几个选项如下所示:

 -f:覆盖目标文件或者目录时不进行提醒,强制(force)复制。

 -i:覆盖时提醒用户确认(interactive,交互式)。

 -p:复制时保持源文件的权限,属主及时间标记等属性不变。

 -r:复制目录时必须使用此选项,表示递归复制所有文件及目录。

[root@lisi ~]# cp -r ./benet /etc/表示将当前目录的benet目录复制到根目录下面的etc目录里面。

2、rm命令----删除(remove)文件或目录。注意删除的文件难以恢复,使用目录或文件名作为参数。常用的几个选项如下所示:

 -f:删除目标文件或者目录时不进行提醒,强制(force)删除。

 -i:删除文件或目录时提醒用户确认。

 -r:删除目录时必须使用此选项,表示递归删除整个目录树。

通常是使用 rm -rf 加文件”结合使用。例如:

[root@lisi etc]# rm -rf benet表示强制删除本目录下的benet目录。

3、mv命令----移动(move)文件或目录。相当于剪切和粘贴。如果目标位置与源位置相同,则效果相当于为文件或目录改名。格式:

mv   [选项]…   源文件或目录…  目标文件或目录…

需要移动多个文件或者目录时,目标位置必须是目录,而且已经存在。移动时只要输入目标目录的位置就可以了。原始位置将消失。

七、查找目录和文件及其它参数。

1、which命令----查找Linux命令文件并显示所在的位置。其搜索范围主要由用户的环境变量PATH决定(可以执行etho $PATH命令查看),这个范围也是Linux系统在执行命令或程序时的默认搜索路径。此查找环境中还包括用户环境中所设置的命令别名。若希望在所有路径中查找,可以添加“-a”选项。注意此处只能查找命令字。而且shell内置命令没有对应的程序文件如cd,因此which找不到内置命令。

2、Find命令----查找文件或目录,在查找时使用递归的方式,使用形式相当灵活,格式用法如下:

find   [查找范围]    [查找条件表达式]

较常用的几种查找条件类型如下所示: 

 按名称查找:关键字-name根据名称进行查找。

[root@lisi ~]# find /etc -name ifcfg-eth0表示在etc里面查找名称为ifcfg-eth0的文件。

 按文件大小查找:关键字为-size根据目标的文件大小查找。

[root@lisi ~]# find -size +53k加号的意思是53k以上的意思。

 按文件属主查找:关键字为-user根据是否属于目标用户来查找。

 按文件类型查找:关键字为-type根据文件类型进行查找。普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等。块设备的意思是成块读取数据的设备(如硬盘、内存等),字符设备是指单个字符读取数据的设备(如键盘、鼠标等)。

另外如果使用通配符“*”“?”时最好用双引号把文件名括起来。如:

[root@lisi ~]# find -type d -name "ben*"前面表示查找所有类型为目录(d)的文件;后面意思是目录名称前面是“ben”的所有文件。

find: 路径必须在表达式之前,例如:下面这个格式

[root@lisi ~]# find /etc -name "*.conf" | wc -l还可以结合管道符号使用。后面是表示显示行数的意思。

 

附件下载地址:http://down.51cto.com/data/2042388

本文出自 “青鸟技术团@威” 博客,请务必保留此出处http://zhang2015.blog.51cto.com/9735109/1651797