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

Posted 穆瑾轩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux命令大全总结(看这一篇就够了)相关的知识,希望对你有一定的参考价值。

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

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;

1996Linux 2.0内核发布,此内核有大约40万行代码,并可以支持多个处理器,用户350万人;
2001Linux 2.4发布,它进一步地提升了SMP系统的扩展性,同时它也集成了很多用于支持桌面系统的特性;
2003Linux 2.6版内核发布,相对于2.4版内核2.6在对系统的支持都有很大的变化。1.更好地支持大型多处理器服务器,特别是采用NUMA设计的服务器;2.更好地支持嵌入式设备,如手机、网络路由器或者视频录像机等;3.对鼠标和键盘指令等用户行为反应更加迅速;4.块设备驱动程序做了彻底更新;
2004

10月20日Ubuntu发布,并以Debian 为开发蓝本(Ubuntu是Debian的一种衍生版本);

CentOS 2发布;

2014CentOS宣布于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\\
ing

10.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/hls
     su - 切换为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],其中+表示在原有参数设定基础上追加参数;以上是关于Linux命令大全总结(看这一篇就够了)的主要内容,如果未能解决你的问题,请参考以下文章

Python 第三方库大全看这一篇就够了(1000+工具包)

Python 第三方库大全看这一篇就够了(1000+工具包)

linux 磁盘分区和挂载看这一篇就够了

总结丨Spring 源码学习,看这一篇就够了

超详细的Spring框架总结,学spring,看这一篇就够了!

Tcpdump 看这一篇就够了