计算机基础知识——Linux命令简介

1、Linux操作系统基础知识

    在了解linux命令之前,我们先了解一点基本概念。

1.1、操作系统概念

    操作系统(operating system 简称OS)是一个大型的程序系统,他负责计算机的全部软、硬件资源的分配、调度工作,控制并协调多个任务的活动,实现信息的存取和保护。他提供用户接口,使用户获得良好的工作环境。(简单来说:就是有效率的控制硬件资源的分配和提供一整组系统呼叫接口)。

    操作系统的核心层直接参考硬件规格写成,所以同一个操作系统程序也能够在一样的硬件架构下运作。举例来说,个人计算机版的 Windows XP 也能直接在 RISC 架构的计算机下运作。

    操作系统只是在管理整个硬件资源,包括 CPU、内存、输入输出装置及文件系统文件。 如果没有其他的应用程序辅助,操作系统也只能让计算机主机准备妥当而已!

    应用程序的开发都是参考操作系统提供的开发接口, 所以该应用程序只能在该操作系统上面运作而已。

1.2、操作系统应具备的核心功能

(1)系统呼叫接口

(2)进程管理

(3)内存管理

(4)文件系统管理

(5)设备管理(装置的驱动)

1.3、Linux操作系统分类

   ​ Linux是Unix克隆的操作系统,在源代码上兼容绝大部分Unix标准,是一个支持多用户、多进程、多线程、实时性较好的且稳定的操作系统。

   ​ Linux由于是开源的操作系统,所以它的程序代码可以被修改成适合在各种机器上面运行的代码。也就是说,Linux是具有『可移植性』。

   ​ 在Linux生态中,发行版本很多,Linux发行版本按性质划分可分为两类:商业维护版、社区开源版。主流的Linux服务器有Red Hat、Oracle Linux、CentOS、Debian、Ubuntu等等。

  ​ 1)Redhat【红帽】 培训、学习、应用、知名度最高的Linux发行版本,对硬件兼容性来说也比较不错,版本更新很快,对新硬件和新技术支持较好;

  ​ 2)Debian【蝶变】 社区版的Linux来说是较好的,文档和资料较多,尤其是英文的。但在国内的占有率有一定的局限性。

  ​ 3)SuSe【苏C】 最华丽的Linux发行版,X windows和程序应用方面做的确实不错。尤其与Microsoft的合作关系,应该是在所有的Linux发行版本中最亲密的。

  ​ 4)Ubuntu【乌班图】 主要指Server版本,强项就是其desktop版,应用较广泛。

  ​ 5)Centos 【圣斗士】这个发行版主要是Redhat企业版的社区版,基本上跟redhat是兼容的,相对来说局限性教少。很多人都喜欢使用。

  ​ 6)Fedora【菲朵拉】发布于2003年年末,而FC的定位便是桌面用户。FC提供了最新的软件包,同时它的版本更新周期也非常短,仅有6个月。由于版本更新频繁,性能和稳定性得不到保证,因此一般在服务器上不推荐采用Fedora对于用户而言,是一套功能完备、更新迅速的免费操作系统,因此,个人领域的应用,例如开发、体验新功能等可选择此发行版本。

  ​ 7)其他gentoo、mandriva、Slackware、redflag【红旗】等等,虽然各自均有特点,但市场占有率和应用相对较少。

1.4、Linux操作系统的发展

   ​ 单用户操作系统:指一台计算机在同一时间,只能由一个用户使用,一个用户独自享用系统的全部硬件和软件资源;Windows XP 之前的版本都是单用户操作系统。

   ​ 多用户操作系统:指一台计算机在同一时间可以由多个用户使用,多个用户共享系统的全部硬件和软件资源。

   ​ Unix和Linux的设计初衷就是多用户操作系统。

  • linux发展史

年份 事件
1965 贝尔实验室加入了麻省理工学院以及通用电气合作的计划(该计划要建立一套多使用者、多任务、多层次的MULTICS操作系统,想让大型主机支持300台终端);
1969 这个项目进度缓慢,资金短缺,贝尔实验室退出了研究;
1969 从这个项目退出的Ken Thompson 当时在实验室无聊时,为了让一台空闲的电脑上能够运行“星际旅行”游戏,在8月份趁着妻子探亲的时间,用一个月的时间,使用汇编语言写出了Unix操作系统的原型;
1970 美国贝尔实验室的Ken Thompson,以BCPL语言为基础,设计出很简单接近硬件的B语言,并用B语言写了第一个UNIX操作系统;
1971 同样酷爱“星际旅行”的Dennis M.Ritchie为了能早点玩上游戏。加入了Thompson的开发项目,合作开发UNIX,他的主要工作就是改造B语言,因为B语言的跨平台性较差;
1972 Dennis M.Ritchie在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母,作为这种语言的名字,这就是C语言;
1973 C语言的主体完成,Thompson和Ritchie迫不及待的开始用它完全重写了现在大名鼎鼎的Unix 操作系统;
1978 在20世纪70年代后期,AT&T(通用电气 )与教育机构和外部商业组织共享了Unix,从而导致了许多不同版本Unix的诞生。其中最突出的是由加州大学伯克利分校的计算机系统研究小组构建的教育版本。此版本被广泛称为Berkeley Software Distribution,即BSD。AT&T成立USG,将 Unix变成商业化的产品System IV;随着FreeBSD、NetBSD和OpenBSD等开源项目的出现,BSD分支的历史发展告一段落。BSD的最终版本于1995年推出。Unix的最终版本是1989年发布的Unix 10版本,是由Bell Laps开发的。比较著名和成功的商业版本可能是苹果的MacOS。目前iOS、watchOS和tvOS系统以及其他苹果操作系统都基于BSD平台。MacOS也是少数几个被认为是类UNIX的操作系统之一;
1979 因为AT&T的政策改变,在Version7 Unix推出之后,发布了新的使用条款,将UNIX源代码私有化,在大学中不能再使用1979年发布的Unix 第七版被称为是“最后一个真正的Unix”UNIX源代码。Andrew S.Tanenbaum(塔能鲍姆)教室为了能在课堂上教授学生操作系统的运作细节,决定在不使用AT&T的源代码前提下,自行开发与UNIX兼容的操作系统,以避免版权上的争议,并将其称为MINIX;
1991 Linus Torvalds林纳斯·托瓦兹,就读于赫尔辛基大学期间,对Unix产生浓厚兴趣,尝试着在Minix上做一些开发工作,因为Minix只是教学使用,因此功能并不强,林纳斯经常用他的终端仿真器去访问大学主机上的新闻组件和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统,这些后来成为了Linux第一个内核的雏形,当时他仅21岁。
林纳斯利用GNU的bash当做开发环境,gcc当做编译工具,编写了Linux内核,一开始Linux并不能兼容Unix。
10 月5 日,第一次正式向外公布;Linux本身只是一个内核(内核是系统的心脏,是运行程序和管理磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层),它不是一个完整的操作系统。电脑上使用的操作系统叫做GNU / Linux,人们简单地称它为Linux。
1993 到今天,有无数的Linux发行版发行版(通常包含了桌面环境、办公套件、媒体播放器、数据库等),最古老的两个发行版(现在仍然在使用)是Slackware和Debian,它们创建于1993年;( Slackware 的版本1.00 在1993年7月16日发布,Debian1.x版本则在1996年发布)
1994 Linux1.0发布,代码量17万行,当时是按照完全自由免费的协议发布,随后正式采用GPL协议;一些最常用的发行版包括:Ubuntu, Debian, CentOS, Fedora, Redhat, Linux Mint等,至今官网上的流行的有25个;
Debian的后代分支(除了Debian本身之外),这个分支的主要代表还有Ubuntu(构建在Debian之上)、Linux Mint(构建在Ubuntu之上)和Kali Linux;
1995 Bob Young创办了RedHat(小红帽),以GNU/Linux为核心,集成了400多个源代码开放的程序模块,搞出了一种冠以品牌的Linux,即RedHat Linux,称为Linux"发行版";
Redhat主要发行版是Red Hat Enterprise Linux (RHEL),这是一个针对Redhat的企业客户的发行版;除了提供RHEL作为付费发行版之外,Redhat还向社区提供另一个免费发行版,即Fedora;
1996 Linux 2.0内核发布,此内核有大约40万行代码,并可以支持多个处理器,用户350万人;
2001 Linux 2.4发布,它进一步地提升了SMP系统的扩展性,同时它也集成了很多用于支持桌面系统的特性;
2003 Linux 2.6版内核发布,相对于2.4版内核2.6在对系统的支持都有很大的变化。1.更好地支持大型多处理器服务器,特别是采用NUMA设计的服务器;2.更好地支持嵌入式设备,如手机、网络路由器或者视频录像机等;3.对鼠标和键盘指令等用户行为反应更加迅速;4.块设备驱动程序做了彻底更新;
2004 10月20日Ubuntu发布,并以Debian为开发蓝本(Ubuntu是Debian的一种衍生版本);CentOS 2发布;
2014 CentOS宣布于2014年初加入Red Hat。7月7号正式发布CentOS 7;CentOS,也被称为社区企业操作系统,是企业Linux发行版领头羊Red Hat Enterprise Linux(以下称之为RHEL)的再编译版本。

2、Linux系统组成简介

   ​ Linux可以划分为四部分:内核、shell、文件系统、应用程序。

   ​ 我们平时所说的Linux系统,指的是Linux操作系统,而从技术渊源上来说,Linux其实是一个内核,内核是系统应用软件和硬件的桥梁,内核直接与硬件联系,它的主要职责就是提供内存管理、进程管理、设备驱动程序、文件系统和网络管理等。

   ​ 内核并不是一套完整的操作系统,它只实现了对计算机资源的简单管理。而完整的操作系统是用来管理计算机系统资源的软件,它是用户与计算机之间的桥梁,它的主要职责是创建应用软件运行的环境。

   ​ 由于Linux内核开源且免费的特点,越来越多的人参与到Linux内核的开发,也有很多公司在Linux内核的基础上增加了开发工具和应用软件,然后将Linux内核和一些用户态的软件打包成为一个操作系统安装镜像,这个系统就是Linux操作系统(或者叫Linux发行版)。我们可以简单的认为:Linux操作系统=Linux内核+GNU软件及系统软件+必要的应用程序。

   ​ 所以当我们谈及linux版本时,就有了Linux操作系统版本和内核版本之分。

查看内核版本:

1)方法1:cat /proc/version

2)方法2:uname -a 或 uname -srm

3)方法3:hostnamectl

查看操作系统版本:

1)方法1:cat /etc/redhat-release

注:对内核版本3.10.0来说3表示【主版本号】,10表示【次版本号,一般偶数为稳定版】,0表示【修订次数】

2.1、内核

   ​ 内核是操作系统的核心,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

   ​ Linux 内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。

2.2、shell

   ​ shell是一个命令解释器,提供了用户与内核进行交互操作的一种接口。

   ​ 最早的shell是由,Ken Thompson(1960年加州大学伯克利分校主修电气工程,1966年,加入了贝尔实验室)为unix写的一个shell,目前主要有下列版本的shell:

1)Bourne Shell

   ​ 是贝尔实验室Stephen Bourne开发的,旨在解决Thompson shell 中的脚本限制;

2)C Shell

   ​ 是Bill Joy在加州大学伯克利分校读书的时候,为BSD UNIX(Berkeley Software Distribution UNIX)开发了C Shell,Bill Joy也是SUN公司的创始人之一。Bill Joy在C Shell中引入了一个重要特性就是命令历史记录。

3)Korn Shell

   ​ 由David Korn设计的,是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容;Korn Shell最引人瞩目的特性就是支持脚本编程。

4)BASH

   ​ 是GNU组织(旨在建立完全自由的操作系统)的Bourne Again Shell,是GNU操作系统上默认的shell,大部分linux的发行套件使用的都使用的是这种shell。

2.3、文件系统

2.3.1、什么是文件系统

   ​ 我们知道操作系统是负责计算机的全部软、硬件资源的分配、调度工作,控制并协调多个任务的活动,实现信息的存取和保护。操作系统中负责管理和存储文件信息的软件称为文件管理系统,简称文件系统。

   ​ 文件系统实现了对文件存储设备空间的组织和分配,也实现了对文件的存储,以及对存入的文件进行保护和检索。没有文件系统,所有的数据都会变得混乱,甚至很难被用户检索到。

   ​ 我们在格式化硬盘或U盘的时候可能经常会看到有一个文件系统的选项,比如有NTFS(New Technology File System,新技术文件系统,微软的专利)、FAT32、exFAT等,他们都代表了一种文件系统。

   ​ Linux系统中它也支持多种文件系统,比如:MINIX、EXT2、 EXT3、EXT4(第四代拓展文件系统,CentOS6默认使用)、ISO9660(CD-ROM的文件系统)、XFS(高性能日志文件系统,CentOS7默认使用)、VFAT、NTFS、NFS(网络文件系统)等等。

2.3.2、Linux磁盘分区

   ​ 前面我们学习计算机基础知识的时候说过:常见的硬盘有IDE、STAT、SCSI、SAS接口的硬盘,以及SSD固态硬盘。这些硬盘并不能直接使用,必须对硬盘进行分割,分割成多个独立的区域就是硬盘分区。

   ​ 分区的好处是:隔离系统和程序(方便管理和控制)、提升系统的效率(在机械硬盘时代,往磁盘上写入数据都有一个寻道时间,如果文件都在一个磁盘,那系统加载会变慢,固态中就不存在寻道时间的概念)、便于备份和恢复(系统重装只需要格式化系统盘);

   ​ 磁盘分区的方式主要有:MBR 分区和GPT 分区。

MBR 分区:

​    MBR(Master Boot Record,主引导记录),分为:主分区、扩展分区、逻辑分区。

​ MBR最早出现在1983年的IBM PC DOS 2.0操作系统当中,在整个硬盘的0磁道0柱面1扇区(512字节)上,有个MBR区(占446个字节),另外64个字节为DPT(Disk Partition Table硬盘分区表),以及2字节的结束标志(2个16进制0x55AA)。每个主分区占16个字节,那么64个字节的DPT最多分成4个主分区,同样扩展分区也占据16个字节。

​ 通常一个扇面为512字节,MBR分区采用32bit寻址空间,即在分区表项中都用4Byte表示本分区的总扇区数和本分区已使用的扇区数,所以单个分区最大支持:,由于大于的地址无法识别,所以硬盘最大的容量也被限制在2T。

​    主分区:表记录分区的信息并可以直接使用的分区,不能再分区;

   ​ 扩展分区:主分区表记录的分区,不可直接使用,只是逻辑分区容器,必须再进行分区后才能使用;

   ​ 逻辑分区:是基于扩展分区创建出来的,逻辑分区没有数量上限制。

GPT 分区:

​    GPT(GUID Partition Table,GUID磁碟分割表),是一个实体硬盘的分区表的结构布局的标准。在GPT分区表头中可自定义分区数量的最大值,也就是说GPT分区表的大小不是固定的。在Windows中,GPT磁盘最大分区数量为128个,采用64bit寻址空间,支持8ZB = 8x1024PB = 8x1024x1024TB。

2.3.2.1、MBR分区简介

​ 分区的实质是一种硬盘的格式化,MBR分区就是在一块硬盘的最外侧的第0号磁道上(最外侧速度快),放置了开机启动引导代码,并记录了分区信息,剩下的就是将partition(分区)格式化为当前系统可以识别的文件系统。

    文件系统最终目的是把大量数据有组织的放入持久性的存储设备中,我们知道每个扇区(sector)的大小是512Bytes,操作系统读取硬盘的时候,不会真的一个一个扇区的读,这样效率太低了,于是就有了块(block)的概念,即一次连续性读取多个扇区,block的设定是sector的倍(1,2,3分别对应1KB,2KB,4KB,最常见的是4KB,即连续的8个sector组成一个block),block并不是越大越好,过大对小文件越不利,容易产生碎片,造成空间浪费,因为即使一个block没有被占满,剩下的空间也不能存放其他数据。

    既然有了block,那么就需要一个能够记录当前block信息的区域,它就是SuperBlock。

   ​ SuperBlock(超级块):记录文件系统的整体信息,包括inode、block的总量、使用量、剩余量以及文件系统格式及相关信息。

isize : inode 节点的大小,每个有 512Bytes;

agcount:存储区群组 (allocation group) 的个数,共有 4 个;

agsize:每个储 存区群组具有 65536 个 block;因为有4个群组,所以总共有blocks=65536*4=262144个;

log = internal:是登录去在文件系统内,占用了2560个block;

文件系统大小:Size = (262144-2560)x 4KB = 1038336 KB

   ​ 在SuperBlock中也记录了inode的相关信息,什么是inode?

   ​ Linux作为多用户多任务操作系统,出于对数据安全、文件共享及文件管理的考虑,它为每个文件都设定了一些属性,使用inode(索引节点)来存储。inode节点的总数,在格式化时就给定,如果inode已经用完了,但是磁盘还没满,也是存储不了文件的。

  ​ inode(索引节点):记录文件的元数据,包括文件的权限、文件的所有者、所属群组、文件的类型、文件创建时间、文件的大小以及该文件的block映射表等信息。

File:文件的名称

Size:文件的字节数;

Blocks:占据文件的块数;

Inode:节点号;

Links:被链接的次数

Access_1:访问权限;

Uid:属主;

Gid:属组;

Access_2:最近一次访问时间;

Modify:文件的修改时间;

Group Description:记录该block由何处开始,到何处终止(起始和终止磁道);

Block bitmap:和block对应,用来快速查看哪些Block还是空闲状态;

Inode Bitmap:和inode对应,用来快速查看各inode的使用状态

Inode table:存储inode的数据,记录文件的元数据和block的指针索引;一个空文件0kb,有分配inode但inode没有Data Block的索引信息。

Data Block:真正存储文件数据的block,一个inode可以对应多个block;

  ​ 创建文件大致过程:

​   1)先遍历 inode Bitmap,找到未使用的inode,并把该比特位的值改为已使用,然后再Inode table中申请空间,填充文件属性;

  ​ 2)接着遍历Block bitmap,找到未使用的block,将该比特位的值改为已使用,再把数据写到block块中。

2.3.2.2、Linux分区查看和修改

    linux中我们可以使用fdisk命令来查看和修改分区:

  • 查看分区

fdisk - Linux分区表操作工具软件
    是一个以菜单问答形式出现的用来创建和修改分区的程序。
    设备 通常是下列之一:
    /dev/hda
    /dev/hdb
    /dev/sda
    /dev/sdb
    Linux的分区一般使用/dev/hd[a-z]X或者/dev/sd[a-z]X来标识,其中[a-z]代表硬盘号,X代表硬盘内的分区号。而hd[a-z]和sd[a-z]表示不同接口的硬盘。
    其中/dev/hd[a-h] 指 IDE 硬盘,/dev/sd[a-p]指SCSI 硬盘, /dev/ed[a-d]指ESDI 硬盘,/dev/xd[ab] 指 XT 硬盘。
  • 修改分区(fdisk /dev/sda)

  • 新建分区

 

    Linux下磁盘分区必须挂载在某个目录上,分区是物理分区,目录是逻辑分区,只有挂载到目录上才能进行读写操作。

    如果分区 /dev/sda3 被挂载在/usr 上,这就意味着,在usr目录之下的文件和目录在物理意义上位于分区 /dev/sda3上。

2.3.3、Linux目录结构

    在Linux系统中,目录、字符设备、套接字、硬盘、光驱、打印机等都被抽象成文件形式,即linux一切皆文件。Linux系统中的一切文件都是从“根”目录(/)开始的。其主要目录结构如下:

