前言
Linux 诞生于 1991 年,由 Linus Torvalds 借鉴 1969 年诞生于贝尔实验室的 UNIX 编写并开源。
安卓和鸿蒙等操作系统,都是基于 Linux 系统进行开发的,由 Linux 内核提供安全、内存安全、进程管理、网络和驱动模型等功能。
Linux 是开源的、免费的,促进了 Linux 的传播和流行,并且稳定性高,可以数年稳定运行而无需关机或者重启。Linux 最突出的特点是跨平台支持,硬件支持范围广,适用处理器包括大型主机、个人电脑或者嵌入式设备等。但是 Linux 也有它的劣势,不容易快速上手,发行版差异较大、不适合玩游戏。
如何学习 Linux
作为一名程序员,我觉得至少我们应该拥有一台属于自己的云服务器,一方面用来学习,学习如何把项目部署到服务器;另一方面便于我们学习 Linux 方面的技能。
Linxu 发行版
常见的 Linux 发行版有:Ubuntu、CentOS、Debian、Fedora、Arch Linux、OpenSUSE。
Ubantu 和 CentOS 是开发者常选的两个发行版,Ubantu 常用作个人电脑的 Linux 系统,图形化界面比较绚丽,而 CentOS 是服务器常用的操作系统,具有高稳定性,高安全性。
购买公有云服务器
当我们在云服务器厂商购买服务器时,都会有一个镜像选项,可以选择 CentOS 或者 Ubuntu 等,以阿里云为例,选择 CentOS 镜像,购买完后,我们就拥有一台以 CentOS 为操作系统的云服务器。之后我们就可以通过 SSH 工具连接到远程服务器,在本地操作,如将本地的项目部署到云服务器,这些都需要 Linux 相关的技能,因此,通过云服务器学习 Linux 是最直观的,也是最接近实战的。
Windows 系统安装虚拟机
在 Windows 上按安装 Linux 虚拟机,其实就是往系统上安装的一个应用程序,访问这个 Linux 至少需要 Windows 系统开机,在这种情况下是无法在外网环境下连接这台 Linux 虚拟机的,这与公有的云服务器是有所不同的。
安装虚拟机
第一步,首先我们下载 VMware Workstation Player 桌面虚拟化工具,然后安装到本地。
我们可以访问官网,找到对应的下载链接。
然后选择要下载的版本,最新版本为 17.5.1,点击下载即可。
第二步,下载 CentOS 8.2 镜像到本地,我们选择阿里云镜像站提供的下载链接。
值得注意的是,如果我们的电脑CPU配置略低的话,安装新版的 VMware Workstation Player,可能就会出现下面的提示。
这意味着,当前电脑的CPU不支持新版本的 VMware Workstation Player 所需的硬件要求,这时候我们可以选择安装低版本的 VMware Workstation Player,如 VMware Workstation10,CentOS 7。
第三步,安装好 VMware Workstation Player 之后,打开应用我们点击创建虚拟机。
然后添加我们下载好的 CentOS 镜像,按照安装步骤,点击下一步。
然后按照要求创建用户名和密码。
最后跟着安装步骤的提示安装即可,出现以下画面,意味着 CentOS 虚拟机已经安装完毕,输入用户名和密码登录即可使用,如果是旧版本的 VMware Workstation Player 界面可能有所差异。
SSH 远程登录
SSH 是什么
SSH,英文全称为 Secure Shell Protocol,翻译为安全外壳协议,是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。
SSH 通过在网络中建立安全隧道以实现 SSH 客户端与服务器之间的连接,其最常见的用途就是远程登录系统,利用 SSH 来传输命令行界面和远程执行命令 。
SSH 登录的条件
SSH 远程登录需要提供:服务器的IP地址、端口号(SSH默认使用的端口号为22)、用户名和密码。
SSH 工具
系统自带的SSH工具
-
MacOS:Terminal 终端,可以直接连接到云服务器。
-
Windows:PowerShell,大部分 Linux 命令也可以在这里使用。
第三方 SSH 工具
安装 MobaxTerm,直接进入官网找到下载链接下载安装即可使用。
SSH 登录
首先打开 MobaxTerm 应用程序,点击 左上角的 Session 按钮。
然后继续点击左上角的 SSH 按钮,就会显示如下内容。
接着输入你要登录的服务器的IP地址和用户名,对于 IP 地址来说,如果连接的是虚拟机,记着要登录虚拟机查询一下虚拟机的 IP 地址,如果连接的是云服务器,直接输入公网 IP 地址即可。
输入完之后,点击 OK 按钮,就会弹出提示让我们输入密码,输入完密码之后,不出意外的话,如果显示以下类似的页面,表示远程登录成功。
以下 Linux 常用指令的操作我们在虚拟机上进行演练,在云服务器上也是一样的。
Linux 常用指令
ls - 显示指定目录下的内容
ls 表示 list 的缩写
ls: 显示当前目录下的内容
ls -l: 显示当前目录下内容的详细信息
ls -la: 与 ls -l 输出内容与格式基本相同, a 指令使得多输出了隐藏文件信息
ls -lha: 与 ls -l 输出内容与格式基本相同, h 指令将文件大小转换为人类适读单位
ls -lt: 与 ls -l 输出内容与格式基本相同, t 指令按时间排序
ls -R: 递归显示当前目录中的所有文件和子目录
ls -l [dir_name]: 显示 [dir name] 目录下的详细信息
cd - 切换当前目录
cd 表示 change directory 的缩写
cd: 一般不这么用,功能上等于cd ~
cd ~: 切换到自己的 home 目录
cd .: 一般不这么用,切换到当前目录,即不进行目录切换
cd ..: 切换到上一级目录
cd ../..: 切换到上上一级目录
cd -: 切换到上一次的目录
cd [dir_name]: 切换到指定目录
cp - 复制文件或文件夹
cp 表示 copy 的缩写
cp [file] [new_file]: 将 [file] 拷贝生成 [new_file],功能上等于cp -f
cp -r [dir] [new_dir]: 将 [dir] 拷贝生成 [new_dir]
cp -i [file] [new_file]: 将 [file] 拷贝生成 [new_file],若 [new_file] 存在则询问
cp -f [file] [new_file]: 将 [file] 拷贝生成 [new_file],若 [new_file] 存在则覆盖
cp -b [file] [new_file]: 将 [file] 拷贝生成 [new_file],若 [new_file] 存在则备份
cp -f --backup=numbered [file] [file]: 将 [file] 进行备份,备份后缀为数字
值得注意的是, CentOS 8等系统中, cp 命令默认是 cp -i 指令的重命名
mv - 将文件/目录移动到其他位置
mv 表示 move 的缩写
mv [src_file] [dest_file]: 将 [src_file] 重命名为 [new_file]
mv -i [src_file] [dest_file]: 覆盖 [dest_file] 文件前询问
mv -f [src_file] [dest_file]: 存在 [dest_file] 文件时覆盖
mv [src_file] [dir_name]: 将 [src_file] 移动到特定文件夹 [dir_name] 下
mv [src_file] ..: 将 [file] 文件移动到上一级目录
mv [dir_name]/* .: 将 [dir_name] 文件夹下的所有内容移动到当前文件夹下
值得注意的是: CentOS 8等系统中, mv 命令默认是 mv -i 指令的重命名
cat - 连接文件并打印到标准输出设备上
cat 表示 concatenate 的缩写
cat [file]: 将 [file] 文件的内容打印到显示器上
cat -n [file]: 将 [file] 文件的行号和内容打印到显示器上
cat -n [src_file] > [dest_file]: 将 [src_file] 文件的行号和内容输出至dest_file中
cat [src_file_1] [src_file_2] > [dest_file]: 将文件 [src_file_1] 和 [src_file_2] 的内容输出到dest_file中
cat /dev/null > [dest_file]: 清空 [dest_file] 文件内容
rm - 删除一个文件或者目录
rm 表示 remove 的缩写
rm [file]: 等同于 rm -f [file]
rm -i [file]: 删除 [file] 文件前前询问
rm -f [file]: 强制删除 [file] 文件,无需确认
rm -rf [dir]: 递归强制删除 [dir] 文件夹
值得注意的是: CentOS 8等系统中, rm 命令默认是 rm -i 指令的重命名
touch - 修改文件或者目录的时间属性,或创建新文件
touch [file]: 如果 [file] 文件不存在,则创建 [file] 文件,如果 [file] 文件存在,则修改 [file] 文件的时间
系统常用指令
reboot: 重启
clear: 清空屏幕
pwd: 显示当前目录, print work directory 的缩写
|: 管道指令,对前一个指令的输出进行处理
--help: 显示指令相关的帮助信息
shutdown -h now: 立即关机, h - halt停止
shutdown -h [min]: [min] 分钟之后关机,若 [min] 为空则表示1分钟后关机
shutdown -c: 取消所预约的关机操作, c - cancel
du - 显示目录或文件的大小
du 表示 disk usage 的缩写
du: 显示当前文件夹下的总大小,以千字节为单位
du -s: 显示当前文件夹下总大小,以字节为单位, s - summarize
du -sh: 以人类可读的单位显示文件夹总大小, h - human-readable
du -sh [dir]: 以人类可读的单位显示[dir]文件夹的总大小
du -h ./*: 以人类可读的单位显示文件夹下各文件的大小
ping - 检测主机网络连通性
ping [主机名称或IP地址] 测试当前主机与 [主机名称或IP地址] 的连通性,需按Ctrl + C手动终止
ping [主机名称或IP地址] - c [num] 仅执行 [num] 次
ping [主机名称或IP地址] - i [second] 以固定间隔 ping
tar - 将多个文档存档或从存档中恢复单个文件
tar 表示 tape archive (磁带存档) 的缩写
c 表示 create | f 表示 file | j 表示 bzip2 | v 表示 verbose | x 表示 extract | z 表示 gzip
tar -zcvf [tar_name].tar.gz [file/dir]: 将 [file/dir] 压缩为 [tar_name].tar.gz 文件
tar -cvf [tar_name].tar [file/dir]: 将 [file/dir] 压缩为 [tar_name].tar 文件
tar -jcvf [tar_name].tar.bz2 [file/dir]: 将 [file/dir] 压缩为 [tar_name].tar.bz2 文件
tar -tzvf [tar_name].tar.gz: 列出 [tar_name].tar.gz 的文件
tar -zxvf [tar_name].tar.gz: 解压 [tar_name].tar.gz 文件到当前目录
vi/vim
Linux 系统一切皆文件,文件编辑必不可少,vi/vim 是大多数发行版系统自带的文本编辑器,在任何场景下都可以使用。
vi 和 vim的区别在于部分发行版预安装 vi,但是未安装 vim,vim 是 vi 的升级版,两者基础指令无差别。
vi/vim 的使用方法: 以 vi 为例,使用 vim 也是一样的。
vi [file_name] 进入vi 区域,如果文件存在,打开,如果文件不存在,新建缓存并且打开。
按下 i 键进入插入模式:
然后就可以在里面书写内容:
最后,先按 ESC 键,退出编辑,然后输入 :wq ,按下回车键,即可保存退出编辑器。
初级阶段掌握最基本的 vi/vim 的使用方法,也就是能通过命令编辑保存文件即可。
总结
通过云服务器、MacOS Terminal 终端或者 Linux 虚拟机,我们能够接触到最基本的 Linux 的相关知识。
无论是求职加薪还是提升自己的技术能力,甚至是换工作岗位,Linux 技能都是必备的,就拿前端岗位来说,项目最终都是要部署到云服务器的,都是要能够通过公网访问的,只有熟悉 Linux 相关知识,我们才能保证项目上线后不出问题,稳定的运行。