Linux命令行与shell脚本编程大全(二)

2021/12/2 7:10:17

本文主要是介绍Linux命令行与shell脚本编程大全(二),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

第三章、基本的bash shell命令

  3.1  启动shell

  GNU bash shell能提供对Linux系统的交互式访问。它是作为普通程序运行的,通常是在用户登陆终端时启动。登录时系统启动的shell依赖于用户账户的配置。

  /etc/passwd文件包含了所有系统用户账户列表以及每个用户的基本配置信息。

  3.2  shell提示符

  默认bash shell提示符是美元符号($)。

  3.3  bash 手册

  大多数Linux发行版自带用以查找shell命令及其他GNU工具信息的在线手册。

  man命令用来访问存储在Linux系统上的手册页面。在想要查找的工具名称前面输入man命令,就可以找到那个工具相应的手册条目。

 

  3.4  浏览文件系统

  3.4.1  Linux文件系统

  Linux在路径名中不使用驱动器盘符。在Windows中,PC上安装的物理驱动器决定了文件的路径名。Windows会为每个物理磁盘驱动器分配一个盘符,每个驱动器都会有自己的目录结构,以便访问存储中的文件。

  Linux采用了一种不同的方式。Linux将文件存储在单个目录结构中,这个目录被称为虚拟目录。虚拟目录将安装在PC上的所有存储设备的文件路径纳入单个目录结构中。

  Linux虚拟目录结构只包含一个称为根(root)目录的基础目录。

 

 

 

  3.5  文件和目录列表

 

   要想知道系统中有哪些文件,可以使用列命令(ls)。本节将描述ls命令和可用来格式化其他输出信息的选项。

  3.5.1  基本列表功能

  ls命令最基本的形式会显示当前目录下的文件和目录:

 

 

   注意:ls命令输出的列表是按字母排序的。如果用户用的是支持彩色的终端仿真器,ls命令还可以用不同的颜色区分不同类型的文件。LS_COLORS环境变量控制着这个功能。

  -F参数在目录后面加了正斜杠(/),以方便用户在输出中分辨它们。类似地它会在可执行文件的后面加个星号,以便用户找出可在系统上运行的文件。

  要把隐藏的文件和普通文件及目录显示出来,就得用到-a参数。

 

 

   -R参数是ls命令可用的另一个参数,叫做递归选项。它列出了当前目录下包含的子目录中的文件。

 

 

 

 窍门:选项不一仅可以像例子中那样分开输入,它们可以进行如下合并:ls -FR。

  3.5.2  显示行列表

  在基本的输出例表中,要附加信息,常用的参数 -l。-l参数会产生长列表格式的输出,包含了目录中每个文件的更多相关信息。

  

 

 

 

  每一行包含文件或目录的下述信息:

  •   文件类型,比如目录(d)、文件(-)、字符型文件(c)、或块设备(b);
  •   文件的权限;
  •   文件的硬链接总数;
  •   文件属主的用户名;
  •   文件属组的组名;
  •   文件的大小(以字节为单位);
  •   文件的上次修改时间;
  •   文件名或目录名。

  3.5.3   过滤输出列表

  ls命令支持在命令行中定义过滤器。过滤器就是通过一个简单文本匹配的字符串。可以在要用到的命令行参数之后添加这个过滤器:

  当用户指定特定文件的名称作为过滤器时,ls命令只会显示文件信息。ls命令能够识别的标准通配符,并在过滤器中用到它们进行模式匹配:

  •   问号(?)代表一个字符;
  •   星号(*)代表零个或多个字符

  在过滤器中使用星号和问号被称为文件扩展匹配(file globbing),指的是使用通配符进行模式匹配的过程。通配符正式的名称叫做元字符通配符(metacharacter wildcards)。除了星号和问号之外,还有更多的元字符通配符可用于文件扩展匹配。可以使用中括号。

  3.6  处理文件

  3.6.1  创建文件

  使用touch命令,可创建空文件

 

 

   ls -l命令,并不会显示访问时间。因为默认显示的是修改时间。要想查看文件的访问时间,需要加入另一个参数:--time=atime.

 

 

 

   3.6.2  复制文件

  cp命令。最基本的用法里,cp命令需要两个参数——源对象和目标对象:

  cp source destination

  当source和destination参数都是文件名时,cp命令将源文件复制成一个新文件,并且以destination命名。新文件就像全新的文件一样,有新的修改时间。

 

 

   如果目标文件已存在,cp命令不会提醒。最好是加上-i选项,强制shell询问是否需要覆盖文件。

 

 

   新文件出现在目录documents中,和源文件相同。

 

 

   单点符(.)表示当前目录。单点符能够简化任务。

  cp命令的-R参数威力强大。可以用它在一条命令中递归地复制整个目录的内容。

  

 

 

 

  也可以在cp命令中使用通配符。

  3.6.3  制表键自动补全

  在使用命令行时,很容易输错命令、目录名称或文件名。实际上,对长目录名或文件名来说,出错率很高,制表键自动补全允许你在输入文件名或目录名时按一下制表键,让shell帮忙将内容补充完整。

  3.6.4  链接文件

  链接文件时Linux文件系统的一个优势。在系统上维护同一文件的备份,除了保存多份单独的物理文件副本之外,还可以采用保存一份物理文件和多个虚拟副本的方法。这种虚拟的副本就叫做链接。链接是目录中指向文件真实位置的占位符。在Linux中有两种不同类型的文件链接:

  •   符号链接
  •   硬链接

  符号链接就是实实在在的文件,它指向放在虚拟目录结构中某个地方的另一个文件。两个通过符号链接在一起的文件,彼此的内容并不相同。

  要为一个文件创建符号链接,原始文件就必须事先存在。然后可以使用ln命令以及-s选项来创建符号链接。

 

 

 

 

   注意符号链接的名字sl_data_file位于ln命令中的第二个参数位置上。显示在长列表中符号文件名后的->符号表明该文件是链接到文件data_file上的一个符号链接。

  另外还要注意的是,符号链接的文件大小与数据文件的文件大小不同。它们的内容并不相同,是两个完全不同的文件。

  另一种方法,查看文件的inode编号。文件或目录中的inode编号是一个用于标识的唯一数字,这个数字由内核分配给文件系统中的每一个对象。

 

 

   硬链接会创建独立的虚拟文件,其中包含了原始文件的信息信息和位置。但是它们从根本上是同一个文件。

 

 

 

   3.6.5   重命名文件

  在Linux中,重命名文件称为移动(moving)。mv命令可以将文件和目录移动到另一个位置或重新命名。

 

 

   注意:移动文件将会将文件fall重命名,但inode编号和时间戳保持不变。这是因为mv只影响文件名。也可使mv来移动文件的位置。

  3.6.6  删除文件

  在Linux中,删除(deleting)叫作移除(removing)。bash shell中删除文件的命令是rm。rm命令的基本格式非常简单。

 

 

   注意:-i命令参数提示你是不是要真的删除该文件。bash shell中没有回收站或垃圾箱,文件一旦删除,就无法找回。因此,在使用rm命令时,要养成加入-i参数的好习惯。

  也可使用通配符删除成组的文件。

 

 

   rm命令的另一个特性:如果删除文件时不受提示符的打扰,可以用-f参数强制删除。

  3.7  处理目录

  3.7.1  创建目录

  在Linux中创建目录很简单,用mkdir命令即可:

  

 

 

   可以根据需求批量地创建目录和子目录。想要同时创建多个目录和子目录,需要加入-p参数:

 

 

   3.7.2  删除目录

  删除目录的基本命令是rmdir

  

 

 

   默认情况下,rmdir命令只删除空目录。因为我们在New_Dir目录下创建一个名为my_file,所以rmdir命令拒绝删除目录。

  一般需要删除目录中的内容,在空目录上使用rmdir命令。

  使用-r选项使得命令可以向下进入目录,删除其中的文件,然后删除目录本身。

 

 

  

 

 

   rm -rf命令既没有警告信息,也没有声音提示。这肯定是一个危险的工具,尤其是在拥有超级用户权限的时候。务必谨慎使用,请检查你所要进行的操作是否符合预期。

  3.8  查看文件内容

  3.8.1 查看文件类型

  在显示文件内容之前,应该先了解一下文件类型。file命令可以查看文件类型。

  

 

 

   file命令可以作为区分目录、链接文件、脚本文件、二进制程序

 

 

   3.8.2  查看整个文件

  1.cat命令

  参数:

    -A,  --show-all

      equivalent to -vET

    -b,  --number-nonblank

      number nonempty output lines

    -e,   equivalent to -vE

    -E,  --show-ends

       display $ at end of each line

    -n,  --number

       number all output lines

    -s,  --squeeze-blank

        suppress repeated empty output lines

    -t        equivalent to -vT

    -T ,  --show-tabs

       display TAB characters as ^I

    -u     (ignore)

    -v,  --show-nonprinting

        use ^ and M- notation,except for LFD and TAB

    --help display this help an exit

    --version 

       output version information and exit

  2.more命令

  more命令会显示文本文件内容,但会在显示每页数据之后停下来。

  3.less命令

  less 是 more 命令的升级版。

  3.83  查看部分文件

  1.tail命令

  tail命令会显示文件最后几行的内容。默认情况下,它会显示文件的末尾10行。

  -n 参数, 允许tail命令加入-n参数来修改所显示的行数

  -f  参数, tail命令会保持活动状态,并不断显示添加到文件中的内容

  2.head命令

  会显示文件开头那些行的内容。默认情况下,它会显示文件前10行的文本

  -n 参数, 允许head命令加入-n参数来修改所显示的行数

 

 

 

 

 



这篇关于Linux命令行与shell脚本编程大全(二)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程