目录 重要子目录 应放置内容
/ 虚拟目录的根目录。通常不会在这里存储文件。/etc、bin、sbin、dev、lib这五个都应与根目录放一个分区
boot Grub 系统启动引导文件。其下的vmlinuz就是LINUX核心
dev Null,tty[1-6] sd* hd* 设备目录,Linux在这里创建设备节点。所有设备文件(块设备和字符设备),如硬盘,光驱等。
etc X11,fstab, sysconfig 系统配置文件目录。系统主要的配置文件都放在这目录。如帐号密码,各种服务的起始文件,此目录基本都是ASCII文件。etc/init.d所有服务的默认启动脚本都在这;/etc/xinetd.d 超级守护程序
bin 可执行的二进制文件。存放许多用户级的GUN根据。如ls, mv, rm ,mkdir等,同样作用目录有:/usr/bin ,/usr/local/bin
sbin 放一些系统管理员才能用到的执行命令,如fdisk, mke2fs,fsck mkswap,mount等。一般用户只能查看而不能设置。同样作用目录有:/usr/sbin,/usr/local/sbin
lib modules 系统使用的函数库目录。同样作用目录有:/usr/lib ,/usr/local/lib
root 系统管理员的家目录
/home 用户家目录,在这里创建用户目录。~myid 表示myid的家目录
/lost+found 系统出现异常时,会将一些遗失片段放在此目录下。该目录会自动出现在分区最顶层下
/mnt和/media 软盘与光盘挂载点,但也可以随便找个地方载入。
/opt 给主机额外安装的软件所放的目录。
/srv 服务目录,存放本地服务的相关文件
/tmp 临时目录,需要定期清理。
/usr bin,sbin,lib ,includelocal,share,src 用户二进制目录,大量预计的GUN工具和数据文件都存储在这里
/var Cache,lib,log,lock,run 系统执行过程中经常变化的文件,如缓存cache、日志文件等

3、Linux基本命令

3.1、基本操作命令

3.1.1、基本快捷键

1)Tab 键——自动补全
​
2)Ctrl + c(停止当前进程)
​
3)Ctrl+d(退出,相当于exit)
​
4)Ctrl+u (清除光标之前的内容,快速删除shell中输入错误的命令,不必逐个字符删除)
​
5)Ctrl+k (清除光标之后的内容)
​
6)Ctrl + r(搜索查看命令历史)
​
7)Ctrl + l(清屏,与clear命令作用相同)
​
使用场景:比如我们在搜索较多文件时,不想继续可以使用Ctrl + c终止当前进程。

 

注:[root@mjx~]#这行的root:表示登录的是root用户

@:相当at mjx:表示所登录的服务器,一般为服务器名称(可以修改,一般在/etc/hostname文件中)

~:表示主目录,即当前登录用户的默认目录

#:表示root的提示符号,普通用户为$

3.1.2、文本操作快捷键(vi/vim)

1)u (undo,取消上一部操作)

2)Ctrl+r (redo,返回到undo之前,与u作用相反)

3)Shift+zz(保存退出,与:wq作用相同)

    使用场景: 当我在编辑文件时,输入了内容,我想撤销,则退出编辑模式,按u,即撤销刚刚输入的内容,但是我又后悔了,则按Ctrl+r回退刚刚的撤销动作。

3.2、帮助命令

命令比较多,我们很难记住全部的命令,有时候就可以借助帮助命令来查看。

3.2.1、man命令

【命令功能:】查看命令手册

【命令格式:】man [option] [参数领域] 命令

【使用语法:】man [-adfhktwW] [section] [-M path] [-P pager] [-S list] [-m system] [-p string] title..

【使用技巧:】man -k 命令关键字  [注:如果不记得命令了可以这么使用,当然也可以使用Tab键自动补全]

【参数选项:】

    【man命令常用参数选项:】
    参数    备注
    -a    显示所有匹配项
    -d    显示man查照手册文件时候,搜索路径信息,不显示手册页内容
    -D    同-d,显示手册页内容
    -f    同命令whatis ,将在whatis数据库查找以关键字开同的帮助索引信息
    -h    显示帮助信息
    -k    同命令apropos 将搜索whatis数据库,模糊查找关键字
    -S list    指定搜索的领域及顺序 如:-S 1:1p httpd 将搜索man1然后 man1p目录
    -t    使用troff 命令格式化输出手册页 默认:groff输出格式页
    -w    不带搜索title 打印manpath变量 带title关键字 打印找到手册文件路径,默认搜索一个文件后停止
    -W    同-w
    section    搜索领域【限定手册类型】默认查找所有手册
    【man命令其它参数选项:】
    -c    显示使用 cat 命令的手册信息
    -C    指定man 命令搜索配置文件 默认是man.config
    -K    搜索一个字符串在所有手册页中,速度很慢
    -M    指定搜索手册的路径
    -P pro    使用程序pro显示手册页面 默认是less
    -B pro    使用pro程序显示HTML手册页 默认是less
    -H pro    使用pro程序读取HTML手册,用txt格式显示,默认是cat
    -p str    指定通过groff格式化手册之前,先通过其它程序格式化手册

 【参数领域】

  • 使用范例

3.2.2、info命令

    和 man 命令不同的是,info 命令的帮助信息是一套完整的资料,每个单独命令的帮助信息只是这套完整资料中的某一个小章节。

【命令功能:】查看帮助信息
​
【命令格式:】info [option] 命令
​
【使用语法:】info [-kdfhnoORw] [MENU-ITEM...]
​
【参数选项:】
​
    【info命令常用参数选项:】
    参数  备注
    -d:添加包含info格式帮助文档的目录;
    -f:指定要读取的info格式的帮助文档;
    -n:指定首先访问的info帮助文件的节点;
    -o:输出被选择的节点内容到指定文件。
 
    【info其他参数选项:】
    -k --apropos=STRING在所有手册的所有索引中查找字符串。
    -h --帮助显示此帮助并退出。
    -R --原始转义输出“原始”ANSI转义(默认)。
    -O --显示选项,--用法转到命令行选项节点。
  • 使用范例

[root@mjx ~]# info ls
File: coreutils.info,  Node: ls invocation,  Next: dir invocation,  Up: Directory list\
ing
... 
10.1 'ls': List directory contents
==================================
...省略(就像一本完整的电子书)
N键:显示(相对于本节点的)下一节点的文档内容
P键:显示(相对于本节点的)前一节点的文档内容

3.2.3、help命令/选项

    help命令只能显示shell内部的帮助信息,而shell外部的命令无法用help查看,但可以使用man 或者info命令查看。

    内部命令大多都可以接受--help 或 -h 选项来查看帮助选项。

  • 使用范例

3.3、其他基本命令

3.3.1、alias 命令别名

【命令格式:】alias  [别名]=[指令名称]
​
【常用选项:】
​
【补充说明:用户可利用alias,自定指令的别名。若仅输入alias,则可列出目前所有的别名设置。 alias的效力仅及于该次登入的操作。若要每次登入是即自动设好别名,可在.profile或.cshrc中设定指令的别名。对应的删除命令:
    unalias [别名] 或者删除全部别名 unalias -a】
  • 使用范例

 

3.3.2、su 变更为其他使用者的身份

【命令格式:】su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]

【常用选项:-】

【注:su[substitute]--“代替”】

【补充说明:su命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码】 

【具体选项如下:】
    参数    备注
    -f 或 --fast 不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh
    -m -p 或 --preserve-environment 执行 su 时不改变环境变数
    -c command 或 --command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者
    -s shell 或 --shell=shell 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell
    --help 显示说明文件
    --version 显示版本资讯
    - -l 或 --login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者  
 
    (USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root
    USER 欲变更的使用者帐号
    ARG 传入新的 shell 参数

【常用格式:】

1)su:不加用户名默认是切换为root用户,切当前目录不改变,其他环境变量不变

2)su - 或者su -l 或者 su --login:切换为root用户,同时变更工作目录,以及SHELL,USER,PATH,HOME,LOGNAME变量

3)su username :切换为其他用户,目录不改变,SHELL,USER,PATH,HOME,LOGNAME变量改变

4)su -, -l, --login username:切换到其他用户,变更工作目录,以及SHELL,USER,PATH,HOME,LOGNAME变量

  • 使用范例

3.3.3、sudo 变更为其他使用者的身份

【命令格式:】sudo [ -Vhl LvkKsHPSb ] │ [ -p prompt ] [ -c class│- ] [ -a auth_type ] [-u username│#uid ] command

【常用选项:】

【补充说明:在sudo于1980年前后被写出之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码。 sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是/etc/sudoers),即完成对该用户的授权(此时该用户称为“sudoer”);在一般用户需要取得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内(默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。由于不需要超级用户的密码,部分Unix系统甚至利用sudo使一般用户取代超级用户作为管理帐号】   

【具体选项如下:】 
    -V 显示版本编号
    -h 会显示版本编号及指令的使用方式说明
    -l 显示出自己(执行 sudo 的使用者)的权限
    -v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
    -k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
    -b 将要执行的指令放在背景执行
    -p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
    -u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
    -s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
    -H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root )
    command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令

  • 使用范例

在/etc/sudoers文件中添加上mjx用户信息:mjx ALL=(ALL)PASSWD:ALL

 

 

 3.3.4、yum(apt-get) 系统包管理工具

【命令格式:】yum (apt-get)

【常用选项:】

【补充说明:(CentOS)使用yum,(ubuntu)apt-get 是一个下载安装软件包的简单命令行接口】

  • yum常用功能

3) 查询功能
yum info package1 显示安装包信息package1
yum list 显示所有已经安装和可以安装的程序包
yum list package1 显示指定程序包安装情况package1
yum groupinfo group1 显示程序组group1信息yum search string 根据关键字string查找安装包

1) 安装功能
yum install 全部安装
yum install package1 安装指定的安装包package1
yum groupinsall group1 安装程序组group1

2) 升级功能
yum update 全部更新
yum update package1 更新指定程序包package1
yum check-update 检查可更新的程序
yum upgrade package1 升级指定程序包package1
yum groupupdate group1 升级程序组group1

4) 卸载功能
yum remove | erase package1 删除程序包package1
yum groupremove group1 删除程序组group1
yum deplist package1 查看程序package1依赖情况

  • apt-get常用功能

1)查询功能
apt-cache search package 搜索软件包
apt-cache show package  获取包的相关信息,如说明、大小、版本等
sudo apt-get check 检查是否有损坏的依赖
apt-cache depends package 了解使用该包依赖那些包
apt-cache rdepends package 查看该包被哪些包依赖
2)安装功能
sudo apt-get install package 安装包
sudo apt-get install package --reinstall   重新安装包
sudo apt-get -f install   修复安装
sudo apt-get build-dep package 安装相关的编译环境
3)卸载功能
sudo apt-get remove package 删除包
sudo apt-get remove package --purge 删除包并清除配置文件
sudo apt-get clean && sudo apt-get autoclean 清理无用的包
4)升级功能
sudo apt-get update  更新源
sudo apt-get upgrade 更新已安装的包
sudo apt-get dist-upgrade 升级系统
5)下载功能
apt-get source package  下载该包的源代码

3.3.5、clear 清屏

【命令格式:】clear

3.4、目录操作命令

3.4.1、cd 目录切换

【命令格式:】cd [参数/相对路径、绝对路径]

【常用选项:】

    cd  .   代表当前目录

    cd  ..  代表当前目录的上一级目录

    cd  -   代表上一次操作的目录

    cd  ~   代表当前账户的家目录

    cd  ~ 账户名   代表这个账户的家目录

【注:cd等同于dos下cd命令,为[Change Directory] 缩写】

【使用技巧:】常使用Tab键来自动补齐

【相关命令:】pwd    显示当前所在路径

  • 使用范例

3.4.2、pwd 显示目前所在的路径

【命令格式】pwd [选项]

【常用选项】-P  【显示出确实的路径,而非使用连接(link)路径】

【注:pwd为[Print Working Directory] 缩写】

3.4.3、ls 列出目录

【命令格式】ls [选项:-aAdfFhilnrRSt] [目录]

【常用选项】-lrt  【以单列长格式形式(l),按修改时间顺序(t)、文件名(r)倒叙序排列】

【注:ls为[list] 缩写】 

【使用技巧:1)只列出当前目录下的子目录:ls -F | grep /$ 】

【具体选项如下:】
    -a:显示当前目录下包括隐藏文件在内的所有文件列表;
    -A:显示除隐藏文件“.”和“..”以外的所有文件列表;
    -b:将文件中的不可输出的字符以反斜线“\”加字符编码的方式输出;
    -c:与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。与“-l”选项连用时,则排序的一句是文件的状态改变时间;
    -C:多列显示输出结果。这是默认选项;
    -d:仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表;
    -e 输出时间的全部信息,而不是输出简略信息。
    -f:此参数的效果和同时指定“aU”参数相同,并关闭“lst”参数的效果;
    -F:在每个输出项后追加文件的类型标识符,具体含义:“*”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,“|”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符;
    -i:显示文件索引节点号(inode)。一个索引节点代表一个文件;
    --file-type:与“-F”选项的功能相同,但是不显示“*”;
    -k:以KB(千字节)为单位显示文件大小;
    -l:以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列;
    -L:如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录;
    -m:用“,”号区隔每个文件和目录的名称;
    -n:以用户识别码和群组识别码替代其名称;
    -q 用?代替不可输出的字符。
    -r:以文件名倒叙序排列并输出目录内容列表;
    -R:递归处理,将指定目录下的所有文件及子目录一并处理;
    -s:显示文件和目录的大小,以区块为单位;
    -S 以文件大小排序。
    -t:用文件和目录的更改时间排序(顺序,最后修改时间在最后);
    -u 以文件上次被访问的时间排序。
    -x 按列输出,横向排序。
    -X 以文件的扩展名(最后一个 . 后的字符)排序。
    --full-time:列出完整的日期与时间;
    --color[=WHEN]:使用不同的颜色高亮显示不同类型的。

重点:-l 参数是一个强大的工具,例如:

ls -lrt显示如下:

drwxr-xr-x 2 root root 4096 7月  15 11:18 Documents

【第一组参数第一个-d】表示文件类型:比如目录(d)、文件(-)、字符型文件(c)或块设备(b)

【第一组参数后9位-rwxr-xr-x】表示文件的权限,分别代表文件所有者、文件所有者所在用户组、其它用户对文件拥有的权限。每组中3个字符分别代表读、写、执行的权限,若没有其中的任何一个权限则用“-”表示。执行的权限有两个字符可选“x”代表可执行,“s”代表套接口文件。

【第二组参数-2】表示这个目录下的目录文件数目(这个数目=隐藏目录数目+普通目录数目),对文件来说就是链接数。

【第三组参数-root】表示文件属组的用户名

【第四组参数-root】表示文件属组的组名

【第五组参数-4096】表示文件的大小(已字节为单位)

【第六组参数-7月 15 11:18】表示文件的上次修改时间

【第七组参数-Documents】表示文件名或目录名

3.4.4、mkdir 创建一个新的目录

【命令格式:】mkdir [参数] [目录名称]

【常用选项:】
    -p或者--parents  代表所要建立目录的上层目录尚未建立,则会一并建立(递归创建)。 

    -m<目录属性> 或者--mode<目录属性>  代表建立目录的同时设置目录的权限
【注:mkdir为[make directory] 缩写】

【相关命令:rmdir】

  • 使用范例

 

 注:使用-p创建多层目录,默认创建的目录权限为751:所有者(7)、所在组(5)、其他用户(1)。其中,rwx=4+2+1,分别代表读、写和可执行权限,而指定权限创建的目录权限为744。

3.4.5、rm 删除文件或目录

【命令格式:】rm [选项-dfirv] [文件或目录]

【常用选项:】

【注:rm为[remove] 缩写】

【补充说明:执行rm指令可删除文件或目录,如欲删除目录必须加上参数"-r",否则预设仅会删除文件。】

【具体选项如下:】 
    -d或--directory  直接把欲删除的目录的硬连接数据删成0,删除该目录。 
    -f或--force  强制删除文件或目录。 
    -i或--interactive  删除既有文件或目录之前先询问用户。 
    -r或-R或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。 
    -v或--verbose  显示指令执行过程。 
    --help  在线帮助。 
    --version  显示版本信息。

3.4.6、rmdir 删除一个空目录

【命令格式:】rmdir [参数] [目录名称]

【常用选项:】-p或者--parents  删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除。

【注:mkdir为[remove directory] 缩写】

【相关命令:rm、mkdir】

  • 使用范例

3.4.7、mv 移动、更改文件或目录名称

【命令格式:】mv [选项-bfiuv] [源文件或目录] [目标文件或目录]

【常用选项:】

【注:mv为[move] 缩写】 

【具体选项如下:】 
 -b或--backup  若需覆盖文件,则覆盖前先行备份。 
 -f或--force  若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录。 
 -i或--interactive  覆盖前先行询问用户。 
 -S<附加字尾>或
 --suffix=<附加字尾>  与-b参数一并使用,可指定备份文件的所要附加的字尾。 
 -u或--update  在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不覆盖目标文件。 
 -v或--verbose  执行时显示详细的信息。 
 -V=<方法>或
 --version-control=<方法>  与-b参数一并使用,可指定备份的方法。 
 --help  显示帮助。 
 --version  显示版本信息。

  • 使用范例

 

 

3.4.8、cp 复制文件或目录

【命令格式:】cp  [选项-abdfilpPrRsuvx] [源文件或目录] [目标文件或目录]

【常用选项:】

【注:mkdir为[remove directory] 缩写】

【具体选项如下:】
    -a或--archive  此参数的效果和同时指定"-dpR"参数相同。 
    -b或--backup  删除,覆盖目标文件之前的备份,备份文件会在字尾加上一个备份字符串。 
    -d或--no-dereference  当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录。 
    -f或--force  强行复制文件或目录,不论目标文件或目录是否已存在。 
    -i或--interactive  覆盖既有文件之前先询问用户。 
    -l或--link  对源文件建立硬连接,而非复制文件。 
    -p或--preserve  保留源文件或目录的属性。 
    -P或--parents  保留源文件或目录的路径。 
    -r  递归处理,将指定目录下的文件与子目录一并处理(单纯的拷贝)。 
    -R或--recursive  递归处理,将指定目录下的所有文件与子目录一并处理(对特殊文件[管道文件,块设备文件,字符设备文件]会进行创建操作,而不是拷贝,其他与r无区别)。
    -s或--symbolic-link  对源文件建立符号连接,而非复制文件。 
    -S<备份字尾字符串>或--suffix=<备份字尾字符串>  用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的备份字尾字符串是符号"~"。 
    -u或--update  使用这项参数后只会在源文件的更改时间较目标文件更新时或是 名称相互对应的目标文件并不存在,才复制文件。 
    -v或--verbose  显示指令执行过程。 
    -V<备份方式>或--version-control=<备份方式>  用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这字符串不仅可用"-S"参数变更,当使用"-V"参数指定不同备份方式时,也会产生不同字尾的备份字串。  
    -x或--one-file-system  复制的文件或目录存放的文件系统,必须与cp指令执行时所处的文件系统相同,否则不予复制。 
    --help  在线帮助。 
    --sparse=<使用时机>  设置保存稀疏文件的时机。 
    --version  显示版本信息。

  • 使用范例

3.5、文件管理

3.5.1、cat 查看整个文件

【命令格式:】cat [参数-AbeEnstTuv] [文件名]

【常用选项:】                

【注:cat为[concatenate:一系列的,连续的] 缩写】

【相关命令:more、less、tail、head】

【具体选项如下:】
    -n 或 --number 由 1 开始对所有输出的行数编号
    -b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
    -s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
    -v 或 --show-nonprinting

  • 使用范例

> 表示将一条命令执行结果重定向到其他输出设备(文件,打印机等)
>> 表示追加内容

把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -n textfile1 > textfile2 

把 textfile1 和 textfile2 的档案内容加上行号(忽略空白行)之后将内容附加到 textfile3 里。
cat -b textfile1 textfile2 >> textfile3 

3.5.2、chattr 改变文件属性

【命令格式:】chattr [参数-RVf] [+/-/=<属性>] [文件或目录]

【常用选项:】                

【注:chattr为[change attribute] 缩写】

【相关命令:lsattr】

【补充说明:这项指令可改变存放在文件系统上的文件或目录属性,+-=[AacDdijsSu],其中+表示在原有参数设定基础上追加参数;-表示在原有参数设定基础上移除参数;=表示更新为指定参数。】 

