Linux是一种开源的类Unix操作系统,最初由芬兰计算机科学家Linus Torvalds在1991年创建。Linux系统的核心是Linux内核,它是操作系统的核心组件,负责管理系统的资源和提供基本的功能。
Linux系统具有以下特点:
开源:Linux系统是开源的,用户可以自由地查看、修改和分发系统的源代码。
多用户、多任务:Linux系统支持多用户同时登录,并且可以同时运行多个程序。
稳定性和安全性:Linux系统通常被认为比其他操作系统更稳定和安全,因为它有一个强大的权限管理系统和稳定的内核。
可定制性:Linux系统可以根据用户的需求进行定制,用户可以选择安装需要的软件包和定制系统的外观和功能。
兼容性:Linux系统可以在各种不同的硬件平台上运行,包括个人电脑、服务器、嵌入式设备等。
Linux系统通常由Linux内核和GNU工具集合组成,用户可以选择不同的发行版来安装和使用Linux系统,如Ubuntu、Debian、Red Hat、CentOS等。每个发行版都有自己的软件包管理系统和特定的配置工具,以满足不同用户的需求。
总的来说,Linux系统是一个强大、灵活、稳定和安全的操作系统,适用于各种不同的应用场景,从个人电脑到企业服务器。由于其开源的特性和丰富的软件生态系统,Linux系统在全球范围内得到了广泛的应用和支持。
Linux有许多主流的发行版,每个发行版都有自己的特点和适用场景。以下是一些主流的Linux发行版及其简要介绍:
Ubuntu:Ubuntu是最受欢迎的Linux发行版之一,它以易用性和良好的用户体验而闻名。它有一个庞大的软件仓库,适合桌面用户和服务器用户。
Debian:Debian是一个稳定、可靠的Linux发行版,以其严格的自由软件政策和强大的软件包管理而著称。它通常被用于服务器和嵌入式系统。
Red Hat Enterprise Linux (RHEL) / CentOS:Red Hat Enterprise Linux是一款商业级的Linux发行版,而CentOS则是其免费的社区版本。它们都以稳定性和安全性而闻名,广泛用于企业服务器环境。
Fedora:Fedora是由Red Hat支持的社区驱动的Linux发行版,它以最新的软件和技术为特点,适合技术爱好者和开发人员。
openSUSE:openSUSE是一个用户友好的Linux发行版,具有强大的系统配置工具和良好的图形界面,适合桌面和服务器用户。
Arch Linux:Arch Linux是一个面向技术爱好者的发行版,以其简洁、灵活和滚动更新的特性而著称。
Linux Mint:Linux Mint是基于Ubuntu的发行版,专注于提供易用的桌面环境和多媒体支持。
以上是一些主流的Linux发行版,每个发行版都有自己的优势和适用场景,用户可以根据自己的需求选择合适的发行版。
下载好安装包,一路下一步即可。
Ubuntu是一款流行的开源操作系统,它基于Debian Linux发行版,由Canonical Ltd. 公司开发和维护。Ubuntu的目标是为用户提供一个易于使用、免费、多功能的操作系统,适用于个人用户、企业和开发人员。
以下是Ubuntu的一些主要特点和功能:
免费和开源:Ubuntu是免费且开源的操作系统,用户可以自由地使用、修改和分发它。
用户友好:Ubuntu注重用户体验,提供了直观的用户界面和易于使用的应用程序,使其适合于普通用户和初学者。
多功能性:Ubuntu支持多种应用程序和工具,包括办公套件、媒体播放器、图形设计工具、开发工具等,满足用户的各种需求。
安全性:Ubuntu注重安全性,提供了更新管理、防病毒和防火墙等功能,保护用户的系统和数据安全。
社区支持:Ubuntu拥有庞大的社区,用户可以在社区论坛和文档中找到丰富的技术支持和帮助。
版本多样性:Ubuntu有多个版本,包括桌面版、服务器版、云计算版等,满足不同用户和场景的需求。
总的来说,Ubuntu是一款功能丰富、易于使用、安全可靠的操作系统,适用于个人用户、企业和开发人员,是一个受欢迎的选择。
下载页面:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04.3/
下载地址:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04.3/ubuntu-22.04.3-desktop-amd64.iso
下载页面:https://mirrors.huaweicloud.com/repository/ubuntu-releases/22.04.3/
下载地址:https://mirrors.huaweicloud.com/repository/ubuntu-releases/22.04.3/ubuntu-22.04.3-desktop-amd64.iso
我这里去勾选了下载更新,安装完成以后自己更新,可以提高安装速度。
填写好用户信息后,选择Continue就开始安装,稍等即可。
apt (Advanced package tool) 是一个命令行包管理工具,适用于 Ubuntu / Debian Linux。apt 用于在 Ubuntu / Debian 系统中从命令行安装、删除、更新和升级 Debian 包。Apt 克服了在 apt-get 命令中注意到的问题和错误。使用 apt 命令时,用户必须具有 sudo 权限。
可以在桌面上鼠标右键菜单选择“Open in Terminal”来打开快速打开终端。
sudo apt install 软件1 软件2 软件3 …
-y 直接安装,不用再提示确认
比如要安装vim,安装前要输入密码来确认身份,注意输入正确的密码。
sudo apt install -y vim
为了提高下载速度,可以将默认的源更改为国内源。可以选择的国内源有很多,下面以清华源为例,来进行操作,如下:
官方文档:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
备份文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
操作以前先备份一下,以免文件操作错误无法恢复,那就比较浪费时间了。
编辑配置文件
sudo vim /etc/apt/sources.list
进入vim命令以后,将原内容清空,直接复制下面的内容,粘贴即可。
vim 命令基本操作:
i 进入编辑模式,编辑内容
esc 进入命令模式->shift+:->wq 保存退出
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
这个命令执行一下,验证源是否配置成功。
sudo apt update
sudo apt list
注意:这个命令只是说明,不要执行,不然会把vim删除掉的。
sudo apt remove vim
sudo apt upgrade
SSH工具是指用于实现SSH协议功能的软件或工具。这些工具可以用于在远程计算机上执行命令、传输文件、管理远程系统等操作,同时确保数据传输的安全性。
一些常见的SSH工具包括:
OpenSSH:OpenSSH是一个开源的SSH实现,包括了用于远程登录和文件传输的客户端工具(如ssh、scp)以及用于远程服务的服务器端工具(如sshd)。OpenSSH是Linux和许多其他Unix系统上默认的SSH实现。
OpenSSH下载
PuTTY:PuTTY是一个流行的SSH和Telnet客户端,可在Windows平台上使用。它提供了一个简单的图形界面,用于连接到远程系统并执行命令。
PuTTY下载
SecureCRT:SecureCRT是一款商业SSH客户端,提供了强大的功能,包括多个会话管理、文件传输、安全的远程访问等。
SecureCRT下载
WinSCP:WinSCP是一个用于Windows的免费开源SFTP、SCP和FTP客户端,可以安全地传输文件到远程计算机。
WinSCP下载
MobaXterm:是一款功能强大的跨平台远程计算工具,它集成了许多常用的远程网络工具,包括SSH客户端、X11服务器、RDP客户端、VNC客户端、SFTP客户端等,以及许多常用的Linux命令和工具。
MobaXTerm下载
这些工具可以帮助用户在网络上安全地管理远程系统,执行远程命令,传输文件等操作。通过使用这些工具,用户可以方便地与远程计算机进行交互,而无需担心数据的安全性问题。
sudo apt install -y openssh-server
ip addr
每个人的ip地址都不一样,注意查看自己的。
打开cmd,进行验证,也可以使用其他ssh终端工具。
# 命令格式 ssh 用户名@ip地址
ssh ubuntu@192.168.37.134
第1次连接需要输入yes确认一下:
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
如果出现下图,说明服务配置成功了。
??文件系统是计算机操作系统中用来管理文件存储和读取的一种机制。它定义了文件的组织方式、存储方式和访问方式,使得用户可以方便地存储、查找和操作文件。文件系统通常由文件、目录和文件属性组成。文件是存储数据的基本单位,目录用来组织文件,文件属性包括文件的大小、创建时间、修改时间等信息。此外,它还定义了文件的存储方式,包括文件的存储位置和存储格式,不同的文件系统有不同的存储方式,例如FAT、NTFS、ext4等。文件系统还提供了文件的访问方式,包括读取、写入、删除等操作,并可以定义文件的权限,控制用户对文件的访问权限。总之,文件系统为用户提供了方便的文件管理和操作功能,是计算机操作系统中不可或缺的一部分。
ext2:Extended file system 适用于那些分区容量不是太大,更新也不频繁的情况,例如 /boot 分 区
ext3:是 ext2 的改进版本,其支持日志功能,能够帮助系统从非正常关机导致的异常中恢复
ext4:是 ext 文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和使用巨型文件 (16TB)、最大1EB的文件系统,以及速度的提升
XFS:适用于大型文件系统和高性能存储,支持大容量的文件和高并发访问。
Btrfs:具有快照、数据压缩和文件系统校验等先进功能的文件系统。
切换当前目录
cd [目录名]
示例:
cd /etc #切换到/etc目录
cd ~ #切换到用户目录
cd #切换到用户目录
作用:列出指定目录下的内容
语法:ls [OPTION]… [FILE]…
常用的选项参数:
示例:
ls #查看当前目录
ls -a #当前目录下的所有文件
ls -l #显示当前目录下文件的详细信息
ls /etc #查看/etc目录下的文件
作用:用于修改文件或目录的时间属性,如果文件不存在,touch命令会默认创建一个新的空文件。
语法:touch [OPTION]… [FILE]…
常用的选项参数:
示例:
touch 1.txt #新建1.txt文件
touch -m 1.txt #更新修改时间
作用:复制文件和目录
语法:cp [选项] 源文件 目标文件
常用的选项参数:
示例:
cp 1.txt 2.txt #复制产生2.txt
cp 1.txt 2.txt temp/ #将1.txd、2.txt复制到temp目录下
cp -r dir1/ dir2/ #复制目录
作用:移动文件或目录,或者重命名文件或目录
语法:mv [选项] 源 目标
常用的选项参数:
示例:
mv 1.txt 2.txt #将1.txt修改为2.txt
mv 1.txt temp/ #将1.txt移动到temp/目录下
作用:创建目录
语法:mkdir [选项] 目录…
常用的选项参数:
示例:
mkdir temp #创建单个目录
mkdir -p temp/a/b/c #递归创建多级目录
mkdir -m 755 temp1 #创建目录并设置权限
作用:删除文件或目录
语法:rm [选项] 文件…
常用的选项参数:
示例:
rm file.txt #删除单个文件
rm file1.txt file2.txt #删除多个文件
rm -r dir/ #删除目录及其内容
rm -f file.txt #强制删除文件
作用:显示当前工作目录的绝对路径
语法:pwd [选项]
常用的选项参数:
示例:
pwd #显示当前工作目录的绝对路径
作用:显示文本文件
语法:cat filename
常用的选项参数:
示例:
cat 1.txt #查看1.txt
cat -n 1.txt #查看1.txt,带行号
作用:显示文件的开头部分内容
语法:head [选项] [文件]
常用的选项参数:
示例:
head 1.txt #显示文件的前10行
head -n 5 1.txt #显示文件的前5行
head -c 20 1.txt #显示文件的前20字节
head -30 1.txt #显示文件的前30行(等同于-n 30)
作用:显示文件的末尾部分内容
语法:tail [选项] [文件]
常用的选项参数:
示例:
tail 1.txt #显示文件的后10行
tail -n 5 1.txt #显示文件的后5行
tail -f app.log #监视文件变化,持续刷新并显示新增内容,通常用来查看运行服务的日志
作用:分页显示文本文件的内容
语法:more [选项] 文件
常用的选项参数:
示例:
more 1.txt #显示文件的内容,按空格键向下翻页,按 b 键返回上一页
作用:强大的文本查看器,它可以用于查看大文件,比cat命令更加高效。less命令支持搜索、滚动、翻页等操作,可以方便地查找和浏览文件内容。
语法:more [选项] 文件
常用的选项参数:
示例:
less -N 1.txt #显示文件内容并显示行号
less 1.txt /string #搜索指定字符串
Linux系统权限管理是指对Linux系统中的用户和组进行权限控制,以保护系统的安全和数据的完整性。Linux系统中的每个文件和目录都有相应的权限属性,这些属性决定了哪些用户可以对文件或目录进行读、写和执行等操作。
作用:改变文件或目录的访问权限。
语法:chmod [选项] 模式 文件名
常用的选项参数:
参数:
在权限的表示中,r代表可读(read)、w代表可写(write)、x代表可执行(execute)。另外,数字设定法则更为简单。在这种方法中,用数字来表示各个权限,其中4代表可读,2代表可写,1代表可执行,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
示例:
#文件所有者的权限为可读、可写、可执行
#同组用户的权限为可读、可执行
#其他用户的权限为可读、可执行
chmod 755 文件名
chmod u+x 文件名 #文件所有者增加对文件的可执行权限
chmod -R 777 temp #temp目录下的所有文件具有所有权限
作用:改变文件或目录所属的用户组的。
语法:chgrp [选项] 组 文件…
常用的选项参数:
示例:
#递归地将目录 temp 及其所有子文件和子目录的所属组更改为 groupname
chgrp -R groupname temp
作用:设置文件所有者和文件关联组。
语法:chown [选项] [所有者][:[组]] 文件…
所有者:表示要将文件或目录的所有者更改为的用户,可以是用户名或用户ID。
组:表示要将文件或目录的所属组更改为的组,可以是组名或者组ID。
文件:是以空格分开的要改变权限的文件列表,支持通配符。
常用的选项参数:
示例:
chown test 1.txt #将文件的所有者更改为test
作用:sudo命令是一个常用的工具,允许已验证的用户以其他用户的身份来执行命令,通常是超级用户(root)的身份。通过使用sudo,系统管理员可以赋予普通用户执行一些或全部的root命令的权限,这样不仅减少了root用户的登录和管理时间,也提高了系统的安全性。
使用sudo时,用户必须输入自己的密码,并且有5分钟的有效期限。超过期限后,必须重新输入密码。
语法:sudo [选项] 命令
常用的选项参数:
示例:
sudo apt update #更新包索引
作用:用于切换用户身份,如果不指定用户名,则默认切换到超级用户(root)账户。
语法:su [选项] [用户名]
常用的选项参数:
示例:
su test1 #切换到test1用户
在使用su命令切换用户身份时,需要输入目标用户的密码,只有拥有目标用户密码的用户才能切换到该用户账户。同时,su命令也有一些安全风险,因此在使用时需要谨慎操作。
作用:ip 命令在 Linux 中是一个强大的工具,用于显示和操作路由、设备、策略路由和隧道的 IPv4 和 IPv6 地址。
用法很多,在需要的时候再进行查询。
ip addr
ip route show
ip link set <interface> up/down
ip -s link show
作用:netstat是一个在Linux中常用的命令,用于显示网络连接、路由表、接口统计等网络相关信息。
常用的选项参数:
作用:ping命令是一个常用的网络诊断工具,用于测试网络连接的质量和检查目标主机是否在线。
常用的选项参数:
示例:
ping www.xxx.com
ping -c 4 www.xxx.com
Shell 编程指的是使用 shell 脚本来控制 shell 的行为。shell 是 Unix/Linux 系统中的一个命令行解释器,用户可以在 shell 中输入命令来执行各种操作。而 shell 脚本则是将一系列的 shell 命令组合在一起,形成一个可执行的脚本文件,通过运行这个脚本文件可以自动执行一系列的操作。
Shell 编程的基本语法包括:
注释:使用 # 符号表示注释,注释内容不会被执行。
变量:使用 $variable 的形式表示变量,变量名可以包含字母、数字和下划线,但不能以数字开头。
命令:使用 shell 命令来执行各种操作。
条件判断:使用 if-then-else 或 case 语句来进行条件判断。
循环控制:使用 for、while 等循环控制语句来重复执行一系列操作。
函数:使用 function 关键字定义函数,并在脚本中调用函数。
Shell 有很多种,只要能给用户提供命令行环境的程序,都可以看作是 Shell 。
创建一个脚本文件1.sh,内容如下:
#!/bin/bash
echo "Hello, World!"
执行以下命令
chmod +x 1.sh #添加执行权限
./1.sh #执行脚本
执行结果
这个脚本使用 #!/bin/bash 表示使用 bash shell 来执行脚本,然后使用 echo 命令打印出 “Hello, World!”。
echo
echo是一个常用的命令,用于在终端上显示文本或变量的值。echo命令可以用于输出简单的文本字符串或变量的内容。
echo "Hello, World!"
name="ABC"
echo "My name is $name" #输出变量
echo -n "等待中..." #-n 不换行
echo -e "abc\t12" #-e 转义转义字符
read
read 命令在 shell 脚本中用于从标准输入(例如键盘)读取一行数据。这可以用于读取用户输入,或者从文件或管道中读取数据。
echo "请输入您的名字: "
read name
echo "您好, $name!"
在Shell脚本中,变量声明是用来创建变量并为其分配值的操作。变量名可以由字母、数字和下划线组成,但不能以数字开头。变量名是大小写敏感的,因此var1和VAR1是两个不同的变量。
基本语法
name=value
其中,name 是你要声明的变量名,value 是你要分配给变量的值。你可以根据需要为变量分配不同的值。注意,在等号两边不能有空格,变量名称的定义不要和环境变量、其他命令冲突。
变量的使用
A1=123
A2="Hello world!" #值中有空格时,要用单引号或双引号引起来
A3='Hello world!' #和A2的定义是一样的
A4="Hello $A3" #会解析变量A3
A5='Hello $A3' #不会解析变量A3
echo $A1
echo $A2
echo $A3
echo $A4
echo $A5
echo "${A3}A" #如果变量和字符串之间没有分隔符,可以使用大括号
注意观察单引号和又引号的区别
在Shell脚本中,条件判断用于根据特定条件执行不同的操作。
语法
if [ 条件 ]; then
# 执行语句
elif [ 条件 ]; then
# 执行语句
else
# 执行语句
fi
常见条件包括字符串比较(-eq、-ne、-lt、-gt、-le、-ge)、文件比较(-e、-d、-f、-s、-L、-S)和逻辑操作(-a、-o)
常见的条件比较:
常见的条件比较:
逻辑操作:
test命令
if test condition; then
# 执行语句
fi
在Shell脚本中,循环控制是一种允许代码重复执行特定操作的机制。
for循环
for i in 1 2 3 4 5
do
echo $i
done
for i in value1 value2 ... valuen
do
echo $i
done
while循环
i=1
while [ $i -le 5 ]
do
echo $i
i=$((i+1))
done
until循环
i=1
until [ $i -gt 5 ]
do
echo $i
i=$((i+1))
done
在Shell脚本中,函数是一段可重复使用的代码块,可以在脚本中被调用执行。Shell函数可以提高代码的可重用性和可维护性,并且可以用于封装复杂的逻辑和操作。
语法
function 函数名称() {
# 函数体
# 执行语句
}
示例
function add() {
n1=$1 #参数1
n2=$2 #参数2
echo $((n1 + n2))
}
add 4 5 #调用函数,不用带小括号
直接执行
直接在脚本中使用命令,就像在命令行中一样,例如:
echo "Hello world!"
ls
ping -c 4 www.xxxx.com
使用$()
获取命令的执行结果,例如:
A1=$(echo "Hello, World!")
echo $A1
A2=$(expr 1 + 3)
echo $A2
使用反引号(``)
这种方法与$()相似,都可以获取到命令的执行结果,例如:
A1=`echo "Hello, World!"`
echo $A1
A2=`expr 1 + 3`
echo $A2
使用exec
exec命令可以用来执行另一个命令,替换当前进程,例如:
exec ls -l
使用source
命令用于在当前Shell环境中执行脚本文件,不会创建新的进程,例如:
source ./other.sh