date
Feb 22, 2022
password
icon
status
Published
category
技术分享
tags
Linux
note
summary
Linux 学习笔记
URL
slug
linux-note
Linux 是什么
Linux是一个操作系统,同时是一个自由软件1,是免费的、源代码开放的,编制它的目的是建立不受任何商品化软件版权制约的、全世界都能自由使用的UNIX兼容产品。
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX(可移植操作系统接口) 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
来源
自由软件创始人 Richard M. Stallman 是黑客历史上最伟大的黑客,黑客中的圣者,是 GNUProject 的创始人。他于1984年起开发自由开放的操作系统 GNU2(Gun is Not UNIX的首字母缩写),以此向计算机用户提供自由开放的选择。GNU 是自由软件,任何用户都可以免费复制和重新分发以及修改。
事实上,GNU 自己开发的核心称为 hurd, 是一个架构相当先进的核心。不过由于开发者在开发的过程中对 于系统的要求太过于严谨,因此推出的时程一再延后,所以才有后来 Linux 的开发!
Linux 最初是由芬兰赫尔辛基技术大学计算机系大学生 Linus Torvalds 在 1990 年底到 1991 年的几个月中,为了他自己的操作系统课程和后来的上网用途而陆续编写的,在他自己买的 Intel 386PC 上,利用 Tanenbaum 教授自行设计的微型 UNIX 操作系统 Minix3 作为开发平台。
Torvalds 在 Minix 的 BBS 论坛上称他以 bash, gcc 等 GNU 的工具写了一个小小的核心程序,该核心程序单纯是个玩具,不像 GNU 那么专业。 不过该核心程序可以在 Intel 的 386 机器上面运行。
这则新闻引起很多人的注意,他们也去托瓦兹提供的网站上下载了这个核心来安装1。 有趣的是,因为 Torvalds 放置核心的那个 FTP 网站的目录为:Linux, 从此,大家便称这个核心为Linux了。
Linux 的出现让 GNU 计划放下了心里的一块大石头,因为 GNU 一直以来就是缺乏了核心程序, 导致他们的 GNU 自 由软件只能在其他的 Unix 上面跑。既然目前有 Linux 出现了,且 Linux 也用了很多的 GNU 相关软件,所以 Stallman 认为 Linux 的全名应该称之为 GNU/Linux 呢! 不管怎么说,Linux 实在很不错,让 GNU 也都有以 Linux 为开发测试平台的计划出现!如此一来,Linux 除了主要的核心程序外,可以在 Linux 上面运行的软件也越来越多,如果有心,就能够将一个完整的Linux操作系统搞定了!
版本
Linux 的核心版本编号有点类似如下的样子:
3.10.0-123.el7.x86_64主版本.次版本.释出版本-修改版本
Linux 在 3.0 版本以前以版本数进行分类
3.0 以后主线版本、长期维护版本
Linux 核心版本与 Linux 发布商版本
我们知 Linux 其实就是一个操作系统最底层的核心及其提供的核心工具。只不过现在大家都称为 Linux,严格意义来说以上所讲的其实被称为 Linux 内核,而我们常见的 Centos,Ubuntu,Debian…这些 Linux 发行版都是由商业公司将 Linux 内核,工具包,可以运行的程序组(可直接使用的软件)合在一起发行出售,这也是为什么 Linux 是 Gpl 版权为什么还有商业公司去发行这些东西,因为他们售卖的是自己的服务。
较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等,国内也有 deepin 这样的发行版,样式很美观,感兴趣的可以看看!
开始使用
Linux 是有桌面模式的,但是使用 Linux 当作服务器使用通常都会使用命令行模式,是没有 GUI 桌面的,可以使用终端或者远程连接工具使用。
开机会启动许多程序。Windows 叫做
服务
(service),Linux 就叫做 守护进程
(daemon)。开机成功后,它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给 login 程序来验证用户的身份,密码是不显示的,输完回车即可!
一般来说,用户的登录方式有三种:
- 命令行登录
- ssh登录
- 图形界面登录
最高权限账户为 root,可以操作一切!
用户可以通过指令来操作 Linux,下面是简单的介绍:
[root@mumu ~]# command [-options] parameter1 parameter2 ...
拆解下上面这串指令,开始了解 Linux 的命令行, @ 和 [] 都是分隔符,没有实际意义存在
root
: 当前用户
mumu
:主机名称
~
:当前所在目录
#
:代表当前登录人为超级管理员,还有另外一个$
符号,代表普通用户,从这之前展示的都是系统默认带出来的,认识就行,后面的才是真正开始需要我们书写的。
command
:每行指令输入的第一部分都是指令,指令是可以执行的文案、脚本等(相当于 Windows 下的删除、添加文件和软件内的各种指令),command 是指令的名称。
options
: 选项,通常前面会带符号。
parameter1 parameter2 ...
: 跟在指令或选项后面的参数,可以有多个或 0 个。
指令、选项、参数这几个类型中间都要加空格来区分,如有多个空格视为一个空格,一行指令输入完以后,使用
ENTER
来执行命令,代表指令开始启动。如果一行指令太长可以输入 \
后再输入 ENTER
来进行换行,而不开始执行指令,用来实现长指令的书写。Linux 是严格区分大小写的,如 -a
和 -A
是不同的意思。常用快捷键
按键(Windows Control 换为 Ctrl 即可) | 作用 |
tab | 补齐命令或或目录 |
control+b ← | 光标向左移动一个字符 |
control+f → | 光标向右移动一个字符 |
control+a | 光标移动到第一位 |
control+e | 光标移动到最后一位 |
control+d del | 删除光标前面的字符 |
control+h fn+del | 删除光标后面的字符 |
control+w | 删除光标前面一个字符串 |
control+u | 删除光标前面的字符串 |
control+k | 删除光标后面的字符串 |
control+p ↑ | 向前查找历史记录 |
control+n ↓ | 向后查找历史记录 |
目录
目录结构
ls /
这个命令的意思是查看==根目录下的所有内容==,
/
代表根目录。下图是根目录的树状目录结构
- /bin:bin 是 Binary 的缩写, 这个目录存放着最经常使用的命令,是二进制文件,可执行程序,shell 命令
- /boot: 这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
- /dev : dev 是 Device (设备)的缩写, 存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。在 linux 下一切皆文件、硬盘,显卡,显示器。。。
- /etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。
- /home:用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
- /lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。
- /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
- /media:Linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
- /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在
/mnt/
上,然后进入该目录就可以查看光驱里的内容了。
- /opt:这是给主机额外安装软件所摆放的目录,可以用来安装第三方应用。比如你安装一个 MySQL 数据库则就可以放到这个目录下。默认是空的。
- /proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
- /root:该目录为系统管理员,也称作超级权限者的用户主目录。
- /sbin:s 就是 Super User 的意思,这里存放的是系统管理员使用的系统管理程序。
- /srv:该目录存放一些服务启动之后需要提取的数据。
- /sys:这是 Linux 2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
- /tmp:这个目录是用来存放一些临时文件的。
- /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
- /usr/bin: 系统用户使用的应用程序。
- /usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。
- /usr/src: 内核源代码默认的放置目录。
- /var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
- /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
相对路径和绝对路径
在 Linux 是一个树状的命令结构,
/
代表根目录。其他的目录可以通过挂载添加到树中,解除挂载可以移除。- 绝对路径:由根目录写起,例如
/usr/local
- 相对路径:从当前目录开始表示,例如现在在
/usr
目录下,就可以直接访问local
目录,不用从根目录起开始访问
常用命令
- ls: 显示目标列表,是使用率较高的命令。ls 命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。
# 常用命令$ ls -l # 列出当前目录可见文件详细信息$ ls -hl # 列出详细信息并以可读大小显示文件大小$ ls -al # 列出所有文件(包括隐藏)的详细信息
- cd:切换工作目录,切换工作目录至
dir
。其中dir
的表示法可以是绝对路径或相对路径。
$ cd # 进入用户主目录;$ cd / # 进入根目录$ cd ~ # 进入用户主目录;$ cd .. # 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思);$ cd ../.. # 返回上两级目录;$ cd !$ # 把上个命令的参数作为cd参数使用。
- pwd:显示目前的目录
$ pwd -P # 如果是链接,显示真实地址
- mkdir:创建一个新的目录,该命令创建由 dirname 命名的目录。如果在目录名的前面没有加任何路径名,则在当前目录下创建由 dirname 指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。
# 在目录 /usr/meng 下建立子目录 test,并且只有文件主有读、写和执行权限,其他人无权访问mkdir -m 700 /usr/meng/test# 在当前目录中建立 bin 和 bin 下的 os_1 目录,权限设置为文件主可读、写、执行,同组用户可读和执行,其他用户无权访问mkdir -p-m 750 bin/os_1
- rmdir:用来删除空目录。当目录不再被使用时,或者磁盘空间已到达使用限定值,就需要删除失去使用价值的目录。利用
rmdir
命令可以从一个目录中删除一个或多个空的子目录。该命令从一个目录中删除一个或多个子目录,其中 dirname 表示目录名。如果 dirname 中没有指定路径,则删除当前目录下由 dirname 指定的目录;如 dirname 中包含路径,则删除指定位置的目录。删除目录时,必须具有对其父目录的写权限.
rmdir www # 删除工作目录下的 www 文件夹rmdir -p www/Test # 删除工作目录下的 Test 文件夹,Test 删除后,www 目录成为空目录,就把 www 也删除。
- cp: 复制文件或目录
# 将目录 /usr/men 下的所有文件及其子目录复制到目录 /usr/zh中cp -r /usr/men /usr/zh# 将文件 file 复制到目录 /usr/men/tmp 下,并改名为 file1cp file /usr/men/tmp/file1# 复制目录 aaa 下所有到 /bbb 目录下,这时如果 /bbb 目录下有和 aaa 同名的文件,需要按 Y 来确认并且会略过 aaa 目录下的子目录。cp aaa/* /bbb# 这次依然需要按Y来确认操作,但是没有忽略子目录。cp -r aaa/* /bbb# 依然需要按Y来确认操作,并且把 aaa 目录以及子目录和文件属性也传递到了 /bbb。cp -r -a aaa/* /bbb# 成功,没有提示按 Y、传递了目录属性、没有略过目录。cp -r -a aaa/* /bbb# 将当前目录下所有文件,复制到当前目录的兄弟目录 backup 文件夹中cp -rfb ./* ../backup
- rm: 删除文件或目录
# rm -r [目录名称] -r 表示递归地删除目录下的所有文件和目录。 -f 表示强制删除rm -rf testdirrm -r testdir# -i 表示删除操作前有确认提示rm -r -i [文件/目录]# 显示当前删除操作的详情rm -v [文件/目录]
- mv: 移动文件与目录,或修改文件与目录的名称
# 将目录 /usr/men 中的所有文件移到当前目录(用 . 表示)中mv /usr/men/* .# 移动文件mv file_1.txt /home/office/# 移动多个文件, * 代表任意字符mv file_2.txt file_3.txt file_4.txt /home/office/mv *.txt /home/office/# 将文件 file_1.txt 改名为 file_2.txtmv file_1.txt file_2.txt
权限
使用者和群组
Linux 是多用户多任务的系统,可能会有多个人来访问。
- Linux 有文件所有者的角色,就是谁创建的这个文件谁就是这个文件的所有者,可以称之为属主。
- 为了方便多用户协作,还有群组的概念,即当前用户归属于哪个组,可以用组来简单的设置权限,比如我相同组的成员可以访问或执行,一个用户可以同时是多个群组的成员,群组可以成为属组。
- 还有其他用户和当前用户及其属组没有关系就可以称为其他用户。
- Linux 有一个超级管理员
root
,它既是一个用户也是一个单独的组,可以访问所有文件而不受权限影响。
有了这些划分,可以是 Linux 在协作使用上及其方便。
权限介绍
可以使用 ls -l 查看目录的详细信息,在线图片
lrwxrwxrwx 1 root root 7 Oct 29 2018 bin -> usr/bin[1] [2] [3] [4] [5] [6] [7][ 权限 ][链接][拥有者][群组] [文件大小][ 修改日期 ] [ 文件名 ]
- [1]第一个字母
l
代表文件的类型,一下这些为常见的类型: - 当为
d
则是目录 - 当为
则是文件;
- 若是
l
则表示为链接文档 ( link file ); - 若是
b
则表示为装置文件里面的可供储存的接口设备 ( 可随机存取装置 ); - 若是
c
则表示为装置文件里面的串行端口设备,例如键盘、鼠标 ( 一次性读取装置 )。 - 接下来的字符中,以三个为一组,且均为
rwx
的三个参数的组合。其中,r
代表可读(read)、w
代表可写(write)、x
代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号。
- 第一组为属主的权限
- 第二组为属组的权限
- 第三组为其他用户的权限
- [2]代表当前有多少文件名链接到此节点
- [3]属主
- [4]属组
- [5]文件大小,默认单位是 Bytes。
- [6]修改时间,如果修改时间距离现在时间过长就会显示月日年,否则就会显示月日小时分钟。
- [7]文件名称
修改权限
chgrp
:更改文件属组
# -R:递归更改文件属组,在更改某个目录文件的属组时,如果加上 -R 的参数,那么该目录下的所有文件的属组都会更改。chgrp [-R] 属组名 文件名
chown
:更改文件属主,也可以同时更改文件属组
chown [–R] 属主名 文件名chown [-R] 属主名:属组名 文件名
chmod
:更改文件的权限
# xyz : 就是下一行提到的数字类型的权限属性,为 rwx 属性数值的相加。chmod [-R] xyz 文件或目录# Linux 文件属性有两种设置方法,一种是数字,一种是符号。# Linux 文件的基本权限就有九个,分别是 owner/group/others 三种身份各有自己的read/write/execute权限。# 文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!# 可以使用数字来代表各个权限,各权限的分数对照表如下# r:4 w:2 x:1# 这三个数字任意相加只都是不一样的,所以可以使用它来设置权限更为简洁,如果没有任何权限,可以设置为 0# 最常用的命令,给所有用户设置当前文件所有权限# 其中第一个 7 代表属主权限,第二个是属组权限,第三个是其他用户权限# 7 = r + w + x ,就是 7 = 4 + 2 + 1chmod 777 文件或目录
文件
底下这些命令都可以查看文件,但是我使用最多的也就是
less
和 tail
,这两个也是功能比较丰富的,详细介绍下。cat
由第一行开始显示文件内容
tac
从最后一行开始显示,可以看出tac
是cat
的倒着写!
nl
显示的时候,顺道输出行号!
more
一页一页的显示文件内容
less
与more
类似,但是比more
更好的是,他可以往前翻页!- 空格键 :向下翻动一页;
- [pagedown]:向下翻动一页;
- [pageup] :向上翻动一页;
- /字串 :向下搜寻『字串』的功能;
- ?字串 :向上搜寻『字串』的功能;
- n :重复前一个搜寻 (与 / 或 ? 有关!)
- N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
- q :离开 less 这个程序;
head
只看头几行
tail
用于显示文件中的最后几行。tail命令默认在屏幕上显示指定文件的末尾10行。使用f
参数可以追加文件的最新内容,常用来监视文件的变化和日志的追踪。
软链接和硬链接
- 软链接
相当于 Windows 下的快捷方式,如果文件删除了,访问软链接会提示你不存在,请删除此链接。
- 硬链接
硬链接是复制了一份磁盘的拷贝信息创建了一个连接,和原文件指向的都是同一个文件。硬链接不占用实际空间。
# 使用 ln 命令创建链接, -s 代表软链接,不带 -s 为硬链接。目录只能创建软链接!ln -s 文件 链接名称
- 自由软件的自由(free)有两个含义:第一,是可免费提供给任何用户使用;第二,是指它的源代码公开和可自由修改。所谓可自由修改是指用户可以对公开的源代码进行修改,以使自由软件更加完善,还可在对自由软件进行修改的基础上开发上层软件↩
- 这个计划的目的是:创建一个自由、开放的Unix操作系统(Free Unix)↩
- Minix 是谭宁邦教授于 1984 年开始编写的类 Unix 系统,之所以叫这个名字,是因为他是个 Mini 的 Unix 系统啰!@_@↩
- Author:木木
- URL:https://www.mumudm.yop/article/linux-note
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts