Linux
是一个开源免费的 操作系统,具有很好的稳定性、安全性,且有很强的处理高并发的能力Linux 的应用场景:
- 可以在
Linux
下开发项目,比如JavaEE
、大数据、Python
,PHP
、C / C++
等应用领域或者变成语言的项目- 个人桌面应用,例如
Ubuntu
- 服务器领域:免费、稳定、高效
- 嵌入式领域
Linux
其实是指的它的发行版,比如 Ubuntu
、RedHat
、CentOS
、Debain
、Fedoras
、SuSE
、OpenSUSE
等Linux
是一种操作系统的内核(kernel),内核是操作系统的核心,管理硬件资源、提供系统调用接口等;而在内核基础上进行构建,从而形成一套 完整的操作系统,包括系统工具、软件包管理系统、图形用户界面(GUI)等,就是所说的发行版本。Unix 的发展有如下的阶段
Linux: 是 Unix 操作系统的一种克隆,它在 Unix 的基础上进行了改进和扩展。许多 Linux 发行版(如Ubuntu、Fedora、Debian等)继承了 Unix 的设计理念,并在现代计算环境中得到广泛应用。
如果对操作系统的简史感兴趣,可以看一下 B站 up 让水烧开 的视频
操作系统究竟是怎么发展而来的,你真的了解吗?【操作系统发展史】
这部分是学习 Linux
之前必须安装的软件,包括如下
VMware
:虚拟机软件
XShell
:远程登陆Linux
XFTP
:快捷向远程Linux
传输文件
下载安装 VMWare
- 参考博主 冰糖拌麻子 安装虚拟机(VMware)保姆级教程(附安装包)
VMWare 密钥
- 参考博主 三月枫火 VMware16.1.2安装及各版本密钥
安装完成后直接打开 VMware Workstation
阿里云开源镜像站
打开后是这样的界面
DVD
代表是 完整的镜像源,包含了该系统的所有安装包,用于离线安装Minimal
的是 精简版的镜像,只包含基本的软件包,通常用于服务器环境NetInstall
的是网络安装镜像,通常用于从 网络 上安装该系统这里使用的是本地的虚拟机,所以我们选择 [CentOS-7-x86_64-DVD-2009.iso]
如果上面的安装方式很慢的话可以采用下面博主的方法
详细的安装教程
参考博主 缄默.ńī給の傷 CentOS7(Linux)详细安装教程(图文详解)
注意:在软件选择步骤的时候可以选择 GNOME 桌面
选项,会提供给一个比较友好的桌面交互。
Xshell
是一款 Windows 系统下的终端模拟器(Terminal Emulator),用于 远程登录和管理 Linux/Unix 系统、SSH(Secure Shell)协议和其他网络设备。Xshell 提供了类似于 Linux 终端的用户界面,并支持各种协议和功能,使用户能够通过命令行或图形界面与远程系统进行交互。
XFTP
是一款由 NetSarang Computer, Inc. 开发的文件传输工具,专为 Windows 操作系统设计。XFTP 主要 用于在本地计算机与远程服务器之间进行文件传输,支持多种文件传输协议,包括 FTP(File Transfer Protocol)、SFTP(Secure File Transfer Protocol)、FTP over TLS/SSL 等。
因为下面两款软件基本上是傻瓜式安装,这里不给出详细教程
Xshell_Free_For_Home_School
中文乱码解决方法:
编码选择 UTF-8
Linux 的文件系统是采用层级式的树状目录结构,最上层是根目录。
Linux 系统的特点是 一切皆文件,甚至会将所有的硬件映射成一个文件来管理
/bin(/usr/bin、/usr/local/bin)
:Binary
的缩写,存放常用指令的文件。
/sbin(/usr/sbin、/usr/local/sbin)
:s
为 Super User
,存放系统管理员使用的系统管理程序,为权限很高的指令。
/home
:存放不同用户的主目录,在 Linux
中每个用户都有自己的目录
/root
:系统管理员的用户主目录
/lib
:系统开机需要的基本动态连接共享库,类似于 DLL
文件
/etc
:所有的系统管理所需要的配置文件和子目录,比如安装一个软件,它的配置文件就放在这个目录下
/usr
:安装的应用程序一般都存放在这个目录下
/boot
:Linux 启动相关文件
/proc
:虚拟目录,为系统内存的映射,可以访问这个目录来获取系统信息
/media
:系统会自动识别一些设备,如 U 盘、光驱等等,识别后会把设备挂载到这个目录下面
/mnt
:让用户临时挂载别的文件系统,可以将外部存储挂载到该目录上,需要安装 VmTools
/opt
:给主机额外安装软件的安装包存放的目录,当然可以在别的目录下安装,但为了规范一般是在这个文件下
/var
:存放不断扩充的东西,习惯将被经常修改的目录存放在这个文件下,包括各种日志文件
Linux 会内置 vi 文本编辑器,vim 具有程序编辑的能力,可以看作是 Vi 的增强版本,有字体颜色的区分,还有代码补全,编译及错误跳转等方便变成的功能。
vim
提供了三种模式,使得其可以进行各种复杂的操作
i I o O a A r R
中的任意一个就会进入编辑模式,可以自由的插入常用快捷键及命令总结
模式 | 命令 | 作用 |
---|---|---|
一般模式 | yy [n] |
复制包含当前行的 n 行内容 |
一般模式 | p |
粘贴 |
一般模式 | G gg |
移动到文章的末行 / 首行,通过大小写切换和 shift 均可实现 |
一般模式 | u |
撤销动作 |
一般模式 | [n] shift + g |
快捷跳转到第 n 行 |
命令行模式 | / [key] |
关键字查询,输入 n 查找下一个 |
命令行模式 | set nu setnonu |
启动或者开启行号 |
编写程序 Hello.java
# 打开编辑器
vim Hello.java
# 按下 i 开启编辑模式,输入
public class Hello {
public satatic void main(String[] args) {
System.out.println("Hello Linux");
}
}
# 按下 ESC 回到一般模式,输入 : 开启命令好模式,输入 wq
:wq
# 查看当前目录
ls
wq:
write and quit
写入并退出
学习 Linux
命令之前,先要了解它的基本构成部分
比如复制文件的指令:
$ cp file.txt /path/to/destination/
ls
、cp
、mv
等都是Linux中的命令。命令告诉系统执行特定的任务。-l
和--recursive
就是选项。有些选项是必须的,而有些是可选的。cp
命令通常需要指定源文件和目标目录作为参数。shutdown
指令:
shut down -h now
立即执行关机操作shut down -h [n]
在 n
分钟后执行关机操作,不写的话默认为一分钟后关机shut down -r now
立即重启计算机命令 | 作用 |
---|---|
shutdown -h now |
立即进行关机 |
shutdown -h [n] |
n 分钟后关机,不写默认为 1 |
shutdown -r now |
立即重启计算机 |
halt |
关机,和上面作用相同 |
reboot |
立即重启计算机 |
sync |
把内存的数据同步到磁盘 |
sync
防止内容丢失的情况命令 | 作用 |
---|---|
su -[m] |
切换到用户名为 m 的用户,一般是普通用户切换为 root |
logout |
用户注销 |
在 XShell
执行
# 假设使用普通用户 jack 登录,切换到 root
su -root
# 退回到 jack
logout
需要 root
权限
命令 | 作用 |
---|---|
useradd [m] |
创建用户名为 m 的用户,会在 /home 下创建同名文件夹(家目录) |
password [m] [n] |
给用户名为 m 的用户设置密码 m |
userdel [m] |
删除用户名为 m 的用户,但是保留家目录 |
userdel -r [m] |
删除用户名为 m 的用户,同时删除家目录(慎重使用) |
显示用户信息
$ id [m] # 查找用户名为 [m] 的用户信息
显示当前登录用户的信息,即使通过 su
切换也还是会显示一开始登录的用户
$ who am i
注意:从权限高的用户切换到权限低的用户不需要输入密码
$ su [m] # 切换用户
可以对有统一共性(权限)的用户进行统一的管理,通过为每个组赋予权限后将用户添加到组内的方式,实现统一的权限管理。
命令 | 作用 |
---|---|
groupadd [m] |
创建名为 m 的组 |
groupdel [m] |
删除名为 m 的组,需要组内无用户 |
useradd -g [m] [n] |
创建用户 n 并且将其添加到 m 组内 |
usermod -g [m] [n] |
将用户 n 切换组为 m |
案例演示
$ groupadd wudang
$ useradd -g wudang zwj
$ id zwj
/etc/passwd
:用户的配置文件,记录用户的各种信息
$ vim /etc/passwd
含义
zwj:x:1001:1001::/home/zwj:/bin/bash
用户名:口令:用户标识号:组标识号::主目录:登录使用的 shell
运行级别(runlevel)是系统的操作模式,它决定了哪些系统服务会在启动时自动运行。运行级别是一种系统初始化的配置,它定义了系统启动过程中执行哪些任务和服务。
常用的是运行级别是 3
和 5
常用指令:
切换运行级别为 n
$ init [n]
查看当前默认运行级别
$ systemctl get-deaflut
设置默认运行级别
$ systemctl set-default [target]
设置运行级别为 target
以下是可写的内容
graphical.target
:图形用户界面模式,适用于桌面系统。
multi-user.target
:多用户文本界面模式,适用于服务器等无需图形界面的系统。
rescue.target
:救援目标,用于修复系统问题的单用户文本模式。
emergency.target
:紧急目标,进入最小化的单用户模式,用于系统紧急修复。
man
指令
man
是"manual"(手册)的缩写,用于查看系统上的命令和程序的手册页面。通过man
命令,你可以获取有关命令的详细信息,包括用法、选项、参数以及一般性的命令说明。
获取帮助指令
$ man [命令]
比如
$ man ls
因为 man
是一个手册 页面,就导致其有类似 vim
的操作指令
b
键:按b
键可以向后翻页。q
键:按q
键退出手册页。help
指令
help
主要用于获取 shell 内建命令的 简要帮助,而man
用于查看外部命令、工具或系统调用的详细手册。
$ help [命令]
比如
$ help cd
提供的操作文件与目录的指令,是指令中非常重要的部分。
指令 | 作用 |
---|---|
pwd |
显示当前工作目录的 绝对路径 |
ls [OPTIONS] [FILE] |
显示目录下的文件,选项 -a 显示全部(包含隐藏的文件) -l 以列表的形式显示文件 |
cd [PARAM] |
切换到指定的目录,有两个特殊的参数 cd ~ 回到家目录cd ../ 回到上一级目录 |
mkdir [OPTION] [PATH] |
创建目录,-p 选项可创建多级目录,不输入的话会直接报错 |
rmdir [OPTION] [PATH] |
删除 空目录,如果要删除非空 rm -rf [PATH] |
touch [NAME] |
创建空文件,touch hello.txt |
cp [OPTION] [SOURCE] [DEST] |
拷贝文件到指定目录,选项 -r 拷贝整个目录 |
rm [选项] [要删除的文件或目录] |
删除文件或目录,选项-r 删除整个文件夹-f 强制删除不提醒 |
mv [OLD NAME FILE] [NEW NAME FILE] |
重命名文件 |
mv [FILE] [NEW PATH] |
移动文件 |
mv [FILE] [NEW PATH] [NEW FILE NAME] |
移动文件并且重命名 |
cat [OPEION] [FILENAME] |
查看文件(无法修改),选项 -n 显示行号 |
more [FILENAME] |
查看文件 |
less [FILENAME] |
查看文件 |
echo [CONTENT] |
输出内容到控制台 |
head -n [行数] [文件名] |
预览文件的头几行内容 |
tail -n [行数] [文件名] |
预览文件的尾部几行内容 |
> 与 >> |
输出重定向 |
mv
指令:移动文件或者重命名,如果文件是在同一级目录下就是重命名
mv [OLD NAME FILE] [NEW NAME FILE]
重命名文件mv [FILE] [NEW PATH]
移动文件cat
指令:查看文件,相比于 vim
更加安全,只能查看不能修改
more
指令:基于 VI
编辑器的文本过滤器,以全屏幕的方式按页显示文本文件的内容,more
指令内部内置了若干快捷键
快捷键 | 功能 |
---|---|
空格 |
向下翻一页 |
Enter |
向下翻一行 |
q |
立即离开页面 |
Ctrl + F |
向下滚动一屏 |
Ctrl + B |
返回上一屏 |
= |
输出当前的行号 |
:f |
输出文件名和当前行号 |
使用 more
查看 /etc/profile
less
指令:分屏查看文件内容,指令和 more
类似但是比它更强大,支持各种显示终端,再查看的时候会按需加载,对查看大文件有很高的效率
快捷键 | 功能 |
---|---|
空格 |
向下翻一页 |
pagedown |
向下翻一页 |
pageup |
向上翻一页 |
/ [字符串] |
向下搜索关键字,通过 n 向下查找,输入 N 向上查找 |
? [字符串] |
向上搜索关键字,通过 n 向上查找,输入 N 向下查找 |
q |
离开页面 |
echo
指令:输出内容到控制台eche [OPTION] [输出内容]
用 echo
指令输出环境变量: $PATH
使用 echo
输出 hello world
$ echo "hello world"
head
指令:查看文件的前 n 行内容
head -n [行数] [文件名]
查看 etc/profile
的前五行代码
tail
指令:查看文章的后几行内容,默认显示后十行
tail -n [行数] [文件名]
tail -f [文件]
可以实时监测文章内容
查看 etc/profile
的后五行代码
创建一个文本,实时监测其效果,看能否看到
两个终端
>
指令和 >>
指令
>
输出重定向,覆盖写
echo "hello world" > 文件名
>>
不覆盖,追加
将 home
下的目录写到 /home/info.txt
中
将日历信息追加到 /home/mycal
文件中
查看日历的指令 cal
ln
指令:创建软连接,使两个目录产生链接
ln [指向的目录] [连接到的新建目录]
创建软连接并且删除
history
指令:查看所有的历史命令
history 10
查看最近用过的 10 个指令
! [编号]
快捷执行该编号的指令
指令 | 作用 |
---|---|
data [参数] |
显示当前的时间信息 |
cal [年份] |
显示日历信息,不指定年份默认本月 |
data
指令:
data
显示当前时间data +%Y
显示当前年份data +%m
显示当前月份data +%d
显示当前是第几号cal
指令:
cal
查看本月的日历cal [2020]
显示整年的日历find
指令:从指定的目录向下递归遍历各个子目录,将满足条件的文件或者目录显示在终端
find [搜索范围] [选项]
基本语法:
find /path/to/search -options criteria
/path/to/search
:指定要搜索的目录路径。-options
:可以包括一系列的选项,用于指定搜索条件。criteria
:定义搜索的具体条件。按文件名搜索:
find /path/to/search -name "filename"
例如,要在 /home/user
目录下按照文件名查找所有以 “.txt” 结尾的文件:
find /home/user -name "*.txt"
按文件类型搜索:
find /path/to/search -type f
这将查找所有普通文件。可以使用 -type d
查找目录。
按文件大小搜索:
find /path/to/search -size +10M
该命令将查找大于 10MB 的文件。可以使用 -size -10M
查找小于 10MB 的文件。
按修改时间搜索:
find /path/to/search -mtime -7
该命令将查找在过去 7 天内被修改过的文件。可以使用 -mtime +7
查找过去 7 天之前被修改的文件。
执行操作:
find /path/to/search -name "*.log" -exec rm {} \;
该命令将查找所有以 “.log” 结尾的文件,并使用 -exec
执行删除操作。
组合条件:
find /path/to/search -type f -name "*.txt" -size +1M
该命令将查找 /path/to/search
目录下大于 1MB 的所有以 “.txt” 结尾的文件。
逻辑操作符:
find /path/to/search \( -name "*.txt" -o -name "*.log" \)
该命令将查找所有以 “.txt” 或 “.log” 结尾的文件。
ls -lh
可以以 M 显示文件
locate
指令:快速定位文件路径,是基于数据库实现的,查询指令很快
使用之前必须使用 updatedb
,优化查询方式
管理员需要定期更新数据库
使用 locate
指令快速查找文件 .txt
grep
指令 和 管道符号:过滤查找,管道符 |
将前一个命令的结果交给后一个命令去处理,类似于数据库连表查询
新建文件,查询里面的关键字,并且显示行号
cat -n hello.txt | grep "yes"
cat -n hello.txt | grep -n "yes"
grep -n "yes" /hello.txt
使用 tar
进行压缩和解压
压缩文件(tar + gzip):
tar -czvf archive.tar.gz file1 file2 directory
-c
: 创建新的归档文件。-z
: 使用 gzip 进行压缩。-v
: 显示详细信息。-f
: 指定归档文件名。解压文件(tar + gzip):
tar -xzvf archive.tar.gz
-x
: 提取文件。-z
: 使用 gzip 进行解压。-v
: 显示详细信息。-f
: 指定归档文件名。使用 tar 进行压缩和解压(bzip2)
压缩文件(tar + bzip2):
tar -cjvf archive.tar.bz2 file1 file2 directory
-c
: 创建新的归档文件。-j
: 使用 bzip2 进行压缩。-v
: 显示详细信息。-f
: 指定归档文件名。解压文件(tar + bzip2):
tar -xjvf archive.tar.bz2
-x
: 提取文件。-j
: 使用 bzip2 进行解压。-v
: 显示详细信息。-f
: 指定归档文件名。使用 gzip
进行压缩和解压
压缩文件(gzip):
gzip file
这将生成 file.gz
文件,原始文件将被替换。
解压文件(gzip):
gzip -d file.gz