0. 引言

前段时间有同学问我:linux指令那么多,怎么去学?实际上这个问题也曾经困扰着我,多年走来,我总结了一个经验:优先学习你马上要用到的,而不是上来就体系的全部学习一遍。

可能很多同学会不太适应这样的方式,不体系的学习那很多知识不就跃层了吗?根本不理解什么意思?为什么这样,是什么原理?

但是大家要把握一点,这个行业的技术日新月异,作为后端开发甚至是运维而言,永远有比linux指令更要紧的技能要求你掌握。而linux指令本身,就像你操作window电脑,你一开始玩电脑的时候是先把电脑说明书看一遍吗?还不是打开游戏,玩起了你感兴趣的,马上要用到的。

于是乎好多同学甚至学会了输入游戏后台作弊指令这样的高阶操作,却还不知道怎么书写一个word文档。但那个时候的你会因为不会写word,不会写PPT焦虑吗?不会!因为用不着。

所以这就是说了这么多废话,要告诉大家的一个学习道理,开发这行,要求大家学最紧俏的,快速掌握实用,后续深入原理。学习是个循环往复的过程!

1. 常用指令

以下命名已根据多年开发经验的使用频次做了一定精炼,只列举了个人认为最常用的,大家应该优先掌握的指令和参数,更多的用法大家可以根据自己的情况进行拓展学习

1.1 基础掌握

  • 1、进入目录指令 cd
    我们进入linux系统,要想在这个黑色的世界自由行走,先要了解的就是cd指令,它能帮助我们进入到我们想要去的地方

比如想要去/usr/local文件夹,那么执行cd /usr/local即可。注意linux的路径和window的有所区分,就不再是以盘符开头

# 进入/root目录
cd ~
# 返回上一级目录
cd ..
# 进入当前目录下的bin目录
cd ./bin 或者 cd bin
# 进入兄弟目录xxx(返回上一级,再进入该目录即可)
cd ../xxx
  • 2、查询列表指令 llls

ls指令用来列举目录下的文件,支持的参数有多种

# 获取当前列表下全部文件,包括隐藏文件
ls -a
# 获取当前列表下文件的全部信息,包括权限、大小、最近修改时间,ll指令就是该指令的快捷输入
ls -l 或 ll
# 获取当前列表下的全部文件,包括子目录
ls -R
# 将文件按最近一次修改时间排序
ls -i

需要注意的是这些参数是可以组合使用的,比如:

ls -li
  • 3、文本修改指令 vim \ vi

vim是文本修改指令,我们在环境部署时经常需要修改配置文件,因此vim指令的使用必不可少。但是需要注意的是如果你的linux系统安装的时候是用的最小化安装,那么是不自带vim指令的,需要单独安装,或者使用vi指令,虽然没有vim那么功能丰富,但是单纯的修改保存是完全没有问题的

vim 基础操作:

# 修改文件
vim fileName
# 切换修改模式
a
# 保存
esc + :wq
# 强制保存
:!wq
# 直接退出,不保存修改
:q

vim高级操作:

# 向后查找指定内容
:/xxx
# 向前查找指定内容
:?xxx
# 替换所有的xxx为yyy
:%s/^xxx/yyy/g
# 切换到第一行
gg
# 切换到最后一行
GG
# 跳转指定行
:row_number
# 显示行号
:set nu
# 取消显示行好
:set nonu
# 删除光标所在行
dd
# 全部删除(三步)
esc
gg
d + G (注意这里不是输入+,而是连续操作)
  • 4、文本文件查看指令 cat \ more \ less

cat 指令:

# 一次性显示文件全部内容,适合于较小的文件
cat xxx
# 加上行号显示
cat -n xxx

less指令

# 分页显示文件内容,适合较大的文件
less xxx
# less操作
空格键:前进一页
b键:后退一页
q键:退出阅读
/键:搜索模式
n键:搜索模式下,跳转下一个匹配行
N键:搜索模式下,跳转上一个匹配行
  • 5、查看尾行指令 tail

tail指令用于查询文本内容的最后几行,适用于针对较大的日志文件进行查询,并且能够实时显示文本内容,可以实时看到新产生的日志内容

# 查询文件末尾几行(默认10行)
tail xxx
# 查询文件末尾100行
tail -n 100 xxx
# 实时查看文件默认100行(会持续输出文件产生的新内容)
tail -f -n 100 xxx
  • 6、查看文件的头几行指令 head