【具体选项如下:】
    -R 递归更改目录下所有子目录和文件的属性
    -V 显示详细信息,指令执行过程
    -f 忽略大部分错误信息

  • 【常用的属性及含义】

属性 含义
A 文件的atime(access time)不可被修改,这样可以减少磁盘I/O数量,对于笔记本电脑有利于提高续航能力
S 硬盘I/O同步选项,功能类似sync
a 即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性
i 文件不能被删除、改名、设定链接关系,同时不能写入或新增内容(即使是root用户)。只有root才能设定这个属性
c 即compresse,文件会自动的经压缩后再存储,读取时会自动的解压
d 即no dump,设定文件不能成为dump程序的备份目标
j 即journal,设定此参数使得当通过mount参数”data=ordered”或”data=writeback”挂载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为data=journal,则该参数自动失效
s 即secure,保密选项。设置了s属性的文件在被删除时,其所有数据块会被写入0
u 即undelete,反删除选项。与s相反,文件在被删除时,其所有的数据块都保留着,用户今后可以恢复该文件
  • 使用范例

3.5.3、chgrp 变更文件或目录的所属群组

【命令格式:】chgrp [参数-cfhRv] [所属群组] [文件或目录]

【常用选项:】                

【注:chgrp为[change group] 缩写】

【相关命令:】

【补充说明:使用chgrp指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可。】 

【具体选项如下:】
    -c或--changes  效果类似"-v"参数,但仅回报更改的部分。 
    -f或--quiet或--silent  不显示错误信息。 
    -h或--no-dereference  只对符号连接的文件作修改,而不更动其他任何相关文件。 
    -R或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。 
    -v或--verbose  显示指令执行过程。 
    --help  在线帮助。 
    --reference=<参考文件或目录>  把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。 
    --version  显示版本信息。

  • 使用范例

3.5.4、chmod 变更文件或目录的权限

【命令格式:】chmod [参数-cfRv] [数字代号] [文件或目录]
           或 chmod [参数-cfRv] [<权限范围>+/-/=<权限设置>] [文件或目录]  
【常用选项:】                

【注:chmod为[change mode] 缩写】

【补充说明:文件或目录权限的控制分别以读取、写入、执行3种。
   一般权限来区分权限范围的表示法如下:
    u:User,即文件或目录的拥有者。
    g:Group,即文件或目录的所属群组。 
   o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。 
   a:All,即全部的用户,包含拥有者,所属群组以及其他用户。
   有关权限代号的部分:
    r:读取权限,数字代号为"4"。 (二进制:100)
   w:写入权限,数字代号为"2"。 (二进制:010)
    x:执行或切换权限,数字代号为"1"。 (二进制:001)
    -:不具任何权限,数字代号为"0"。 
    s:特殊功能说明:变更文件或目录的权限

【具体选项如下:】
    -c或--changes  效果类似"-v"参数,但仅回报更改的部分。 
    -f或--quiet或--silent  不显示错误信息。 
    -R或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。 
    -v或--verbose  显示指令执行过程。 
    --help  在线帮助。 
    --reference=<参考文件或目录>  把指定文件或目录的权限全部设成和参考文件或目录的权限相同 
    --version  显示版本信息。 
    <权限范围>+<权限设置>  开启权限范围的文件或目录的该项权限设置。 
    <权限范围>-<权限设置>  关闭权限范围的文件或目录的该项权限设置。 
    <权限范围>=<权限设置>  指定权限范围的文件或目录的该项权限设置。

  • 权限说明

 

  • 使用范例

语法一:(754依次表示:用户(rwx)、用户所属组(r-x)、其他用户(r--))
[root@mjx c]# chmod 754 quanxian.txt 
[root@mjx c]# ls -l
total 0
-rwxr-xr--. 1 root root 0 Aug 28 10:01 quanxian.txt
 
语法二:
[root@mjx c]# ls -l
total 0
-rw-r--r--. 1 root root 0 Aug 28 10:01 quanxian.txt
[root@mjx c]# chmod u-w quanxian.txt 
[root@mjx c]# ls -l
total 0
-r--r--r--. 1 root root 0 Aug 28 10:01 quanxian.txt
 
u-w:用户user减少w权限
 
[root@mjx c]# chmod g+x quanxian.txt 
[root@mjx c]# ls -l
total 0
-r--r-xr--. 1 root root 0 Aug 28 10:01 quanxian.txt
 
g+x:用户组添加权限
 
[root@mjx c]# chmod a+x quanxian.txt 
[root@mjx c]# ls -l
total 0
-r-xr-xr-x. 1 root root 0 Aug 28 10:01 quanxian.txt
 
a+x:所有用户添加权限
 
[root@mjx c]# chmod a=rw quanxian.txt 
[root@mjx c]# ls -l
total 0
-rw-rw-rw-. 1 root root 0 Aug 28 10:01 quanxian.txt
 
a=rw:所有用户指定权限

3.5.5、chown 变更文件或目录的拥有者或所属群组

【命令格式:】chown [参数-cfhRv] [拥有者:<所属群组>] [文件或目录]
          或chown [参数-cfhRv] [:所属群组][文件或目录]   --只改变所属群组

【常用选项:】                

【注:chown为[change owner] 缩写】

【相关命令:chmod】

【具体选项如下:】
    -c或--changes  效果类似"-v"参数,但仅回报更改的部分。 
    -f或--quite或--silent  不显示错误信息。 
    -h或--no-dereference  之对符号连接的文件作修改,而不更动其他任何相关文件。 
    -R或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。 
    -v或--version  显示指令执行过程。 
    --dereference  效果和"-h"参数相同。 
    --help  在线帮助。 
    --reference=<参考文件或目录>  把指定文件或目录的拥有者与所属群组全部设成和参考文件或目 录的拥有者与所属群组相同。 
    --version  显示版本信息。

  • 使用范例

3.5.6、cksum 检查文件的CRC是否正确

【命令格式:】cksum [文件]

【常用选项:无】            

【注:cksum为[check sum] 缩写】

【补充说明:cksum命令是检查文件的CRC是否正确,确保文件从一个系统传输到另一个系统的过程中不被损坏。这种方法要求校验和在源系统中被计算出来,在目的系统中又被计算一次,两个数字进行比较,如果校验和相等,则该文件被认为是正确传输了】

【具体选项如下:无】

  • 使用范例

 

3.5.7、cmp 比较两个文件是否有差异

【命令格式:】cmp [参数-clsv] [-i<忽略字符数>] [第一个文件] [第二个文件]

【常用选项:】                

【注:cmp为[compare] 缩写】

【相关命令:diff】   

【具体选项如下:】
    -c或--print-chars  除了标明差异处的十进制字码之外,一并显示该字符所对应字符。 
    -i<字符数目>或--ignore-initial=<字符数目>  指定一个数目。 
    -l或--verbose  标示出所有不一样的地方。 
    -s或--quiet或--silent  不显示错误信息。 
    -v或--version  显示版本信息。 
    --help  在线帮助。

  • 使用范例

[root@mjx d]# cmp testfile.txt testfile1.txt 
testfile.txt testfile1.txt differ: byte 5, line 2
 
不同:第 5 字节,第 2 行

 3.5.8、cut 显示行中的指定部分

【命令格式:】cut [参数-bcdfn] [文件名]

【常用选项:-c】        

【相关命令:tail、head、cat】

【具体选项如下:】
    -b:仅显示行中指定直接范围的内容;
    -c:仅显示行中指定范围的字符[num1-num2];
    -d:指定字段的分隔符,默认的字段分隔符为“TAB”;
    -f:显示指定字段的内容;
    -n:与“-b”选项连用,不分割多字节字符;
    --complement:补足被选择的字节、字符或字段;
    --out-delimiter=<字段分隔符>:指定输出内容是的字段分割符;
    --help:显示指令的帮助信息;
    --version:显示指令的版本信息。

  • 使用范例

 

3.5.9、file 探测给定文件的类型

【命令格式:】file [参数-beLvz] [文件或目录]

【常用选项:】  

【具体选项如下:】
    -b  列出辨识结果时,不显示文件名称。 
    -c  详细显示指令执行过程,便于排错或分析程序执行的情形。 
    -f<名称文件>  指定名称文件,其内容有一个或多个文件名称呢感,让file依序辨识这些文件,格式为每列一个文件名称。  
    -L  直接显示符号连接所指向的文件的类别。 
    -m<魔法数字文件>  指定魔法数字文件。 
    -v  显示版本信息。 
    -z  尝试去解读压缩文件的内容。

  • 使用范例

 

3.5.10、find 查找文件或目录

【命令格式:】find [参数-name...] [文件或目录]

【常用选项:-name】        

【相关命令:grep】

【具体选项如下:】
    -amin<分钟>  查找在指定时间曾被存取过的文件或目录,单位以分钟计算。 
    -anewer<参考文件或目录>  查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录。 
    -atime<24小时数>  查找在指定时间曾被存取过的文件或目录,单位以24小时计算。 
    -cmin<分钟>  查找在指定时间之时被更改的文件或目录。 
    -cnewer<参考文件或目录>  查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录。 
    -ctime<24小时数>  查找在指定时间之时被更改的文件或目录,单位以24小时计算。 
    -daystart  从本日开始计算时间。 
    -depth  从指定目录下最深层的子目录开始查找。 
    -expty  寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录。 
    -exec<执行指令>  假设find指令的回传值为True,就执行该指令。 
    -false  将find指令的回传值皆设为False。 
    -fls<列表文件>  此参数的效果和指定"-ls"参数类似,但会把结果保存为指定的列表文件。 
    -follow  排除符号连接。 
    -fprint<列表文件>  此参数的效果和指定"-print"参数类似,但会把结果保存成指定的列表文件。 
    -fprint0<列表文件>  此参数的效果和指定"-print0"参数类似,但会把结果保存成指定的列表文件。 
    -fprintf<列表文件><输出格式>  此参数的效果和指定"-printf"参数类似,但会把结果保存成指定的列表文件。 
    -fstype<文件系统类型>  只寻找该文件系统类型下的文件或目录。 
    -gid<群组识别码>  查找符合指定之群组识别码的文件或目录。 
    -group<群组名称>  查找符合指定之群组名称的文件或目录。 
    -help或--help  在线帮助。 
    -ilname<范本样式>  此参数的效果和指定"-lname"参数类似,但忽略字符大小写的差别。 
    -iname<范本样式>  此参数的效果和指定"-name"参数类似,但忽略字符大小写的差别。 
    -inum<inode编号>  查找符合指定的inode编号的文件或目录。 
    -ipath<范本样式>  此参数的效果和指定"-ipath"参数类似,但忽略字符大小写的差别。 
    -iregex<范本样式>  此参数的效果和指定"-regexe"参数类似,但忽略字符大小写的差别。 
    -links<连接数目>  查找符合指定的硬连接数目的文件或目录。 
    -iname<范本样式>  指定字符串作为寻找符号连接的范本样式。 
    -ls  假设find指令的回传值为True,就将文件或目录名称列出到标准输出。 
    -maxdepth<目录层级>  设置最大目录层级。 
    -mindepth<目录层级>  设置最小目录层级。 
    -mmin<分钟>  查找在指定时间曾被更改过的文件或目录,单位以分钟计算。 
    -mount  此参数的效果和指定"-xdev"相同。 
    -mtime<24小时数>  查找在指定时间曾被更改过的文件或目录,单位以24小时计算。 
    -name<范本样式>  指定字符串作为寻找文件或目录的范本样式。 
    -newer<参考文件或目录>  查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录。 
    -nogroup  找出不属于本地主机群组识别码的文件或目录。 
    -noleaf  不去考虑目录至少需拥有两个硬连接存在。 
    -nouser  找出不属于本地主机用户识别码的文件或目录。 
    -ok<执行指令>  此参数的效果和指定"-exec"参数类似,但在执行指令之前会先询问用户,若回答"y"或"Y",则放弃执行指令。 
    -path<范本样式>  指定字符串作为寻找目录的范本样式。 
    -perm<权限数值>  查找符合指定的权限数值的文件或目录。 
    -print  假设find指令的回传值为True,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称之前皆有"./"字符串。 
    -print0  假设find指令的回传值为True,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行。 
    -printf<输出格式>  假设find指令的回传值为True,就将文件或目录名称列出到标准输出。格式可以自行指定。 
    -prune  不寻找字符串作为寻找文件或目录的范本样式。 
    -regex<范本样式>  指定字符串作为寻找文件或目录的范本样式。 
    -size<文件大小>  查找符合指定的文件大小的文件。 
    -true  将find指令的回传值皆设为True。 
    -typ<文件类型>  只寻找符合指定的文件类型的文件。 
    -uid<用户识别码>  查找符合指定的用户识别码的文件或目录。 
    -used<日数>  查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算。 
    -user<拥有者名称>  查找符合指定的拥有者名称的文件或目录。 
    -version或--version  显示版本信息。 
    -xdev  将范围局限在先行的文件系统中。 
    -xtype<文件类型>  此参数的效果和指定"-type"参数类似,差别在于它针对符号连接检查。

  • 使用范例

1)根据文件名或正则表达式匹配搜索

模糊查找
[root@mjx d]# find . -name "*.txt"
 
模糊查找多个-o参数
[root@mjx d]# find . -name "*.txt" -o -name "*.log"
 
否定参数!,不以"*.txt"结尾
[root@mjx d]# find . ! -name "*.txt"

 2)基于目录深度的搜索

[root@mjx ~]# find . -maxdepth 2 -type f
 
基于1是当前目录 2是当前目录和下一级目录

3)根据文件类型搜索

[root@mjx ~]# find . -type d 
 
普通文件   	f
符号文件   	l
目录	    d
字符设备   	c
块设备	    b
套接字	    s
fifo	    p

4)根据文件时间进行搜索

Linux文件系统中每一个文件都有三种时间戳: ​

访问时间(-atime):用户最近一次访问文件的时间; ​

修改时间(-mtime):文件内容最后一次被修改的时间。 ​

变化时间(-ctime):文件元数据(metadata,例如权限或所有权)最后一次改变的时间。 ​ -atime,-mtime,-ctime作为时间参数,单位是天,可以使用+表示大于,-表示小于。

[root@mjx ~]# find . -type f -atime 7
#打印出正好在7天前被访问过的文件
[root@mjx ~]# find . -type f -mtime +7
#打印修改时间大于7天的文件
[root@mjx ~]# find . -type f -ctime -7
#打印出修改时间小于7天的文件

 3.5.11、ln 连接文件或目录

【命令格式:】ln [参数-bdfinsv] [源文件或目录] [目标文件或目录] 

【常用选项:】                

【注:cat为[link] 缩写】

【相关命令:pwd、stat】

【补充说明:ln命令用来为文件创件连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接。如果要创建符号连接必须使用"-s"选项,符号链接文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的】  

【具体选项如下:】
    -b或--backup  删除,覆盖目标文件之前的备份。 
    -d或-F或--directory  建立目录的硬连接。 
    -f或--force  强行建立文件或目录的连接,不论文件或目录是否存在。 
    -i或--interactive  覆盖既有文件之前先询问用户。 
    -n或--no-dereference  把符号连接的目的目录视为一般文件。 
    -s或--symbolic  对源文件建立符号连接,而非硬连接。 
    -S<字尾备份字符串>或--suffix=<字尾备份字符串>  用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的字尾备份字符串是符号"~",您可通过"-S"参数来改变它。 
    -v或--verbose  显示指令执行过程。 
    -V<备份方式>或--version-control=<备份方式>  用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用"-S"参数变更,当使用"-V"参数<备份方式>指定不同备份方式时,也会产生不同字尾的备份字符串。 
    --help  在线帮助。 
    --version  显示版本信息。

3.5.11.1、什么是硬链接和软链接(符号链接)

Linux具有为一个文件起多个名字的功能,称之为链接。文件链接有两种形式,即硬链接和软链接(也叫符号链接)。

  • 什么是硬链接?

    我们知道在linux文件系统中,文件被分成了两部分:用户数据和元数据。不管是什么类型的文件,系统都会为其分配一个节点号(Inode),用来记录文件的名称、权限等信息以及到用户数据(在Data block中)的索引。

    硬链接:多个文件名指向同一节点号,即共用Inode。

  • 为什么需要硬链接?

    方便备份及控制对信息的共享和增强安全性。

    被链接的文件可以存放在相同的目录下,但是必须有不同的文件名,而不用在硬盘上为同样的数据重复备份。当然被链接的文件也可以有相同的文件名,但是存放在不同的目录下,这样只要对一个目录下的该文件进行修改,就可以完成对所有目录下同名链接文件的修改。对于某个文件的各链接文件,我们可以给它们指定不同的存取权限,以控制对信息的共享和增强安全性。

  • 硬链接存在的限制

    1)不能对目录文件做硬链接;

    2)不能在不同的文件系统之间做硬链接。就是说,链接文件和被链接文件必须位于同一个文件系统中。

    每次创建文件夹时,系统会默认创建两个硬链接(只是不允许我们自己创建),这两个硬链接,一个是代表当前目录的,一个是代表上一级目录的,即(. 和 .. 两个隐藏目录),每创建一个目录,上级目录的硬链接数就+1,如果允许用户自己指定目录的硬链接,会复杂化系统,并且可能造成目录遍历陷入死循环。

    在不同的文件系统中的节点号(Inode)可能会重复。

    一般创建硬链接后,己经存在的文件的节点号(Inode)会被多个目录文件项使用。一个文件的硬链接数可以在目录的长列表格式的第二列中看到。

    在默认情况下,ln命令创建硬链接。ln命令会增加链接数,rm命令会减少链接数。一个文件除非链接数为0,否则不会从文件系统中被物理地删除(删除也只是删除Inode到Data block的索引,只有Data block中的block被真正覆盖时数据才真的被抹除,这也是硬盘数据可以做恢复的本质)。

  • 什么是软链接?

    软链接:也称之为符号链接。有着自己的inode号以及用户数据块,只不过用户数据块中存放的是另一文件的路径的指向。(有点像windows中的快捷方式)。

    符号链接确实是一个新文件,它具有不同的节点号;而硬链接并没有建立新文件;符号链接没有硬链接的限制,可以对目录文件做符号链接,也可以在不同文件系统之间做符号链接。

    删除源文件或目录,只删除了数据,不会删除符号链接。一旦以同样文件名创建了源文件,符号链接将继续指向该文件的新数据。

    在目录长列表中,符号链接作为一种特殊的文件类型显示出来,其第一个字母是l。符号链接的大小是其链接文件的路径名的字节数。

  • 为什么需要软链接?

   软链接就像我们的平时使用快捷方式一样,方便我们快速找到文件。

  • 使用范例

1)步骤1-创建三个目录

2)步骤2-创建源文件及硬链接

3)步骤3-创建软链接

3.5.12、lsattr 显示文件属性

【命令格式:】lasttr [参数-adlRvV] [文件或目录]

【常用选项:】                

【注:lsattr为[list attribute] 缩写】

【相关命令:chattr】

【补充说明:用chattr执行改变文件或目录的属性,可执行lsattr指令查询其属性】 

【具体选项如下:】
    -a  显示所有文件和目录,包括以"."为名称开头字符的额外内建,现行目录"."与上层目录".."。 
    -d  显示,目录名称,而非其内容。 
    -l  此参数目前没有任何作用。 
    -R  递归处理,将指定目录下的所有文件及子目录一并处理。 
    -v  显示文件或目录版本。 
    -V  显示版本信息。

  • 使用范例

[root@mjx h]# touch test.txt
[root@mjx h]# lsattr test.txt 
---------------- test.txt
设置只能对文件进行内容追加
[root@mjx h]# chattr +a test.txt 
[root@mjx h]# ls -l
total 0
-rw-r--r--. 1 root root 0 Aug 28 16:33 test.txt
[root@mjx h]# lsattr test.txt 
-----a---------- test.txt
设置文件不能删除、不能添加、不能修改
[root@mjx h]# chattr +i test.txt 
[root@mjx h]# lsattr test.txt 
----ia---------- test.txt
[root@mjx h]# rm -f test.txt 
rm: cannot remove ‘test.txt’: Operation not permitted
[root@mjx h]# vi test.txt 
[root@mjx h]# echo 222 >> test.txt
-bash: test.txt: Permission denied
移除文件的chattr i 属性
[root@mjx h]# chattr -i test.txt
[root@mjx h]# echo 222 >> test.txt
[root@mjx h]# cat test.txt
222
[root@mjx h]# lsattr test.txt
-----a---------- test.txt

