程序员最全的Linux命令,不全来找我随时更新!

Posted XiaoLin__Java

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序员最全的Linux命令,不全来找我随时更新!相关的知识,希望对你有一定的参考价值。

一、引言

在这里插入图片描述

1.1、Linux引言

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix多用户多任务支持多线程和多CPU的操作系统。伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持。它除了在服务器操作系统方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步。目前Linux存在着许多不同的Linux发行版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机。

image-20191011200827437

1.2、Linux的诞生

    20世纪80年代,计算机硬件的性能不断提高,PC的市场不断扩大,当时可供计算机选用的操作系统主要有Unix、DOS和MacOS这几种。Unix价格昂贵,不能运行于PC。DOS显得简陋,且源代码被软件厂商严格保密;

    MacOS是一种专门用于苹果计算机的操作系统。此时,计算机科学领域迫切需要一个更加完善、强大、廉价和完全开放的操作系统。由于供教学使用的典型操作系统很少,因此当时在荷兰当教授的美国人AndrewS.Tanenbaum编写了一个操作系统,名为MINIX,为了向学生讲述操作系统内部工作原理。MINIX虽然很好,但只是一个用于教学目的的简单操作系统,而不是一个强有力的实用操作系统,然而最大的好处就是公开源代码。全世界学计算机的学生都通过钻研MINIX源代码来了解电脑里运行的MINIX操作系统,芬兰赫尔辛基大学大学二年级的学生Linus Torvalds就是其中一个,在吸收了MINIX精华的基础上,Linus于1991年写出了属于自己的Linux操作系统,版本为Linux0.01,是Linux时代开始的标志。他利用Unix的核心,去除繁杂的核心程序,改写成适用于一般计算机的x86系统,并放在网络上供大家下载,1994年推出完整的核心Version1.0,至此,Linux逐渐成为功能完善、稳定的操作系统,并被广泛使用。

    Linux出现于1991年,是由芬兰赫尔辛基大学学生,Linus Torvalds和后来加入的众多爱好者共同开发完成。

image-20191011201019566

1.3、Linux的特点

1.3.1、完全免费

    Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。

1.3.2、多用户、多任务

    Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行,丰富的网络功能,可靠的系统安全,良好的可移植性,具有标准兼容性,出色的速度性能。

1.4、Centos

1.4.1、简介

    CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器,)以CentOS替代商业版的Red Hat、Enterprise Linux使用。两者的不同,在于CentOS完全开源

1.4.2、 centos 和 readheat区别

    目前的Linux操作系统主要应用于生产环境,主流企业的Linux系统仍旧是RedHat或者CentOS,他们出自于同样的源代码,但centos完全免费。其独有的yum命令支持在线升级,可以即时更新系统,不像RedHat 那样需要花钱购买支持服务!

1.5、Linux目录结构

image-20191011205611690

  1. bin (binaries):存放二进制可执行文件。
  2. sbin (super user binaries):存放二进制可执行文件,只有root才能访问。
  3. etc (etcetera):存放系统配置文件。
  4. usr (unix shared resources):用于存放共享的系统资源。
  5. home:存放用户文件的根目录。
  6. root :超级用户目录。
  7. dev (devices):用于存放设备文件。
  8. lib (library):存放跟文件系统中的程序运行所需要的共享库及内核模块。
  9. mnt (mount):系统管理员安装临时文件系统的安装点。
  10. boot 存放用于系统引导时使用的各种文件。
  11. tmp (temporary)用于存放各种临时文件。
  12. var (variable)用于存放运行时需要改变数据的文件。

二、Linux常用命令

2.1、Linux命令格式

命令  -选项  参数    

如:  ls -l /usr 

2.2、ls

2.2.1、概述

    ls(list)命令用于显示文件和目录列表

2.2.2、常用参数

  1. -l(long):长格式显示文件和目录信息。ls -l 简写就是ll
  2. -a(all):显示所有文件和目录。
  3. -R:递归显示指定目录下的文件清单,即会显示指定目录分支内各子目录中的文件清单。
  4. -h:人性化显示文件大小。