head指令与tail相对,用于查询文件的头几行内容

head xxx
# 指定100行
head -n 100 xxx
  • 7、转移文件指令 mv

mv指令也就是window中我们常用的剪切指令,用于移动文件

mv 原文件名 目标文件名
# 如将当前目录下的vim_test文件移动到上级目录,并重命名为vim_test2
mv vim_test.txt ../vim_test2.txt
  • 8、复制文件指令 cp

cp也是我们比较常用的指令,用于文件复制

mv 原文件名 目标文件名
# 如将当前目录下的vim_test文件复制到上级目录,并重命名为vim_test2
cp vim_test.txt ../vim_test2.txt
  • 9、远程复制指令 scp

scp指令用于远程复制/传输文件,我们配置环境时,有时需要将一个配置文件传到另外一个服务器上,如果不想专门下载一个ftp软件的话,我们就可以用scp指令来实现

scp 文件名 目标服务器账号@目标服务器ip:目标路径
# 将当前目录下的source_project_cargo文件复制到192.168.244.11服务器上的/var/local目录下
scp source_project_cargo.sql root@192.168.244.11:/var/local/
  • 10、删除文件指令 rm

rm指令用于删除指定文件夹下的文件及子文件夹。该指令使用时要慎重,因为一旦删除是无法恢复的,所以开发圈盛传的删库跑路,就源于rm -rf指令的强悍效果

# 强制删除文件
rm -f xxx
# 删除文件及子目录
rm -r xxx
# 强制删除文件及子目录
rm -rf xxx
  • 11、创建文件夹指令 mkdir
# 创建文件夹xxx,只支持一级文件夹
mkdir xxx
# 创建多级文件夹
mkdir -p xxx/yyy/zzz
  • 12、显示当前路径 pwd

有时我们不知道自己当前操作的文件夹路径时,就可以通过pwd指令来查询当前所在路径

pwd
  • 13、模糊查询指令 grep

grep指令是我们在运维排查的过程中常用的指令,当出现报错时,我们就可以通过grep指令来定位报错的日志内容

grep [option] pattern filename
# 查询xxx.log中的“张三”所在行
grep '张三' xxx.log
# 查询xxx.log中“张三”所在行及之后的3行内容,A:after
grep -A 3 '张三' xxx.log
# 查询xxx.log中“张三”所在行及之前的3行内容,B:before
grep -B 3 '张三' xxx.log
# 查询xxx.log中“张三”所在行及前后的3行内容
grep -C 3 '张三' xxx.log
# 查询指定文件的总行数
grep -c '' /data/logs/xxx.log
# 查询指定张三出现的行数
grep -c '张三' /data/logs/xxx.log
# 查询并显示行号
grep -n -A 3 '张三' xxx.log
  • 14、重启指令 reboot

重启大法能够解决"80%"的软件问题,这是我们必须掌握的指令!

reboot
  • 15、切换用户指令 su
# 切换root账号
su
# 切换指定用户elastic
su elastic

1.2 进阶掌握

  • 1、查找可执行文件的路径 which

有时我们会面临忘记自己安装的软件在哪个文件夹下,或者需要用到某个软件不知道放哪儿了,这时我们就可以通过which 来帮助我们寻找安装目录

# 查找java安装路径
which java
  • 2、查找文件位置指令 find

find指令用于查找指定文件的路径

find <path> <fileName> <todo>
# 在/var/local文件夹下查找xxx.log文件
find /var/local xxx.log
  • 3、赋权指令 chmod \ chown

在linux系统中,文件具有不同的权限,针对没有写入权限的文件,我们是不能修改的,因此我们就需要修改文件权限,这时就需要用到chmod,chown指令

chown指令:改变文件所有者

# 将/var/local/elasticsearch文件夹的所有者改为elastic,群组改为elastic,-R表示递归设置所以的子文件夹
chown -R elastic:elastic /var/local/elasticsearch

chmod指令:修改文件权限

# 递归设置对/var/local/elasticsearch文件夹及子文件具有最高权限
chmod -R 777 /var/local/elasticsearch

针对权限内容,当然不止777最高权限,还分了其他很多权限等级,因篇幅关系,大家可自行学习,先做了解,实际应用时再深入理解即可

  • 4、查询进程指令 ps

