概述

Linux是一种自由和开放源码的类UNIX操作系统。该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布,在加上用户空间的应用程序之后,成为Linux操作系统。
Linux也是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证(GPL),任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。大多数Linux系统还包括像提供GUI的X Window之类的程序。除了一部分专家之外,大多数人都是直接使用Linux 发行版,而不是自己选择每一样组件或自行设置。

  • Linux发行版
    Linux发行版指的就是通常所说的“Linux操作系统”,发行版为许多不同的目的而制作,包括对不同电脑硬件结构的支持,对普通用户或开发者使用方式的调整,针对实时应用或嵌入式系统的开发等等。目前,超过三百个发行版被积极的开发,最普遍被使用的发行版有大约十多个。较为知名的有DebianUbuntuFedoraCentOSArch LinuxopenSUSE等。

开始

WSL2

非常推荐的开发方式!!!(适用于Windows10 2004版本及以上)

  • Win+R运行optionalfeatures

  • 勾选适用于Linux的Windows子系统虚拟机平台

  • 重启电脑

  • 管理员运行cmd,执行wsl --set-default-version 2设置版本wsl2

  • Microsoft Store安装Ubuntu

  • 安装完直接启动即可,需要设置一下用户名密码,记得全小写即可(不能设置成root

  • cmd运行一下ubuntu config --default-user root 配置root用户为默认用户

  • 开始happy!
    如果要重启ubuntu只需要在服务中找到LxssManager重启该服务即可
    如果要关闭wsl直接在cmd中使用wsl --shutdown

  • 此种方式传输文件只需要在Ubuntu的命令界面中使用explore.exe .即可使用windows资源管理器打开当前目录。

VMWare+CentOS

  • 安装VMWare
  • 下载一个CentOS Linux的映像文件
  • 安装即可

垃圾Windows10家庭中文版

如果你用的是Windows10家庭中文版,可能会安装不上VMware的虚拟网卡
造成本机的XShell连接不上VMware中的虚拟机。
如下,你的网络适配器选项中是没有这两个VMware的虚拟网卡的
VMware的虚拟网卡

帮某人研究了一下午,通过以下的方式解决了

  • 首先需要将系统从Windows10家庭中文版升级成专业版或企业版(可能没有必要)
    • 拔掉网线
    • 此电脑 - 属性 - 更改产品密钥(VK7JG-NPHTM-C97JM-9MPGT-3V66T
    • 升级
    • 等待完成时会提示无法连接网络,失败,不用担心,你只需要重启即可
    • 重启之后,查看属性,系统应该改为了企业版
  • 重新激活系统
  • 卸载并清理注册表
    • 控制面板 卸载程序 卸载已安装的VMware
    • 下载并安装CCleaner
    • 修复注册表 Register - Scan - Review Selected
  • 重新安装VMware
    • 如果你修改过VMware的编辑 - 虚拟网络编辑器,记得 更改设置 恢复默认
  • 重新安装映像系统
  • 开始happy!

基本环境安装

jdk

  • 创建一个目录方便管理
    cd /usr/
    mkdir java
  • 下载jdk-linux.tar.gzOracle jdk_8u202下载地址
  • 想办法弄到/usr/java/目录下
  • 解压 tar -xzvf jdk-8u202-linux-x64.tar.gz
  • 编辑/etc/profile文件 vi /etc/profile
  • 追加如下内容
    1
    2
    3
    export JAVA_HOME=/usr/java/jdk1.8.0_202
    export PATH=.:$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  • 使修改立即生效 source /etc/profile
  • 查看JAVA_HOME的值 echo $JAVA_HOME

tomcat

  • 移动到一个目录cd /usr/java
  • 下载apache-tomcat.tar.gztomcat下载地址
  • 想办法弄到/usr/java/目录下
  • 解压 tar -xzvf apache-tomcat.版本号.tar.gz
  • 把解压出来的文件夹改个名字mv apache-tomcat.版本号 tomcat
  • 移动到tomcat目录 cd tomcat
  • bin/startup.sh && tail -f logs/catalina.out启动即可
  • (关闭tomcat使用bin/shutdown.sh

不小心开了多个tomcat怎么办?

  1. 使用ps -ef|grep tomcat查看tomcat是否再运行,第一个编号是该tomcat的进程pid
  2. kill掉该进程kill -9 <pid>

常用命令

基础命令

命令 描述
uname –r 显示内核版本
uname –m 查看系统架构
halt 停机
poweroff 关闭电源
shutdown –h now 关机
reboot 重启
shutdown –r now 重启
logout 注销
exit 退出
echo 在终端显示命令行中键入的信息
clear 清屏
命令 描述
date +%Y%m%d 显示日期
date +%H:%M 显示时间
date -s "mm/dd/yyyy hh:mm:ss" 修改日期时间
date +%Y%m%d --date="-1 day" 得到昨天的日期
cal [month] [year] 显示日历
命令 描述
grep MemTotal /proc/meminfo 检查内存空间
grep SwapTotal /proc/meminfo 检查交换分区
free 检查当前可用的内存和交换分区
df -h /usr 检查磁盘共享空间
fdisk –l 查看硬盘空间
cat /etc/issue 软件版本与内核版本检测
rpm –qa|grep binutils 检验binutils是否安装
命令 描述
help 显示Bash的命令列表
help <命令字>help pwd 获得单独的Bash命令的帮助信息
help -s <命令字>help –s pwd 只显示命令的格式信息

shell命令(内置命令)是Linux系统中使用频率最高的一类命令 。
注:Bash是Linux系统中默认使用的shell程序。

Linux系统中的大多数命令都属于非shell命令,即“外部命令”:<命令字> –help
无论是shell命令还是非shell命令,都提供手册页形式的帮助信息:man <命令字>,通过↑、↓、PgUp、PgDn、q键操作
信息页是Linux中提供的与手册页类似的另一种帮助信息的形式: info <命令字>
注意:直接输入info命令,显示info说明信息,通过↑、↓、PgUp、PgDn、q键操作

文件/目录操作

命令 描述
pwd 打印当前工作目录(print working directory)
ls [-l] [参数] 用于显示文件或目录信息
添加-l时,每行显示一个文件和目录信息(长格式)
参数传入文件名,显示此文件信息/文件夹内容
不加-l,只显示文件名
ll 等同于ls -l
cd 更换目录(change directory)
上级目录:../
当前目录:./
根目录:/
mkdir <目录名> 新建目录(make directory)
-p自动创建不存在的父目录
可同时创建多个目录,用空格分隔
mv <源文件名> <目录名/新文件名> 目录存在时,将文件移动到该目录
在时,重命名文件
rmdir <目录名> 删除空目录(remove directory)
-p自动删除父目录
可同时删除多个目录,用空格分隔
touch <文件名> 新建空文件
当文件不存在时,创建大小为0的空文件
存在时,则只更新该文件的时间属性
rm <文件名> 删除文件
-r 可删除非空目录(recurse)
-f 删除时不提示(force)
-rf 强制删除
可同时删除多个文件,用空格分隔
find <path> -name <file> 在指定目录下查找指定文件
文件名中可用*?通配符
* 表示0到多个字符
?表示一个字符
file <文件名> 文件类型查看
Linux中无文件扩展名,无法知其文件类型,所以常用此命令
cp <文件名> <目标目录> 复制文件
-r 可将原目录及其子目录复制到目标目录
可同时复制多个文件,用空格分隔

包安装/依赖管理

一般来说著名的 Linux 系统基本上分两大类:

  • RedHat 系列:Redhat、Centos、Fedora 等
  • Debian 系列:Debian、Ubuntu 等
命令 描述
yum install 软件名称 -y 安装(-y表示询问y/n时全部选择y)
yum remove 软件名称 -y 卸载

yum与apt的区别

压缩解压

常用命令 描述
tar -xzvf 文件名.tar.gz 解压tar.gz
tar -xvf 文件名.tar 解压tar
tar -xjvf 文件名.tar.bz2 解压tar.bz2
tar -xZvf 文件名.tar.Z 解压tar.Z
unrar e 文件名.rar 解压rar,需要先下载rar for linux
unzip 文件名.zip 解压zip,需要先下载rar for linux
常用命令 描述
tar -cvf jpg.tar *.jpg 将目录里所有jpg文件打包成jpg.tar
tar -czf jpg.tar.gz *.jpg 将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar -cjf jpg.tar.bz2 *.jpg 将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar -cZf jpg.tar.Z *.jpg 将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg zip格式的压缩,需要先下载zip for linux
  • 独立命令
    -c: 建立压缩档案
    -x:解压
    -t:查看内容
    -r:向压缩归档文件末尾追加文件
    -u:更新原压缩包中的文件
    这五个独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个

  • 可选命令
    -z:有gzip属性的
    -j:有bz2属性的
    -Z:有compress属性的
    -v:显示所有过程
    -O:将文件解开到标准输出

  • 下面的参数-f是必须的
    -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

Linux下的tar压缩解压缩命令详解

用户管理

命令 描述
useradd <用户名> 添加用户
passwd <用户名> 修改用户密码
su <用户名> 切换到一个用户
usermod [-L|-U] <用户名> -L 锁住(lock)
-U 解锁(unlock)
userdel [-r] <用户名> 删除用户
whoamiwho am i 查看当前用户
who 查看所有已登录用户
last 查看所有登录用户记录
命令 描述
groupadd <用户组名> 添加用户组
useradd -g <用户组名> <用户名> 创建用户时指定用户初始组
usermod -g <用户组名> <用户名> 修改用户所在组
groups <用户名> 查看用户所属组
groupdel <用户组名> 删除用户组
命令 描述
write <user> 向指定用户发送信息(ctrl+d结束编辑)
wall '<info>' 向所有用户发送信息
mesg <n/y> 拒绝或接收发送的信息(对于root管理员无效)
- 路径
用户信息文件 /etc/passwd
用户密码文件 /etc/shadow
用户组信息文件 /etc/group

文件权限

文件信息表示

ll <文件名> 查看文件权限
得出如下信息

1
-rw-r--r-- 1 root root 0 Jul 22 16:04 testfile
-rw-r--r-- 1 root root 0 Jul 22 16:04 testfile
- rw- r-- r-- 属主 属组 更新时间 文件名
文件类型 属主权限 属组权限 其他用户权限
注:文件所有者=属主 文件所属组=属组

权限数字表示

权限 执行
(--x)

(-w-)
执行+写
(-wx)

(r--)
读+执行
(r-x)
读+写
(rw-)
读+写+执行
(rwx)
数字 1 2 3(2+1) 4 5(4+1) 6(4+2) 7(4+2+1)

文件权限的设置

命令 描述
chmod [ugoa][+-=][rwx] <文件> 更改文件权限 例如chmod u+w testfile
ugoa分别表示User、Group、Other、All
chown <用户名> <文件> 更改文件所有者:加 -R 是修改子目录
chgrp <组名> <文件> 更改文件所属组
chown <用户名:组名> <文件> 同时更改所有者和所属组

chmod的扩展使用

  • 我们可以简写中间的部分为三个数字,分别表示User、Group、Other的权限
    chmod a=rwx 文件chmod 777 文件效果相同
    chmod ug=rw,o=r 文件chmod 664 文件效果相同
  • 若用 chmod 4755 文件 可使此程式具有root的权限,这个4表示其他用户执行文件时,具有与所有者相当的权限。
    例如:root用户创建了一个上网认证程序netlogin,如果其他用户要上网也要用到这个程序,那就需要root用户运行chmod 755 netlogin命令使其他用户也能运行netlogin。
    但是netlogin执行时可能需要访问一些只有root用户才有权访问的文件,那么其他用户执行netlogin时可能因为权限不够还是不能上网。
    这种情况下,就可以用 chmod 4755 netlogin 设置其他用户在执行netlogin也有root用户的权限,从而顺利上网。

防火墙相关

命令 描述
systemctl status firewalld 查看防火墙的状态
systemctl [start/stop/restart] firewalld 开启/关闭/重启
service firewalld [start/stop/restart] 开启/关闭/重启
firewall-cmd --zone=public --add-port=6379/tcp --permanent 开放指定端口,记得重启防火墙
命令含义:
–zone 作用域
–add-port=6379/tcp 添加端口,格式为:端口/通讯协议
–permanent 永久生效(没有此参数重启后失效)
netstat -ntlp 查看当前运行的所有tcp端口
netstat -ntulp |grep 6379 查看所有1935端口使用情况

文本查看与编辑

查看

命令 描述
cat <文件名> 查看全部
more <文件名> 分屏查看:h(帮助)space(下翻屏)b(上翻屏)enter(下一行)q(退出)
less <文件名> 分屏查看:e(下一行)y(上一行)f(下翻页)b(上翻页)q(退出)
head -5 查看文件前5行
tail -5 查看文件后5行
tail -f 文件 实时查看文件

vi操作

vi模式切换

graph TB Linux --"vi <文件名>【进入】"-->命令模式 命令模式 --"ZZ【退出】"--> Linux 命令模式 --"i/I【插入】<br>a/A【追加】<br>o/O【打开】<br>r/R【替换】"--> 输入模式 命令模式 --":【转义命令】"--> 末行模式 输入模式--"Esc【返回】"-->命令模式 末行模式--"Esc【返回】<br>:w【保存不退出】<br>:w <文件名>【另存为】"-->命令模式 末行模式--":wq【保存并退出】<br>:q【不保存退出,有提示】<br>:q!【不保存,强制退出】"-->Linux

基本操作

操作 描述
h ← k ↑ j ↓ l → 光标方向移动
ctrl+b 前一页 ctrl+u 前半页
ctrl+f 后一页 ctrl+d 后半页
翻页操作
^ home行首
$ end行尾
w 后一个单词首字母
b 前一个单词首字母
e 后一个单词尾字母
行内快速跳转
【末行模式】:set [nu/nonu] 显示/隐藏行号
gg首行
5gg第5行
G尾行
5G第5行
行数跳转
操作 描述
x 删除后一个字符
X 删除前一个字符
dd 删除光标所在行
3dd 3D 删除光标所在行+后2行
dw 删除光标至词首
de 删除光标至词尾
d$ 删除光标至行尾
d^ 删除光标至行首
删除操作
u 撤销操作
yy复制光标所在行
yw复制光标所在单词
y$复制光标至行尾
y^复制光标至行首
3yy复制光标所在行+后2行
[行号],[行数] yy从某行开始+后[行数-1]行
yG复制光标至文尾
y1G复制光标至文首
复制操作
p粘贴在光标所在行之后
P粘贴在光标所在行之前
3p向后粘贴3次
3P向前粘贴3次
粘贴操作

【末行模式】
查找:
由”/”或者”?”开始后跟一个word
按n键查找后一个
按N键查找前一个
替换:
set fileencoding=utf8
:m,n s/old/new/gc m,n表示从第几行到第几执行替换

操作 描述
vi 文件1 文件2 创建/打开多个文件
【末行模式】:args 查看当前文件
【末行模式】:first 第一个文件
【末行模式】:prev 上一个文件
【末行模式】:next 下一个文件
【末行模式】:last 最后一个文件