Linux 系统最早诞生于 1991 年。1991 年,芬兰计算机科学家林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学学习时创建了 Linux 内核。随后,许多开发者参与到 Linux 项目中,逐渐发展成了一个庞大的开源操作系统。
因为Linux的开源特性,它衍生出了大量的发行版本(如Ubuntu、Fedora、Debian等),同时也赢得了全球开发者和企业的喜爱,截至2021年,Linux发行版中,Ubuntu 20.04 LTS和Debian 10 (Buster) 是相对较多人使用的版本。这些版本在服务器、桌面和开发者社区中有广泛的用户。然而,需要注意的是,这些数据可能会随着时间的推移发生变化,而且有很多不同的 Linux 发行版适用于不同的场景和用户群体。
以下将介绍Linux的一些基本概念与操作:
1. Linux简介
Linux是基于POSIX(可移植操作系统接口)标准开发的,遵循自由软件和开源软件开发和分发模式,允许用户修改、共享和再分发源代码。Linux的内核是其核心组件, 是操作系统执行用户级应用程序和硬件设备之间的底层通道。
2. 目录结构
Linux采用了树状目录结构,以"/"(斜杠)作为根目录。以下是一些常见的重要目录:
- /bin:基本的系统可执行文件
- /boot:引导文件
- /dev:设备文件
- /etc:系统配置文件
- /home:用户目录
- /lib:系统库文件
- /root:系统管理员的家目录
- /tmp:临时文件
- /usr:用户程序和数据文件
- /var:各种日志文件和其他变量数据文件
3.常用基本命令
在 Linux 系统上,有许多基本的命令可以帮助用户执行各种操作,例如创建文件、管理进程、修改文本等,接下来,为您详解一些常用的 Linux 基本命令:
(1) `-f` 通常用于指定一个输入文件,或强制执行某个操作。例如,在 `tar` 命令中,`tar -xf archive.tar` 会使用 `-f` 选项将 `archive.tar` 解压;而在 `rm` 命令中,`rm -f file.txt` 会强制删除 `file.txt`,即使它是只读的。
(2)`-n` 通常用于指定数值参数,或者执行“试运行”模式。例如,在 `head` 命令中,`head -n 10 file.txt` 会显示 `file.txt` 的前 10 行;而在 `grep` 命令中,`grep -n pattern file.txt` 会显示匹配到模式 `pattern` 的行号。
(3)"-r" 通常表示 "recursive"(递归)。例如,在 cp(复制文件)命令中,"-r" 选项表示复制目录及其子目录下的所有文件和子目录。此外,rm -r 表示递归删除目录及其内容。注意,-R 选项在某些命令中具有相同的递归含义。例如:cp -R 和 cp -r 都表示递归复制。
-
pwd
(print working directory):显示当前工作目录。 -
ls
:列出目录中的文件。 -
cd
(change directory):切换到指定目录。cd ..
:进入上级目录。cd ~
:回到用户的主目录。
-
mkdir
(make directory):创建一个新目录。- 示例:
mkdir new_directory
- 示例:
-
rmdir
(remove directory):删除空目录(递归删除使用rm -rf
)。- 示例:
rmdir directory_name
- 示例:
-
touch
:创建一个新的空文件。- 示例:
touch new_file.txt
- 示例:
-
rm
(remove):删除一个文件或目录。- 示例:
rm file_name
- 若要递归删除一个目录及其子目录和文件,请使用:
rm -rf directory_name
- 示例:
-
cp
(copy):复制一个文件或目录。- 示例:
cp source_file destination
- 若要复制一个目录,使用:
cp -r source_directory destination
- 示例:
-
mv
(move):移动或重命名一个文件或目录。- 示例:
mv old_name new_name
- 示例:
-
cat
:显示文件的内容。
- 示例:
cat file_name
head
:显示文件的前几行。
- 示例:
head -n 5 file_name
tail
:显示文件的末尾几行。
- 示例:
tail -n 5 file_name
- 要在 Linux 中实时监控一个日志文件,可以使用
tail
命令。tail
命令默认显示文件的最后几行,但是可以通过传递-f
选项来实时显示新增的内容。例如,要实时监控一个名为/var/log/syslog
的日志文件,可以执行以下命令:
tail -f /var/log/syslog
这将持续显示日志文件的最新内容。当有新的日志条目添加到文件中时,它们会自动显示在屏幕上。要停止监控,可以按 Ctrl + C
。
还可以使用 multitail
实现实时监控多个日志文件。multitail
不是所有 Linux 发行版的标准组件,但是可以在大多数发行版中安装。在 Debian 或 Ubuntu 上,可以使用以下命令安装 multitail
:
sudo apt-get install multitail
安装后,可以使用 -i
选项指定要监控的多个文件,如下所示:
multitail -i /var/log/syslog -i /var/log/auth.log
这将同时监控 /var/log/syslog
和 /var/log/auth.log
文件,并在屏幕上实时显示它们的内容。
还有一个功能强大的工具是less
,实时监控日志可以使用 less
命令,如下所示:
less +F /var/log/syslog
这将打开日志文件并实时显示新增内容。要退出实时监控并浏览文件,可以按 Ctrl + C
,此时可以使用 less
的所有功能,如搜索和翻页。要再次进入实时监控,可以按 F
。要退出 less
,可以按 q
。
grep
:在文件中搜索指定字符串或正则表达式。
- 示例:
grep "pattern" file_name
echo
: 在命令行显示字符串或变量值。
- 示例:
echo "Hello World!"
man
:显示命令的手册,以获取所需命令的详细说明及用法。
- 示例:
man ls
-
ps
:查看当前运行的进程。 -
kill
:杀死指定的进程 ID。
- 示例:
kill 12345
-
top
或htop
:显示系统的实时进程信息。 -
df
:查看磁盘空间使用情况。 -
du
:查看目录的磁盘空间使用情况。
- 示例:
du -sh directory_name
chmod
:修改文件或目录的权限。
- 示例:
chmod 755 file_name
chown
:更改文件或目录的属主和属组。
- 示例:
chown user:group file_name
wget
:从互联网上下载文件。
- 示例:
wget http://example.com/file.txt
curl
:向服务器发送 HTTP 请求,并获取返回的数据。
- 示例:
curl http://example.com
nano
、vi
或vim
:在命令行中打开文本编辑器以编辑文件。
4. 权限管理
Linux中对文件和目录的访问权限分为只读(r)、可写(w)和可执行(x)。所有用户分为文件或目录的所有者、组内用户和其他用户三类。可以使用chmod命令修改权限,例如"chmod 755 文件名"。
5. 帮助命令
获取命令帮助的常用方法有:
- 命令 --help:显示命令的用法和选项说明
- man 命令:显示命令的手册页
- info 命令:显示命令的信息页面
6.压缩、解压命令详解
Linux 系统中有多种压缩和解压缩工具,这里详解常见的几种工具及其命令:
- gzip/gunzip
gzip 是用于压缩文件的命令,它会将原文件压缩成一个新的带有 .gz
扩展名的文件。原文件在压缩后将被删除。
语法:gzip [options] [file]
常用选项:
-k
:保留原文件,不删除。-d
:解压缩文件(此时命令等同于gunzip
)。-c
:将解压缩的内容输出到标准输出(可用于管道命令)。-r
:递归地压缩目录中的所有文件。-l
:查看压缩文件的信息。-v
:显示压缩/解压缩过程中的信息。
例子:
- 压缩文件:
gzip file.txt
(产生file.txt.gz
,删除file.txt
) - 解压缩文件:
gzip -d file.txt.gz
- tar
tar 命令用于将多个文件打包成一个文件,也可以用于解包。配合 gzip 或其他压缩方式,可以实现压缩和解压缩。tar 支持多种文件格式,如 .tar
、.tar.gz
、.tar.bz2
等。
语法:tar [options] [file]
常用选项:
-c
:创建新的归档文件。-x
:解包已有的归档文件。-z
:与 gzip 一起使用,进行.tar.gz
格式的压缩或解压缩。-j
:与 bzip2 一起使用,进行.tar.bz2
格式的压缩或解压缩。-f
:指定归档文件名。-v
:显示处理过程中的详细信息。-r
:将文件追加到已有的归档文件末尾。-t
:查看归档文件内容。
例子:
- 压缩文件:
tar -czvf archive.tar.gz file1 file2
- 解压缩文件:
tar -xzvf archive.tar.gz
- 查看归档文件内容:
tar -tvf archive.tar.gz
- zip/unzip
zip 是用于创建和管理 .zip
格式的压缩文件的命令。
语法:zip [options] [zipfile] [files]
常用选项:
-r
:递归地压缩目录中的所有文件。-d
:从 zipfile 中删除指定的文件。-u
:更新 zipfile 中的文件。-v
:显示详细信息。
unzip 则用于解压缩 .zip
文件。
语法:unzip [options] [zipfile]
常用选项:
-d
:指定解压缩后的目标目录。-l
:查看 zipfile 中的文件内容。-o
:覆盖解压缩目录中的同名文件。-n
:仅解压 zipfile 中的新文件。
例子:
- 压缩文件:
zip archive.zip file1 file2
- 解压缩文件:
unzip archive.zip
- rar/unrar
rar 是一个商业软件,需要在官网下载安装。它的功能与 zip/unzip 类似,但使用的是 .rar
格式。
安装:
在 CentOS/RHEL:
sudo yum install rar unrar
在 Ubuntu/Debian:
sudo apt-get install rar unrar
语法:rar [options] [rarfile] [files]
常用选项:
a
:添加文件到压缩包。e
:解压缩文件到当前目录。x
:解压缩文件到指定目录。v
:查看压缩包内容。
例子:
- 压缩文件:
rar a archive.rar file1 file2
- 解压缩文件:
rar x archive.rar
这些命令涵盖了 Linux 系统中主要的压缩和解压缩工具。使用这些命令,可以方便地对文件进行打包和解包。
PS:sudo yum
和 sudo apt-get
是两种 Linux 包管理工具,用于在 Linux 发行版中安装、更新和卸载软件。具体来说,yum
通常用于基于 Red Hat Enterprise Linux (RHEL) 或 Fedora 的发行版,而 apt-get
用于基于 Debian 的发行版,如 Ubuntu。
-
sudo
:这是一个命令行实用程序,表示 “SuperUser DO”,允许用户以管理员(或 root)权限运行命令。在使用包管理器时,通常需要管理员权限,因为它们可能会修改系统级文件和配置。 -
yum
:是一个软件包管理器,适用于基于 RPM 的 Linux 发行版(如 Red Hat Enterprise Linux 及其衍生版,如 Fedora 和 CentOS)。yum
可以搜索、安装、升级、降级、删除软件包及其依赖关系。 -
apt-get
:是 Debian 及其衍生版本(如 Ubuntu)的软件包管理器。它的功能类似于yum
,用于搜索、安装、升级、降级、删除软件包及其依赖关系。
虽然 yum
和 apt-get
相似,但它们在软件源、软件包格式及管理方式上有所不同。简而言之,sudo yum
和 sudo apt-get
都是以管理员权限执行包管理命令。