ps指令可以让我们查询进程名,我们在linux系统中后台运行某些软件时,是不能想window那样有运行窗口可视化的,我们想要找到这些进程的话就需要利用ps指令

# 查询全部进程
ps -ef
# 结合grep指令实现查询指令名称的进程,如查询java进程
ps -ef | grep java
  • 5、终止进程指令 kill

kill用来强制杀死正在运行的进程,类似window中的强制退出,一般配合ps指令来使用,ps指令查询出指定的进程号,然后通过kill退出进程

kill 进程号
  • 6、远程连接指令 ssh

ssh用于我们远程连接服务器,如果不想下载远程连接软件的话,ssh指令是不错的选择

ssh 账号@服务器ip -p 端口
# 通过22端口远程连接192.168.244.11服务器
ssh root@192.168.244.11 -p 22
# 端口默认22,所以上述指令可以简写为
ssh root@192.168.244.11
  • 7、软件下载指令 yum

yum是一个软件包管理器,我们可以通过这个指令来快捷安装软件,以此来方便的搭建运行环境

# 显示已经安装的和可以安装的软件
yum list
# 查找安装包
yum search <name>
# 安装软件包
yum install xxx
# -y是无需再询问是否安装,比如直接安装java
yum -y install java
# 卸载安装的软件
yum remove xxx
# 更新所有软件包
yum update
# 更新指定软件包
yum update xxx
  • 8、下载文件指令 wget

wget用于从指定的url下载文件,这样我们就不再需要在本地下载后再从本地上传到服务器了。当然该工具不是自带的,需要我们提前安装

# 通过yum安装wget
yum -y install wget
# 下载文件
wget url
# 下载文件并重命名
wget -O 55555.zip http://55555.com/download
  • 9、打包、解压指令 tar

tar指令用于打包文件夹, 或者解压压缩包,在环境搭建时非常常用

其支持的参数如下:

-c   # 创建打包文件
-t  # 查看压缩包含有哪些文件名
-x # 解压缩
-z # 通过gzip的方式进行压缩/解压缩
-v # 显示正在解压/打包的文件名
-f # 指定文件名

一般我们是将这些参数组合使用的,下面列举几个常用的:

# 压缩xxx文件夹为.tar.gz文件
tar -czvf xxx.tar.gz xxx
# 解压xxx.tar.gz文件
tar -zxvf xxx.tar.gz
# 显示压缩文件内容
tar -tzvg xxx.tar.gz
  • 10、zip文件解压缩指令 zip/unzip

zip指令专用于解压/打包zip文件,同样需要提前安装

# yum安装zip,unzip指令
yum install zip
yum install unzip
# 解压zip文件
unzip xxx.zip
# 打包zip文件
zip [option] 文件名 路径
# 打包xxx文件夹为xxx.zip,-v表示可视化打包过程,-r表示递归打包所有子文件夹
zip -vr xxx.zip /var/local/xxx
# 追加user.txt文件到xxx.zip文件中
zip -u xxx.zip user.txt
# 加密压缩
zip -e xxx.zip /var/local/xxx
  • 11、后台运行程序 nohup

nohup指令用于后台运行程序,有时我们需要运行多个软件时,如果都在前台运行则只能运行一个,无法继续输入指令,这时我们就需要指定程序后台运行

# 后台运行xxx.jar,搭配“&”使用,表示退出终端程序依旧可以后台运行,不会挂断
nohup java -jar xxx.jar &

总结

本期的linux常用指令分享就到这里结束了,更加建议大家通过实操来熟悉这些指令,一次排查、一次环境搭建、一次日志查询,动起来吧~

