Linux命令大全总结

1、操作系统基础知识

1.1、操作系统

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

1.1.1、概念

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

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

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

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

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

(1)系统呼叫接口

(2)进程管理

(3)内存管理

(4)文件系统管理

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

1.1.3、苹果操作系统

在2006年以前的苹果计算机公司是请IBM 公司帮忙开发硬件(所谓的Power CPU), 而苹果计算机公司则在该硬件架构上发展自家的操作系统(就是俗称的麦金塔,MAC是也)。在2006年以后,苹果计算机专请Intel设计其硬件架构,即其硬件架构已转为x86系统, 因此在2006年以后的苹果计算机若使用x86架构时,其硬件则『可能』可以安装Windows操作系统了。 不过,你可能需要自己来处理该硬件的兼容性!

1.1.4、linux操作系统

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

Linux可以划分为以下四部分:

  1. linux内核
  2. GUN工具
  3. 图形化桌面环境
  4. 应用软件

1.1.5、单用户操作系统和多用户操作系统

单用户操作系统:指一台计算机在同一时间,只能由一个用户使用,一个用户独自享用系统的全部硬件和软件资源;

Windows XP 之前的版本都是单用户操作系统。

历史:

年份 事件
1985 微软推出了第一版的Microsoft Windows;
1987 微软发行Windows 2.0大受欢迎;
1990-1994 Windows 3.x系列发行,其中的3.0版是第一个在世界上获得成功的版本;
1988 11月开始了对于“WinNT”的产品研发;
1995 8月24日,发行Windows 95,是一个混合的16位/32位Windows系统,其版本号为4.0,开发代号为Chicago,是第一个特别捆绑了一个版本的DOS的Windows版本;
1998 6月25日,Windows 98是微软公司发行,混合16位/32位的Windows系统,其版本号为4.1,开发代号为Memphis,于20067月11日停止重大安全更新;
2000 Windows 2000发布,属于微软Windows NT产品线的一部分,是一个商业导向的操作系统,Windows 2000也是Windows XP和Windows 2003的前身;Windows Me于2000年9月14日发行,是最后一个基于DOS的混合16位/32位的Windows 9X系列的Windows,开发代号为Millennium。
2001 Windows XP,8月24日正式发布,原开放代号为“Whistler”,Windows XP整合了Windows NT/2000 和Windows 3.1/95/98/ME;
2007 Windows Vista,1月30日正式发行,这是Windows版本历史上间隔时间最久的一次发布;
2009 Windows 7,10月22日发布,该操作系统就受到了外界的一致好评;
2012 Windows 8,10月26日正式推出的具有革命性变化的操作系统,然而,由于Windows 8的用户界面过于复杂,且缺少“开始菜单”,该系统在推出后还是得到了外界不少的批评;
2015 Windows 10,7月29日,微软发布Windows 10正式版。

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

Unix和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)的再编译版本。

1.2、Linux系统

1.2.1、linux内核

内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。内核主要负责以下四种功能:

1)系统内存管理

2)软件程序管理

3)硬件设备管理

4)文件系统管理

1.2.2、GUN

GUN组织开发了一套完整的Unix工具。Shell是一种特殊的交互工具,所有Linux发行版默认的shell都是bash shell。

1.2.3、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、日志文件等

系统分区和挂载点:

Linux中的每个分区都是构成支持一组文件和目录所必须的贮存区的一部分。他通过挂载来实现,挂载是将分区关联到某一目录的过程。

例如:

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

但是在/usr之下的一个或多个目录还可能是其他分区的挂载点。如果/dev/had2被挂载到/usr/local下,这意味着/usr/local下的文件和目录将位于分区:/dev/had2上而不是/dev/had1分区上。

2、Linux基本命令

注: 比较常用的用不同的颜色标注了。红色的为工作中经常会使用到的。

2.1、基本操作命令

2.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终止当前进程。

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

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

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

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

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

2.3、帮助命令

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

2.3.1、man命令

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

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

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

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

[root@mjx ~]# man -h printf
Usage: man [OPTION...] [SECTION] PAGE...
...省略说明

    【参数选项:】

【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格式化手册之前,先通过其它程序格式化手册

【参数领域】

使用范例:

[root@mjx ~]# man -w printf
/usr/share/man/man1/printf.1.gz
[root@mjx ~]# man -aw printf
/usr/share/man/man1/printf.1.gz
/usr/share/man/man1p/printf.1p.gz
/usr/share/man/man3/printf.3.gz
/usr/share/man/man3p/printf.3p.gz
[root@mjx ~]# man 3 printf
...加入领域类型限制,如果知道3,默认是查询man3 文件配置信息说明
[root@mjx ~]# man -f printf
printf (1)           - format and print data
printf (1p)          - write formatted output
printf (3)           - formatted output conversion
printf (3p)          - print formatted output
[root@mjx ~]# man -k systemc
systemctl (1)        - Control the systemd system and service manager

2.3.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\
ing10.1 'ls': List directory contents
==================================
...省略(就像一本完整的电子书)
N键:显示(相对于本节点的)下一节点的文档内容
P键:显示(相对于本节点的)前一节点的文档内容

2.3.2、help命令/选项

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

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

使用范例:

[root@mjx ~]# help umask
umask: umask [-p] [-S] [mode]Display or set file mode mask.
...
可以查看Shell内置命令umask的帮助内容

3、其他基本命令

3.1、alias 命令别名

【命令格式:】alias  [别名]=[指令名称]

【常用选项:】

【补充说明:用户可利用alias,自定指令的别名。若仅输入alias,则可列出目前所有的别名设置。 alias的效力仅及于该次登入的操作。若要每次登入是即自动设好别名,可在.profile或.cshrc中设定指令的别名。对应的删除命令:

unalias [别名] 或者删除全部别名 unalias -a】

使用范例:

[root@mjx ~]# alias myls='ls -lrt'
[root@mjx ~]# myls ss.txt
-rw-r--r--. 1 root root 334 Jan 19  2021 ss.txt
[root@mjx ~]# unalias myls
[root@mjx ~]# myls
bash: myls: command not found...

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变量

使用范例:

[hls@mjx root]$ su - hls
Password:
Last login: Fri Aug 27 17:24:34 CST 2021 on pts/0
[hls@mjx ~]$ su
Password:
[root@mjx hls]# pwd
/home/hls
[root@mjx hls]# su -
Last login: Fri Aug 27 17:25:00 CST 2021 on pts/0
[root@mjx ~]# pwd
/root说明:su - hls 切换为hls用户,目录改变,环境变量也改变su 未指定用户名,默认为root用户,目录不变,环境变量不变pwd 查看目录还是/home/hlssu - 切换为root用户,目录改变,环境变量也改变

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 更改为其他人)执行的指令

使用范例:

[hls@mjx ~]$sudo mkdir sudotest
[sudo]$ hls 的密码:
hls 不在sudoers 文件中。此事将被报告。[root@mjx ~]vi /etc/sudoers添加行:
hls ALL=(ALL)PASSWD:ALL
(或者不需要密码)
# hls ALL=(ALL)NOPASSWD:ALL[hls@mjx ~]sudo mkdir sudotest
[sudo]$ password for hls:
[hls@mjx ~]ls -l
drwxr-xr-x 2 root root 6 Aug 27 17:43 sudotest

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

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

【常用选项:】

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

【具体选项如下:】 -h 本帮助文件。-q 输出到日志 - 无进展指示-qq 不输出信息,错误除外-d 仅下载 - 不安装或解压归档文件-s 不实际安装。模拟执行命令-y 假定对所有的询问选是,不提示-f 尝试修正系统依赖损坏处-m 如果归档无法定位,尝试继续-u 同时显示更新软件包的列表-b 获取源码包后编译 -V 显示详细的版本号-c=? 阅读此配置文件-o=? 设置自定的配置选项,如 -o dir::cache=/tmp
【常用指令:】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.5、clear 清屏

【命令格式:】clear

4、目录操作命令

4.1、cd 目录切换

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

【常用选项:】

cd  .   代表当前目录

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

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

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

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

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

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

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

使用范例:

[hls@mjx root]$ ls -ld /home/testlj/mail
lrwxrwxrwx 1 root root 26 6月  1 20:49 /home/testlj/mail -> /home/test/mail显示出真实路径:[hls@mjx root]$ pwd -P
/home/testlj注:/home/testlj/mail 这个是连结档,连结到: /home/test/mail
所以,加上 pwd -P 的选项后,会不以连结档的数据显示,而是显示正确的完整路径

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

【命令格式】pwd [选项]

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

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

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)、文件(-)、字符型文件(c)或块设备(b)

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

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

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

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

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

【第六组参数】表示文件的上次修改时间

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

4.4、mkdir 创建一个新的目录

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

【常用选项:】

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

-m<目录属性> 或者--mode<目录属性>  代表建立目录的同时设置目录的权限

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

【相关命令:rmdir】

使用范例:

[root@mjx ~]# mkdir test/test1
mkdir: cannot create directory ‘test/test1’: No such file or directory
You have new mail in /var/spool/mail/root
[root@mjx ~]# mkdir -p test/test1
[root@mjx ~]# mkdir -m 774 test2
[root@mjx ~]# ls -l
drwxr-xr-x. 3 root root   19 Aug 27 18:38 test
drwxrwxr--. 2 root root    6 Aug 27 18:38 test2注:使用-p创建多层目录,默认创建的目录权限为751:所有者(7)、所在组(5)、其他用户(1)。其中,rwx=4+2+1,分别代表读、写和可执行权限,而指定权限创建的目录权限为744。

4.5、rm 删除文件或目录

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

【常用选项:】

【注:rm为[remove] 缩写】

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

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

4.6、rmdir 删除一个空目录

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

【常用选项:】-p或者--parents  删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除。
   【注:mkdir为[remove directory] 缩写】

【相关命令:rm、mkdir】

使用范例:

[root@mjx ~]# rmdir test
rmdir: failed to remove ‘test’: Directory not empty
[root@mjx ~]# rmdir test2
[root@mjx ~]# rmdir test/test1

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  显示版本信息。

使用范例:

[root@mjx a]# ls
test1.txt  test2.txt  test3.txt
[root@mjx a]# mv test1.txt test4.txt
[root@mjx a]# ls
test2.txt  test3.txt  test4.txt注:将文件test1.txt重命名为test4.txt[root@mjx a]# ls -RA
.:
b  test2.txt  test3.txt  test4.txt./b:
text5.txt[root@mjx a]# mv  ./b/*.txt  .
[root@mjx a]# ls
b  test2.txt  test3.txt  test4.txt  text5.txt注:将b目录中的所有.txt文件移动至当前目录

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  显示版本信息。

使用范例:

复制多个文件
[root@mjx ~]# cp ./a/test*.txt ./test2
[root@mjx ~]# cd test2
[root@mjx test2]# ls
test1.txt  test2.txt  test3.txt也可使用{}进行多个文件复制:[root@mjx ~]# cp a/{test1.txt,test2.txt} test递归复制整个文件夹:[root@mjx ~]# cp -r a/* test

5、文件管理

5.1、cat 查看整个文件

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

【常用选项:】

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

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

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

使用范例:

>表示将一条命令执行结果重定向到其他输出设备(文件,打印机等)>>是追加cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。

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相反,文件在被删除时,其所有的数据块都保留着,用户今后可以恢复该文件

使用范例:

将目录b属性设置成不能更改,则无法在此目录中新增内容:
[root@mjx a]# chattr -R =i ./b
[root@mjx a]# cd b
[root@mjx b]# touch test.txt
touch: cannot touch ‘test.txt’: Permission denied
[root@mjx b]# cd ../
将文件test3.txt属性设置为a,则无法删除此文件:
[root@mjx a]# chattr +a test3.txt
[root@mjx a]# rm test3.txt
rm: remove regular empty file ‘test3.txt’? y
rm: cannot remove ‘test3.txt’: Operation not permitted
查看文件/目录属性:
[root@mjx a]# lsattr test3.txt
-----a---------- test3.txt

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  显示版本信息。

使用范例:

[root@mjx a]# mkdir testgroup
[root@mjx a]# ls -l
drwxr-xr-x. 2 root root 6 Aug 27 19:59 testgroup
[root@mjx a]# chgrp -R hls testgroup
[root@mjx a]# ls -l
drwxr-xr-x. 2 root hls  6 Aug 27 19:59 testgroup注:用户组从root改成hls

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.txtu-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.txtg+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.txta+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.txta=rw:所有用户指定权限

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  显示版本信息。

使用范例:

[hls@mjx ~]$ ls -l
drwxrwxr-x. 2 hls  hls  6 Aug 28 09:50 testgroup
[root@mjx hls]# chown -R root:root testgroup --改变拥有者和所属群组
[root@mjx hls]# ls -l
drwxrwxr-x. 2 root root 6 Aug 28 09:50 testgroup
[root@mjx hls]# chown -R :hls testgroup --只改变所属群组
[root@mjx hls]# ls -l
drwxrwxr-x. 2 root hls  6 Aug 28 09:50 testgroup

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

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

【常用选项:无】

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

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

【具体选项如下:无】

使用范例:

[root@mjx ~]# cksum abc.txt
2330645186 4 abc.txt2330645186表示校验码,4表示字节数,如果文件中有任何字符被修改,都将改变计算后CRC校验码的值。

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 行

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

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

【常用选项:-c】

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

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

使用范例:

[root@mjx d]# cat testfile.txt
123
456
[root@mjx d]# cut -c2-2 testfile.txt
2
5注:显示所有行中第二个字符

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

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

【常用选项:】

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

使用范例:

[root@mjx d]# file myfile
myfile: UTF-8 Unicode text

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天的文件

5.11、ln 连接文件或目录

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

【常用选项:】

【注:cat为[link] 缩写】

【相关命令:pwd】

【补充说明: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  显示版本信息。

【知识扩展:】

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

文件链接有两种形式,即硬链接和符号链接。

    硬链接:

建立硬链接时,在另外的目录或本目录中增加目标文件的一个目录项,这样,一个文件就登记在多个目录中。

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

在默认情况下,ln命令创建硬链接。ln命令会增加链接数,rm命令会减少链接数。一个文件除非链接数为0,否则不会从文件系统中被物理地删除。

   对硬链接有如下限制:

不能对目录文件做硬链接。

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

为什么文件夹不允许创建硬链接,在不同的文件系统中,Inode可能重复,且每次创建文件夹时,系统会默认创建两个硬链接(只是不允许我们自己创建),这两个硬链接,一个是代表当前目录的,一个是代表上一级目录的,即(. 和 .. 两个隐藏目录),每创建一个目录,上级目录的硬链接数就+1。

   符号链接:

符号链接也称为软链接,是将一个路径名链接到一个文件。这些文件是一种特别类型的文件。

与硬链接不同的是,符号链接确实是一个新文件,当然它具有不同的I节点号;而硬链接并没有建立新文件。

符号链接没有硬链接的限制,可以对目录文件做符号链接,也可以在不同文件系统之间做符号链接。

   符号链接保持了链接与源文件或目录之间的区别

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

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

使用范例:

先创建三个目录
[root@mjx e]# ls -l
total 0
drwxr-xr-x. 2 root root 29 Aug 28 14:25 link
drwxr-xr-x. 2 root root  6 Aug 28 15:07 rlink
drwxr-xr-x. 2 root root 44 Aug 28 15:45 source创建文件源、硬链接、软链接(软链接一定要使用绝对路径)
[root@mjx source]# touch source.txt
[root@mjx source]# ln /root/e/source/source.txt /root/e/link/link_source.txt
[root@mjx source]# ls -li
total 0
77559 -rw-r--r--. 2 root root 0 Aug 28 16:02 source.txt
[root@mjx source]# ls -li /root/e/link/link_source.txt
77559 -rw-r--r--. 2 root root 4 Aug 28 16:11 /root/e/link/link_source.txt硬链接数+1,且硬链接的Inode与源文件相同
[root@mjx source]# ln -s /root/e/source/source.txt /root/e/rlink/rlink_source.txt
[root@mjx source]# ls -li
total 0
77559 -rw-r--r--. 2 root root 0 Aug 28 16:02 source.txt
[root@mjx source]# ls -li /root/e/rlink/rlink_source.txt
18283222 lrwxrwxrwx. 1 root root 25 Aug 28 16:08 /root/e/rlink/rlink_source.txt -> /root/e/source/source.txt创建软链接不会影响链接数,且软链接的Inode与源文件不同向文件中写入数据
[root@mjx source]# cat source.txt
111
[root@mjx source]# cat /root/e/rlink/rlink_source.txt
111
[root@mjx source]# cat /root/e/link/link_source.txt
111
对硬链接和软连接文件进行修改,都会影响到源文件
[root@mjx source]# echo 222 >> /root/e/link/link_source.txt
[root@mjx source]# cat source.txt
111
222
[root@mjx source]# echo 333 >> /root/e/rlink/rlink_source.txt
[root@mjx source]# cat source.txt
111
222
333删除源文件会影响软链接,不会影响硬链接
[root@mjx source]# rm -f source.txt
[root@mjx source]# cat /root/e/link/link_source.txt
111
222
333
[root@mjx source]# cat /root/e/rlink/rlink_source.txt
cat: /root/e/rlink/rlink_source.txt: No such file or directory

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

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,执行帮助功能),但是还是建议使用命令形式。

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键:退出rnore命令。

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

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

【常用选项:】

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

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

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

使用范例:

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

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 root@192.168.170.130:/root/
root@192.168.170.130's password:
scp.txt                                       100%    4     0.8KB/s   00:00
[root@mjx ~]# scp scp.txt 192.168.170.130:/root/
root@192.168.170.130's password:
scp.txt                                       100%    4     0.8KB/s   00:00  

5.17、split 切割文件

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

【常用选项:】

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

使用范例:

[root@mjx ~]# cat scp_split.txtaa
111
222
333
[root@mjx ~]# split -l 1 scp.txt scp_split.txt注每一行切成一个文件
[root@mjx ~]# find . -name "scp*.txt*"
./scp.txt
./scp_split.txtaa
./scp_split.txtab
./scp_split.txtac
[root@mjx ~]# cat scp_split.txtaa
111

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  显示版本信息。

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。】

【具体选项如下:】

-p:输出的权限掩码可直接作为指令来执行;

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

