Linux#1 常用命令用户篇

关注本公众号,一天一个知识点,持续精进!

碎片时间|体系学习

今天是

2018年的第162

137篇原创

00、为什么要掌握Linux常用命令?

在“云”、“大”、“物”、“移”技术发展的今天,Linux操作系统已经作为基础设施的存在,无论是软件开发活动中所涉及的日常操作、工具软件/中间件安装、Shell脚本开发等,还是涉及项目上线、运维等,这些都离不开Linux环境。

可以毫不夸张的说,Linux命令与Shell编程是程序员必须要掌握的基本技能。

01、快速入门

1 Shell是什么?

如果我们把Linux操作系统比作汽车,那么Shell可以理解为汽车上的操纵杆和按钮;简言之,Shell能提供对Linux系统的交互式访问的能力。

由于历史发展的原因,Linux提供了多种Shell,比如bash、csh等;每位Linux操作系统的用户在被创建的时候都会被配置使用一种Shell,并将其配置信息写入/etc/passwd文件中。该文件以行记录格式存储内容,其典型格式如下:

该行内容以冒号( : )作为分隔符,包括7个字段:

用户名

用户密码,密码内容存放在其他文件,此处为占位符

用户ID(UID)

组ID(GID)

用户的备注信息

用户的家目录(存放用户数据路径)

用户的默认Shell类型(本例中为bash shell)

默认情况下,bash shell启动时会自动执行用户家目录下的.bashrc文件中文件中的命令(用户个性化的设置、常用命令路径、开发环境如JAVA_HOME设置均可预置在该文件中);如果要对Linux系统所有用户共用的环境变量进行设置,可编辑/etc/bashrc文件。

2 Linux文件系统

Linux将文件存储在单个目录结构中,这个目录被称之为虚拟目录。虚拟目录包含了安装在PC上的所有存储设备的文件系统,并将其并入到一个目录结构中。Linux虚拟机目录结构包含了一个称为根(/)目录的基础目录。根目录下的目录和文件会按照访问它们的目录路径一一列出。

注意:Linux的"/"与Windows的"\"

Linux使用正斜线(/)而不是反斜线(\)在文件路径中划分目录。在Linux中反斜线用来标识转义字符,所以如果在文件路径中使用会导致问题。如果你是Windows的重度用户,需要一点时间来适应这种变化。

如下是典型的Linux文件路径:

Users目录挂接在根目录(/)下;friendfb目录位于/Users目录下,Development目录位于friendfb目录下,rabbitMQ目录则位于Development目录中。(这一点一定要与我们在Windows下的分区磁盘区分开来)。

当用户启动一个新的shell控制台中断时,默认会从用户的家目录开始。在Linux系统中可以采用绝对文件路径相对文件路径来标识一个文件/目录的位置。

所谓绝对文件路径定义了在虚拟目录结构中该目录的确切位置,以虚拟目录的根目录开始,相当于目录的全名。如上例就是一个绝对文件路径的典型示例。但是,使用绝对路径往往会显得过于冗长,相对路径可以有效解决该问题。

相对文件路径允许用户指定一个基于当前位置的目标文件路径,而无需再从根目录开始。相对文件路径不以代表根目录/开头,而是以目录名或一个表示基于用户当前目录的相对位置的特殊字符或以上组合开始。有两个特殊字符:

单点符(.),表示当前目录

双点符(..),表示当前目录的父目录

02、常用目录与文件命令

(1)cd —— 切换目录

格式:cddestination

用途:destination为空时,将会切换到用户家目录;destination可以是绝对路径,也可以是相对路径,其作用均为切换到相应的目录。

(2)ls —— 罗列文件、目录

格式:ls[opt]destination

用途:destination为空时,将会罗列当前目录下的所有文件与目录;destination可以是绝对路径,也可以是相对路径,其作用为罗列相应目录下的文件与目录。我们常用ls -l命令查看目录的详细信息,如下例:

上述输出信息的第一行显示了目录中所包含的块的总数,后面每一行中列出了单个文件或目录的详细信息:

文件类型;目录(d),文件(-),字符型文件(c)、块文件(b)

文件的权限;r为只读,w为可写,x为可执行,-标识无相应权限;共9个字符分3组;第一组是owner拥有者的对该文件或目录的权限;第二组为group同组用户的权限;第三组为other其他组用户的权限;rwxr-xr-x则表示拥有者具有读写执行权限,同组用户具有读执行权限,其他组用户具有读执行权限。

(3)touch —— 创建文件

格式:touchfilename

用途:如果当前目录下filename不存在,则创建一个文件名为filename的空文件;此外,如果filename已经存在,执行该命令后可用来改变文件的访问时间和修改时间,而不改变文件的内容。

(4)cp —— 复制文件/目录

格式:cpsource destination

用途:实现将文件和目录从一个位置复制到另外一个位置;-R选项参数可递归的复制目录。

(5)ln —— 连接文件/目录

格式:lnsource destination

用途:会创建一个destination链接文件,并且会链接到实体文件source。

注意:如果你用cp命令复制一个链接文件时,那么你复制的其实是源文件的另外一个副本,而不是链接文件。此外,不建议用链接文件去链接另外一个链接文件;-s选项会创建一个软链接。

注意:硬链接与软链接

硬链接文件采用和源文件相同的索引节点号。硬链接会一直维持这个索引节点号来保留数据,直到删除了最后一个硬链接它的文件。也就是说即使删除了源文件,硬链接文件任然能访问源文件的内容;但是,如果删除了软链接所指向的源文件,那么该软链接就成为了一个坏链,无法访问任何数据。

(6)mv —— 重命名文件/目录

格式:mvnamenewName

用途:将文件和目录移动到另外一个位置。

注意:移动文件会改变文件名,但保持同样的索引节点号和时间戳;移动一个有软链接指向它的文件会出现“链接断链”的情况。

(7)rm —— 删除文件/目录

格式:rmname

用途:删除特定位置的文件或目录

注意:该命令一旦执行生效,不会将文件放入回收站,而是直接彻底删除无法恢复;当要删除目录时,请使用-r选项或使用rmdir命令;如果你要删除很多文件而不想收到很多提示,可以使用-f选项进行强制删除;最后,shell中的很多命令参数都支持通配符,对于rm命令一定要格外小心。

(8)mkdir —— 创建目录

格式:mkdirname

用途:创建新目录

(9)stat —— 查看文件统计信息

格式:statname

用途:查看操作系统上某个文件的所有状态信息。

(10)file —— 查看文件类型

格式:filename

用途:stat命令的功能很强大,但是没有提供文件类型信息。file命令能提供文件类型信息。在Linux中包括了以下文件类型:

文本文件:包含可打印字符的文件。

可执行文件:可在系统上运行的文件。注意:Windows上可运行的目标文件无法在Linux上运行,需要通过移植开发工作后才可以。

数据文件:包含不可打印二进制字符、又不能在系统上运行的文件。

(11)cat —— 查看整个文件

格式:catname

用途:显示文件内容;-n选项会给内容显示行号;如果只想给有文本的行加上行号可使用-b选项。

(12)more —— 分页查看文件

格式:morename

用途:显示文本内容,但会在显示每页数据之后停下来。

(13)tail —— 显示文末内容

格式:tailname

用途:显示文件末尾部分的内容。默认情况下它会显示文件的末尾10行。该命令用于实时监控日志信息比较有用。

(14)head —— 显示文首内容

格式:headname

用途:显示文件首部的内容。默认情况下它会显示文件的首部10行。该命令无需加载全部文件,用于不知道文件内容而想知道大致内容的场景。

03、小结

综上,本文对Shell基础及其常用的文件/目录操作命令进行了介绍。一方面是为后续更多的高级命令进行热身,另外一方面也为后续的shell编程实战奠定基础。下一篇我们将对更多的常用的高级命令进行介绍,敬请期待。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180611B07CTW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券