Linux基础

136 阅读8分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第18天,点击查看活动详情

啥是Linux

Linux 是一套可以免费使用和自由传播的类 Unix 操作系统,并且是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。和我们熟悉的 Windows 操作系统(XP、7、8、10 等)以及 Mac OS 系统一样、都是用于管理和控制计算机硬件和软件资源的计算机程序。不过,Linux 区别于其它操作系统最突出的特点就是:它是一款**完全免费且开放源代码(open source)**的操作系统。

Linux 作为一个操作系统主要包括 内核 和 系统调用 两部分,介于 硬件 和 应用程序 之间,就像一座桥梁连通着底层硬件和用户之间的信息交流。

Linux 之父 Linus Torvalds 所开发的 Linux 可以在 x86 架构下运行,同时可以被移植到其它主机上运行。除此之外,Linux 还具有完全免费、兼容 POSIX1.0 标准、多用户、多任务和支持多种平台等优点。

image.png

Linux 之父 Linus Torvalds

Linux 标志和吉祥物

图片描述

Linux 小企鹅

Linux 发行版本

Linux 操作系统从诞生、发展到现在已经推出了许多的版本,而每个版本都拥有相当规模的用户。

下面列出的是当下比较常见的几款 Linux 发行版。

  • Debian:Debian 运行起来极其稳定,这使得它非常适用于服务器。Debian 平时维护三套正式的软件库和一套非免费软件库,它有 37500 多个软件包。Debian 操作系统比较适合系统管理员和高级用户
  • Gentoo:与 Debian 一样,Gentoo 操作系统也包含数量众多的软件包。Gentoo 并非以预编译的形式出现,而是每次需要针对每个系统进行编译。Gentoo 操作系统适合对 Linux 已经完全驾轻就熟的用户
  • Ubuntu:Ubuntu 是 Debian 的一款衍生版,也是当前最受欢迎的免费操作系统。Ubuntu 侧重于市场的应用,在服务器、云计算和一些运行 Ubuntu Linux 的移动设备上。作为 Debian Gnu Linux 的一款衍生版,Ubuntu 的进程、外观看起来大部分仍然与 Debian 一样。 是新手用户最易上手的一款操作系统。
  • CentOS:CentOS 是一款企业级 Linux 发行版,使用红帽企业级 Linux 中的免费源代码重新构建而成。这款重构版完全去掉了注册商标, CentOS 也是新手用户容易上手的一款操作系统。
  • Kali Linux:Kali Linux 是 Debian 的另一款衍生版。Kali 旨在用于渗透测试。可以说是文明黑客较为青睐的操作系统。

Linux 文件系统

文件结构是文件存放在磁盘等存储设备上的组织方法,主要体现在对文件和目录的组织上。

之前我们说到,Linux 的目录采用的是 树型结构,最上层是根目录 /,其它的所有目录都是从根目录出发而生成的。微软的 DOS 和 Windows 也是采用树型结构,但是在 DOS 和 Windows 中这样的树型结构的根是磁盘分区的盘符,有几个分区就有几个树型结构,它们之间的关系是并列的。但是在 Linux 中,无论操作系统管理几个磁盘分区,这样的目录树只有一个。从结构上讲,各个磁盘分区上的树型目录不一定是并列的。

FHS 标准定义了两层规范:

  • 第一层/ 下面的各个目录应该放什么文件数据。例如 /etc 应放置配置文件,/bin 与 /sbin 则应该放置可执行文件等。
  • 第二层:针对 /usr 和 /var 这两个目录的子目录来定义。例如 /var/log 放置系统登录文件,/usr/share 放置共享数据等。

下面是 FHS 标准图,每个目录大致的作用需要大家仔细查看并记忆:

FHS 标准图

Linux 的一些常用命令和工具

查看目录的命令 ls

ls+文件目录
ls + -a+文件目录(查询包括隐藏文件)
ls + -l+文件目录(查询结果是列表形式)
ls + -al+文件目录(既能看到隐藏文件,又使用列表方式)
ls + -lh+文件目录(`-h` 以 KB,MB,GB 的格式显示,注意这个参数必须和 `-l` 参数一起使用,否则无效。)
ls + -R+目录(查询子文件夹内容,默认只会显示非隐藏文件夹的下的子文件)
ls + -aR+目录(查询文件里面全部)