3.5.13、mc 提供一个菜单式的文件管理程序

【命令格式:】mc [参数-abcdfhkPstuUVx] [-C <参数>] [-l <文件>] [-v <文件>] [目录]

【常用选项:】                

【注:mc为[midnight commander] 缩写】

【补充说明:执行mc之后,将会看到菜单式的文件管理程序,共分成4个部分,没有则使用yum -y install mc安装】  

【具体选项如下:】
    -a  当mc程序画线时不用绘图字符画线。 
    -b  使用单色模式显示。 
    -c  使用彩色模式显示。 
    -C<参数>  指定显示的颜色。 
    -d  不使用鼠标。 
    -f  显示mc函数库所在的目录。 
    -h  显示帮助。 
    -k  重设softkeys成预设置。 
    -l<文件>  在指定文件中保存ftpfs对话窗的内容。 
    -P  程序结束时,列出最后的工作目录。 
    -s  用慢速的终端机模式显示,在这模式下将减少大量的绘图及文字显示。 
    -t  使用TEMPCAP变量设置终端机,而不使用预设置。 
    -u  不用目前的shell程序。 
    -U  使用目前的shell程序。 
    -v<文件>  使用mc的内部编辑器来显示指定的文件。 
    -V  显示版本信息。 
    -x  指定以xterm模式显示。

    使用mc命令进入操作界面如下:

    可以敲键盘进入目录,用菜单对文件进行操作(如选F1,执行帮助功能),但是还是建议使用命令形式。

3.5.14、more 显示文本文件内容

【命令格式:】more [选项-dcsu] [文件]

【常用选项:】

【补充说明:more名单中内置了若干快捷键,常用的有H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)】 

【具体选项如下:】
    -<数字>:指定每屏显示的行数;
    -d:显示“[press space to continue,'q' to quit.]”和“[Press 'h' for instructions]”;
    -c:不进行滚屏操作。每次刷新这个屏幕;
    -s:将多个空行压缩成一行显示;
    -u:禁止下划线;
    +<数字>:从指定数字的行开始显示。
【使用技巧:】
    按Space键:显示文本的下一屏内容。
    按Enter键:只显示文本的下一行内容。
    按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。
    按H键:显示帮助屏,该屏上有相关的帮助信息。
    按B键:显示上一屏内容。
    按Q键:退出more命令。

3.5.15、rcp 远端复制文件或目录,rcp 不加密的

【命令格式:】rcp [参数-pr]  [源文件/目录]  [远程主机名:远程文件/目录]

【常用选项:】                

【注:rcp为[remote copy] 缩写】

【补充说明:rcp指令用在远端复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中】  

【具体选项如下:】
    -p  保留源文件或目录的属性,包括拥有者,所属群组,权限与时间。 
    -r  递归处理,将指定目录下的文件与子目录一并处理。
    -x 主机间传送的所有信息。
    -D 指定远程服务器的端口号。

  • 使用范例

    配置了一台ubuntu,使用rcp命令远程传输至centOS7上

3.5.16、scp 远程文件拷贝命令

    scp 是加密,是 rcp 的加强版

【命令格式:】scp [参数--1246BCpqrv]  [源文件/目录]  [远程主机名:远程文件/目录]

【常用选项:】

【注:scp 为 secure copy 的缩写】

【补充说明:,scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。】

【具体选项如下:】
    -1: 强制scp命令使用协议ssh1
    -2: 强制scp命令使用协议ssh2
    -4: 强制scp命令只使用IPv4寻址
    -6: 强制scp命令只使用IPv6寻址
    -B: 使用批处理模式(传输过程中不询问传输口令或短语)
    -C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
    -p:保留原文件的修改时间,访问时间和访问权限。
    -q: 不显示传输进度条。
    -r: 递归复制整个目录。
    -v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
    -c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
    -F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
    -i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
    -l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
    -o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
    -P port:注意是大写的P, port是指定数据传输用到的端口号
    -S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

  • 使用范例

支持语法:
scp local_file remote_username@remote_ip:remote_folder 
或者 
scp local_file remote_username@remote_ip:remote_file 
或者 
scp local_file remote_ip:remote_folder 
或者 
scp local_file remote_ip:remote_file 
 
[root@mjx ~]# scp scp.txt [email protected]:/root/
[email protected]'s password: 
scp.txt                                       100%    4     0.8KB/s   00:00 
[root@mjx ~]# scp scp.txt 192.168.170.130:/root/
[email protected]'s password: 
scp.txt                                       100%    4     0.8KB/s   00:00 

3.5.17、split 切割文件

【命令格式:】split [参数-l<行数>b<字节>...] [切割的文件名] [输出的文件名]

【常用选项:】    

【具体选项如下:】
    -<行数>或-l<行数>  指定每多少行就要切成一个小文件。 
    -b<字节>  指定每多少字就要切成一个小文件。 
    -C<字节>  与-b参数类似,但切割时尽量维持每行的完整性。 
    --help  显示帮助。 
    --version  显示版本信息。 
    [输出文件名]  设置切割后文件的前置文件名,split会自动在前置文件名后再加上编号。

  • 使用范例

3.5.18、touch 改变文件/目录时间或创建空文件

【命令格式:】touch [参数-acfm] [-r<参考文件或目录>] [文件或目录]
           touch [参数-acfm] [-dt<日期时间>] [文件或目录]
【常用选项:】                

【补充说明:使用touch指令可更改文件或目录的日期时间,包括存取时间和更改时间】

【具体选项如下:】
    -a或--time=atime或--time=access或--time=use  只更改存取时间。 
    -c或--no-create  不建立任何文件。 
    -d<时间日期>  使用指定的日期时间,而非现在的时间。 
    -f  此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。 
    -m或--time=mtime或--time=modify  只更改变动时间。 
    -r<参考文件或目录>  把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同。 
    -t<日期时间>  使用指定的日期时间,而非现在的时间。 
    --help  在线帮助。 
    --version  显示版本信息。

3.5.19、umask 建立文件时预设的权限掩码

【命令格式:】umask [参数-adlRvV] [文件或目录]

【常用选项:】                

【相关命令:chomd】

【补充说明:建立文件的初始化权限为:666,文档为777,因为要进入改目录,所以目录的可执行权限是默认放开的。默认情况下的umask值是022(可以用umask命令查看[即:----w--w-]),此时你建立的文件默认权限是644,建立的目录的默认权限是755。文档为:rw-rw-rw- 相应位置减去w,即为644->rw-r--r--。目录为:rwxrwxrwx相应位置减去w,即为:755->rwxr-xr-x。】【备注:永久修改umask值,需要修改配置文件】

【具体选项如下:】
    -p:输出的权限掩码可直接作为指令来执行;

    -S:以符号方式输出权限掩码。

  • 使用范例

3.5.20、whereis 查找文件

【命令格式:】whereis [参数-bfmsu] [-B<目录>]...[文件]

【常用选项:】             

【补充说明:whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新】 

【具体选项如下:】
    -b  只查找二进制文件。 
    -B<目录>  只在设置的目录下查找二进制文件。 
    -f  不显示文件名前的路径名称。 
    -m  只查找说明文件。 
    -M<目录>  只在设置的目录下查找说明文件。 
    -s  只查找原始代码文件。 
    -S<目录>  只在设置的目录下查找原始代码文件。 
    -u  查找不包含指定类型的文件。

  • 使用范例

3.5.21、which 查找并显示给定命令的绝对路径

【命令格式:】which [参数-wv] [文件或目录]

【常用选项:】        

【补充说明:which指令会在环境变量$PATH设置的目录里查找符合条件的文件】

【具体选项如下:】
 
    -n<文件名长度>  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。 
    -p<文件名长度>  与-n参数相同,但此处的<文件名长度>包括了文件的路径。 
    -w  指定输出时栏位的宽度。 
    -V  显示版本信息。

  • 使用范例

 

3.6、文档编辑

3.6.1、colrm 过滤掉指定列

【命令格式:】colrm [开始列编号<结束列编号>]

【常用选项:】                

【注:column为[column remove] 缩写】

【补充说明:Colrm命令能从一个文件中移除指定的列,从一个标准的input文件中提供输入,输出同样为标准输出】

【具体选项如下:】

  • 使用范例

3.6.2、ed 文本编辑器

【命令格式:】ed [-acdiqr] [-s] [文件]

【常用选项:】                

【注:ed为[editor] 缩写】

【补充说明:行编辑器 ed 对输入文件的行执行编辑。它将整个文件读入自己的缓冲区,对该副本执行指定的操作,并可选地将缓冲区写到磁盘。】

【具体选项如下:】
    a 此命令在指定的地址之后追加文本。
    c 此命令将指定的地址更改为给定的文本。
    d 此命令删除指定地址处的行。
    i 此命令在指定的地址之前插入文本。
    q 此命令在将缓冲区保存到磁盘后终止程序并退出。
    r file 此命令读取 filespec 的内容并将其插入指定的地址之后。
    s/pattern/replacement/ 此命令将匹配 pattern 的文本替换为指定地址中的 replacement 文本。
    w file 此命令将指定的地址写到 file。如果没有 address,则此命令缺省使用整个缓冲区。

  • 使用范例

3.6.3、expr 求表达式变量值

【命令格式:】expr [表达式/选项]

【常用选项:】        

【注:expr为[*Expression*] 缩写】

【补充说明:】

【具体选项如下:】

  • 使用范例

 

3.6.4、grep 在文件中搜索模式

【命令格式:】grep [-abcEFGhHilLnqrsvVwxy] [-A<显示列数>] [-B<显示列数>] [-C<显示列数>] [-d<进行动作>] [-e<范本样式>] [-f<范本文件>] [--help] [范本样式] [文件或目录...]

【常用选项:】                

【补充说明:grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为“-”,则grep指令会从标准输入设备读取数据】   

【具体选项如下:】
    -a或--text   不要忽略二进制的数据。
    -A<显示列数>或--after-context=<显示列数>   除了显示符合范本样式的那一列之外,并显示该列之后的内容。
    -b或--byte-offset   在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。
    -B<显示列数>或--before-context=<显示列数>   除了显示符合范本样式的那一列之外,并显示该列之前的内容。
    -c或--count   计算符合范本样式的列数。
    -C<显示列数>或--context=<显示列数>或-<显示列数>   除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
    -d<进行动作>或--directories=<进行动作>   当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
    -e<范本样式>或--regexp=<范本样式>   指定字符串做为查找文件内容的范本样式。
    -E或--extended-regexp   将范本样式为延伸的普通表示法来使用。
    -f<范本文件>或--file=<范本文件>   指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。
    -F或--fixed-regexp   将范本样式视为固定字符串的列表。
    -G或--basic-regexp   将范本样式视为普通的表示法来使用。
    -h或--no-filename   在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
    -H或--with-filename   在显示符合范本样式的那一列之前,表示该列所属的文件名称。
    -i或--ignore-case   忽略字符大小写的差别。
    -l或--file-with-matches   列出文件内容符合指定的范本样式的文件名称。
    -L或--files-without-match   列出文件内容不符合指定的范本样式的文件名称。
    -n或--line-number   在显示符合范本样式的那一列之前,标示出该列的列数编号。
    -q或--quiet或--silent   不显示任何信息。
    -r或--recursive   此参数的效果和指定“-d recurse”参数相同。
    -s或--no-messages   不显示错误信息。
    -v或--revert-match   反转查找。
    -V或--version   显示版本信息。
    -w或--word-regexp   只显示全字符合的列。
    -x或--line-regexp   只显示全列符合的列。
    -y   此参数的效果和指定“-i”参数相同。
    --help   在线帮助。
【常用正则:】

    ^  锚定行的开始 如:'^grep'匹配所有以grep开头的行。

    $  锚定行的结束 如:'grep$'匹配所有以grep结尾的行。

    .  匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。

    *  匹配零个或多个先前字符 如:' *grep'匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。

    [] 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。

    [^]  匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-F和H-Z的一个字母开头,紧跟rep的行。

    \(..\)  标记匹配字符,如:'\(love\)',love被标记为1。

    \<  锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。

    \>  锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。

    x\{m\} 连续重复字符x,m次,如:'o\{5\}'匹配包含连续5个o的行。

    x\{m,\} 连续重复字符x,至少m次,如:'o\{5,\}'匹配至少连续有5个o的行。

    x\{m,n\} 连续重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配连续5--10个o的行。

    \w  匹配一个文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。

    \W  w的反置形式,匹配一个非单词字符,如点号句号等。\W*则可匹配多个。

    \b  单词锁定符,如: '\bgrep\b'只匹配grep,即只能是grep这个单词,两边均为空格。

  • 常用的一些模式

【常用的】

    ls -l | grep '^a' 通过管道过滤ls -l输出的内容,只显示以a开头的行;

    find . -name "文件名"|xargs grep -nr "222"(xargs会将管道命令符|前面的内容,当做参数传入后面的命令,这样grep找的就是参数代表的文件);

    grep 'test' d* 显示所有以d开头的文件中包含test的行;

    grep 'test' aa bb cc 显示在aa,bb,cc文件中匹配test的行;

    grep '[a-z]' aa 显示所有包含每个字符串至少有5个连续小写字符的字符串的行;

    grep 'w(es)t.*' aa 如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(),找到就显示该行。如果用egrep或grep -E,就不用""号进行转义,直接写成'w(es)t.*'就可以了;

    grep -i pattern files :不区分大小写地搜索。默认情况区分大小写;

    grep -l pattern files :只列出匹配的文件名;

    grep -L pattern files :列出不匹配的文件名;

    grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’);

    grep -C number pattern files :匹配的上下文分别显示[number]行;

    grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行;

    grep -C number pattern files :匹配的上下文分别显示[number]行;

    grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行;

  • 使用范例

3.6.5、look 查询单字

【命令格式:】look [-adf][-t<字尾字符串>][字首字符串] [字典文件]
           look string [file] 

【常用选项:】        

【补充说明:主要用于查询单词】

【具体选项如下:】

    -a   使用另一个字典文件web2,该文件也位于/usr/dict目录下。
    -d   只对比英文字母和数字,其余一慨忽略不予比对。
    -f   忽略字符大小写差别。
    -t<字尾字符串>   设置字尾字符串。

3.6.6、nl 计算文件中行号

【命令格式:】nl [-b]

【常用选项:】        

【补充说明:与cat -n有点不太一样, nl 可以将行号做比较多的显示设计】

【具体选项如下:】
    -b :指定行号指定的方式,主要有两种:
    -b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
    -b t :如果有空行,空的那一行不要列出行号(默认值);

    -n :列出行号表示的方法,主要有三种:
    -n ln :行号在萤幕的最左方显示;
    -n rn :行号在自己栏位的最右方显示,且不加 0 ;
    -n rz :行号在自己栏位的最右方显示,且加 0 ;

    -w :行号栏位的占用的位数。
    -p :在逻辑定界符处不重新开始计算。

  • 使用范例

 

3.6.7、sort将文本文件内容加以排序

【命令格式:】sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>].. [文件]

【常用选项:】        

【补充说明:sort可针对文本文件的内容,以行为单位来排序】

【具体选项如下:】

    -b   忽略每行前面开始出的空格字符。
    -c   检查文件是否已经按照顺序排序。
    -d   排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
    -f   排序时,将小写字母视为大写字母。
    -i   排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
    -m   将几个排序好的文件进行合并。
    -M   将前面3个字母依照月份的缩写进行排序。
    -n   依照数值的大小排序。
    -o<输出文件>   将排序后的结果存入指定的文件。
    -r   以相反的顺序来排序。
    -t<分隔字符>   指定排序时所用的栏位分隔字符。
    +<起始栏位>-<结束栏位>   以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
    --help   显示帮助。
    --version   显示版本信息。

3.6.8、uniq 检查及删除文本文件中重复出现的行列

【命令格式:】uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][输入文件][输出文件]

【常用选项:】                

【补充说明:uniq可检查文本文件中重复出现的行列】  

【具体选项如下:】
    -c或--count   在每列旁边显示该行重复出现的次数。
    -d或--repeated   仅显示重复出现的行列。
    -f<栏位>或--skip-fields=<栏位>   忽略比较指定的栏位。
    -s<字符位置>或--skip-chars=<字符位置>   忽略比较指定的字符。
    -u或--unique   仅显示出一次的行列。
    -w<字符位置>或--check-chars=<字符位置>   指定要比较的字符。
    --help   显示帮助。
    --version   显示版本信息。
    [输入文件]   指定已排序好的文本文件。
    [输出文件]   指定输出的文件。

  • 使用范例

 

 3.6.9、wc 计算数字

【命令格式:】wc [-clw][文件]

【常用选项:】                

【注:wc为[word count] 缩写】

【补充说明:利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据】 
【具体选项如下:】

    -c或--bytes或--chars   只显示Bytes数。
    -l或--lines   只显示列数。
    -w或--words   只显示字数。
    --help   在线帮助。
    --version   显示版本信息。

3.7、文件传输

3.7.1、bye 中断FTP连线并结束程序

【命令格式:】bye

【常用选项:】                

【补充说明:在ftp模式下,输入bye即可中断目前的连线作业,并结束ftp的执行。】

【具体选项如下:】

3.7.2、ftp 设置文件系统相关功能

【命令格式:】ftp [-dignv][主机名称或IP地址]

【常用选项:】                

【补充说明:FTP是ARPANet的标准文件传输协议,该网络就是现今Internet的前身】 

【具体选项如下:】

    -d   详细显示指令执行过程,便于排错或分析程序执行的情形。
    -i   关闭互动模式,不询问任何问题。
    -g   关闭本地主机文件名称支持特殊字符的扩充特性。
    -n   不使用自动登陆。
    -v   显示指令执行过程。

3.7.3、ncftp 传输文件

【命令格式:】ncftp [主机或IP地址]

【常用选项:】                

【补充说明:FTP让用户得以下载存放于服务器主机的文件,也能将文件上传到远端主机放置。NcFTP是文字模式FTP程序的佼佼者,它具备多样特色, 包括显示传输速率,下载进度,自动续传,标住书签,可通过防火墙和代理服务器等。】

【具体选项如下:】

3.7.4、tftp 传输文件

【命令格式:】tftp [主机名称或IP地址]

【常用选项:】                

【补充说明:FTP让用户得以下载存放于远端主机的文件,也能将文件上传到远端主机放置。tftp是简单的文字模式ftp程序,它所使用的指令和FTP类似。】

【具体选项如下:】

3.8、网络通信

3.8.1、ifconfig 显示或设置网络设备

【命令格式:】ifconfig [网络设备][down up -allmulti -arp -promisc]...>][IP地址]

【常用选项:】                

【补充说明:ifconfig可设置网络设备的状态,或是显示目前的设置。】

【具体选项如下:】

    add<地址>   设置网络设备IPv6的IP地址。
    del<地址>   删除网络设备IPv6的IP地址。
    down   关闭指定的网络设备。
    <hw<网络设备类型><硬件地址>   设置网络设备的类型与硬件地址。
    io_addr<I/O地址>   设置网络设备的I/O地址。
    irq<IRQ地址>   设置网络设备的IRQ。
    media<网络媒介类型>   设置网络设备的媒介类型。
    mem_start<内存地址>   设置网络设备在主内存所占用的起始地址。
    metric<数目>   指定在计算数据包的转送次数时,所要加上的数目。
    mtu<字节>   设置网络设备的MTU。
    netmask<子网掩码>   设置网络设备的子网掩码。
    tunnel<地址>   建立IPv4与IPv6之间的隧道通信地址。
    up   启动指定的网络设备。
    -broadcast<地址>   将要送往指定地址的数据包当成广播数据包来处理。
    -pointopoint<地址>   与指定地址的网络设备建立直接连线,此模式具有保密功能。
    -promisc   关闭或启动指定网络设备的promiscuous模式。
    [IP地址]   指定网络设备的IP地址。
    [网络设备]   指定网络设备的名称。