2.2.3、细节

image-20210427103235175

文件类型   文件权限       链接数    属主      属组    大小     日期     时间     文件名
   d     rwxr -xr -x     8     xiaolin   root    4096    Apr 22  09:42    jdk11

第一个信息(第一位):

  1. d:表示当前类型为目录
  2. -:代表当前类型问文件

第二个信息(后面9位):

  1. 第一个3位:代表当前文件创建者( user)的操作权限 r(读) 、w(写)、x(执行)。
  2. 中间的3位 :代表当前文件创建者的同组(group)用户对文件的操作权限 。
  3. 最后的3位 :代表当前文件创建者的不同组(other)用户对该文件的操作权限。

第三个信息(再后面1位):表示文件链接数。

第四个信息:链接数后面的表示当前文件的创建者。

第五个信息:当前文件创建者后面表示当前文件创建者所在的组是哪个组。

第六个信息:所在组后面表示当前文件占用的空间大小。

第七个信息:文件最后一次修改的时间。

第八个信息:文件名或者目录名。

2.3、操作文件命令

2.3.1、cd

    cd命令用来切换目录。可以随意切换到想要的目录。

2.3.2、pwd(print working directory)

    显示当前工作目录

2.3.3、touch

    创建空文件

2.3.4、mkdir(make directoriy)

    创建目录,他有一个参数:-p(parents),表示如果父目录不存在的话先生成父目录。

2.3.5、cp(copy)

cp  文件名  目录:复制文件到指定目录中
cp  -r(recursive) 目录名 目录:复制指定目录到指定目录中,-r表示递归处理,将指定目录下的文件与子目录一并拷贝。

2.3.6、mv(move)

    移动文件或目录、文件或目录改名

mv 文件名 新文件名:表示文件改名
mv 文件名 目录名: 表示文件移动
mv 目录名 不存在目录名:表示目录改名 

2.3.7、rm

    他有几个常用的参数

-r:同时删除该目录下的所有文件(recursive)
-f:强制删除文件或目录(force)

    经常使用组合命令是:rm -rf

2.3.8、rmdir(remove directoriy)

    删除空目录,如果不是空目录会提示报错。

2.3.9、cat(catenate)

    显示文本文件内容,用来展示少量内容,仅限一个屏幕

2.3.10、head

    查看文本中开头或结尾部分的内容

# 查看a.log文件的前5行
head  -n  5  a.log 

2.3.11、tail

# 循环读取(fellow,实时展示文件的内容变化)
tail  -f  b.log 

2.3.12、echo

    输出命令

# 用来向屏幕输出一句话
echo   I love baby

# 将这段内容输入到 aa.txt文件中,运行两次就是追加
echo I Love baby  >>  aa.txt

2.4、网络相关命令

2.4.1、ip addr

    查看IP地址,简化写法为:ip a

2.4.2、ping

    测试网络连通性

2.5、tar命令

tar命令相当于windows的好压,用于解压或者压缩文件。

# 打包命令
tar -cvf 打包文件名 源文件

他有几个参数:

  1. -c(create):建立一个压缩文件的参数指令。
  2. -x(extract):解开一个压缩文件的参数指令。
  3. -z :是否需要用 gzip 压缩, .tar.gz(打包并且用了gzip的压缩)。
  4. -v :压缩的过程中显示文件(verbose)。
  5. -f:使用档名。

通常使用的组合命令:

  1. tar -cvf aaa.tar file1.txt file2.txt:将file1和file2打包成aaa.tar。
  2. tar -zcvf aaa.tar.gz file1.txt file2.txt :将file1和file2打包成aaa.tar
  3. tar -zxvf aaa.tar.gz:将aaa.tar.gz解压

2.6、systemctl 服务命令(Centos独有)

他用于查看服务的状态。

# 查看某个服务的运行状态
systemctl status 服务名