连夜整理了多年后端开发最常用linux指令(建议收藏,边用边学)相关推荐

  1. 【EPS精品教程】EPS2016三维测图软件常用快捷键(建议收藏)

    EPS2016三维测图软件常用快捷键(建议收藏) 状 态 键盘位置 功能名称 功能描述 选择 Shift 拖点 按下鼠标左键移动光标,将目标点拖到其他位置 C 闭合 使打开的当前线闭合,闭合的当前线打 ...

  2. redis常用linux指令(无介绍快使用)

    redis常用linux指令(无介绍快使用) 问题背景 登录关闭redis 创建键值对 切换16个数据库 数据库键的数量 清空数据库 模糊查询 通配符单个字符? 通配括号内的某一个字符 判断key是否 ...

  3. 【Windows常用快捷键,建议收藏】

    Windows常用快捷键,建议收藏 作为一名出色的程序员,亦或者是白领工作者,乃至正要步入社会的青年们,以下盘点的一些快捷键,也许能让你的日常生活工作更加便捷.高效. 基本快捷方式 首先面向我们大众, ...

  4. 后端开发中常用的语言

    1.C/C++ 语言 C 语言最初是用于系统开发工作,特别是组成操作系统的程序.由于 C 语言所产生的代码运行速度与汇编语言编写的代码运行速度几乎一样,所以采用 C 语言作为系统开发语言.目前,C 语 ...

  5. 开发工作中常用网站宝典(建议收藏!!!)

    以下是我开发中非常有用的网站(建议收藏!!!) 网站 简介 https://www.csdn.net 很多开发中遇到的问题在这里几乎都可以找到答案,解析也很详细,不过有些资源收费,需开通会员,(可以到 ...

  6. 【小程序】微信小程序云开发笔记详细教程(建议收藏)

    1- 前言 1.1 微信云开发是什么? 微信云开发是微信团队联合腾讯云推出的专业的小程序开发服务. 开发者可以使用云开发快速开发小程序.小游戏.公众号网页等,并且原生打通微信开放能力. 开发者无需搭建 ...

  7. Linux常用命令总结(建议收藏)

    无论你是编程小白还是职场老手,都建议你收藏这份常用 Linux 命令手册. 点击上方"后端开发技术",选择"设为星标" ,优质资源及时送达 无论是后端程序员还是 ...

  8. linux tac sed,Day08 - 一些常用 Linux 指令 - 3-7 (cat、tac、head、tail、vi、sed)

    前言 此為 Linux 相關的 3-7 篇,都是很常用的指令,每天學一點,並常使用,便會記下成為反射動作之一 cat 將該檔案內容印在終端機上 command | cat cat -n file ca ...

  9. 【Linux基础】常用Linux指令与其对应全称(持续更新)

    Linux中的shell指令.文件名或工具,出于便捷,大量应用英文单词的缩写.每一个缩写都有其背后的含义,编程思想是想通的,我们只有知道缩写的真正含义,才使我们真正理解这条指令,更有利于我们站在设计者 ...

最新文章

  1. 智源发布:2021 年十大人工智能技术趋势【附下载链接】
  2. springboot mockmvc单元测试
  3. halcon入门_visionpro和halcon这两款机器视觉软件区别
  4. python matplotlib.pyplot.xticks() yticks() (设置x或y轴对应显示的标签)
  5. 交换第六天——HSRP、VRRP、GLBP、SPAN
  6. php 实现进制相互转换
  7. 浅说 XSS和CSRF
  8. 轻松获取LAMP环境的配置参数
  9. Linux Shell 中各种括号的作用 ()、(())、[]、[[]]、{}
  10. oracle 中update select 和连接字符串配合使用
  11. SQL应用与开发:(七)数据操作 #183; 查 #183; (一)常规型
  12. 利用matlab命令画出以下信号的波形,大连理工大学 信号与系统实验三报告
  13. iOS第三方支付集成-支付宝支付
  14. photoshop更改图片DPI方法
  15. 今日头条搜索应该怎么做?头条搜索SEO排名和信息流排名课程
  16. 4种免费将图片转成PDF的方法,手机电脑都能用
  17. 北京理工大学汇编语言复习重点(可打印)
  18. 上海首届暑期大学生实习专场,名头看上去非常不错,决定去体验一下招聘会,看看自己的简历会被如何的无视..
  19. 中职高考计算机专业真题,中职高考计算机试题及答案
  20. 英语不好可以学编程嘛?程序员必备英文单词汇总

热门文章

  1. 村庄规划中的GIS应用之地形分析
  2. 解释为什么无限个无穷小的乘积不是无穷小
  3. 每周翻译一篇前端技术英文官网(二)
  4. 人脸识别发展的关键技术是什么?
  5. 学校宽带被远程计算机终止,宽带连接被远程计算机终止是什么意思
  6. Raphael成图中的一点注意
  7. 万能的zookeeper,分布式环境的动物管理员
  8. nmap使用方法--方便自己查
  9. MT6762_MT6771_AF_Tuning_introduction
  10. 一年前端的4月深圳面经