使用范例:

umask默认值为0022,将其修改为002,此种修改只对当前会话有效root@ubuntu:~# umask
0022root@ubuntu:~# umask 002root@ubuntu:~# touch 1.txt-rw-rw-r-- 1 root root    0 10月  7 02:38 1.txt【备注:永久修改umask值,需要修改配置文件】

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  查找不包含指定类型的文件。

使用范例:

tomcat:[root@mjx ~]# whereis java
java: /usr/bin/java /usr/lib/java /etc/java /usr/share/java /usr/share/man/man1/java.1.gz
[root@mjx ~]# whereis tomcat  #没安装,找不到
tomcat:
[root@mjx ~]#

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

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

【常用选项:】

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

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

使用范例:

[root@mjx ~]# which pwd
/usr/bin/pwd
[root@mjx ~]# which man
/usr/bin/man

6、文档编辑

6.1、colrm 过滤掉指定列

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

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

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

【具体选项如下:】

使用范例:

第四列后开始过滤掉root@ubuntu:~# colrm 4 < test2.txt
123过滤掉第四至第六列
root@ubuntu:~# colrm 4 6 < test2.txt
123789

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,则此命令缺省使用整个缓冲区。

使用范例:

root@ubuntu:/etc/vim# ed
a              ---输入a告诉ed我要编辑新文件
my name is ed
.
wq ed.txt
14
root@ubuntu:/etc/vim# cat ed.txt
my name is ed在file.txt中添加一行root@ubuntu:/etc/vim# ed -s file.txt
0a
this is the beginning.
.
wq
root@ubuntu:/etc/vim# cat file.txt
this is the beginning.
this is the end.

6.3、expr 求表达式变量值

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

【注:expr为[Expression] 缩写】

【补充说明:】

【具体选项如下:】

使用范例:

root@ubuntu:~# expr length abcd
4root@ubuntu:~# expr 10 + 10
20

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 的行,

使用范例:

[root@mjx ~]# find . -name "scp_*.txt*"
./scp_split.txtaa
./scp_split.txtab
./scp_split.txtac
[root@mjx ~]# find . -name "scp_*.txt*"|xargs grep -nr "222"
./scp_split.txtab:1:222[root@mjx ~]# ls -l|grep "scp_"
-rw-r--r--. 1 root root    4 Jun 27 10:03 scp_split.txtaa
-rw-r--r--. 1 root root    4 Jun 27 10:03 scp_split.txtab
-rw-r--r--. 1 root root    4 Jun 27 10:03 scp_split.txtac

6.5、look 查询单字

【命令格式:】look [-adf][-t<字尾字符串>][字首字符串][字典文件]
   【常用选项:】

【补充说明:】

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

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 :在逻辑定界符处不重新开始计算。

使用范例:

root@ubuntu:~# nl nl.txt 1  我是第一行2  第二行3  第三行4  第四行root@ubuntu:~# nl -n ln nl.txt
1       我是第一行
2       第二行
3       第三行
4       第四行

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   显示版本信息。

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   显示版本信息。
[输入文件]   指定已排序好的文本文件。
[输出文件]   指定输出的文件。

使用范例:

root@ubuntu:~# cat uniq.txt
a
b
c
d
a
c
e排序并显示出重复的行root@ubuntu:~# sort uniq.txt |uniq -d
a
c

6.9、wc 计算数字

【命令格式:】wc [-clw][文件]
   【常用选项:】

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

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

【具体选项如下:】-c或--bytes或--chars   只显示Bytes数。
-l或--lines   只显示列数。
-w或--words   只显示字数。
--help   在线帮助。
--version   显示版本信息。

7、文件传输

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

【命令格式:】bye

【常用选项:】

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

【具体选项如下:】

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

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

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

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

7.3、ncftp 传输文件

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

【常用选项:】

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

【具体选项如下:】

7.4、tftp 传输文件

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

【常用选项:】

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

【具体选项如下:】

8、网络通信

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地址。
[网络设备]   指定网络设备的名称。

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输入/输出模式,只在扫描通信端口时使用。

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"参数相同。

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   详细显示指令的执行过程。

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<认证形态>   关闭指定的认证形态。

9、系统管理

9.1、adduser 新增用户

【命令格式:】adduser

【常用选项:】

【相关命令:useradd】

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

【具体选项如下:】

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

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

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  显示版本信息。

使用范例:

9.3、exit 退出目前的shell

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

【常用选项:】

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

【具体选项如下:】

9.4、free 显示内存状态

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

【常用选项:】

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

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

9.5、groupdel 删除群组

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

【常用选项:】

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

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

【具体选项如下:】

使用范例:

root@ubuntu:~# groupdel test
groupdel:不能移除用户“test”的主组

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 <新群组名称>  设置欲使用的群组名称。

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

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  显示版本信息。

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

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

或 kill [-l <信息编号>]
   【常用选项:】

【相关命令:ps、job】

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

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

【知识扩展:kill -l 全部信号:】

1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

1)SIGHUP  本信号在用户终端连接(正常或非正常)结束时发出,通常是在终端的控制进程结束时,通知同一session内的各个作业,这时它们与控制终端不再关联。

2)SIGINT  程序终止(interrupt)信号,在用户键入INTR字符(通常是Ctrl-C)时发出。

3)GQUIT   和SIGINT类似,但由QUIT字符(通常是Ctrl-)来控制。进程在因收到 SIGQUIT退出时会产生core文件,在这个意义上类似于一个程序错误信号。

4)SIGILL   执行了非法指令。通常是因为可执行文件本身出现错误,或者试图执行数据段。堆栈溢出时也有可能产生这个信号。

5)SIGTRAP  由断点指令或其它trap指令产生。由debugger使用。

6)SIGABRT  程序自己发现错误并调用abort时产生。

7)SIGBUS   非法地址, 包括内存地址对齐(alignment)出错。eg: 访问一个四个字长的整数, 但其地址不是4的倍数。

8)SIGFPE   在发生致命的算术运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为0等其它所有的算术的错误。

   9)SIGKILL   用来立即结束程序的运行。本信号不能被阻塞,处理和忽略。

10)SIGUSR1   留给用户使用