# 启动某个服务
systemctl start 服务名

# 重启某个服务
systemctl restart 服务名

# 停止某个服务
systemctl stop 服务名

2.7、进程相关命令

2.7.1、ps

查询在当前控制台上运行的进程。

# 查询系统中所有运行的进程,包括后台进程,其中参数a是所有进程,参数x包括不占用控制台的进程,参数u显示用户。
ps  -aux 

# 查询系统中所有运行的进程,包括后台进程,而且可以显示出每个进程的父进程号。
ps  -ef

ps -aux|grep 进程 服务名

2.7.2、top

动态显示系统进程

2.7.3、kill

杀死进程,

# 上述命令中1314是进程号;一般在执行kill命令之前,先用ps或pstree来查询一下将要被杀掉的进程的进程号。 
kill  1314

# 强制终止1314号进程的运行,其中参数-9代表强制的意思,实际上kill命令是向该进程发送信号,该进程接到信号后决定是否停止运行,有些守护进程必须要收到参数9才终止运行。
kill  -9  1314

2.8、vi/vim编辑器

2.8.1、概述

vi / vim是Unix / Linux上最常用的文本编辑器而且功能非常强大。

image-20191011213625815

2.8.2、三种模式

vi编辑器有三种模式:

  1. 编辑模式(命令模式) :所有的机键动作都会理解为编辑整个文档的操作,默认为编辑模式。
  2. 输入模式:大部分机键动作都会理解为输入的字符。
  3. 末行模式:在末行模式,输入很多文件管理命令。

模式之间可以互相转换:

  1. 编辑模式–>输入模式:

    (1). i:在光标所在字符前开始插入。

    (2). a:在光标所在字符后开始插入。

    (3). o:在光标所在行的下面另起一新行插入。

    (4). s:删除光标所在的字符并开始插入。

    (5). I:在光标所在行的行首开始插入 如果行首有空格则在空格之后插入。

    (6).A:在光标所在你行的行尾开始插入。

    (7).O:在光标所在行的上面另起一行开始插入。

    (8).S:删除光标所在行并开始插入。

  2. 输入模式–>编辑模式:ESC(键盘左上方的按键)。

  3. 编辑模式—>末行模式:输入

  4. 末行模式:–>编辑模式:ESC(键盘左上方的按键)(一次或者多次)

2.8.3、常用命令

  1. i:在光标前插入。

  2. I:在光标当前行开始插入。

  3. a:在光标后插入。

  4. A:在光标当前行末尾插入。

  5. o:在光标当前行的下一行插入新行。

  6. O:在光标当前行的上一行插入新行。

  7. :set nu:显示行号。

  8. :set nonu:取消行号。

  9. gg:到文本的第一行。

  10. G:到文本的最后一行。

  11. :n:到文本的第n行。

  12. u:undo,取消上一步操作。

  13. Ctrl + r:redo,返回到undo之前。

  14. :wq:保存退出。

  15. Shift+ zz:保存退出,与“:wq”作用相同。

  16. :wq!:强制保存退出

  17. :q:退出不保存。

  18. :q!:强制退出不保存。

  19. yy:复制光标所在行 (编辑模式)。

  20. 2yy 从光标行开始复制2行(编辑模式)。

  21. p::粘贴命令。

  22. u:撤销(编辑模式)。

  23. 1,$d:全部删除(末行模式)。

2.8.4、移动光标和翻屏操作

2.8.4.1、逐字符移动

  1. h:左移动。
  2. l:右移动。
  3. j:向下移动。
  4. k:向上移动。

2.8.4.2、行内跳转和行间跳转

  1. 0:跳转到行首。
  2. $:跳转到行尾。
  3. G::跳转行最后一行(需要在编辑模式下输入按键盘的G)。
  4. gg: 跳转到第一行(需要在编辑模式下按键盘两下gg)。
  5. ctrl+f:向下翻一页。
  6. ctrl+b:向上翻一页。

2.8.4、查找和替换

  1. /需要匹配的条件:从前往后查找。
