技术积累Linux中的基础知识
Posted TianYou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术积累Linux中的基础知识相关的知识,希望对你有一定的参考价值。
Linux的发行版本
Linux是一个开源操作系统,有许多发行版,每个发行版都有自己的特点和优势。以下是一些常见的Linux发行版:
-
Ubuntu:Ubuntu是最受欢迎的Linux发行版之一,它拥有一个庞大的社区,提供了易于使用的界面和大量的软件。
-
Debian:Debian是最古老的Linux发行版之一,也是一个非常稳定和可靠的发行版,其软件库非常丰富。
-
Red Hat Enterprise Linux(RHEL):RHEL是一个商业级Linux发行版,由Red Hat公司开发和支持。
-
CentOS:CentOS是RHEL的社区版,在企业和开发者之间非常流行。
-
Fedora:Fedora是由Red Hat公司支持的社区发行版,具有最新的特性和技术支持。
-
Arch Linux:Arch Linux是一个非常领先的发行版,它强调自定义和精简。它适合高级用户和开发者的需求。
-
Gentoo:Gentoo是一个源代码驱动的发行版,用户必须从源代码编译安装软件包。它适合有编程经验的用户。
-
Mint:Mint是一个基于Ubuntu的发行版,提供了易于使用的界面和各种桌面环境。
这些都是Linux发行版本中比较受欢迎的一些,当然还有其他各种不同的版本,用户可以根据自己的需求进行选择。
Linux的应用领域
Linux应用广泛,从服务器到移动设备、桌面和嵌入式系统都有广泛的应用。以下是Linux的主要应用领域:
- 服务器:Linux在服务器领域应用非常广泛,包括Web服务器、邮件服务器、文件服务器、数据库服务器、DNS服务器等等。许多大型互联网公司使用 Linux 作为其主要服务器操作系统,例如谷歌、Facebook、Twitter等等。
- 桌面:虽然Linux的市场份额相对较低,但是在开源社区中,Linux桌面应用程序的生态系统正在快速成长。常见的Linux桌面环境有 GNOME、KDE、Xfce等等。
- 移动设备:Android 操作系统由Linux内核构建,被广泛应用于智能手机、平板电脑等移动设备上。 Android 在智能手机市场占有相当大的份额。
- 嵌入式系统:Linux在嵌入式系统中也被广泛应用,例如网络路由器、智能电视、数字录音机、工业控制设备等等。
- 云计算:Linux是云计算时代的主导操作系统,许多公共云如Amazon Web Services、Microsoft Azure等均基于Linux操作系统。
总之,由于其开源、免费、灵活、安全等优点,Linux在许多领域都有着广泛的应用。
忘记Windows的思维方式
学习Linux需要忘记Windows的思维方式,因为两种操作系统在很多方面存在差异,包括文件系统,命令行和软件安装等。
- 首先,Linux的文件系统与Windows有所不同。Linux采用一种层次化的根目录结构,每个文件和目录都有一个绝对路径,而Windows采用了驱动器字母的方式来表示不同的逻辑分区。在Linux中,文件和目录都被视为文件,无论是硬件或者软件都被视为文件对象,这很不同于Windows。
- 其次,Linux的命令行与Windows有所不同。Linux的命令行被认为是更加高效和强大的,因为在Linux中可以通过组合多个命令来完成更加复杂的任务。而且在Linux中,命令行工具是更加广泛使用的,而Windows则更加依靠GUI。
- 最后,软件安装也是Linux和Windows区别之一。在Windows中,软件通常需要安装程序进行安装,而在Linux中则可以通过软件包管理器进行安装和卸载软件。这些软件包是为特定的Linux发行版打包的,因此需要选择适合自己Linux发行版的软件包。
- 因此,学习Linux需要忘记Windows的思维方式,从Linux的角度去理解和学习这个操作系统。这需要重新设定思考方式,主要是从命令行操作和系统管理的角度进行学习和思考。
Linux大小写问题
在Linux操作系统中,文件和文件夹名称是区分大小写的。这意味着,如果你有两个文件或文件夹的名称仅在大小写上不同,那么Linux将认为它们是两个不同的实体。例如,"file.txt"和"File.txt"在Linux中被视为两个不同的文件。
这种区分大小写的功能对于操作系统的文件系统非常重要,因为它可以帮助保持文件和目录结构的完整性和正确性。而如果没有这种区分大小写的功能,文件和文件夹的名称就会混淆,导致数据混乱,文件找不到,程序无法正常运行等问题。
此外,还有一些编程语言是区分大小写的,例如C语言。在C语言中,例如"Hello"和"hello"是不同的变量名称。因此,在编写Linux下的C语言程序时,需要注意大小写的区别。
Linux扩展名问题
Linux不依赖扩展名
Linux是一种基于Unix的操作系统,与Windows不同的是,它不是通过文件扩展名来判断文件类型的,而是通过文件的属性和内容来进行判断。这种方法有以下好处:
1. 减少误判:由于文件扩展名可以随时更改,而且可能被恶意程序修改,所以文件的扩展名并不是可靠的标识符。相反,Linux利用文件类型\'类型标识符\'(type identifier)来确定文件类型。在文件系统中,每个文件都有一个文件类型标识符,这个标识符是由文件属性中的信息生成的。
2. 容易扩展:在Linux中新增一个文件类型只需要在文件系统中增加一个对应符号的解析器程序即可。而在Windows中,新增一个文件类型则需要添加一个映射表,再修改几个注册表信息。
举个例子:在Linux系统中,如果文件没加扩展名,可以通过“file <文件名>”命令来查看文件类型。如下所示:
$ file myfile
myfile: ASCII text
上面的命令会告诉我们myfile文件是ASCII文本。
另一个例子是,Linux中的可执行文件可以没有扩展名,但是必须具有可执行权限和正确的格式,例如:
$ ./myprogram
这里的myprogram文件没有扩展名,但是它是一个可执行文件,操作系统可以正确地运行该程序。
扩展名仍然有实用性
虽然Linux不像Windows那样依赖于扩展名来确定文件类型,但是仍然可以在Linux文件名中包含扩展名。这是因为扩展名在一些情况下仍然具有一定的实用性,例如:
-
文件名的可读性:人们对于文件名的理解和记忆往往是与文件的扩展名相关的。即便文件系统中并不依据扩展名来识别文件类型,给文件名附加一个合适的扩展名仍然能够方便人们对其进行理解和识别。
-
兼容性:与某些软件和操作系统的兼容性有关。有一些软件在处理文件时依赖于扩展名或者文件名的规范性,因此为了方便与这些软件进行交互,文件名必须包含扩展名,以满足软件和操作系统的要求。例如有些应用程序或者运行环境(如Java虚拟机)可能会需要文件扩展名来正确地执行或识别文件。这就是为什么在Linux系统上,有些文件可能会仍然具有扩展名的原因。
-
方便性:在Linux中,扩展名并不影响文件的实际内容和处理方式,但是添加文件扩展名可以使文件在命令行工具和文件管理器中更易于识别和访问。例如,在命令行中输入“ls”命令时,文件扩展名可以快速地显示文件类型,这可以帮助用户更轻松地识别文件。
-
提供默认应用程序:在Linux中,文件扩展名可以用于确定默认应用程序。例如,将.txt文件扩展名添加到文件名后,可以使Linux系统默认使用文本编辑器打开该文件,而不是其他类型的应用程序。
-
避免文件冲突:在Linux中,不同类型的文件可能具有相同的名称,添加扩展名可以帮助避免文件名冲突和混淆。例如,在Linux中,可以同时存在名为“file”的文本文件和名为“file”的二进制文件,但是添加相应的扩展名可以使它们更易于区分。
总的来说,Linux的文件系统不需要依赖于扩展名来确定文件类型,但是扩展名仍然具有一定的实用性。因此,在实际的使用中,文件名是否包含扩展名,以及扩展名的具体命名方式,可以由用户根据自己的需求和习惯进行选择。
Linux的常用扩展名有哪些
在Linux文件系统中,扩展名虽然不是必须的,但通常为了方便管理和识别文件,人们还是会为文件名添加一个特定的扩展名。以下是一些常用的Linux文件扩展名:
-
.sh:Bash shell脚本文件。
-
.py:Python源代码文件。
-
.c:C语言源代码文件。
-
.cpp:C++源代码文件。
-
.java:Java源代码文件。
-
.pl:Perl脚本文件。
-
.txt:纯文本文件,例如README、LICENSE等文本文件。
-
.html/.htm:HTML网页文件。
-
.xml:XML文件,用于存储数据或配置信息。
-
.json:JSON文件,用于存储数据。
-
.tar:tar压缩文件。
-
.gz:gzip压缩文件。
-
.zip:zip压缩文件。
-
.rar:rar压缩文件。
-
.pdf:Adobe PDF文档。
-
.doc/.docx:Microsoft Word文档。
-
.xls/.xlsx:Microsoft Excel电子表格文件。
-
.ppt/.pptx:Microsoft PowerPoint演示文稿。
-
.jpg/.jpeg:JPEG图像文件。
-
.png:PNG图像文件。
-
.gif:GIF动态图片文件。
-
.mp3:MP3音频文件。
-
.mp4:MP4视频文件。
-
.avi:AVI视频文件。
-
.svg:SVG矢量图像文件。
Linux的基本命令行【一】
列出当前的进程
可以使用以下命令列出当前所有正在运行的进程:
ps -aux
该命令将显示每个进程的详细信息,包括进程ID(PID)、父进程ID(PPID)、CPU利用率、内存使用量等。
使用ps命令:在命令行输入ps即可列出当前的进程。ps命令的常用参数如下:
- -a 显示所有用户的进程
- -u 显示进程所有者的用户名及其他信息
- -x 显示不与终端有关的所有进程
- -e 与-a选项相同
- -f 显示全格式信息
使用top命令:在命令行输入top即可列出当前正在运行的进程。top命令也可以实时地显示进程信息,可以用于监视系统运行状态。top命令的常用选项如下:
- -p 显示指定PID进程信息
- -u 显示指定用户名的进程信息
- -d 指定刷新时间
查找某个进程
可以使用命令行ps或pgrep来查找某个进程。
使用ps命令:在命令行输入ps | grep keyword即可查找关键字为“keyword”的进程。ps命令的常用参数如下:
- -e 显示所有进程
- -f 显示详细信息
- -C 列出指定命令名的进程
例如,要查找名称中包含“firefox”的进程,可以输入命令。
ps -ef | grep firefox
使用pgrep命令:在命令行输入pgrep keyword即可查找关键字为“keyword”的进程。pgrep命令的常用选项如下:
- -u 指定用户名
- -f 包含命令行参数
例如,要查找名称中包含“firefox”的进程,可以输入命令。
pgrep -u username -f firefox
结束一个进程
可以使用以下命令结束一个进程:
kill <PID>
其中,PID是要结束的进程的进程ID。如果您不知道进程的PID,请先使用ps命令查找它。
还可以使用以下强制结束进程的命令(请谨慎使用):
kill -9 <PID>
上述命令将立即结束指定PID的进程,而不会等待它优雅地退出。
使用kill命令:在命令行输入kill PID即可结束指定PID的进程。
kill命令的常用选项如下:
- -9 强制结束进程
- -15 发送终止信号
例如,要结束PID为123的进程,可以输入命令
kill 123。
使用pkill命令:
在命令行输入pkill process_name即可结束名称为“process_name”的进程。
pkill命令的常用选项与pgrep类似。
例如,要结束名称中包含“firefox”的进程,可以输入命令。
pkill -f firefox
查看系统的磁盘使用情况
可以使用命令行df或du来查看系统的磁盘使用情况。
使用df命令:在命令行输入df即可显示所有磁盘的空间使用情况。
df命令的常用选项如下:
- -h 以人类可读的形式显示
例如,要以人类可读的形式显示系统磁盘的使用情况,可以输入命令
df -h
使用du命令:在命令行输入du directory_name即可显示指定目录的空间使用情况。
du命令的常用选项如下:
- -h 以人类可读的形式显示 -
- s 只显示总计
例如,要以人类可读的形式显示当前目录的空间使用情况,可以输入命令
du -sh
在Linux中压缩和解压缩文件
Linux用户可以使用tar命令压缩和解压缩文件。以下是一些基本命令示例:
压缩文件夹为.tar.gz格式:
tar -czvf <压缩文件名>.tar.gz <要压缩的文件夹名称>
解压缩.tar.gz格式文件:
tar -xzvf <文件名>.tar.gz
其中,选项说明:
- -c:创建新的归档文件。
- -z:gzip压缩归档文件(.tar.gz)。
- -x:解压缩文件。
- -v:显示操作进度。
- -f:指定文件名。
Linux的基本命令行【二】
如何将多个文件组成一个归档文件?
归档文件是将多个文件合并为一个文件,并压缩存储的文件形式。常见的归档文件格式有.tar,.gz,.zip等。在Linux系统中,使用命令行可以轻松地将多个文件组成一个归档文件。
使用.tar命令创建归档文件
可以使用tar命令将多个文件组合成一个归档文件,并将其压缩。例如,将当前目录下的所有txt文件组合成一个归档文件:
tar -czvf archive.tar.gz *.txt
命令说明:
- -c: 建立新的归档文件
- -z: 对归档文件进行gzip压缩
- -v: 显示归档过程
- -f: 指定归档文件名
使用zip命令创建归档文件
Zip是一种常见的归档文件格式,在Linux系统中,可以使用zip命令打包和压缩文件:
zip archive.zip *.txt
命令说明:
*.txt:表示将当前目录下所有的txt文件打包压缩为archive.zip
如何提取归档文件中的文件?
解压归档文件是常见的操作,Linux系统中,也有对应的命令行工具支持解压归档文件。
1.使用tar命令解压缩归档文件
可以使用tar命令将一个tar包或tar.gz包解压为原文件:
tar -xzvf archive.tar.gz
命令说明:
- -x: 解压缩文件
- -z: 解压缩gzip压缩的文件
- -f: 指定归档文件名
2.使用unzip命令解压缩zip归档文件
可以使用unzip命令将一个zip包解压为原文件:
unzip archive.zip
如何检查文件的完整性?
在将文件进行传输或备份的过程中,很容易发生文件损坏或数据丢失的问题。因此,我们需要检查文件的完整性,确保文件没有被篡改或损坏。
1.使用md5sum命令检查文件完整性
可以使用md5sum命令检查文件的MD5值,来判断文件是否完整:
md5sum file.txt
命令说明:file.txt:待检查完整性的文件。
2.使用sha1sum或sha256sum命令检查文件完整性
可以使用sha1sum或sha256sum命令检查文件的SHA1或SHA256值,来判断文件是否完整:
sha1sum file.txt
sha256sum file.txt
命令说明:file.txt:待检查完整性的文件。
如何对文件进行加密和解密?
在对重要文件进行传输或备份的过程中,往往需要加密文件,保护文件内容不被泄露或篡改。
1.使用openssl命令对文件进行加密
可以使用openssl命令对文件进行加密,生成加密后的文件:
openssl enc -aes-256-cbc -salt -in file.txt -out file.enc
命令说明:
- -aes-256-cbc:使用AES-256位加密算法
- -salt:使用随机盐值进行加密
- -in file.txt:输入要加密的文件
- -out file.enc:输出加密后的文件
2.使用openssl命令对文件进行解密
可以使用openssl命令对加密文件进行解密,生成原文件:
openssl enc -d -aes-256-cbc -in file.enc -out file.txt
命令说明:
- -d:解密加密文件
- -aes-256-cbc:使用AES-256位加密算法
- -in file.enc:输入要解密的文件
- -out file.txt:输出解密后的文件
如何为文件设置备份?
在对文件进行维护或备份时,往往需要设置文件的备份。在Linux系统中,可以使用cp命令或rsync命令进行文件备份。
1.使用cp命令进行备份
使用cp命令可以将一个文件复制到另一个位置,完成备份操作:
cp /src/file.txt /backup/file.bak
命令说明:
- /src/file.txt:源文件
- /backup/file.bak:备份文件
2.使用rsync命令进行备份
rsync是一个强大的文件同步工具,可以将本地或远程文件夹备份到其他位置或服务器。例如,将本地的/home目录备份到/backup目录:
rsync -avz /home /backup
命令说明:
- -avz:同步文件夹内容,并保留文件属性和权限
- /home:源文件夹
- /backup:备份文件夹
Linux的基本命令行【三】
如何将文件内容追加到另一个文件中?
可以使用Linux的“>>”运算符将一个文件的内容追加到另一个文件中。示例代码如下所示:
cat file1.txt >> file2.txt
这将把file1.txt文件的内容追加到file2.txt文件的末尾。
如何在Linux中查找文件?
可以使用Linux的“find”命令来查找文件。示例代码如下所示:
find / -name filename.txt
这将在整个文件系统中搜索名为filename.txt的文件。 /代表要搜索整个文件系统。还可以使用其他参数来指定搜索范围、文件类型等。例如,使用“-type”参数来指定文件类型,使用“-mtime”参数来指定修改日期等。可以使用“man find”命令查看详细信息。
如何使用文本编辑器在Linux中编辑文件?
可以使用Linux中的多种文本编辑器来编辑文件,最常用的包括vi、nano和emacs。以下是使用vi编辑器编辑文件的示例代码:
vi filename.txt
打开文件后,在命令模式下可以使用各种命令来编辑文件,例如删除、复制、粘贴和查找。要保存更改并退出vi编辑器,请使用以下命令:
:wq
如何在命令行中进行带密码的SSH登录?
可以使用Linux的“sshpass”工具在命令行中进行带密码的SSH登录。示例代码如下所示:
sshpass -p \'password\' ssh username@hostname
在上面的命令中,“password”代表SSH登录密码,“username”代表要登录的用户名,“hostname”代表要登录的远程主机名。请注意,此方法被视为不安全,因为密码会以明文形式存储在命令历史记录中,建议使用公钥/私钥身份验证方法。
如何查看Linux系统中的网络状态?
可以使用Linux的“netstat”命令来查看系统的网络状态。以下是使用netstat命令查看当前网络连接列表的示例代码:
netstat -a
该命令将列出当前打开的所有网络连接,包括TCP和UDP连接。还可以使用其他参数来过滤结果,例如“-n”参数只显示IP地址和端口号,而不显示域名和服务名称。可以使用“man netstat”命令查看更多选项。
以上是关于技术积累Linux中的基础知识的主要内容,如果未能解决你的问题,请参考以下文章