3.8.2、nc 设置路由器

【命令格式:】nc [-hlnruz][-g<网关...>]>][主机名称][通信端口...]

【常用选项:】        

【补充说明:执行本指令可设置路由器的相关参数】

【具体选项如下:】

    -g<网关>   设置路由器跃程通信网关,最丢哦可设置8个。
    -G<指向器数目>   设置来源路由指向器,其数值为4的倍数。
    -h   在线帮助。
    -i<延迟秒数>   设置时间间隔,以便传送信息及扫描通信端口。
    -l   使用监听模式,管控传入的资料。
    -n   直接使用IP地址,而不通过域名服务器。
    -o<输出文件>   指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
    -p<通信端口>   设置本地主机使用的通信端口。
    -r   乱数指定本地与远端主机的通信端口。
    -s<来源位址>   设置本地主机送出数据包的IP地址。
    -u   使用UDP传输协议。
    -v   显示指令执行过程。
    -w<超时秒数>   设置等待连线的时间。
    -z   使用0输入/输出模式,只在扫描通信端口时使用。

3.8.2、nc 设置路由器

【命令格式:】nc [-hlnruz][-g<网关...>]>][主机名称][通信端口...]

【常用选项:】        

【补充说明:执行本指令可设置路由器的相关参数】

【具体选项如下:】

    -g<网关>   设置路由器跃程通信网关,最丢哦可设置8个。
    -G<指向器数目>   设置来源路由指向器,其数值为4的倍数。
    -h   在线帮助。
    -i<延迟秒数>   设置时间间隔,以便传送信息及扫描通信端口。
    -l   使用监听模式,管控传入的资料。
    -n   直接使用IP地址,而不通过域名服务器。
    -o<输出文件>   指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
    -p<通信端口>   设置本地主机使用的通信端口。
    -r   乱数指定本地与远端主机的通信端口。
    -s<来源位址>   设置本地主机送出数据包的IP地址。
    -u   使用UDP传输协议。
    -v   显示指令执行过程。
    -w<超时秒数>   设置等待连线的时间。
    -z   使用0输入/输出模式,只在扫描通信端口时使用。

3.8.3、netstat 显示网络状态

【命令格式:】netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]

【常用选项:】                

【补充说明:利用netstat指令可让你得知整个Linux系统的网络情况】

【具体选项如下:】

    -a或--all   显示所有连线中的Socket。
    -A<网络类型>或--<网络类型>   列出该网络类型连线中的相关地址。
    -c或--continuous   持续列出网络状态。
    -C或--cache   显示路由器配置的快取信息。
    -e或--extend   显示网络其他相关信息。
    -F或--fib   显示FIB。
    -g或--groups   显示多重广播功能群组组员名单。
    -h或--help   在线帮助。
    -i或--interfaces   显示网络界面信息表单。
    -l或--listening   显示监控中的服务器的Socket。
    -M或--masquerade   显示伪装的网络连线。
    -n或--numeric   直接使用IP地址,而不通过域名服务器。
    -N或--netlink或--symbolic   显示网络硬件外围设备的符号连接名称。
    -o或--timers   显示计时器。
    -p或--programs   显示正在使用Socket的程序识别码和程序名称。
    -r或--route   显示Routing Table。
    -s或--statistice   显示网络工作信息统计表。
    -t或--tcp   显示TCP传输协议的连线状况。
    -u或--udp   显示UDP传输协议的连线状况。
    -v或--verbose   显示指令执行过程。
    -V或--version   显示版本信息。
    -w或--raw   显示RAW传输协议的连线状况。
    -x或--unix   此参数的效果和指定"-A unix"参数相同。
    --ip或--inet   此参数的效果和指定"-A inet"参数相同。

3.8.4、ping 检测主机

【命令格式:】ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][主机名称或IP地址]

【常用选项:】                

【补充说明:执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常】

【具体选项如下:】

    -d   使用Socket的SO_DEBUG功能。
    -c<完成次数>   设置完成要求回应的次数。
    -f   极限检测。
    -i<间隔秒数>   指定收发信息的间隔时间。
    -I<网络界面>   使用指定的网络界面送出数据包。
    -l<前置载入>   设置在送出要求信息之前,先行发出的数据包。
    -n   只输出数值。
    -p<范本样式>   设置填满数据包的范本样式。
    -q   不显示指令执行过程,开头和结尾的相关信息除外。
    -r   忽略普通的Routing Table,直接将数据包送到远端主机上。
    -R   记录路由过程。
    -s<数据包大小>   设置数据包的大小。
    -t<存活数值>   设置存活数值TTL的大小。
    -v   详细显示指令的执行过程。

3.8.5、telnet 远端登入

【命令格式:】telnet [-8acdEfFKLrx][-b<主机别名>][主机名称或IP地址<通信端口>]

【常用选项:】                

【补充说明:执行telnet指令开启终端机阶段作业,并登入远端主机】

【具体选项如下:】

    -8   允许使用8位字符资料,包括输入与输出。
    -a   尝试自动登入远端系统。
    -b<主机别名>   使用别名指定远端主机名称。
    -c   不读取用户专属目录里的.telnetrc文件。
    -d   启动排错模式。
    -e<脱离字符>   设置脱离字符。
    -E   滤除脱离字符。
    -f   此参数的效果和指定"-F"参数相同。
    -F   使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机。
    -k<域名>   使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名。
    -K   不自动登入远端主机。
    -l<用户名称>   指定要登入远端主机的用户名称。
    -L   允许输出8位字符资料。
    -n<记录文件>   指定文件记录相关信息。
    -r   使用类似rlogin指令的用户界面。
    -S<服务类型>   设置telnet连线所需的IP TOS信息。
    -x   假设主机有支持数据加密的功能,就使用它。
    -X<认证形态>   关闭指定的认证形态。

3.9、系统管理

3.9.1、adduser 新增用户

【命令格式:】adduser 

【常用选项:】                

【相关命令:useradd】

【补充说明:在Slackware中,adduser指令是个script程序,利用交谈的方式取得输入的用户帐号资料,然后再交由真正建立帐号的useradd指令建立新用户,如此可方便管理员建立用户帐号。在Red Hat Linux中,adduser指令则是useradd指令的符号连接,两者实际上是同一个指令。】

【具体选项如下:】

【adduser 和 useradd 区别:
    在centos下adduser和useradd没有区别;
    但是在ubuntu下,useradd需要用户自己根据需要添加参数,不添加参数创建的用户无家目录、无密码、无系统shell;可以用 (useradd -m +用户名)的方式创建,它会在/home目录下创建同名文件夹,然后利用( passwd + 用户名)为指定的用户名设置密码。
    而使用adduser,它是一个perl [Perl是 Practical Extraction and Report Language的缩写,可翻译为 “实用报表提取语言”]脚本,在使用的时候会出现类似人机交互的界面,提供选项让用户填写和选择。

  • 使用范例1

添加的用户信息可以在/etc/passwd文件中查看,默认超级管理员的用户ID为0;

管理员UID为0:系统的管理员,用户ID(UID)是0的用户是root;

系统用户UID则为:1~999;

普通用户(由管理员创建)的UID从1000开始;

注:在etc/passwd文件中我们看到很多时/sbin/nologin结尾的,这些用户不能登录到系统,但是可以被某个服务调用,即使被黑客攻破,也只是影响这些服务。

  • 使用范例2-ubuntu中使用adduser

 root@ubuntu:~# adduser test
正在添加用户"test"...
正在添加新组"test" (1001)...
正在添加新用户"test" (1001) 到组"test"...
创建主目录"/home/test"...
正在从"/etc/skel"复制文件...
输入新的 UNIX 密码: 
重新输入新的 UNIX 密码: 
passwd:已成功更新密码
正在改变 test 的用户信息
请输入新值,或直接敲回车键以使用默认值
        全名 []: 
        房间号码 []: 
        工作电话 []: 
        家庭电话 []: 
        其它 []: 
这些信息是否正确? [Y/n] Y

3.9.2、date显示或设置系统时间与日期

【命令格式:】显示:date [-d<字符串>][参数-u][+%H%I...]
           设置:date [-s<字符串>][参数-u][MMDDhhmmCCYYss]
【常用选项:】

【补充说明:以%为开头的参数为格式参数,可指定日期或时间的显示格式。第二种语法可用来设置系统日期与时间。只有管理员才有设置日期与时间的权限。若不加任何参数,data会显示目前的日期与时间】

【具体选项如下:】

    %H  小时(以00-23来表示)。 
    %I  小时(以01-12来表示)。 
    %K  小时(以0-23来表示)。 
    %l  小时(以0-12来表示)。 
    %M  分钟(以00-59来表示)。 
    %P  AM或PM。 
    %r  时间(含时分秒,小时以12小时AM/PM来表示)。 
    %s  总秒数。起算时间为1970-01-01 00:00:00 UTC。 
    %S  秒(以本地的惯用法来表示)。 
    %T  时间(含时分秒,小时以24小时制来表示)。 
    %X  时间(以本地的惯用法来表示)。 
    %Z  市区。 
    %a  星期的缩写。 
    %A  星期的完整名称。 
    %b  月份英文名的缩写。 
    %B  月份的完整英文名称。 
    %c  日期与时间。只输入date指令也会显示同样的结果。 
    %d  日期(以01-31来表示)。 
    %D  日期(含年月日)。 
    %j  该年中的第几天。 
    %m  月份(以01-12来表示)。 
    %U  该年中的周数。 
    %w  该周的天数,0代表周日,1代表周一,异词类推。 
    %x  日期(以本地的惯用法来表示)。 
    %y  年份(以00-99来表示)。 
    %Y  年份(以四位数来表示)。 
    %n  在显示时,插入新的一行。 
    %t  在显示时,插入tab。 
    MM  月份(必要)。 
    DD  日期(必要)。 
    hh  小时(必要)。 
    mm  分钟(必要)。 
    CC  年份的前两位数(选择性)。 
    YY  年份的后两位数(选择性)。 
    ss  秒(选择性)。 
    -d<字符串>  显示字符串所指的日期与时间。字符串前后必须加上双引号。 
    -s<字符串>  根据字符串来设置日期与时间。字符串前后必须加上双引号。 
    -u  显示GMT。 
    --help  在线帮助。 
    --version  显示版本信息。 

  • 使用范例

 

3.9.3、exit 退出目前的shell

【命令格式:】exit [状态值]

【常用选项:】                

【补充说明:exit命令同于退出shell,并返回给定值。若不设置状态值参数,则shell以预设值退出。状态值0代表执行成功,其他值代表执行失败。0正常,1,-1 表示异常,正常的习惯是这样表示的。当然也可以按照自己的喜好来定义返回值的意义。】

【具体选项如下:】

3.9.4、free 显示内存状态

【命令格式:】free [参数-bkmotV] [-s <间隔秒数>]

【常用选项:】                

【补充说明:free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等】   

【具体选项如下:】

    -b  以Byte为单位显示内存使用情况。 
    -k  以KB为单位显示内存使用情况。 
    -m  以MB为单位显示内存使用情况。 
    -o  不显示缓冲区调节列。 
    -s<间隔秒数>  持续观察内存使用状况。 
    -t  显示内存总和列。 
    -V  显示版本信息。

  • 使用范例

3.9.5、groupadd/groupdel 新增/删除群组

【命令格式:】groupadd [群组名称]
           groupdel [群组名称]

【常用选项:】 

【相关命令:id】

【注:groupdel为[group delete] 缩写】

【补充说明:需要从系统上删除群组时,可用groupdel指令来完成这项工作。倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。 groupadd 可用来添加组】

【具体选项如下:】

  • 使用范例 

    每个用户在新建时就有确定的用户id和用户组id,他们都是唯一的。

    前面在学习chmod命令时,说过一个文件的权限有9个字母控制,前三位表示文件拥有者的权限,中间三位表示所属组的权限,最后三位表示其他用户的权限。

    通过使用用户组ID(GID),可以把多个用户加入到同一个组中,从而方便为组中的用户统一规划权限或指定任务。

3.9.6、groupmod 更改群组识别码或名称

【命令格式:】groupmod [-g <群组识别码> <-o>][-n <新群组名称>][群组名称]

【常用选项:】                

【注:groupmod为[group modify] 缩写】

【补充说明:每个用户账号有唯一的识别号UID(User ID),它是一个整数。系统自建的用户ID小于(1000),新建的第一用户id为(1000),以后依次递增。同样每个组有唯一的识别号GID(Group ID)。系统生成的组ID小于(1000),管理员新建一个组id为(1000),以后依次递增。这个1000不同版本或存在不同,有的为默认为500】  

【具体选项如下:】

    -g <群组识别码>  设置欲使用的群组识别码。 
    -o  重复使用群组识别码。 
    -n <新群组名称>  设置欲使用的群组名称。

3.9.7、halt 关闭系统

【命令格式:】halt [参数-dfinpw] 

【常用选项:】                

【相关命令:poweroff 、shutdown】

【补充说明:halt是最简单的关机命令,相当于shutdown -h now命令,不通知任何用户。halt执行时,杀死应用进程,文件系统写操作完成后就会停止内核。只有root用户才能执行此命令。halt会先检测系统的runlevel。若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统。】   

【具体选项如下:】    -d  不要在wtmp中记录[关闭系统,但不留下记录]。 
    -f  不论目前的runlevel为何,不调用shutdown即强制关闭系统。 
    -i  在halt之前,关闭全部的网络界面。 
    -n  halt前,不用先执行sync。 
    -p  halt之后,执行poweroff[默认缺省参数:关闭系统后关闭电源]。 
    -w  仅在wtmp中记录,而不实际结束系统。

【知识扩展:】
运行级别:许多程序需要开机启动,在windows叫做"服务service",在Linux叫做"守护进程daemon"。而Linux为不同场合分配不同的开机启动程序,就叫做运行级别。Linux系统具有下面7种默认运行级别:

0 - 关机,机器关闭
1 - 单用户模式
2 - 多用户,无网络连接
3 - 多用户,启动网络连接
4 - 用户自定义
5 - 多用户,具备图形界面
6 - 重启

Linux完成内核引导后,会由init初始化进程调用/etc/inittab文件,确定运行级别。如果该没有该文件,init命令将系统置于维护运行级别则以维护模式。[S、s、M、m 告诉 init 命令进入维护方式。当系统从另一运行级别进入维护方式,只有系统控制台被用作终端。]

使用init 0 可以关机,相当于命令halt

3.9.8、id显示真实有效的用户ID(UID)和组ID(GID)

【命令格式:】id [-gGnru] [用户名称]

【常用选项:】        

【补充说明:若不指定用户名称,则显示目前用户的ID】 

【具体选项如下:】

    -g或--group  显示用户所属群组的ID。 
    -G或--groups  显示用户所属附加群组的ID。 
    -n或--name  显示用户,所属群组或附加群组的名称。 
    -r或--real  显示实际ID。 
    -u或--user  显示用户ID。 
    -help  显示帮助。 
    -version  显示版本信息。

3.9.9、kill 杀死执行中的程序或工作

【命令格式:】kill [-s <信息名称或编号>][程序PID] 
        或 kill [-l <信息编号>]
        
【常用选项:】                

【相关命令:ps、job、killall】

【补充说明:发送一个信号(缺省,SIGTERM 信号)到一个正运行的程序】

【具体选项如下:】

    -a:当处理当前进程时,不限制命令名和进程号的对应关系;
    -l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称;
    -p:指定kill 命令只打印相关进程的进程号,而不发送任何信号;
    -s <信息名称或编号>:指定要送出的信息;
    -u:指定用户。

3.9.9.1、kill信号简介

关于kill命令:

  从上面的描述,我们可以看出:kill 是向进程发送信号的命令,我们可以使用kill - l查看支持的信号:  

注:man 7 signal查看信号的解释,编号1 ~ 31的信号为传统UNIX支持的信号,是不可靠信号(非实时的,可能丢失),而编号编号为33 ~ 64是可靠信号(实时信号)。  

  • 什么是信号?

信号是软件层次上对中断机制的一种模拟,是每个进程的属性,通过给一个进程发送信号,通知进程执行相应的处理。进程可以通过三种方式来响应一个信号:忽略信号、捕捉信号(收到信号后由该函数来处理)、执行缺省操作;

编号 信号名称 缺省动作 描述
1 SIGHUP Term 终端的挂断或进程死亡
2 SIGINT Term 键盘输入中断命令,一般是CTRL+C
3 SIGQUIT CoreDump 键盘输入退出命令,一般是CTRL+\,进程在因收到 SIGQUIT退出时会产生core文件,在这个意义上类似于一个程序错误信号
4 SIGILL CoreDump 非法指令,通常是因为可执行文件本身出现错误,或者试图执行数据段
5 SIGTRAP CoreDump trap指令发出,一般调试用
6 SIGABRT CoreDump 程序自己发现错误并调用abort时产生
7 SIGBUS CoreDump 非法地址,包括内存地址对齐(alignment)出错。eg: 访问一个四个字长的整数, 但其地址不是4的倍数
8 SIGFPE CoreDump 在发生致命的算术运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为0等其它所有的算术的错误。
9 SIGKILL Term 立即停止进程,不能捕获,不能忽略
10 SIGUSR1 Term 用户自定义信号1
11 SIGSEGV CoreDump 无效内存引用
12 SIGUSR2 Term 用户自定义信号2
13 SIGPIPE Term 管道不能访问
14 SIGALRM Term 时钟信号,alrm(2)发出的终止信号
15 SIGTERM Term 程序结束(terminate)信号,与SIGKILL不同的是该信号可以被阻塞和处理。通常用来要求程序自己正常退出。shell命令kill缺省产生这个信号。
16 SIGSTKFLT Term 处理器栈错误
17 SIGCHLD Ign 子进程结束时,父进程收到的信号
18 SIGCONT Ign 让一个停止(stopped)的进程继续执行。本信号不能被阻塞。可以用一个handler来让程序在由stopped状态变为继续执行时完成特定的工作。 例如,重新显示提示符。
19 SIGTSTP Stop 停止(stopped)进程的执行。注意它和terminate以及interrupt的区别:该进程还未结束,只是暂停执行。本信号不能被阻塞,处理或忽略。
20 SIGSTP Stop 停止进程,一般是CTRL+Z
21 SIGTTIN Stop 后台进程从终端读数据
22 SIGTTOU Stop 后台进程从终端写数据
23 SIGURG Ign 紧急数组是否到达socket
24 SIGXCPU CoreDump 超出CPU占用资源限制
25 SIGXFSZ CoreDump 超出文件大小资源限制
26 SIGVTALRM Stop 虚拟时钟信号,类似于SIGALRM,但计算的是进程占用的时间
27 SIGPROF Stop 类似与SIGALRM,但计算的是进程占用CPU的时间
28 SIGWINCH Ign 窗口大小改变发出的信号
29 SIGIO Stop 文件描述符准备就绪,可以输入/输出操作了
30 SIGPWR Stop 电源故障
31 SIGSYS CoreDump 非法系统调用

3.9.9.2、常用信号简介

常用的信号:

信号名称 信号值 描述 说明
SIGHUP 1 挂起 终止收到该信号的进程,此信号能被捕获,若程序中没有捕获该信号,程序会被终止,但不少服务将这个信号视为reload,让该进程重新读取自己的配置文件,类似重新启动。
SIGINT 2 键盘的中断信号 在用户键入INTR字符(比如:Ctrl-C,相当于执行kill -SIGINT pid / kill -2 pid)时发出,用于通知前台进程组终止进程
SIGKILL 9 发出杀死信号 强制中断一个程序的进行,本信号不能被捕获和忽略。
SIGTERM 15 发出终止信号 kill默认发送的信号。这个信号能够被捕获,容许程序作一些清理工做,也能够容许一些重要的进程直接忽略信号,防止误杀。
SIGTSTP 17, 19, 23 停止进程 停止(stopped)进程的执行。注意它和terminate以及interrupt的区别:该进程还未结束,只是暂停执行。本信号不能被阻塞,处理或忽略。