/s
  1. ?需要匹配的条件:从后往前查找。
?s
  1. n: 下一个匹配的字符串(编辑模式)。
  2. N: 上一个匹配的字符串(编辑模式)。
  3. g:全局替换。
  4. i:忽略大小写

2.9、软件相关命令

2.9.1、rpm命令

2.9.1.1、rpm概述

    RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括RedHat、CentOS、SUSE等Linux的分发版本都有采用,可以算是公认的行业标准了。RPM文件在Linux系统中的安装最为简便,

2.9.1.2、rpm命令

rpm命令常用的参数:

  1. i(install):安装应用程序。
  2. e(erase):卸载应用程序。
  3. vh(verbose hash):显示安装进度。
  4. U(update) :升级软件包。
  5. qa(query all): 显示所有已安装软件包。
# 显示进度安装 gcc-c++-4.4.7-3.el6.x86_64.rpm
rmp  -ivh  gcc-c++-4.4.7-3.el6.x86_64.rpm

2.9.2、yum命令

    Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE、CentOS中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。使用YUM命令必须连接外部网络

2.10、用户和组相关命令

    用户的定义是一类用户具有访问某个资源或服务的能力。
    用户组(存放一些列用户的容器),同时用户组还拥有具有访问某个资源的权限

  1. whoami:查看当前用户。
  2. exit:退出用户。
  3. groupadd:添加组.
  4. groupdel:删除组。
  5. useradd:添加用户,可以带一个参数-g,指定组名称,如果创建用户的时候,不指定组名,那么系统会自动创建一个和用户名一样的组名。
  6. passwd 用户名:设置用户密码。
  7. su 用户名:切换用户。

2.11、权限相关命令

    权限的定义是某一个特定的人资源或者服务的访问能力。
    Linux文件有三种典型的权限,即r读权限、w写权限和x执行权限。在长格式输出中在文件类型的后面有9列权限位,实际上这是针对不同用户而设定的。r=4,w=2,x=1

    r(read):表示可读取,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录的内容。
    w(write):表表示可写入,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。
    x(excute):表表示可写入,表示可执行,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。

2.12、搜索相关命令

2.12.3、文件相关

  1. whereis 命令名:搜索该命令所在路径及帮助文档所在位置。
whereis  ls

image-20210427192137748

  1. which:搜索命令所在路径及别名
which ls

image-20210427192443412

  1. find 搜索范围 搜索条件:find是在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配。
# 不区分大小写
find /root -iname install.log	

2.12.4、字符串搜索

基本格式为:grep [选项] 字符串 文件名。

可选项为:

  1. -i:忽略大小写。
  2. -v:排除指定字符串。

2.12.5、find命令和grep命令的区别

find命令:在系统中搜索符合条件的文件名。

grep命令:在文件中搜索符合条件的字符串。

2.13、防火墙

    centos7的防火墙程序服务名为:firewalld,他的相关命令如下:

  1. 防火墙配置命令:firewall-cmd。
  2. 防火墙帮助:fireweall-cmd --help。
  3. 查看防火墙状态:firewall-cmd --state。
  4. 查看所有打开的端口:firewall-cmd --zone=public --list-ports。
  5. 开启端口:firewall-cmd --zone=public --add-port=端口号/tcp --permanent(–permanent参数为永久生效,不加则重启后失效)
  6. 更新防火墙规则:firewall-cmd --reload。
  7. 删除端口:firewall-cmd --zone=public --remove-port=端口号/tcp --permanent。

以上是关于程序员最全的Linux命令,不全来找我随时更新!的主要内容,如果未能解决你的问题,请参考以下文章

看完还不会数据库优化,你来找我!

世界上最流行的脚本-JavaScript,看过不会来找我

今天,妹子来找我修电脑......

不懂DHCP服务,来找我

这几个5.20表白代码发给你女神,还没有女朋友直接来找我!

这几个5.20表白代码发给你女神,还没有女朋友直接来找我!