前后端分离之后前端对服务器的接触越来越多,因此会 linux 也成了前端的必备技能之一,但是要学好 linux 并不是一件容易的事情需要长时间的积累才行。然而公司并不会等你掌握了 linux 之后才给你分配相关的任务。所以请收下这篇文章,即使不会 linux 也能够完成公司大部分的要求
服务端不能像本地计算机一样每天关机,他需要一直开机以保证不管用户任何时候访问都能提供服务,因此服务器对稳定性的要求特别高。而 linux 正是这方面的佼佼者,linux 是有图形化界面的。但是越少的功能就越能保证系统的稳定性,所以很少有给服务器安装 UI 的公司,这样做提高稳定性的同时还给系统节省了大量的资源可谓是一箭双雕。同时也缺点突出,导致 linux 使用的门楷高的可怕,可以说是为专业人员使用的。
为了让没有太多 linux 基础的前端同学能够很快速的使用 linux 我特地刷了一天的 linux 基础视频。总结了平常使用的特别高的命令来详细的讲解其用法,即使记不住也没关系,收藏一下文章。找到相应的命令直接复制进命令行中就可以执行。
// 大部分命令的格式如下,中括号中的内容为非必填内容
命令 [-选项] [参数]
// 举例
ls -a web/
linux 有 3000 ~ 4000 多命令。大部分基本上都能套用上面的命令格式,而常用的 linux 命令我想了一下主要是这些:代码压缩、文件的增删改查、软件的下载、软件的启动关闭、基本的权限了解、linux 的连接、文件的上传下载、环境变量的配置
提供一个软件 Xshell,下载的话百度一搜一堆,就不提供下载链接了。输入相应的 linux 的 IP 地址和密码就可以登录了,需要注意的是默认端口是 22,要是没给你提供端口号就写 22 就可以了。
mac 用户的终端本身支持一个 ssh 命令。可以直接通过 ssh 登录对应的服务器,格式如下:
ssh -t <账号>@
-p <端口号> // 举例
ssh -t [email protected] -p 22
回车之后就会让你输入密码,需要注意输入密码的时候是不会显示 * 号的。不会有任何变化,你只需要输入密码然后回车就可以了。如此就可以进入 linux 了。
linux 上的命令太多了,所以要学会使用查看帮助文档的命令。
man <命令>
man ls
上来就会用简短的话介绍这个命令的作用,其次就是这个命令的格式。然后下面会有特别全的选项介绍,遗憾的是都是英文的。但我建议你仔细读一下,不要被英语吓到。因为读这种资料不需要用到口语也不需要学习语法,仅仅是词汇量。
// 创建文件夹
mkdir <文件夹的名字>
// 举例
mkdir web
// 创建文件
touch <文件名字>
// 举例
touch index.html
文件和文件夹的新增挺简单的,套用就可以了。要想一次添加多个文件/文件夹,参数之间用空格间隔开来就可以了
// 移动文件 mv -> move
mv <文件> <移动的路径>
这里有几个小技巧,
•移动的时候想要改名:只需要在路径后面加入想改的名字即可•对文件进行改名:不写移动路径即可 mv index.html pay.html
// 拷贝文件 cp -> copy
cp <文件> <移动的路径>
跟 mv 用法相同
// 删除 rm -> remove
rm -rf <文件名字 | 目录名字>
// 举例()
rm -rf index.html
这个命令需要重点讲解一下,因为这个命令可能导致系统崩溃,喜欢刷掘金的朋友应该经常会看到删库跑路的文章(rm -rf /*
这个命令就是删掉根目录下所有的文件)。我就对公司的测试环境进行过删库(rm -rf *),好在公司配有运维,给创建了自己的账号,要不然我可就成罪人了。
这里需要注意在 windows 中删除的文件会给你放入垃圾桶中。但是 linux 中可不会删除了就删除了。从代码中可以看到我加了俩个选项,删除的选项不是必填的但是大部分的场景都是删除很多文件和文件夹,所以上面的选项是非常常用的。来看看官方是怎么解释这里个选项的:
•r 选项:remove directories and their contents recursively (递归的删除目录和文件)•f 选项: ignore nonexistent files and arguments, never prompt(删除文件的时候不需要)
// * 代表所有的内容
rm -rf web/*
上面列举的是一个最常见的删除命令:删除某个文件下面的所有内容
linux 支持查看的命令特别多(less more cat),但是修改通常都会用 vim。众所周知你不可能看不到文件内容就修改内容,所以我推荐你可以用 vim 进行查看和修改命令。
vim 分为三种状态,命令、命令输入和编辑状态。理解这三种状态是使用 vim 的基础。一但了解了这三种状态 vim 就会让你顺风顺水。首先让我们用 vim 打开一个文件
vim index.html
默认进入是命令状态。在这个状态下不能输入内容,每个按键都相当于一个命令,例如输入 i 进入编辑状态。输入 shift + : 进入命令输入状态。这里不会讲解太多 vim 的快捷键、命令键,因为这属于有用但不必须的内容。对 vim 快捷键感兴趣的还是自己百度吧。嘿嘿输入 shift +: 就能进入命令输入模式,效果如上图所示显著的特点就是 左下角有个冒号,能够输入内容。在这个模式下用的最多的就是对内容的搜索、跳转以及如何退出编辑模式。
常用的退出 vim 编辑器的四种操作
•退出文件:q•不保存内容退出文件: q!•保存文件:wq•强制保存文件:wq! (有些文件是只读的,想要写入就需要这个命令。但是能否写入成功跟权限有关)
在命令状态下输入字母 i 就能够进入编辑状态。最明显的特征就是左下角有个 插入的标识(英文 insert这个时候就能够像正常编辑器编辑内容一样编辑了。输入 esc 键就能够退出编辑状态回到命令状态了
总结
在命令状态下输入 i 能够进入编辑状态,输入 shift + : 能够进入命令输入状态 在编辑状态或者是命令输入状态下,输入 esc 键就能够回到命令输入状态
可不要小看了目录操作,linux 的目录跟 windows 的目录是有区别的,windows 分为多个盘,例如 C,D,E... 。而 linux 是没有这个概念的,linux 一切目录都是从根目录( / )衍生而来的。所以了解 linux 的一级目录很重要:
从上图可以看到一级目录大概将近 20 个,我只列举几个平时使用需要了解的比较多的几个目录:
•root: root 用户的家目录•home: 其他用户的家目录所在的位置•bin: 可执行命令存放的目录•usr 软件存放目录•etc 配置文件存放目录
上面我提到了用户的家目录,他主要是用来区分多用户的,比如用户 a 和用户 b。他们会共享一部分内容,同时也会有自己的东西,自己的东西都会放入自己的家目录下面。root 用户的家目录是 /root
, 其他用户的家目录是 /home/<用户名>
。
对 linux 的目录有了一定的理解了,接下来就是几种跳转方式了:
•回到上一级 cd ..
•进入某个文件夹 cd web
•回到家目录 cd ~
•绝对路径跳转 cd /home/a
有时候你跳转多了忘记自己在哪里了,想看一下自己所在的目录就可以用这个命令
// 查看当前目录
pwd
想知道当前目录下有什么内容:
•查看详细的信息 ll
•简单查看 ls
解压和压缩文件需要先了解一下常用的压缩类型,在 windows 中常见的压缩格式是 rar,zip。而 linux 中常见的是 gzip, zip。其中 zip 格式是在 windows 和 linux 中都支持的,因为他是特别古老的一种压缩格式了。通常你见到的各种源码包都是 .tar.gz 的格式。这种都是先通过 tar 打包,然后在通过 gzip 压缩生成的。因为 gzip 无法压缩目录,所以他需要用 tar 先打包一下。所以看起来是双后缀的格式
常用的是 tar 命令。他的语法为: tar [-选项] [文件名] [打包目录]
它有一下几个选项:
•-c 打包•-x 解包•-v 显示详细信息•-f 指定文件名 | 指定解压文件名•-z 打包同时压缩 | 解压
// 打包压缩
tar -zcvf web.tar.gz web
// 解压
tar -zxvf web.tar.gz
大部分情况都是文件从本地客户端转移到服务器上,建议是使用 zip 压缩格式。因为他是 windows 和 linux 都支持的一种压缩格式。linux 上的文件压缩之后上传到 windows 上解压还好说,如果你将 windows 上的 rar 文件传到 linux 上就麻烦了,下载对应的解压软件很费劲的。那么如何解压缩 zip 文件呢?很简单,命令如下:
// 压缩
zip web.zip web
// 解压
unzip web.zip
在 windows 下只需要在菜单栏点一下右键然后选择任务管理器,从任务管理器列表中找到对应的进程选中点关闭进程即可。很显然 linux 是不可能这么方便的,需要通过几部来搞定。
1.查看进程列表 ps -le
记住要杀死的进程 pid2.kill pid
, 强制杀死进程 kill -9 pid
这里需要注意的一个地方就是你要杀死的任务可能有多个 pid。这种情况通常都是一个主进程几个子进程。要想知道哪个是主进程,哪个是子进程可以使用这个命令 pstree -g
。他会以树的形式展示父子进程
有的时候你明确知道所运行的任务使用了哪个端口号,你想通过端口号来杀死进程。所以先查询出来占用这个端口号程序的 pid 即可。
lsof -i:端口号
有时候你下载了某个软件,但是只能在下载的目录使用这个命令,比如 node,git 等等。这是因为你没有将他配置成为环境变量,有点类似 js 中的全局变量跟局部变量。
linux 中配置环境变量有很多种方式,例如配置只对当前用户有效的环境变量、配置临时环境变量、配置所有用户都能用的环境变量。
配置只针对自己的环境变量
在自己的家目录下有一个 .bash_profile 的文件。使用 vim 编辑即可。(在 linux 中以点开头的文件相当于 windows 下面的隐藏文件,因此 ls \ ll 是查询不到的,需要用 ll -a
才能查询到)
# Nodejs
export NODEJS_HOME=/usr/local/lib/nodejs/node-v10.15.0-linux-x64/bin
export PATH=$NODEJS_HOME:$PATH
你可以采用上面的代码来配置你的环境变量,第一行写是什么软件的注释,第二行创建一个指向该软件运行命令的变量第三行将其中的变量替换成第二行写的变量即可。
配置针对全局用户的环境变量
跟配置针对自己的环境变量相同,只是配置文件的位置不同。 vim etc/profile
。
这里需要注意写完了还不行,需要重新加载一下配置文件才能生效,
sourch /etc/profile
// .bash_profile 也一样
如果把 js 看做是一个系统,给这个系统添加软件最简单的方式是用 npm 。同样的 linux 也有类似于 npm 的 yum。用 yum 安装软件跟 npm 一样简单。如果你不知道你要安装的软件的包名最简单的办法就是百度,举个安装 node 的例子。
搜索:yum 安装 node 海量的答案等着你。不过结果可能没有那么满意,因为 yum 并不可能支持所有的安装包,有的可能没有 yum 源需要添加 yum 源。有的可能是通过 wget 让你下载二进制压缩格式。但是你需要知道有 yum 这个东西
在自己的电脑上下载东西都是通过浏览器找到下载文件单击下载就可以了,linux 上要想下载文件就需要通过 wget 了。基本使用命令是:
wget <下载链接>
windows 上可以下载一些支持 ftp 协议的软件进行下载,像我用的就是 xftp 跟前文介绍的 xshell 是同一家公司出的界面简洁功能强大
mac 上可以使用 ForkLift
这种软件通常都会分为俩栏,左边一栏是自己本地的目录,右边一栏是服务器的目录。上传就是自己本地的文件拖拽到服务器上,下载就是服务器的文件拖拽到自己本地。使用起来是 so easy 的。
有的命令会执行很长时间,像下载文件,解压大型文件。等着他下载或者是解压完成是非常浪费时间的,当然你也可以启动多个命令窗口来执行不同的任务。但是当你关闭命令窗口的时候这个命令就会中断。所以一定要学会如何让程序后台执行。
在运行的命令后面添加 &。举个例子
tar -xzf web.tar.gz &
需要注意的是我将选项 v 给去掉了因为虽然拿到后台运行了但是输出信息还是会打印到前台来。如果想不打印可以将内容指定到一个文件中例如:
tar -xzvf web.tar.gz > out.file &
想知道这个命令是否执行完只需要用 jobs
如果你想重新将他在拿到前台可以使用 fg 1
1 是 jobs 中括号中的数值。有的时候我们也不知道这个命令执行多久,需要中途将他拿到后台执行可以按 CTRL + Z (MAC 上按 command + z) 。这个并不会在后台执行,而是挂起状态要想让他在后台执行需要用 bg 1
其中的 1 跟 fg 1
一样。当然了这种用法你关闭了终端他就停止了,完全可以多开几个标签页执行命令。
使用这个命令即使终端关闭了也不会影响到程序的执行
nohup tar -xzvf web.tar.gz > out.file &
linux 上的命令真的太多了。仔细斟酌之后觉得上面的命令的频率是最高的。为了给他家提供好的交流环境我特地建立了交流群,你有更好的命令欢迎加我微信(微信号:xu645352780 )讨论,文章将会保持一直更新哦。