11)SIGSEGV   试图访问未分配给自己的内存,或试图往没有写权限的内存地址写数据。

12)SIGUSR2   留给用户使用

13)SIGPIPE   Broken pipe

14)SIGALRM   时钟定时信号,计算的是实际的时间或时钟时间。alarm函数使用该 信号。

15)SIGTERM   程序结束(terminate)信号,与SIGKILL不同的是该信号可以被阻塞和处理。通常用来要求程序自己正常退出。shell命令kill缺省产生这个信号。

16)SIGSTKFLT  Linux专用,数学协处理器的栈异常

17)SIGCHLD   子进程结束时,父进程会收到这个信号。

18)SIGCONT   让一个停止(stopped)的进程继续执行。本信号不能被阻塞。可以用一个handler来让程序在由stopped状态变为继续执行时完成特定的 工作。 例如,重新显示提示符。

19)SIGSTOP   停止(stopped)进程的执行。注意它和terminate以及interrupt的区别:该进程还未结束,只是暂停执行。本信号不能被阻塞,处理或忽略。

20)SIGTSTP   停止进程的运行,但该信号可以被处理和忽略。用户键入SUSP字符时  (通常是Ctrl-Z)发出这个信号 。

21)SIGTTIN   当后台作业要从用户终端读数据时,该作业中的所有进程会收到SIGTTIN 信号。缺省时这些进程会停止执行。

22)SIGTTOU   类似于SIGTTIN,但在写终端(或修改终端模式)时收到。

23)SIGURG   有"紧急"数据或out-of-band数据到达socket时产生。

24)SIGXCPU   超过CPU时间资源限制。这个限制可以由getrlimit/setrlimit来读取/ 改变 。

25)SIGXFSZ   超过文件大小资源限制。

26)SIGVTALRM   虚拟时钟信号。类似于SIGALRM,但是计算的是该进程占用的CPU时间。

27)SIGPROF   类似于SIGALRM/SIGVTALRM,但包括该进程用的CPU时间以及系统调用的 时间。

28)SIGWINCH   窗口大小改变时发出。

29)SIGIO   文件描述符准备就绪,可以开始进行输入/输出操作。

30)SIGPWR   Power failure

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

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

【常用选项:】

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

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

使用范例:

[root@mjx vsftpd]# last
root     pts/0        :0               Sun Jun 27 15:39   still logged in
root     pts/0        :0               Sun Jun 27 15:38 - 15:38  (00:00)
root     :0           :0               Sun Jun 27 15:33   still logged in
reboot   system boot  3.10.0-1127.el7. Sun Jun 27 15:31 - 11:27  (-4:-3) 

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

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

【常用选项:】

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

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

使用范例:

故意输入错误密码登录root和testroot@ubuntu:~# lastb
root     ssh:notty    192.168.159.1    Mon Oct 15 08:06 - 08:06  (00:00)
test     ssh:notty    192.168.159.1    Sun Oct 14 04:54 - 04:54  (00:00)
root     ssh:notty    192.168.159.129  Sun Oct  7 00:50 - 00:50  (00:00)
root     ssh:notty    192.168.159.129  Sun Oct  7 00:50 - 00:50  (00:00)
root     ssh:notty    192.168.159.129  Sun Oct  7 00:49 - 00:49  (00:00)
root     ssh:notty    192.168.159.129  Sun Oct  7 00:49 - 00:49  (00:00)

9.12、login 登入系统

【命令格式:】login

【常用选项:】

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

【具体选项如下:】

使用范例:

9.13、logout 退出系统

【命令格式:】logout

【常用选项:】

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

【具体选项如下:】

9.14、newgrp 登入另一个群组

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

【常用选项:】

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

【具体选项如下:】

使用范例:

将实型组标识更改为testroot@ubuntu:~# newgrp testroot@ubuntu:~# mkdir testroot@ubuntu:~# ls -lrtdrwxr-xr-x 2 root test 4096 10月 15 08:18 test更改回您的原始登录组root@ubuntu:~# newgrp

9.15、nice 设置命令优先级

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

【常用选项:】

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

【具体选项如下:】

使用范例:

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

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"参数相同。

【知识扩展:】

linux进程有5种状态:

  1. 运行(正在运行或在运行队列中等待)
  2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
  3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
  4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
  5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运)

PS进程识别标识的5种状态:

  • D 不可中断 uninterruptible sleep (usually IO)
  • R 运行 runnable (on run queue)
  • S 中断 sleeping
  • T 停止 traced or stopped
  • Z 僵死 a defunct (”zombie”) process

使用范例1:

常用组合:ps -ef|grep 程序root@ubuntu:~# ps -ef|grep mysql
mysql      1051      1  0 08:01 ?        00:00:17 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid
root       2209   1604  0 15:04 pts/0    00:00:00 grep --color=auto mysql第一列(USER): 拥有者:程序被该UID所拥有第二列(PID):程序ID第三列(PPID):父ID第四列(C):CPU占用百分比第五列(STIME):程序启动时间第六列(TTY):登录者的终端机位置第七列(TIME):进程使用CPU的时间第八列(CMD):所下达的指令名称

使用范例2:

root@ubuntu:~# ps -l
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0   1432   1323  0  80   0 -  7477 wait   pts/0    00:00:00 bash
4 S     0   1456   1432  0  80   0 - 22753 wait   pts/0    00:00:00 login0 R     0   2140   1604  0  80   0 -  9005 -      pts/0    00:00:00 ps# F 代表这个程序的旗标 (flag), 1 fork之后未执行的进程;4 代表使用者为 superuser;0-既不是fork之后未执行的进程,也不是使用的超级用户权限# S 代表这个程序的状态 (STAT);[S-中断]#UID 代表执行者身份[0-root]# PID 进程的ID号!底下的 PPID 则父进程的ID;# C CPU 使用的资源百分比# PRI指进程的执行优先权(Priority的简写),其值越小越早被执行;# NI 这个进程的nice值,其表示进程可被执行的优先级的修正数值。# ADDR 这个是内核函数,指出该程序在内存的那个部分。如果是个执行的程序,一般就是『 - 』# SZ 使用掉的内存大小;# WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作;# TTY 登入者的终端机位置啰;# TIME 使用掉的 CPU 时间。# CMD 所下达的指令名称