通常结束进程有两种方式:

kill - 通过进程ID来结束进程;

killall - 通过进程名来结束进程;

    kill -9 pid 可能是我们使用的最多的信号,这种方式比较暴力。比如我们在执行vim kill.txt的命令,然后直接kill掉vim的进程,则会产生一个.kill.txt.swp文件。

    而kill默认使用的是kill -15 是一种优雅的杀死,大部分程序接收到SIGTERM信号后,会先释放自己的资源,然后再停止,但是SIGTERM信号可以被阻塞,也可能被忽略。例如我们使用kill vimpid之后,是正常的终止,不会产生*.swp文件。  

3.9.10、last 列出目前与过去登入系统的用户相关信息

【命令格式:】last [参数-adRx][-f <记录文件>][-n <显示列数>][帐号名称...][终端机编号...]   

【常用选项:】                

【补充说明:单独执行last指令,它会读取位于/var/log目录下,名称为wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来】   

【具体选项如下:】

    -a  把从何处登入系统的主机名称或IP地址,显示在最后一行。 
    -d  将IP地址转换成主机名称。 
    -f <记录文件>  指定记录文件。 
    -n <显示列数>或-<显示列数>  设置列出名单的显示列数。 
    -R  不显示登入系统的主机名称或IP地址。 
    -x  显示系统关机,重新开机,以及执行等级的改变等信息。

  • 使用范例

3.9.11、lastb 列出登入系统失败的用户相关信息

【命令格式:】lastb [-adRx][-f <记录文件>][-n <显示列数>][帐号名称...][终端机编号...]

【常用选项:】                

【补充说明:单独执行lastb指令,它会读取位于/var/log目录下,名称为btmp的文件,并把该文件内容
记录的登入失败的用户名单,全部显示出来。】

【具体选项如下:】

    -a  把从何处登入系统的主机名称或IP地址显示在最后一行。 
    -d  将IP地址转换成主机名称。 
    -f<记录文件>  指定记录文件。 
    -n<显示列数>或-<显示列数>  设置列出名单的显示列数。 
    -R  不显示登入系统的主机名称或IP地址。 
    -x  显示系统关机,重新开机,以及执行等级的改变等信息。

  • 使用范例

3.9.12、login 登入系统

【命令格式:】login

【常用选项:】                

【补充说明:当/etc目录里含名称为nologin的文件时,系统只root帐号登入系统,其他用户一律不准登入】

【具体选项如下:】

3.9.13、logout 退出系统

【命令格式:】logout

【常用选项:】        

【补充说明:logout指令让用户退出系统,其功能和login指令相互对应】

【具体选项如下:】

  • 使用范例

 

3.9.14、newgrp 登入另一个群组

【命令格式:】newgrp [群组名称]

【常用选项:】        

【补充说明:若不指定群组名称,则newgrp指令会登入该用户名称的预设群组】

【具体选项如下:】
  • 使用范例

 

3.9.15、nice 设置命令优先级

【命令格式:】nice [-n <优先等级>][--help][--version][执行指令]

【常用选项:】                

【补充说明:nice指令可以改变程序执行的优先权等级。细调值的范围是 -20 到 19,19 是最低优先级。nice 命令缺省为递增值 10】

【具体选项如下:】

  • 使用范例

以最低优先级运行tar命令:[-19 等价于 -n 19]
 
root@mjx:~# nice -19 tar zcf documents.tar.gz Documents
 
以非常高的优先级运行tar命令
 
root@mjx:~# nice --19 tar zcf documents1.tar.gz Documents

3.9.16、ps 报告程序状况

【命令格式:】ps ps [-aAcdefHjlmNVwy][acefghLnrsSTuvxX]

【常用选项:-ef】

【相关命令:ps、top】                

【补充说明:ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用 top 工具】

【具体选项如下:】
    -a  显示所有终端机下执行的程序,除了阶段作业领导者之外。 
    a  显示现行终端机下的所有程序,包括其他用户的程序。 
    -A  显示所有程序。 
    -c  显示CLS和PRI栏位。 
    c  列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。 
    -C<指令名称>  指定执行指令的名称,并列出该指令的程序的状况。 
    -d  显示所有程序,但不包括阶段作业领导者的程序。 
    -e  此参数的效果和指定"A"参数相同。 
    e  列出程序时,显示每个程序所使用的环境变量。 
    -f  显示UID,PPIP,C与STIME栏位。 
    f  用ASCII字符显示树状结构,表达程序间的相互关系。 
    -g<群组名称>  此参数的效果和指定"-G"参数相同,当亦能使用阶段作业领导者的名称来指定。 
    g  显示现行终端机下的所有程序,包括群组领导者的程序。 
    -G<群组识别码>  列出属于该群组的程序的状况,也可使用群组名称来指定。 
    h  不显示标题列。 
    -H  显示树状结构,表示程序间的相互关系。 
    -j或j  采用工作控制的格式显示程序状况。 
    -l或l  采用详细的格式来显示程序状况。 
    L  列出栏位的相关信息。 
    -m或m  显示所有的执行绪。 
    n  以数字来表示USER和WCHAN栏位。 
    -N  显示所有的程序,除了执行ps指令终端机下的程序之外。 
    -p<程序识别码>  指定程序识别码,并列出该程序的状况。 
    p<程序识别码>  此参数的效果和指定"-p"参数相同,只在列表格式方面稍有差异。 
    r  只列出现行终端机正在执行中的程序。 
    -s<阶段作业>  指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。 
    s  采用程序信号的格式显示程序状况。 
    S  列出程序时,包括已中断的子程序资料。 
    -t<终端机编号>  指定终端机编号,并列出属于该终端机的程序的状况。 
    t<终端机编号>  此参数的效果和指定"-t"参数相同,只在列表格式方面稍有差异。 
    -T  显示现行终端机下的所有程序。 
    -u<用户识别码>  此参数的效果和指定"-U"参数相同。 
    u  以用户为主的格式来显示程序状况。 
    -U<用户识别码>  列出属于该用户的程序的状况,也可使用用户名称来指定。 
    U<用户名称>  列出属于该用户的程序的状况。 
    v  采用虚拟内存的格式显示程序状况。 
    -V或V  显示版本信息。 
    -w或w  采用宽阔的格式来显示程序状况。  
    x  显示所有程序,不以终端机来区分。 
    X  采用旧式的Linux i386登陆格式显示程序状况。 
    -y  配合参数"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位 。 
    -<程序识别码>  此参数的效果和指定"p"参数相同。 
    --cols<每列字符数>  设置每列的最大字符数。 
    --columns<每列字符数>  此参数的效果和指定"--cols"参数相同。 
    --cumulative  此参数的效果和指定"S"参数相同。 
    --deselect  此参数的效果和指定"-N"参数相同。 
    --forest  此参数的效果和指定"f"参数相同。 
    --headers  重复显示标题列。 
    --help  在线帮助。 
    --info  显示排错信息。 
    --lines<显示列数>  设置显示画面的列数。 
    --no-headers  此参数的效果和指定"h"参数相同,只在列表格式方面稍有差异。 
    --group<群组名称>  此参数的效果和指定"-G"参数相同。 
    --Group<群组识别码>  此参数的效果和指定"-G"参数相同。 
    --pid<程序识别码>  此参数的效果和指定"-p"参数相同。 
    --rows<显示列数>  此参数的效果和指定"--lines"参数相同。 
    --sid<阶段作业>  此参数的效果和指定"-s"参数相同。 
    --tty<终端机编号>  此参数的效果和指定"-t"参数相同。 
    --user<用户名称>  此参数的效果和指定"-U"参数相同。 
    --User<用户识别码>  此参数的效果和指定"-U"参数相同。 
    --version  此参数的效果和指定"-V"参数相同。 
    --widty<每列字符数>  此参数的效果和指定"-cols"参数相同。

3.9.16.1、linux进程有5种状态

1)R 运行 runnable (on run queue):正在运行或在运行队列中等待;

2)S 中断 sleeping:休眠中, 受阻, 在等待某个条件的形成或接受到信号;

3)D 不可中断 uninterruptible sleep (usually IO):收到信号不唤醒和不可运行, 进程必须等待直到有中断发生;

4)Z 僵死 a defunct (”zombie”) process:进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放;

5)T 停止 traced or stopped:进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运;

3.9.16.2、常用ps组合命令

常用的命令参数:

1)ps -ef|grep 进程名称

2)ps -aux 显示所有用户(不带控制台终端)的进程

ps aux |grep “进程名字或者pid” 显示指定进程的信息

3)分页查看:ps -aux|more

  • 使用范例1-ps -ef|grep

  • 使用范例2-ps -aux

  • 使用范例3

3.9.17、reboot 重新启动系统

【命令格式:】reboot [-dfinw]

【常用选项:】 

【相关命令:shutdown -r now】               

【补充说明: 命令可被用于在没有其他用户登录到本系统时执行一个重新引导操作。reboot的工作过程与halt类似,其作用是重新启动,而halt是关机。其参数也与halt类似。reboot命令重启动系统时是删除所有的进程,而不是平稳地终止它们。因此,使用reboot命令可以快速地关闭系统,但如果还有其它用户在该系统上工作时,就会引起数据的丢失。所以使用reboot命令的场合主要是在单用户模式。】   

【具体选项如下:】

    -d:重新开机时不把数据写入记录文件/var/tmp/wtmp。本参数具有“-n”参数效果;
    -f:强制重新开机,不调用shutdown指令的功能;
    -i:在重开机之前,先关闭所有网络界面;
    -n:重开机之前不检查是否有未结束的程序;
    -w:仅做测试,并不真正将系统重新开机,只会把重开机的数据写入/var/log目录下的wtmp记录文件。

  • 使用范例

 

3.9.18、rlogin 远端登入

【命令格式:】rlogin [-8EL][-e <脱离字符>][-l <用户名称>][主机名称或IP地址]

【常用选项:】                

【补充说明:执行rlogin指令开启终端机阶段操作,并登入远端主机。】  

【具体选项如下:】

    -8  允许输入8位字符数据。 
    -e脱离字符>  设置脱离字符。 
    -E  滤除脱离字符。 
    -l<用户名称>  指定要登入远端主机的用户名称。 
    -L  使用litout模式进行远端登入阶段操作。

  • 使用范例

mjx@mjx:~$ rlogin  -l root  192.168.80.131
 
[email protected]'s password: 
 
root@mjx:~# 

3.9.19、rsh 远端登入的Shell

【命令格式:】rsh [-dn][-l <用户名称>][主机名称或IP地址][执行指令]

【常用选项:】                

【补充说明:rsh提供用户环境,也就是Shell,以便指令能够在指定的远端主机上执行】

【具体选项如下:】

    -d  使用Socket层级的排错功能。 
    -l<用户名称>  指定要登入远端主机的用户名称。 
    -n  把输入的指令号向代号为/dev/null的特殊外围设备。

3.9.20、showdown 系统关机指令

【命令格式:】shutdown [-efFhknr][-t 秒数][时间][警告信息]

【常用选项:】                

【补充说明:使用shutdown命令关机是安全的。指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作。shutdown 执行关机是送信号给init,要求改变运行级别,以此来关机。所以也可以使用init直接调整运行级别。shutdown命令添加时间参数时,会通知每个已登录的用户系统将要关机。】

【具体选项如下:】

    -c  当执行"shutdown -h 11:50"指令时,只要按+键就可以中断关机的指令。 
    -f  重新启动时不执行fsck。 
    -F  重新启动时执行fsck。 
    -h  将系统关机[关机后关闭电源]。 
    -k  只是送出信息给所有用户,但不会实际关机。 
    -n  不调用init程序进行关机,而由shutdown自己进行。 
    -r  shutdown之后重新启动。 
    -t<秒数>  送出警告信息和删除信息之间要延迟多少秒。 
    [时间]  设置多久时间后执行shutdown指令。 
    [警告信息]  要传送给所有登入用户的信息。

  • 使用范例

两分钟后重启或者立刻重启

root@mjx:~# shutdown -r  2 / now
 
两分钟后关闭系统或立刻关闭系统
 
root@mjx:~# shutdown -h  2 / now
 
如果执行2分钟后关闭系统,但是想取消了可以执行:
 
root@mjx:~# shutdown -c
 
另一用户收到消息
 
mjx@mjx:~$ 
 
The system is going down for poweroff at Mon 2021-6-27 16:05:38 PDT!
The system shutdown has been cancelled

3.9.20.1、系统关机指令说明

系统重新启动指令有:reboot,init 6,shutdown -r now

系统关机指令有:init 0, shutdown -h now, half,poweroff

1)shutdown

    shutdown关机命令是安全的。通过发送信号给init,改变运行级别,且可以指定时间并且提醒用户将关闭系统。

    shutdown -h now:立刻关机(root用户使用)

    shutdown -h 10 10分钟后自动关机

2)halt

    halt 最简单的关机命令。halt执行时,杀死应用进程,文件系统写操作完成后就会停止内核。

3)reboot

    reboot命令重启动系统时是删除所有的进程,而不是平稳地终止它们。单用户模式下可以使用此命令。

4)init

   init是所有进程的祖先,其进程号始终为1。切换的工作是立即完成的。init 0:即关机;init 6:即重新启动。

5)poweroff

    poweroff 关机并切断电源。如果确认系统中已经没有用户存在且所有数据都已保存,需要立即关闭系统,可以使用poweroff命令。

3.9.21、init 进程初始化工具

【命令格式:】init [参数-bs]

【常用选项:】                

【补充说明:指定Linux系统要切换到的运行等级。init是所有进程的祖先,其进程号始终为1。init用于切换系统的运行级别,切换的工作是立即完成的。init 0命令用于立即将系统运行级别切换为0,即关机;init 6命令用于将系统运行级别切换为6,即重新启动】

【具体选项如下:】
    -b:不执行相关脚本而直接进入单用户模式;
    -s:切换到单用户模式。

【知识扩展:】
运行级别:许多程序需要开机启动,在windows叫做"服务service",在Linux叫做"守护进程daemon"。而Linux为不同场合分配不同的开机启动程序,就叫做运行级别。Linux系统具有下面7种默认运行级别:

0 - 关机,机器关闭
1 - 单用户模式
2 - 多用户,无网络连接
3 - 多用户,启动网络连接
4 - 用户自定义
5 - 多用户,具备图形界面
6 - 重启

Linux完成内核引导后,会由init初始化进程调用/etc/inittab文件,确定运行级别。如果该没有该文件,init命令将系统置于维护运行级别则以维护模式。[S、s、M、m 告诉 init 命令进入维护方式。当系统从另一运行级别进入维护方式,只有系统控制台被用作终端。]

使用init 0 可以关机,相当于命令halt

3.9.22、poweroff 关闭系统并切断电源

【命令格式:】poweroff [参数-nwdfih]

【常用选项:】                

【补充说明:如果确认系统中已经没有用户存在且所有数据都已保存,需要立即关闭系统,可以使用poweroff命令】

【具体选项如下:】
    -n:关闭操作系统时不执行sync操作;
    -w:不真正关闭操作系统,仅在日志文件“/var/log/wtmp”中;
    -d:关闭操作系统时,不将操作写入日志文件“/var/log/wtmp”中添加相应的记录;
    -f:强制关闭操作系统;
    -i:关闭操作系统之前关闭所有的网络接口;
    -h:关闭操作系统之前将系统中所有的硬件设置为备用模式。

3.9.23、swatch 关闭系统并切断电源

【命令格式:】swatch [-A <分隔字符>][-c <设置文件>][-f <记录文件>][-I <分隔字符>]...

【常用选项:】 

【注:swatch为[simple watcher]缩写】               

【补充说明:Swatch软件包需要安装。swatch可用来监控系统记录文件,并在发现特定的事件时,执行指定的动作。swatch所监控的事件以及对应事件的动作都存放在swatch的配置文件中。预设的配置文件为拥护根目录下的.swatchrc。然而在Red Hat Linux的预设用户根目录下并没有.swatchrc配置文件,您可将/usr/doc/swatch-2.2/config_files/swatchrc.personal文件复制到用户根目录下的.swatchrc,然后修改.swatchrc所要监控的事件及执行的动作】  

【具体选项如下:】
    -n:关闭操作系统时不执行sync操作;
    -w:不真正关闭操作系统,仅在日志文件“/var/log/wtmp”中;
    -d:关闭操作系统时,不将操作写入日志文件“/var/log/wtmp”中添加相应的记录;
    -f:强制关闭操作系统;
    -i:关闭操作系统之前关闭所有的网络接口;
    -h:关闭操作系统之前将系统中所有的硬件设置为备用模式。

3.9.24、top 显示管理执行中的程序

【命令格式:】top [bciqsS][d <间隔秒数>][n <执行次数>]

【常用选项:】                

【补充说明:在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了-s选项, 其中一些命令可能会被屏蔽】

【使用技巧:top模式下按x,可按照%CPU高亮排序】

【具体选项如下:】

    b  使用批处理模式。 
    c  列出程序时,显示每个程序的完整指令,包括指令名称,路径和参数等相关信息。 
    d<间隔秒数>  设置top监控程序执行状况的间隔时间,单位以秒计算。 
    i  执行top指令时,忽略闲置或是已成为Zombie的程序。 
    n<执行次数>  设置监控信息的更新次数。 
    q  持续监控程序执行的状况。 
    s  使用保密模式,消除互动模式下的潜在危机。 
    S  使用累计模式,其效果类似ps指令的"-S"参数。

  • 使用范例

top - 10:52:53 up  3:25,  4 users,  load average: 0.37, 0.14, 0.12
Tasks: 214 total,   2 running, 212 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.7 us,  0.7 sy,  0.0 ni, 97.0 id,  0.7 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   995684 total,    61340 free,   763340 used,   171004 buff/cache
KiB Swap:  2097148 total,  1983996 free,   113152 used.    72856 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND 
   6734 root      20   0  162124   2324   1576 R  0.7  0.2   0:00.40 top
   5064 mysql     20   0 1122152 163112   1728 S  0.3 16.4   0:05.65 mysqld
   
【前五行:当前系统情况整体的统计信息区】
1)第一行:任务队列信息。
    第一个时间(10:52:53 up  3:25)表示:目前系统时间是10点52分,系统已经运行了3小时25分(3:25,没有任何重启,持续运行);
    
    第二个信息(4 users)表示:当前有4个用户登录系统;
    
    第三个信息(load average)表示:load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况;load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了;
    
2)第二行:任务/进程信息。
    第一个信息(214 total)表示:系统现在总共有214个进程;
    
    第二个信息(2 running)表示:有两个正在运行;
 
    第三个信息(212 sleeping)表示:处于休眠的有212个;
 
    第四个信息(0 stopped)表示:处于停止状态的有0个;
 
    第五个信息(0 zombie)表示:处于僵死状态的有0个;

3)第三行:CPU状态信息。
    第一个信息(1.7 us)表示:用户空间占用CPU百分比:1.5%
 
    第二个信息(0.7 sy)表示:内核空间占用CPU百分比:0.7%

    第三个信息(0.0 ni)表示:改变过优先级的进程占用CPU百分比:0.0%

    第四个信息(97.0 id)表示:空闲CPU百分比:97.0%

    第五个信息(0.7 wa)表示:IO等待占用占用CPU百分比:0.0%

    第六个信息(0.0 hi)表示:硬中断(Hardware IRQ)占用CPU的百分比:0.0%

    第七个信息(0.0 si)表示:软中断(Software Interrupts)占用CPU的百分比:0.0%

    第八个信息(0.0 st)表示:表示被强制等待虚拟CPU的时间
    
4)第四行:内存状态信息。
 
    第一个信息(995684 total)表示:物理总内存量。995684KB

    第二个信息(61340 free)表示:空闲内存总量。61340KB

    第三个信息(763340 used)表示:使用中的物理内存总量。763340KB

    第四个信息(171004 buff/cache)表示:缓存的内存量。171004KB
    
5)第五行:交换分区信息。

    第一个信息(2097148 total)表示:交换区总量。2097148KB

    第二个信息(1983996 free)表示:空闲交换区总量。1983996KB

    第三个信息(113152 used)表示:使用交换区总量。113152KB

    第四个信息(72856 avail Mem)表示:缓冲交换区总量。72856KB
 
第六行:各进程(任务)的状态监控,项目列信息。

    进程ID(PID) 、进程名称(USER)、进程优先级(PR)、nice值[负值优先级高] (NI)、进程使用的虚拟内存总量(VIRT) 、进程使用的、未被换出的物理内存大小(RES) 、共享内存大小(SHR)、进程状态(S)、上次更新到现在的CPU时间占用百分比(%CPU)、进程使用的物理内存百分比(%MEM) 、进程使用的CPU时间总计,单位1/100秒(TIME+)、下达的指令名称(COMMAND)

3.9.25、uname 显示系统信息

【命令格式:】uname [参数-amnrsv]

【常用选项:默认缺省项为-s】        

【补充说明:uname可显示电脑以及操作系统的相关信息】 

【具体选项如下:】

    -a或--all  显示全部的信息。 
    -m或--machine  显示电脑类型。 
    -n或-nodename  显示在网络上的主机名称。 
    -r或--release  显示操作系统的发行编号。 
    -s或--sysname  显示操作系统名称。 
    -v  显示操作系统的版本。 
    --help  显示帮助。 
    --version  显示版本信息。

3.9.26、useradd 建立用户账号

【命令格式:】useradd [-mMnr][-d <登入目录>][-e <有效期限>]..[-g <群组>][-G <群组>][-u ][用户帐号] 
         或 useradd -D [-b][-e <有效期限>]..[-g <群组>][-G <群组>][-s ]

【常用选项:】                

【补充说明:useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中】   

【具体选项如下:】

    -c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。  
    -d<登入目录>  指定用户登入时的启始目录。 
    -D  变更预设值. 
    -e<有效期限>  指定帐号的有效期限。 
    -f<缓冲天数>  指定在密码过期后多少天即关闭该帐号。 
    -g<群组>  指定用户所属的群组。 
    -G<群组>  指定用户所属的附加群组。 
    -m  自动建立用户的登入目录。 
    -M  不要自动建立用户的登入目录。 
    -n  取消建立以用户名称为名的群组. 
    -r  建立系统帐号。 
    -s<shell>   指定用户登入后所使用的shell。 
    -u<uid>  指定用户ID。

  • 使用范例

指定目录 指定组创建用户[如果目录不存在用-m 自动建立]

root@mjx:~# useradd -d /home/ftp -g ftp -m mjxftp

3.9.27、userconf 用户账号设置程序

【命令格式:】userconf [--addgroup <群组>][--adduser <用户ID><群组><用户名称>][--delgroup <群组>]..

【常用选项:】                

【补充说明:需要另行安装。userconf实际上为linuxconf的符号连接,提供图形界面的操作方式,供管理员建立与管理各类帐号。若不加任何参数,即进入图形界面】  

【具体选项如下:】
    --addgroup<群组>  新增群组。 
    --adduser<用户ID><群组><用户名称><shell>  新增用户帐号。 
    --delgroup<群组>  删除群组。 
    --deluser<用户ID>  删除用户帐号。 
    --help  显示帮助。

3.9.28、userdel 删除用户账号

【命令格式:】userdel [-r][用户帐号]

【常用选项:】                

【补充说明:userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。】

【具体选项如下:】
    -f  删除用户登入目录以及目录中所有文件。

3.9.29、usermod 修改用户账号

【命令格式:】usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s ][-u ][用户帐号]

【常用选项:】                

【补充说明:usermod可用来修改用户帐号的各项设定】  

【具体选项如下:】

    -c<备注>  修改用户帐号的备注文字。 
    -d登入目录>  修改用户登入时的目录。 
    -e<有效期限>  修改帐号的有效期限。 
    -f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。 
    -g<群组>  修改用户所属的群组。 
    -G<群组>  修改用户所属的附加群组。 
    -l<帐号名称>  修改用户帐号名称。 
    -L  锁定用户密码,使密码无效。 
    -s<shell>  修改用户登入后所使用的shell。 
    -u<uid>  修改用户ID。 
    -U  解除密码锁定。

3.9.30、who 显示目前登入系统的用户信息

【命令格式:】who [-Himqsw][--help][--version][am i][记录文件]

【常用选项:】                

【补充说明:执行这项指令可得知目前有那些用户登入系统,单独执行who指令会列出登入帐号,使用的 
终端机,登入时间以及从何处登入】 

【具体选项如下:】

    -H或--heading  显示各栏位的标题信息列。 
    -i或-u或--idle  显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串。 
    -m  此参数的效果和指定"am i"字符串相同。 
    -q或--count  只显示登入系统的帐号名称和总人数。 
    -s  此参数将忽略不予处理,仅负责解决who指令其他版本的兼容性问题。 
    -w或-T或--mesg或--message或--writable  显示用户的信息状态栏。 
    --help  在线帮助。 
    --version  显示版本信息。

3.9.31、whoami 显示登录名

【命令格式:】whoami 

【常用选项:】        

【补充说明:相当于id -un】

【具体选项如下:】

  • 使用范例

 

3.9.32、passwd 设置密码

【命令格式:】passwd [-dklS][-u <-f>][用户名称] 

【常用选项:】                

【补充说明:passwd指令让用户可以更改自己的密码,而系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。】  

【具体选项如下:】

    -d  删除密码。本参数仅有系统管理者才能使用。 
    -f  强制执行。 
    -k  设置只有在密码过期失效后,方能更新。 
    -l  锁住密码。 
    -s  列出密码的相关信息。本参数仅有系统管理者才能使用。 
    -u  解开已上锁的帐号。

3.10、系统设置

3.10.1、chroot 改变根目录

【命令格式:】chroot [目的目录][执行指令...]

【常用选项:】                

【注:chroot为[change root] 缩写】

【补充说明:把根目录换成指定的目的目录】

【具体选项如下:】

3.10.2、clock 调整RTC时间

【命令格式:】clock [--adjust][--debug][--directisa]...

【常用选项:】                

【补充说明:RTC 是电脑内建的硬件时间,执行这项指令可以显示现在时刻,调整硬件时钟的时间,将系统时间设成与硬件时钟之时间一致,或是把系统时间回存到硬件时钟】

【具体选项如下:】

    --adjust  第一次使用"--set"或"--systohc"参数设置硬件时钟,会在/etc目录下产生一个名称为adjtime的文件。当再次使用这两个参数调整硬件时钟,此文件便会记录两次调整间之差异,日后执行clock指令加上"--adjust"参数时,程序会自动根 据记录文件的数值差异,计算出平均值,自动调整硬件时钟的时间。 
    --debug  详细显示指令执行过程,便于排错或了解程序执行的情形。 
    --directisa  告诉clock指令不要通过/dev/rtc设备文件,直接对硬件时钟进行存取。这个参数适用于仅有ISA总线结构的老式电脑。 
    --getepoch  把系统核心内的硬件时钟新时代数值,呈现到标准输出设备。 
    --hctosys  Hardware Clock to System Time,把系统时间设成和硬件时钟一致。由于这个动作将会造成系统全面更新文件的存取时间,所以最好在系统启动时就执行它。 
    --set--date  设置硬件时钟的日期和时间。 
    --setepoch--epoch=<年份>   设置系统核心之硬件时钟的新时代数值,年份以四位树字表示。 
    --show  读取硬件时钟的时间,并将其呈现至标准输出设备。 
    --systohc  System Time to Hardware Clock,将系统时间存回硬件时钟内。 
    --test  仅作测试,并不真的将时间写入硬件时钟或系统时间。 
    --utc  把硬件时钟上的时间时为CUT,有时也称为UTC或UCT。 
    --version  显示版本信息。

3.10.3、crontab 设置计时器

【命令格式:】[-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr]

【常用选项:】                

【补充说明:cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使用计时器的功能。其配置文件格式如下:
Minute Hour Day Month DayOFWeek Command 】

【具体选项如下:】

    -e  编辑该用户的计时器设置。 
    -l  列出该用户的计时器设置。 
    -r  删除该用户的计时器设置。 
    -u<用户名称>  指定要设定计时器的用户名称。

3.10.4、dmesg 显示开机信息

【命令格式:】dmesg [-cn][-s <缓冲区大小>]

【常用选项:】                

【补充说明:kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里】  

【具体选项如下:】

    -c  显示信息后,清除ring buffer中的内容。 
    -s<缓冲区大小>  预设置为8196,刚好等于ring buffer的大小。
    -n  设置记录信息的层级。

3.10.5、enable 启动或关闭shell内建指令

【命令格式:】enable [-n][-all] [内建指令]

【常用选项:】                

【补充说明:若要执行的文件名称与shell内建指令相同,可用enable -n来关闭shell内建指令。若不加-n参数,enable可重新启动关闭的指令。】

【具体选项如下:】
    -n  关闭指定的shell内建指令。 

  • 使用范例

 

Linux系统为了提高系统运行效率,将经常使用的轻量的命令在系统启动时一并加载这些命令到内存中供SHELL随时调用,这部分命令即为内部命令,解析内建命令不需要创建子进程。而外部命令使用时才被加载到内存。  

3.10.6、eval重新运算求出参数的内容

【命令格式:】eval [参数]

【常用选项:】        

【具体选项如下:】

  • 使用范例

 

3.10.7、export 设置或显示环境变量

【命令格式:】export [-fnp] [变量名称]=[变量设置值]

【常用选项:】

【具体选项如下:】
-f  代表[变量名称]中为函数名称。
-n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p  列出所有的shell赋予程序的环境变量。

  • 使用范例

// 列出当前的环境变量
[root@mjx ~]# export -p
//定义环境变量并赋值
[root@mjx ~]# export MYENV=7  

3.10.8、set 设置shell

【命令格式:】set [+-abCdefhHklmnpPtuvx]

【常用选项:】        

【补充说明:set指令能设置所使用shell的执行方式,可依照不同的需求来做设置。unset删除变量或者函数】

【具体选项如下:】

    -a  标示已修改的变量,以供输出至环境变量。 
    -b  使被中止的后台程序立刻回报执行状态。 
    -C  转向所产生的文件无法覆盖已存在的文件。 
    -d  Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消。 
    -e  若指令传回值不等于0,则立即退出shell。   
    -f   取消使用通配符。 
    -h  自动记录函数的所在位置。 
    -H Shell  可利用"!"加<指令编号>的方式来执行history中记录的指令。 
    -k  指令所给的参数都会被视为此指令的环境变量。 
    -l  记录for循环的变量名称。 
    -m  使用监视模式。 
    -n  只读取指令,而不实际执行。 
    -p  启动优先顺序模式。 
    -P  启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。 
    -t  执行完随后的指令,即退出shell。 
    -u  当执行时使用到未定义过的变量,则显示错误信息。 
    -v  显示shell所读取的输入值。 
    -x  执行指令后,会先显示该指令及所下的参数。 
    +<参数>  取消某个set曾启动的参数。

3.10.9、setenv 查询或显示环境变量

【命令格式:】setenv [变量名称][变量值]

【常用选项:】                

【注:setenv为[set environment variable] 缩写】

【补充说明:setenv为tsch中查询或设置环境变量的指令】

【具体选项如下:】

3.11、磁盘管理

3.11.1、df 显示磁盘的相关信息

【命令格式:】df [-ahHiklmPT][--block-size=<区块大小>][-t <文件系统类型>][-x <文件系统类型>][--help][--no-sync][--sync][--version][文件或设备]

【常用选项:】                

【补充说明:df可显示磁盘的文件系统与使用情形】 

【具体选项如下:】

    -a或--all   包含全部的文件系统。
    --block-size=<区块大小>   以指定的区块大小来显示区块数目。
    -h或--human-readable   以可读性较高的方式来显示信息。
    -H或--si   与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes。
    -i或--inodes   显示inode的信息。
    -k或--kilobytes   指定区块大小为1024字节。
    -l或--local   仅显示本地端的文件系统。
    -m或--megabytes   指定区块大小为1048576字节。
    --no-sync   在取得磁盘使用信息前,不要执行sync指令,此为预设值。
    -P或--portability   使用POSIX的输出格式。
    --sync   在取得磁盘使用信息前,先执行sync指令。
    -t<文件系统类型>或--type=<文件系统类型>   仅显示指定文件系统类型的磁盘信息。
    -T或--print-type   显示文件系统的类型。
    -x<文件系统类型>或--exclude-type=<文件系统类型>   不要显示指定文件系统类型的磁盘信息。
    --help   显示帮助。
    --version   显示版本信息。
    [文件或设备]   指定磁盘设备。

3.11.2、dirs 显示目录栈

【命令格式:】dirs [+/-n -l]

【常用选项:】         

【补充说明:显示目录堆叠中的记录】 

【具体选项如下:】

    +n   显示从左边算起第n笔的目录。
    -n   显示从右边算起第n笔的目录。
    -l   显示目录完整的记录。

3.11.3、du 显示目录或文件的大小

【命令格式:】du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>][--max-depth=<目录层数>][--help][--version][目录或文件]

【常用选项:】                

【补充说明:du会显示指定的目录或文件所占用的磁盘空间】   

【具体选项如下:】

    -a或-all   显示目录中个别文件的大小。
    -b或-bytes   显示目录或文件大小时,以byte为单位。
    -c或--total   除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
    -D或--dereference-args   显示指定符号连接的源文件大小。
    -h或--human-readable   以K,M,G为单位,提高信息的可读性。
    -H或--si   与-h参数相同,但是K,M,G是以1000为换算单位。
    -k或--kilobytes   以1024 bytes为单位。
    -l或--count-links   重复计算硬件连接的文件。
    -L<符号连接>或--dereference<符号连接>   显示选项中所指定符号连接的源文件大小。
    -m或--megabytes   以1MB为单位。
    -s或--summarize   仅显示总计。
    -S或--separate-dirs   显示个别目录的大小时,并不含其子目录的大小。
    -x或--one-file-xystem   以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
    -X<文件>或--exclude-from=<文件>   在<文件>指定目录或文件。
    --exclude=<目录或文件>   略过指定的目录或文件。
    --max-depth=<目录层数>   超过指定层数的目录后,予以忽略。
    --help   显示帮助。
    --version   显示版本信息。

3.11.4、lndir 连接目录内容

【命令格式:】lndir [-ignorelinks][-silent][源目录][目的目录]

【常用选项:】                

【补充说明:执行lndir指令,可一口气把源目录底下的文件和子目录统统建立起相互对应的符号连接。】

【具体选项如下:】
    -ignorelinks   直接建立符号连接的符号连接。
    -silent   不显示指令执行过程。

3.11.5、stat 显示inode内容

【命令格式:】stat [文件或目录]

【常用选项:】                

【补充说明:stat以文字的格式来显示inode[索引节点]的内容】

【具体选项如下:】
    -f 显示文件系统信息
    -t 以简洁方式输出

 

3.11.5.1、stat 命令中的时间 

    stat 命令中列出了三个时间:Access-最后的访问时间、Modify-最后修改时间、Change-文件最后更改时间;

ls 命令同样可以显示以下信息:

ls -l filename #列出文件的mtime(最后修改时间)

ls -lc filename #列出文件的ctime(最后的更改时间)

ls -lu filename #列出文件的atime(最后的访问时间)

1)当读取文件时:atime 时间改变,而mtime、ctime不变

2)当修改文件时:atime、mtime、ctime都会改变

3)修改属性时:ctime 时间改变,而atime、mtime不变

4)more/less/cat/nl/tail/tac 命令会改变atime

5)ls/stat命令不会修改文件的atime、mtime、ctime

3.12、备份压缩

3.12.1、ar 建立或修改备存文件

【命令格式:】ar ar[-dmpqrtx][cfosSuvV][a<成员文件>][b<成员文件>][i<成员文件>][备存文件][成员文件]

【常用选项:】                

【补充说明:ar可让您集合许多文件,成为单一的备存文件。在备存文件中,所有成员文件皆保有原来的属性与权限。】

【具体选项如下:】

指令参数 
    -d  删除备存文件中的成员文件。 
    -m  变更成员文件在备存文件中的次序。 
    -p  显示备存文件中的成员文件内容。 
    -q  将问家附加在备存文件末端。 
    -r  将文件插入备存文件中。 
    -t  显示备存文件中所包含的文件。 
    -x  自备存文件中取出成员文件。 
选项参数 
    a<成员文件>  将文件插入备存文件中指定的成员文件之后。 
    b<成员文件>  将文件插入备存文件中指定的成员文件之前。 
    c  建立备存文件。 
    f  为避免过长的文件名不兼容于其他系统的ar指令指令,因此可利用此参数,截掉要放入备存文件中过长的成员文件名称。 
    i<成员文件>  将问家插入备存文件中指定的成员文件之前。 
    o  保留备存文件中文件的日期。 
    s  若备存文件中包含了对象模式,可利用此参数建立备存文件的符号表。 
    S  不产生符号表。 
    u  只将日期较新文件插入备存文件中。 
    v  程序执行时显示详细的信息。 
    V  显示版本信息。

3.12.2、bzip2 .bz2 文件的压缩程序

【命令格式:】bzip2 [-cdfhkLstvVz][--repetitive-best][--repetitive-fast][- 压缩等级][要压缩的文件,不能是目录]

【常用选项:】                

【补充说明:bzip2采用新的压缩演算法(采用 Burrows-Wheeler 块排序文本压缩算法和霍夫曼编码),若没有加上任何参数,bzip2压缩完文件后会产生.bz2的压缩文件,并删除原始的文件。bzip2比gzip提供更好的压缩】

【具体选项如下:】

    -c或--stdout  将压缩与解压缩的结果送到标准输出。 
    -d或--decompress  执行解压缩。 
    -f或--force  bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖,请使用此参数。 
    -h或--help  显示帮助。 
    -k或--keep  bzip2在压缩或解压缩后,会删除原始的文件。若要保留原始文件,请使用此参数。 
    -s或--small  降低程序执行时内存的使用量。 
    -t或--test  测试.bz2压缩文件的完整性。 
    -v或--verbose  压缩或解压缩文件时,显示详细的信息。 
    -z或--compress  强制执行压缩。 
    -L,--license,
    -V或--version  显示版本信息。 
    --repetitive-best  若文件中有重复出现的资料时,可利用此参数提高压缩效果。 
    --repetitive-fast  若文件中有重复出现的资料时,可利用此参数加快执行速度。 
    -压缩等级  压缩时的区块大小[-9 最佳, -1 最快]。

3.12.3、compress 压缩或解压文件

【命令格式:】compress [-cdfrvV][-b <压缩效率>][文件或目录...]

【常用选项:】                

【补充说明:compress是个历史悠久的压缩程序,文件经它压缩后,其名称后面会多出".Z"的扩展名。当要解压缩时,可执行uncompress指令。事实上uncompress是指向compress的符号连接,因此不论是压缩或解压缩,都可通过compress指令单独完成。】   

【具体选项如下:】

    -b<压缩效率>  压缩效率是一个介于9-16的数值,预设值为"16",指定愈大的数值,压缩效率就愈高。 
    -c  把压缩后的文件输出到标准输出设备,不去更动原始文件。 
    -d  对文件进行解压缩而非压缩。 
    -f  强制保存压缩文件,不理会文件名称或硬连接是否存在,该文件是否为符号连接以及压缩效率高低的问题。 
    -r  递归处理,将指定目录下的所有文件及子目录一并处理。 
    -v  显示指令执行过程。 
    -V  显示指令版本及程序预设值。

3.12.4、dump 备份文件系统

【命令格式:】dump [-cnu][-0123456789][-b <区块大小>][-d <密度>][-f <设备名称>][-h <层级>]...[目录或文件系统] 
           或 dump [-wW]
【常用选项:】                

【补充说明:dump为备份工具程序,可将目录或整个文件系统备份至指定的设备,或备份成一个大文件。】

【具体选项如下:】

    -0123456789  备份的层级。 
    -b<区块大小>  指定区块的大小,单位为KB。 
    -B<区块数目>  指定备份卷册的区块数目。 
    -c  修改备份磁带预设的密度与容量。 
    -d<密度>  设置磁带的密度。单位为BPI。 
    -f<设备名称>  指定备份设备。 
    -h<层级>  当备份层级等于或大雨指定的层级时,将不备份用户标示为"nodump"的文件。 
    -n  当备份工作需要管理员介入时,向所有"operator"群组中的使用者发出通知。 
    -s<磁带长度>  备份磁带的长度,单位为英尺。 
    -T<日期>  指定开始备份的时间与日期。 
    -u  备份完毕后,在/etc/dumpdates中记录备份的文件系统,层级,日期与时间等。 
    -w  与-W类似,但仅显示需要备份的文件。 
    -W  显示需要备份的文件及其最后一次备份的层级,时间与日期。

3.12.5、gunzip 解压文件

【命令格式:】gunzip [-acfhlLnNqrtvV][-s <压缩字尾字符串>][文件...] 或 gunzip [-acfhlLnNqrtvV][-s <压缩字尾字符串>][目录]

【常用选项:】                

【补充说明:gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为".gz"。事实上gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过gzip指令单独完成。】

【具体选项如下:】

    -a或--ascii  使用ASCII文字模式。 
    -c或--stdout或--to-stdout  把解压后的文件输出到标准输出设备。 
    -f或-force  强行解开压缩文件,不理会文件名称或硬连接是否存在以及该文件是否为符号连接。 
    -h或--help  在线帮助。 
    -l或--list  列出压缩文件的相关信息。 
    -L或--license  显示版本与版权信息。 
    -n或--no-name  解压缩时,若压缩文件内含有远来的文件名称及时间戳记,则将其忽略不予处理。 
    -N或--name  解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其回存到解开的文件上。 
    -q或--quiet  不显示警告信息。 
    -r或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。 
    -S<压缩字尾字符串>或--suffix<压缩字尾字符串>  更改压缩字尾字符串。 
    -t或--test  测试压缩文件是否正确无误。 
    -v或--verbose  显示指令执行过程。 
    -V或--version 显示版本信息。

3.12.6、gzexe 压缩执行文件

【命令格式:】gzexe [-d][执行文件...]

【常用选项:】                

【补充说明:gzexe是用来压缩执行文件的程序。当您去执行被压缩过的执行文件时,该文件会自动解压然后继续执行,和使用一般的执行文件相同。】

【具体选项如下:】
    -d  解开压缩文件

3.12.7、gzip 压缩文件

【命令格式:】gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][--best/fast][文件...] 
或 gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][--best/fast][目录]

【常用选项:】                

【补充说明:gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名。gzip是为了取代compress,并提供更好的压缩比】

【具体选项如下:】

    -a或--ascii  使用ASCII文字模式。 
    -c或--stdout或--to-stdout  把压缩后的文件输出到标准输出设备,不去更动原始文件。 
    -d或--decompress或----uncompress  解开压缩文件。 
    -f或--force  强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。 
    -h或--help  在线帮助。 
    -l或--list  列出压缩文件的相关信息。 
    -L或--license  显示版本与版权信息。 
    -n或--no-name  压缩文件时,不保存原来的文件名称及时间戳记。 
    -N或--name  压缩文件时,保存原来的文件名称及时间戳记。 
    -q或--quiet  不显示警告信息。 
    -r或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。 
    -S<压缩字尾字符串>或----suffix<压缩字尾字符串>  更改压缩字尾字符串。 
    -t或--test  测试压缩文件是否正确无误。 
    -v或--verbose  显示指令执行过程。 
    -V或--version  显示版本信息。 
    -<压缩效率>  压缩效率是一个介于1-9的数值,预设值为"6",指定愈大的数值,压缩效率就会愈高。 
    --best  此参数的效果和指定"-9"参数相同。 
    --fast  此参数的效果和指定"-1"参数相同。

3.12.8、restore 还原文件系统

【命令格式:】restore [-cCvy][-b <区块大小>][-D <文件系统>][-f <备份文件>][-s <文件编号>] 
或 restore [-chmvxy][-b <区块大小>][-D <文件系统>][-f <备份文件>][-s <文件编号>][文件...]

【常用选项:】                

【补充说明:restore 指令所进行的操作和dump指令相反,倾倒操作可用来备份文件,而还原操作则是写回这些已备份的文件。】

【具体选项如下:】

    -b<区块大小>   设置区块大小,单位是Byte。
    -c   不检查倾倒操作的备份格式,仅准许读取使用旧格式的备份文件。
    -C   使用对比模式,将备份的文件与现行的文件相互对比。
    -D<文件系统>   允许用户指定文件系统的名称。
    -f<备份文件>   从指定的文件中读取备份数据,进行还原操作。
    -h   仅解出目录而不包括与该目录相关的所有文件。
    -i   使用互动模式,在进行还原操作时,restore指令将依序询问用户。
    -m   解开符合指定的inode编号的文件或目录而非采用文件名称指定。
    -r   进行还原操作。
    -R   全面还原文件系统时,检查应从何处开始进行。
    -s<文件编号>   当备份数据超过一卷磁带时,您可以指定备份文件的编号。
    -t   指定文件名称,若该文件已存在备份文件中,则列出它们的名称。
    -v   显示指令执行过程。
    -x   设置文件名称,且从指定的存储媒体里读入它们,若该文件已存在在备份文件中,则将其还原到文件系统内。
    -y   不询问任何问题,一律以同意回答并继续执行指令。

3.12.9、tar 备份/打包文件

【命令格式:】tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>]...[文件或目录...]

【常用选项:】                

【补充说明:tar是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。bzip2、gzip和xz工具都不能处理目录,只能处理文件。如果想对整个目录进行压缩,可以先用tar归档,再用bzip2、gzip或者xz处理。为了方便,于是tar命令就有了:-j -z -J】
   
【具体选项如下:】

    -A或--catenate   新增温暖件到已存在的备份文件。
    -b<区块数目>或--blocking-factor=<区块数目>   设置每笔记录的区块数目,每个区块大小为12Bytes。
    -B或--read-full-records   读取数据时重设区块大小。
    -c或--create   建立新的备份文件。
    -C<目的目录>或--directory=<目的目录>   切换到指定的目录。
    -d或--diff或--compare   对比备份文件内和文件系统上的文件的差异。
    -f<备份文件>或--file=<备份文件>   指定备份文件。
    -F<Script文件>或--info-script=<Script文件>   每次更换磁带时,就执行指定的Script文件。
    -g或--listed-incremental   处理GNU格式的大量备份。
    -G或--incremental   处理旧的GNU格式的大量备份。
    -h或--dereference   不建立符号连接,直接复制该连接所指向的原始文件。
    -i或--ignore-zeros   忽略备份文件中的0 Byte区块,也就是EOF。

    -j将输出重定向给bzip2命令来压缩或解压,此时档案名最好为*.tar.bz2

     -J将输出重定向给xz命令来压缩或解压,此时档案名最好为*.tar.xz

    -k或--keep-old-files   解开备份文件时,不覆盖已有的文件。
    -K<文件>或--starting-file=<文件>   从指定的文件开始还原。
    -l或--one-file-system   复制的文件或目录存放的文件系统,必须与tar指令执行时所处的文件系统相同,否则不予复制。
    -L<媒体容量>或-tape-length=<媒体容量>   设置存放每体的容量,单位以1024 Bytes计算。
    -m或--modification-time   还原文件时,不变更文件的更改时间。
    -M或--multi-volume   在建立,还原备份文件或列出其中的内容时,采用多卷册模式。
    -N<日期格式>或--newer=<日期时间>   只将较指定日期更新的文件保存到备份文件里。
    -o或--old-archive或--portability   将资料写入备份文件时使用V7格式。
    -O或--stdout   把从备份文件里还原的文件输出到标准输出设备。
    -p或--same-permissions   用原来的文件权限还原文件。
    -P或--absolute-names   文件名使用绝对名称,不移除文件名称前的"/"号。
    -r或--append   新增文件到已存在的备份文件的结尾部分。
    -R或--block-number   列出每个信息在备份文件中的区块编号。
    -s或--same-order   还原文件的顺序和备份文件内的存放顺序相同。
    -S或--sparse   倘若一个文件内含大量的连续0字节,则将此文件存成稀疏文件。
    -t或--list   列出备份文件的内容。
    -T<范本文件>或--files-from=<范本文件>   指定范本文件,其内含有一个或多个范本样式,让tar解开或建立符合设置条件的文件。
    -u或--update   仅置换较备份文件内的文件更新的文件。
    -U或--unlink-first   解开压缩文件还原文件之前,先解除文件的连接。
    -v或--verbose   显示指令执行过程。
    -V<卷册名称>或--label=<卷册名称>   建立使用指定的卷册名称的备份文件。
    -w或--interactive   遭遇问题时先询问用户。
    -W或--verify   写入备份文件后,确认文件正确无误。
    -x或--extract或--get  从备份文件中还原文件。
    -X<范本文件>或--exclude-from=<范本文件>  指定范本文件,其内含有一个或多个范本样式,让ar排除符合设置条件的文件。
    -z或--gzip或--ungzip   通过gzip指令处理备份文件。
    -Z或--compress或--uncompress   通过compress指令处理备份文件。
    -<设备编号><存储密度>   设置备份用的外围设备编号及存放数据的密度。
    --after-date=<日期时间>   此参数的效果和指定"-N"参数相同。
    --atime-preserve   不变更文件的存取时间。
    --backup=<备份方式>或--backup   移除文件前先进行备份。
    --checkpoint   读取备份文件时列出目录名称。
    --concatenate   此参数的效果和指定"-A"参数相同。
    --confirmation   此参数的效果和指定"-w"参数相同。
    --delete   从备份文件中删除指定的文件。
    --exclude=<范本样式>   排除符合范本样式的问家。
    --group=<群组名称>   把加入设备文件中的文件的所属群组设成指定的群组。
    --help   在线帮助。
    --ignore-failed-read   忽略数据读取错误,不中断程序的执行。
    --new-volume-script=<Script文件>   此参数的效果和指定"-F"参数相同。
    --newer-mtime   只保存更改过的文件。
    --no-recursion   不做递归处理,也就是指定目录下的所有文件及子目录不予处理。
    --null   从null设备读取文件名称。
    --numeric-owner   以用户识别码及群组识别码取代用户名称和群组名称。
    --owner=<用户名称>   把加入备份文件中的文件的拥有者设成指定的用户。
    --posix   将数据写入备份文件时使用POSIX格式。
    --preserve      此参数的效果和指定"-ps"参数相同。
    --preserve-order      此参数的效果和指定"-A"参数相同。
    --preserve-permissions      此参数的效果和指定"-p"参数相同。
    --record-size=<区块数目>      此参数的效果和指定"-b"参数相同。
    --recursive-unlink   解开压缩文件还原目录之前,先解除整个目录下所有文件的连接。
    --remove-files   文件加入备份文件后,就将其删除。
    --rsh-command=<执行指令>   设置要在远端主机上执行的指令,以取代rsh指令。
    --same-owner   尝试以相同的文件拥有者还原问家你。
    --suffix=<备份字尾字符串>   移除文件前先行备份。
    --totals   备份文件建立后,列出文件大小。
    --use-compress-program=<执行指令>   通过指定的指令处理备份文件。
    --version   显示版本信息。
    --volno-file=<编号文件>   使用指定文件内的编号取代预设的卷册编号。

3.12.9.1、常用打包方法

方法一:

直接打包[最常用] tar -cvf xxx.tar 文件

[c表示产生新的包,v 显示执行过程,f指定包的文件名,\ 表示续行]

tar -cvf test.tar \

./test2.txt \

./test3.txt \

方法二:创建变量打包

test='./资源1 ./资源2'

tar -cfv test.tar $test

方法三:创建文件打包

touch 文件名(也可以vi 文件名) 然后用vi命令写入上面查出的交易资源(路径) 最后tar -cvf test20160512.tar cat 文件名

[`特殊符号,是英文模式下的、号]

方法四:加压缩包(tar调用gzip、tar调用bzip2)

tar -zcf xxx.tar.gz 文件

tar -jcf xxx.tar.bz2 文件

解包方法:

tar -xvf xxx.tar

tar -zxf xxx.tar.gz

tar -jxf xxx.tar.bz2

  • 使用范例

范例:
 
root@mjx:~# tar -cvf test.tar \
> ./test2.txt \
> ./test3.txt \
 
 
root@mjx:~# test='./test2.txt ./test4.txt'
root@mjx:~# tar -cvf test.tar $test
 
 
root@mjx:~# cat test.txt
./test2.txt
./test4.txt
 
root@mjx:~# tar -cvf test1.tar `cat test.txt`
./test2.txt
./test4.txt

3.12.10、unzip 解压zip文件

【命令格式:】unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 
或 unzip [-Z]

【常用选项:】                

【补充说明:unzip为.zip压缩文件的解压缩程序】

【具体选项如下:】

    -c   将解压缩的结果显示到屏幕上,并对字符做适当的转换。
    -f   更新现有的文件。
    -l   显示压缩文件内所包含的文件。
    -p   与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
    -t   检查压缩文件是否正确。
    -u   与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
    -v   执行是时显示详细的信息。
    -z   仅显示压缩文件的备注文字。
    -a   对文本文件进行必要的字符转换。
    -b   不要对文本文件进行字符转换。 
    -C   压缩文件中的文件名称区分大小写。
    -j   不处理压缩文件中原有的目录路径。
    -L   将压缩文件中的全部文件名改为小写。
    -M   将输出结果送到more程序处理。
    -n   解压缩时不要覆盖原有的文件。
    -o   不必先询问用户,unzip执行后覆盖原有文件。
    -P<密码>   使用zip的密码选项。
    -q   执行时不显示任何信息。
    -s   将文件名中的空白字符转换为底线字符。
    -V   保留VMS的文件版本信息。
    -X   解压缩时同时回存文件原来的UID/GID。
    [.zip文件]   指定.zip压缩文件。
    [文件]   指定要处理.zip压缩文件中的哪些文件。
    -d<目录>   指定文件解压缩后所要存储的目录。
    -x<文件>   指定不要处理.zip压缩文件中的哪些文件。
    -Z   unzip -Z等于执行zipinfo指令。

3.12.12、zipinfo 列出压缩文件信息

【命令格式:】zipinfo [-12hlmMstTvz][压缩文件][文件...][-x <范本样式>]

【常用选项:】                

【补充说明:执行zipinfo指令可得知zip压缩文件的详细信息。】

【具体选项如下:】

    -1   只列出文件名称。
    -2   此参数的效果和指定"-1"参数类似,但可搭配"-h","-t"和"-z"参数使用。
    -h   只列出压缩文件的文件名称。
    -l   此参数的效果和指定"-m"参数类似,但会列出原始文件的大小而非每个文件的压缩率。
    -m   此参数的效果和指定"-s"参数类似,但多会列出每个文件的压缩率。
    -M   若信息内容超过一个画面,则采用类似more指令的方式列出信息。
    -s   用类似执行"ls -l"指令的效果列出压缩文件内容。
    -t   只列出压缩文件内所包含的文件数目,压缩前后的文件大小及压缩率。
    -T   将压缩文件内每个文件的日期时间用年,月,日,时,分,秒的顺序列出。
    -v   详细显示压缩文件内每一个文件的信息。
    -x<范本样式>   不列出符合条件的文件的信息。
    -z   如果压缩文件内含有注释,就将注释显示出来。

3.13、vi/vim文本编辑器

【命令格式:】vi/vim [文件名]

【常用选项:】

【补充说明:vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实现了很多增强功能】

【具体选项如下:】

    +<行号>:从指定行号的行开始先是文本内容;
    -b:以二进制模式打开文件,用于编辑二进制文件和可执行文件;
    -c<指令>:在完成对第一个文件编辑任务后,执行给出的指令;
    -d:以diff模式打开文件,当多个文件编辑时,显示文件差异部分;
    -l:使用lisp模式,打开“lisp”和“showmatch”;
    -m:取消写文件功能,重设“write”选项;
    -M:关闭修改功能;
    -n:不实用缓存功能;
    -o<文件数目>:指定同时打开指定数目的文件;
    -R:以只读方式打开文件;
    -s:安静模式,不现实指令的任何错误信息。

3.13.1、命令模式和编辑模式

vim编辑器有两种模式:命令模式和编辑模式。

1)从编辑模式切换到命令模式:使用esc

2)从命令模式切换到编辑模式使用:A/a/O/o/I/i键

以下命令可切入编辑模式:

1)I,i:在光标的当前行首插入,在光标所在位置前插入字符命令(i=insert)

2)A,a在光标的当前行尾插入,在光标所在位置后插入字符命令(a=append)

3)O,o:在当前行前面,后面插入一空行

以下命令在命令模式执行:

1)r:该命令将当前光标所指的字符替换为提供的字符。可以在该命令之前加上数字 n,表示将从当前字符开始的 n 个字符替换为提供的字符。

2)R:在此模式下,每个输入的字符都会替换当前光标下的字符,直到输入 结束该模式。

3)cw,dw:改变(置换)/删除光标所在处的单词的命令 (c=change,d=delete)

4)x,d$,dd:删除光标处,光标之后,光标所在行的字符

3.13.2、光标移动

1)可以使用方向键
 
2)h:左移一个字符、j:下移一行、k:上移一行、l:右移一个字符
​
3)Ctrl+f,Ctrl+b:分别向下,向上翻页
​
4)n:敲数字然后回车,光标往后移动 n 行
​
5)nG:使得光标跳动到指定行
​
6)w,b:使光标向前或向后跳过一个单词
​
7)ma,mb,mc:光标移动到起始行,结束行,粘贴行
​
8)w或W:光标右移一个字至字首
​
9)b或B:光标左移一个字至字首
​
10)e或E:光标右移一个字至字尾
​
11)(,):光标分别移至句首,句尾
​
12){,}:光标分别移至段落开头,结尾
​
13)H,M,L:光标移至屏幕顶行,中间行,最后行
​
14)0:(注意是数字零)光标移至当前行首
​
15)$:光标移至当前行尾

3.13.3、 删除

1)ndw 或 ndW:删除光标处开始及其后的n-1个字
​
2)d0:从光标位置删至行首
​
3)d+(shift)$:从光标位置删至行尾
​
4)dd:删除光标所在行
​
5)ndd:删除当前行及其后n-1行
​
6)x 或 X:删除一个字符,x删除光标后的,而X删除光标前的
​
7)Ctrl+u:删除输入方式下所输入的文本 
​
8)D:删除从当前光标到光标所在行尾的全部字符
​
9)J:删除当前光标所在行行尾换行符(拼接行)

3.13.4、查找或翻页

查找:
    1)/abc:从光标开始处向文件尾搜索abc
​
    2)?abc:从光标开始处向文件首搜索abc
​
    3)/\/abc:从光标开始处向文件尾搜索/abc,其中/是转义
​
    4)n:在同一方向重复上一次搜索命令
​
    5)N:在反方向上重复上一次搜索命令
​
翻页:
​
   1)PgDn(或Ctrl+f):下翻一屏
   
   2)PgUp(或Ctrl+b):上翻一屏
​
   3)Ctrl+u:上翻半屏
​
   4) Ctrl+d:下翻半屏
​
   5)G:移动到缓冲区的最后一行(num G 移动到缓冲区的指定行)
​
   6) gg:移动到缓冲区的第一行
​
   7):行号 :光标跳转到指定行的行首
​
   8):$    :光标跳转到最后一行的行首

3.13.5、复制粘贴

1)yy:复制当前行
​
2)nyy:复制当前行开始的n行
​
3)先按 v 然后方向键选择区域,按 y 复制选中行
​
4)dd:剪切当前行
​
5)p(小):在当前光标处下面粘贴内容。
​
6)P(大):在当前光标处上面粘贴内容

3.13.6、编辑器选项

1)set number:显示行号
​
2)set number!:不显示行号,其它选项同理加!号
​
3)set all:列出所有选项设置情况
​
4):wq  :保存并退出
​
5):q!   :不保存退出
​
6):w    :保存更改

 

猜你喜欢

转载自blog.csdn.net/xiaoxianer321/article/details/127780204