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

Posted 穆瑾轩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机基础知识——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语言的跨平台性较差;
1972Dennis M.Ritchie在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母,作为这种语言的名字,这就是C语言;
1973C语言的主体完成,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;
1991Linus 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年发布)
1994Linux1.0发布,代码量17万行,当时是按照完全自由免费的协议发布,随后正式采用GPL协议;一些最常用的发行版包括:Ubuntu, Debian, CentOS, Fedora, Redhat, Linux Mint等,至今官网上的流行的有25个;
Debian的后代分支(除了Debian本身之外),这个分支的主要代表还有Ubuntu(构建在Debian之上)、Linux Mint(构建在Ubuntu之上)和Kali Linux;
1995Bob Young创办了RedHat(小红帽),以GNU/Linux为核心,集成了400多个源代码开放的程序模块,搞出了一种冠以品牌的Linux,即RedHat Linux,称为Linux"发行版";
Redhat主要发行版是Red Hat Enterprise Linux (RHEL),这是一个针对Redhat的企业客户的发行版;除了提供RHEL作为付费发行版之外,Redhat还向社区提供另一个免费发行版,即Fedora;
1996Linux 2.0内核发布,此内核有大约40万行代码,并可以支持多个处理器,用户350万人;
2001Linux 2.4发布,它进一步地提升了SMP系统的扩展性,同时它也集成了很多用于支持桌面系统的特性;
2003Linux 2.6版内核发布,相对于2.4版内核2.6在对系统的支持都有很大的变化。1.更好地支持大型多处理器服务器,特别是采用NUMA设计的服务器;2.更好地支持嵌入式设备,如手机、网络路由器或者视频录像机等;3.对鼠标和键盘指令等用户行为反应更加迅速;4.块设备驱动程序做了彻底更新;
200410月20日Ubuntu发布,并以Debian为开发蓝本(Ubuntu是Debian的一种衍生版本);CentOS 2发布;
2014CentOS宣布于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这五个都应与根目录放一个分区
bootGrub系统启动引导文件。其下的vmlinuz就是LINUX核心
devNull,tty[1-6] sd* hd*设备目录,Linux在这里创建设备节点。所有设备文件(块设备和字符设备),如硬盘,光驱等。
etcX11,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
libmodules系统使用的函数库目录。同样作用目录有:/usr/lib ,/usr/local/lib
root系统管理员的家目录
/home用户家目录,在这里创建用户目录。~myid 表示myid的家目录
/lost+found系统出现异常时,会将一些遗失片段放在此目录下。该目录会自动出现在分区最顶层下
/mnt和/media软盘与光盘挂载点,但也可以随便找个地方载入。
/opt给主机额外安装的软件所放的目录。
/srv服务目录,存放本地服务的相关文件
/tmp临时目录,需要定期清理。
/usrbin,sbin,lib ,includelocal,share,src用户二进制目录,大量预计的GUN工具和数据文件都存储在这里
/varCache,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"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的备份字尾字符串是符号"~"。 以上是关于计算机基础知识——Linux命令简介的主要内容,如果未能解决你的问题,请参考以下文章

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

Linux基础:简介安装常用命令和JDKMysqlTomcat的安装

Linux grep命令

Linux grep 命令

Linux命令三剑客之grep常用参数详解

Linux系统基础之locate命令