使用范例3:

root@ubuntu:~# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.6 225456  9400 ?        Ss   08:00   0:03 /sbin/init auto noprompt
root          2  0.0  0.0      0     0 ?        S    08:00   0:00 [kthreadd]#USER 代表用户名#PID 代表进程ID#%CPU 进程的CPU占用率#%MEM 进程的内存占用率#VSZ 进程所使用的虚拟内存的大小#RRS 进程使用的驻留集大小或实际的内存大小#TTY 与进程关联的终端(tty)#STAT 进程的状态:——R 运行    Runnable (on run queue)            正在运行或在运行队列中等待。——S 睡眠    Sleeping                休眠中, 受阻, 在等待某个条件的形成或接受到信号。——I 空闲    Idle ——Z 僵死    Zombie(a defunct process)        进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放。——D 不可中断    Uninterruptible sleep (ususally IO)    收到信号不唤醒和不可运行, 进程必须等待直到有中断发生。——T 终止    Terminate                进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行。——P 等待交换页——W 无驻留页    has no resident pages        没有足够的记忆体分页可分配。——X 死掉的进程——< 高优先级进程                    高优先序的进程——N 低优先    级进程                    低优先序的进程——L 内存锁页    Lock                有记忆体分页分配并缩在记忆体内——s 进程的领导者(在它之下有子进程);——l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads)——+ 位于后台的进程组#START 进程启动的时间和日期#TIME 进程使用的CPU总时间#COMMANDA 正在执行的命令行命令

使用范例4:

使用more分页查看root@ubuntu:~# ps -aux|more将ps -aux的结果输出到文件中root@ubuntu:~# ps -aux >ps_aux.txt

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记录文件。

9.18、rlogin 远端登入

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

【常用选项:】

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

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

使用范例:

hls@ubuntu:~$ rlogin  -l root  192.168.159.129root@192.168.159.129's password: root@ubuntu:~#

9.19、rsh 远端登入的Shell

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

【常用选项:】

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

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

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

【区别与总结】

 系统重新启动总结:reboot,init 6,shutdown -r now

系统关机总结:init 0, shutdown -h now, half,poweroff

 halt   立刻关机

poweroff 立刻关机

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

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

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

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

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

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

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

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

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

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

【常用选项:】

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

【具体选项如下:】

-n:关闭操作系统时不执行sync操作;

-w:不真正关闭操作系统,仅在日志文件“/var/log/wtmp”中;

-d:关闭操作系统时,不将操作写入日志文件“/var/log/wtmp”中添加相应的记录;

-f:强制关闭操作系统;

-i:关闭操作系统之前关闭所有的网络接口;

-h:关闭操作系统之前将系统中所有的硬件设置为备用模式。

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:关闭操作系统之前将系统中所有的硬件设置为备用模式。

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"参数。

使用范例:

root@ubuntu:~# toptop - 10:21:33 up 1 day,  1:18,  2 users,  load average: 0.00, 0.00, 0.00
任务: 217 total,   1 running, 152 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.7 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1501192 total,   184928 free,   638492 used,   677772 buff/cache
KiB Swap:   969960 total,   968668 free,     1292 used.   693704 avail Mem进程 USER      PR  NI    VIRT    RES    SHR S CPU %MEM     TIME+ COMMAND4176 root      20   0   51332   4176   3444 R  0.7  0.3   0:00.37 top1045 mysql     20   0 1154808 169168   6628 S  0.3 11.3   0:57.64 mysqld 【前五行:当前系统情况整体的统计信息区】第一行:任务队列信息。第一个时间表示:系统已经运行 1天 1小时18分(系统没有任何重启,持续运行)。第二个信息表示:当前有2个用户登录系统。第三个信息load average表示: 0.00, 0.00, 0.00 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。 load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。第二行:任务/进程信息。第一个信息表示:系统现在总共有217个进程第二个信息表示:处于休眠的有152个第三个信息表示:处于停止状态的有0个第四个信息表示:处于僵死状态的有0个第三行:CPU状态信息。第一个信息表示:用户空间占用CPU百分比:0.3%第二个信息表示:内核空间占用CPU百分比:0.7%第三个信息表示:改变过优先级的进程占用CPU百分比:0.0%第四个信息表示:空闲CPU百分比:99.0%第五个信息表示:IO等待占用占用CPU百分比:0.0%第六个信息表示:硬中断(Hardware IRQ)占用CPU的百分比:0.0%第七个信息表示:软中断(Software Interrupts)占用CPU的百分比:0.0%第四行:内存状态信息。第一个信息表示:物理总内存量。1501192KB第二个信息表示:空闲内存总量。184928KB第三个信息表示:使用中的物理内存总量。638492KB第四个信息表示:缓存的内存量。677772KB第五行:交换分区信息。第一个信息表示:交换区总量。969960KB第二个信息表示:空闲交换区总量。968668KB第三个信息表示:使用交换区总量。1292KB第四个信息表示:缓冲交换区总量。693704KB第六行:各进程(任务)的状态监控,项目列信息。进程ID(PID) 、进程所有者(USER)、进程优先级(PR)、nice值[负值优先级高] (NI)、进程使用的虚拟内存总量(VIRT) 、进程使用的、未被换出的物理内存大小(RES) 、共享内存大小(SHR)、进程状态(S)、上次更新到现在的CPU时间占用百分比(%CPU)、进程使用的物理内存百分比(%MEM) 、进程使用的CPU时间总计,单位1/100秒(TIME+)、进程名称(命令名/命令行)(COMMAND)

9.25、uname 显示系统信息

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

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

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

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

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@ubuntu:~# useradd -d /home/ftp -g ftp -m hlsftp

9.27、userconf 用户账号设置程序

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

【常用选项:】

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

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

9.28、userdel 删除用户账号

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

【常用选项:】

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

【具体选项如下:】

-f  删除用户登入目录以及目录中所有文件。

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  解除密码锁定。

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  显示版本信息。

9.31、whoami 显示登录名

【命令格式:】whoami

【常用选项:】

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

【具体选项如下:】

使用范例:

root@ubuntu:~# whoami
root

9.32、passwd 设置密码

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

【常用选项:】

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

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

