持续创作,加速成长!这是我参与「掘金日新计划 · 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 标准、多用户、多任务和支持多种平台等优点。
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 标准图,每个目录大致的作用需要大家仔细查看并记忆:
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