补充pwd,man,cd

pwd ,意思是打印当前工作目录 man +命令,查看手册 cd+路径 = 切换到路径下 cd ..回退一级 cd ~回到根 cd ../..回退两级

mkdir,touch

mkdir+目录名字, touch+文件名字, mkdir -p father/son/grandson,建立父目录下面有儿子目录,儿子目录下面有父目录, touch {1..10}.txt 批量创建1-10.txt文件(也可以{a..z}{A..Z})

cat,head,tail

cat 查看文件 cat+目录,查看该文件下的内容 cat+ -n+目录(现实行号,输出内容) cat+ -A+目录(可以显示文件里所有的内容,包括一些不可见的符号,比如换行符) head查看开头部分文件内容 head+目录 head 也有几个常用的参数,如下:

选项说明
-n <数字>指定显示头部内容的行数
-c <字符数>指定显示头部内容的字符数
-v总是显示文件名的头信息
-q不显示文件名的头信息
tail查看结尾部分文件内容 tail+目录
参数和head类似

匹配指定字符:grep 命令

grep 命令主要用于在指定的文件里查找包含指定内容的部分,如果发现该文件的内容符合所指定的内容,则会把含有该内容的那一列在终端显示出来 grep 查找内容+文件

终端的回声:echo 命令

主要用于输出字符串和查看变量。 echo "hello wolrd"
echo "hello\tworld" echo "hello\nworld"
echo 'hello\tworld' echo 'hello\nworld'
下表是 echo 中引号的区别:

引号类别使用变量使用转义符使用文本格式符(换行符、制表符等)
单引号不能不能不能
双引号
无引号不能

重定向

ls等命令 输入的内容(可以是文件)>正确文件名字 2>错误文件名字:将正确的信息和错误的信息分别定向到不同的文件 假设我们想将正确的和错误的信息都写入一个文件,可以这样做:

ls /home abcd &> lsInfoAll

vim使用

vim+文件名字 如果这个文件不存在,将会在保存后自动创建 在运行 Vim 的时候,默认进入的是编辑模式,在这个模式下主要进行光标的移动;如果需要编辑内容,则需要进入插入模式,则需要按下键盘上的字母 i 键,此时左下角会提示你进入了插入模式,现在就可以进行输入了。 输入完成后,我们需要首先按下左上角的 Esc 键返回到编辑模式,然后输入 :wq 保存并且退出。这样这个文件就编辑完成了。

cp,mv,rm

cp 命令是 copy file(复制文件)命令的缩写,主要用于复制文件或目录。注意使用命令的格式:

cp [参数] [源目录/源文件] [目标目录]

如果直接复制目录,会直接略过目录,所以需要加上 -r 参数,表示递归复制。

mkdir world
cp -r world /home/shiyanlou

mv 命令是 move file(移动文件)的缩写,它有两个作用,一是用来为文件或目录改名,二是将文件或目录移入其它位置。注意使用命令的格式:

mv [参数] [源目录/源文件] [目标目录/目标文件]

注意,mv 命令可用的情况有两种。

当源是文件的时候,目标可以选择是目录或者文件:

  • 若目标是目录名,则移动该文件到这个目录中
  • 若目标是文件名,则执行重命名操作

当源是文件夹的时候,则目标只能选择目录,否则会报错:

  • 当目标目录存在的时候,则自动将源文件夹移动到目标文件夹里
  • 当目标目录不存在的时候,则自动将源文件夹重命名为目标文件夹

rm 命令是 remove(移除)的缩写,主要用于删除文件或者目录。

注意:使用 rm 命令删除文件或目录基本无法恢复,所以务必谨慎使用该命令,尤其是在正式环境中

rm 命令使用语法格式如下:

rm [参数] [文件名/目录名]

删除文件可以直接使用 rm 命令,若删除目录则必须配合选项 -r