10、系统设置

10.1、chroot 改变根目录

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

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

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

【具体选项如下:】

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  显示版本信息。

10.3、crontab 设置计时器

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

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

【具体选项如下:】-e  编辑该用户的计时器设置。
-l  列出该用户的计时器设置。
-r  删除该用户的计时器设置。
-u<用户名称>  指定要设定计时器的用户名称。

10.4、dmesg 显示开机信息

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

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

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

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

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

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

【具体选项如下:】

-n  关闭指定的shell内建指令。

使用范例:

关闭内建命令root@ubuntu:~# enable -n type
root@ubuntu:~# type trueCommand 'type' not found, did you mean:Try: apt install <deb name>开启内建命令[不加-n参数]root@ubuntu:~# enable type
root@ubuntu:~# type true
true 是 shell 内建

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

【命令格式:】eval [参数]
   【常用选项:】

【具体选项如下:】

使用范例:

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

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

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

使用范例:

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

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曾启动的参数。

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

【命令格式:】setenv [变量名称][变量值]
   【常用选项:】

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

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

【具体选项如下:】

11、磁盘管理

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   显示版本信息。
[文件或设备]   指定磁盘设备。

11.2、dirs 显示目录栈

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

【常用选项:】

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

 【具体选项如下:】+n   显示从左边算起第n笔的目录。
-n   显示从右边算起第n笔的目录。
-l   显示目录完整的记录。

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   显示版本信息。

使用范例:

找出大文件root@ubuntu:~# du -s /home/* | sort -nr
40460   /home/hls

11.4、lndir 连接目录内容

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

【常用选项:】

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

【具体选项如下:】

-ignorelinks   直接建立符号连接的符号连接。
    -silent   不显示指令执行过程。

11.5、stat 显示inode内容

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

【常用选项:】

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

【具体选项如下:】

-f 显示文件系统信息

-t 以简洁方式输出

使用范例:

[root@mjx ~]# stat ps_aux.txt File: ‘ps_aux.txt’Size: 94            Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 34976726    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2021-06-27 12:13:36.168202271 -0400
Modify: 2021-06-27 12:13:36.168202271 -0400
Change: 2021-06-27 12:13:36.168202271 -0400文件:ps_aux.txt大小:94          块:8         IO 块:4096   普通文件
设备:fd00h/64768d        Inode:34976726    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
内容: unconfined_u:object_r:admin_home_t:s0
最近访问:2021-06-27 12:13:36.168202271 -0400
最近更改:2021-06-27 12:13:36.168202271 -0400
最近改动:2021-06-27 12:13:36.168202271 -0400

【知识扩展1:】

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

【知识扩展2:什么是索引节点】

文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。如果inode已经用完了,但是磁盘还没满,这是也是存储不了文件的。

      inode的特殊作用:由于inode号码与文件名分离,这种机制导致了一些Unix/Linux系统特有的现象。
  1. 有时,文件名包含特殊字符,无法正常删除。这时,直接删除inode节点,就能起到删除文件的作用。
  2. 移动文件或重命名文件,只是改变文件名,不影响inode号码。
  3. 打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。因此,通常来说,系统无法从inode号码得知文件名。

使用范例:

使用节点删除文件:
root@ubuntu:~# find ./* -inum 665484 -delete
root@ubuntu:~# find ./* -inum 655551 |xargs rm -f
root@ubuntu:~# find ./* -inum 655551 -exec rm -f {} \;

12、备份压缩

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  显示版本信息。

使用范例:

root@ubuntu:~# ar -r  test.a *.txt
ar: 正在创建 test.aroot@ubuntu:~# ar -t test.a
test1.txt
test2.txt
test3.txt将test4.txt加入到test.a中root@ubuntu:~# ar r test.a test4.txt显示test.a中的所有内容
root@ubuntu:~# ar -p test.a
sdasdasd解压test.aroot@ubuntu:~/source# ar -x test.a

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 最快]。

使用范例:

保留原始文件[不加-k参数不会保留原文件]root@ubuntu:~/source# bzip2 -k test4.txt

12.3、compress 压缩或解压文件

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

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

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

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  显示需要备份的文件及其最后一次备份的层级,时间与日期。

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 显示版本信息。

12.6、gzexe 压缩执行文件

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

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

【具体选项如下:】

-d  解开压缩文件

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"参数相同。

使用范例:

root@ubuntu:~# gzip test2.txt #不保留原文件root@ubuntu:~# gzip test3.txt -c >test3.txt.gz #保留原文件root@ubuntu:~# gzip -d test2.txt.gz #解压不保留原.gz文件root@ubuntu:~# gzip -dc test3.txt.gz > ./test3.txt #解压保留原.gz文件

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   不询问任何问题,一律以同意回答并继续执行指令。

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=<编号文件>   使用指定文件内的编号取代预设的卷册编号。

【打包方法:】

方法一: 直接打包[最常用] 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 -zcf    xxx.tar.gz 文件

方法二:tar调用bzip2

tar -jcf xxx.tar.bz2 文件

【解包方法:】

tar -xvf xxx.tar

tar -zxf xxx.tar.gz

tar -jxf xxx.tar.bz2

使用范例:

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

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指令。

12.11、zip 压缩文件

【命令格式:】zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-<压缩效率>][压缩文件][文件...]
   【常用选项:】

【补充说明:zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名的压缩文件】

【具体选项如下:】-A   调整可执行的自动解压缩文件。
-b<工作目录>   指定暂时存放文件的目录。
-c   替每个被压缩的文件加上注释。
-d   从压缩文件内删除指定的文件。
-D   压缩文件内不建立目录名称。
-f   此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。
-F   尝试修复已损坏的压缩文件。
-g   将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
-h   在线帮助。
-i<范本样式>   只压缩符合条件的文件。
-j   只保存文件名称及其内容,而不存放任何目录名称。
-J   删除压缩文件前面不必要的数据。
-k   使用MS-DOS兼容格式的文件名称。
-l   压缩文件时,把LF字符置换成LF+CR字符。
-ll   压缩文件时,把LF+CR字符置换成LF字符。
-L   显示版权信息。
-m   将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
-n<字尾字符串>   不压缩具有特定字尾字符串的文件。
-o   以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
-q   不显示指令执行过程。
-r   递归处理,将指定目录下的所有文件和子目录一并处理。
-S   包含系统和隐藏文件。
-t<日期时间>   把压缩文件的日期设成指定的日期。
-T   检查备份文件内的每个文件是否正确无误。
-u   更换较新的文件到压缩文件内。
-v   显示指令执行过程或显示版本信息。
-V   保存VMS操作系统的文件属性。
-w   在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。
-x<范本样式>   压缩时排除符合条件的文件。
-X   不保存额外的文件属性。
-y   直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。
-z   替压缩文件加上注释。
-$   保存第一个被压缩文件所在磁盘的卷册名称。
-<压缩效率>   压缩效率是一个介于1-9的数值。

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   如果压缩文件内含有注释,就将注释显示出来。

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:安静模式,不现实指令的任何错误信息。

13.1、命令模式和编辑模式

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

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

从命令模式切换到编辑模式使用: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:删除光标处,光标之后,光标所在行的字符

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)$:光标移至当前行尾

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:删除当前光标所在行行尾换行符(拼接行)

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):$    :光标跳转到最后一行的行首

13.5、复制粘贴

1)yy:复制当前行

2)nyy:复制当前行开始的n行

3)先按 v 然后方向键选择区域,按 y 复制选中行

4)dd:剪切当前行

5)p(小):在当前光标处下面粘贴内容。

6)P(大):在当前光标处上面粘贴内容

13.6、编辑器选项

1)set number:显示行号

2)set number!:不显示行号,其它选项同理加!号

3)set all:列出所有选项设置情况

4):wq    :保存并退出

5):q!      :不保存退出

6):w       :保存更改

Linux命令大全总结(看这一篇就够了)相关推荐

  1. Linux 命令大全(看这一篇就足够)

    目录 第一章:Linux目录结构 第一节:基本介绍 第二节:Linux具体目录结构 第二章:Linux常用命令 第一节:目录处理命令 2.1.1 命令格式 2.1.2 列出目录的内容:ls 命令 2. ...

  2. Linux 问题故障定位,看这一篇就够了

    1. 背景 有时候会遇到一些疑难杂症,并且监控插件并不能一眼立马发现问题的根源.这时候就需要登录服务器进一步深入分析问题的根源.那么分析问题需要有一定的技术经验积累,并且有些问题涉及到的领域非常广,才 ...

  3. 零基础学Linux运维,看这一篇就够了(含30G自学教程笔记)

    作为一个10年老运维,在开始这篇文章之前,先送给大家一句话: 干啥不好,非要做运维,听人劝,吃饱饭,趁年轻,换行吧! 好了,不开玩笑了,回到正文中来. 当谈到运维职业发展情况时,很多人都会说运维做不长 ...

  4. 学会Linux Shell循环脚本看这一篇就够了

    前言: 循环不管在程序中还是脚本中都需要经常用到,那么在 linux 中 简单的shell 脚本怎么写循环呢?在写shell脚本时,经常需要进行循环操作.这里简单谈一下 常用的 for循环结构 然后再 ...

  5. 技能篇:开发必备linux命令大全-稳赚不亏

    我们的服务一般都是在linux系统运行,因此了解一些关于linux命令是必须.接下来将一一详细介绍一些常用的linux的命令 文件操作 远程登录与操作 磁盘挂载 进程管理 启动和结束 系统性能参数查看 ...

  6. 技能篇:开发必备linux命令大全

    我们的服务一般都是在linux系统运行,因此了解一些关于linux命令是必须.接下来将一一详细介绍一些常用的linux的命令 文件操作 远程登录与操作 磁盘挂载 进程管理 启动和结束 系统性能参数查看 ...

  7. Linux命令篇 linux命令大全简洁明了 linux学习笔记

    Linux命令篇 linux命令大全简洁明了 linux学习笔记 Linux 命令大全 文章目录 Linux 命令大全 一. 常用的基础命令 查看目录: 切换目录: 创建和删除: 拷贝和移动文件: 查 ...

  8. linux top命令详解(看这一篇就够了)

    linux top命令详解(看这一篇就够了) top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况. 常用参数 top的使用方式 top [-d ...

  9. linux 命令大全_11个炫酷的Linux终端命令大全

    今天给大家分享用了十年的Linux总结出来的11个炫酷的Linux终端命令大全,通过今天这篇文章我将向大家展示一系列的Linux命令.工具和技巧,希望能够帮助到大家. 1.命令行日常快捷键 如下的快捷 ...

最新文章

  1. 三代测序之微生物基因组 de novo 测序
  2. 利用jmeter向数据库批量导入数据
  3. java语言基础及集合基础大总结
  4. html密码框不显示,密码框中密码的显示与隐藏切换(JS)
  5. Delphi XE7中新并行库
  6. 10099 The Tourist Guide
  7. 腾讯:我火了,新浪:你没有!
  8. js基础-(二)-类和面向对象
  9. C#之Chart控件使用
  10. fid和is_fid解释
  11. div中img居中显示
  12. 6.5 Introduce Explaining Variable 引入解释性变量
  13. 【ACWing】1022. 宠物小精灵之收服
  14. 最新微信红包封面+抽奖小程序/小程序开源源码
  15. 语音信号的时域处理(二)
  16. activiti学习之排他网关
  17. 装自己的服务器(教程)yum-jdk-mysql-防火墙-SVN-redis-申请域名
  18. 绝了,hutool导出excel 图片居然没有调用方法
  19. IP地址、子网掩码、网关
  20. web应用分析利器-xrebel

热门文章

  1. QQ虎年春节活动ADB自动助手(自动开星星,自动红包雨下拉,自动团圆饭,自动一笔连)
  2. HDU-1111解题报告
  3. 实现AI角色的自主移动-避开障碍物Obstacle行为
  4. 硅芯思见:“软约束”到底有多“软”
  5. 光纤主干线路绕不过的一款光时域反射仪 TFN F7系列
  6. Trigger与Flip-Flop两种‘触发器’的区别
  7. 软件测试金字塔,软件测试金字塔
  8. Linux系统中的kill -0有什么作用?
  9. html取服务器时间,客户端获取服务器时间记时
  10. Go语言占位符的使用