1.1.早期介绍
Linux起源于一个学生的简单需求。芬兰赫尔辛基大学Linus Torvalds,Linux的作者与主要维护者,在其上大学时所买得起的唯一软件是Minix. Minix是一个类似Unix,被广泛用来辅助教学的简单操作系统。Linus对Minix不是很满意,于是决定自己编写软件。他以学生时代熟悉的Unix作为原型, 在一台Intel 386 PC上开始了他的工作。他的进展很快,受工作成绩的鼓舞,他将这项成果通过互连网与其他同学共享,主要用于学术领域。有人看到了这个软件并开始分发。每当出现新问题时,有人会立刻找到解决办法并加入其中,很快的,Linux成为了一个操作系统。值得注意的是Linux并没有包括Unix源码。它是按照公开的POSIX标准重新编写的。Linux大量使用了由麻省剑桥免费软件基金的GNU软件,同时Linux自身也是用它们构造而成。Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?git 为 Linux 而生。
事实上,与其说Unix是个操作系统,不如说是一部口述历史. 一种文化,一种哲学. 所有哲学浓缩为一条铁律,那就是各地编程大师奉为圭臬(guī niè)的"K.I.S.S"原则:Keep It Simple,Stupid!
保持简单,并且一目了然!
1.2.Linux特征
Linux是一套免费使用和自由传播的操作系统内核,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统内核。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统内核。
-
特点
开放性:特别是遵循开放系统互连(OSI)国际标准。
多用户:操作系统资源可以被不同用户使用,每个用户对自己的资源(例如:文件、设备)有特定的权限,互 不影响。
多任务:计算机同时执行多个程序,而同时各个程序的运行互相独立。
-
Unix和Linux和Ubuntu的关系是什么?
Unix是内核,Linux是在Unix发展基础上的操作系统,Ubuntu是Linux操作系统中的具体某一个。
Linux允许多个用户同时使用系统,而且每个用户可以运行多个程序,稳定,安全,高效,是我们开发人员
布署应用的首选. 一个操作系统的学习是多方面的,深层次的,可以是一个linux管理员,浅一点只要掌握
基本的登录登出,文件/目录的增删改查,对于我们而言了,主要是从一个开发者的角度去进行了解,在
Linux系统上进行开发布署应用应该掌握哪些知识.
1.3. / (根目录)下的目录介绍
bin 部分系统可执行文件目录
dev 设备文件
该目录存放的是linux的外部设备,如硬盘,分区,键盘,鼠标,usb等。
usr unix system resources 操作系统的文件
/usr/local 相当于c:/program files,一般存放系统自带的,但是供所有用户使用的。最庞大的目录,要用 到的应用程序和文件几乎都在这个目录
/usr/include: linux下开发和编译引用程序所需要的头文件。
/usr/local: 本地增加的命令和库。
/usr/sbin: 超级用户的一些管理程序
/usr/src:源代码
/usr/bin: 众多的而应用程序,二进制可执行程序
/usr/share:共享文件
/usr/lib:常用的动态链接库和软件包的配置文件。
var
可变文件目录 用户信息 apache的www目录
etc 配置文件目录
查看文件内容使用:cat 文件路径
查看文件内容使用:more 文件路径
1./etc/passwd 用户信息
这些用户中的绝大多数是系统或服务正常运行所必需的用户,我们把这种用户称为系统用户或伪用户。系统用户是不能登录系统的,但是这些用户同样也不能被删除,因为一旦删除,依赖这些用户运行的服务或程序就不能正常执行,会导致系统问题。
用":"作为分隔符,划分为 7 个字段
root:x:0:0:root:/root:/bin/bash
用户名称:密码标志:用户 ID(UID):用户的组 ID(GID):用户的简单说明:用户的家目录:登录之后的Shell
系统是通过 UID 来识别不同的用户和分配用户权限的
0:超级用户 UID,
1~499:系统用户(伪用户)UID。
2./etc/shadow 密码信息
1970-01-01 00:00:00 是格林威治时间
时间戳:当前时间到格林威治时间的秒数
划分为 9 个字段
root:$6$KoTdD9KR$4Z7gieoQ9hU.8RlcuIqrWscLoB2q2JjqJRtY0H8dYYzgHpr.plqmYtEiKgwQQd2qIS9qySZOLj2FTFqhsCYM/:18337:0:99999:7:::
用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段
使用date -d "1970-01-01 18337 days"命令可以查看最后一次修改时间 :
Mon Mar 16 00:00:00 CST 2020
密码有效期 99999,也就是 223 年,可认为是永久生效
3./etc/group 组信息
分为4个字段
root:x:0:
组名:密码:GID:该用户组中的用户列表
如果该用户组是这个用户的初始组,则该用户不会写入这个字段,第四个字段没有写入 root 用户,因为 root 组是 root 用户的初始组。
4./etc/gshadow 组密码信息
root:*::
组名:加密密码:组管理员:组附加用户列表
5./etc/sudoers 写在sudoers文件内的用户可以临时使用sudo提升为管理员权限
root大老板 临时使用大老板的权利,得到大老板的承认。sudoers
6./etc/profile 核心配置
7./etc/skel 创建了新用户之后,复制的家文件
opt 安装软件目录 第三方安装包
解压即安装的软件 例如jdk
home 用户家目录 /home/ubuntu
root 超级用户家目录
lib 存放共享的库文件,包含许多被/bin和/sbin中程序使用的库文件
lost+found 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些零散文件
media ubuntu系统自动挂载的光驱、usb设备,存放临时读入的文件
mnt 作为被挂载的的文件系统得挂载点。
proc 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息,这里存放所有标志位文件的进程。
sbin s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序,如系统管理,目录查询等关键命令文件。
srv 存放系统所提供的服务数据
sys 系统设备和文件层次结构,并向用户程序提供详细的内核数据信息。
tmp 这个目录用来存放一些临时的文件,所有用户对此目录都有读写权限。
2.1.命令行语法
Command [options] [arguments]
注意:
1.命令一定使用空格进行分割
2.命令一定严格区分大小写。
3.单行命令一般不超过256个字符
2.2.基础命令
pwd
查看当前所在路径
$ pwd
cd
切换到指定目录中
$ cd
$ cd ~
$ cd /
$ cd ../
$ cd dir1
$ cd .. 返回上一级目录
如果没有写目录路径则进入到家目录,路径可以是以/开头的绝对路径,也可以是不以/开头的相对路径。
以/作为根目录
以~
cd ~ 相当于 cd /root
如果是普通用户,cd ~ 相当于cd /home/当前用户名
以.作为当前目录
以..作为上一级目录
ls
查看当前目录下的目录或者文件 ls 路径 查看指定路径下的文件目录或者文件 -a 查看所有文件和隐藏文件
$ ls -a
-A 查看所有文件和隐藏文件,除了.和..
$ ls -A
-l 长格式列出所有的文件和目录
$ ls -l
d rwx r-x r-x 4 user nobody 1024 Feb 22 09:20 test
d | rwx | r-x | r-x | 4 | user | nobody | 1024 Feb 22 09:20 | test |
---|---|---|---|---|---|---|---|---|
文件类型 | 拥有者权限 | 同组人权限 | 其他人权限 | 链接号 | 拥有者 | 拥有组 | 最后一次修改时间 | 文件名 |
第一个字段:文件属性字段
文件属性字段总共有10个字母组成;第一个字符代表文件的类型。
字母“-”表示该文件是一个普通文件
字母“d”表示该文件是一个目录,字母"d",是dirtectory(目录)的缩写 注意:目录或者是特殊文件,这个特殊文件存放其他文件或目录的相关信息
字母“l”表示该文件是一个链接文件。字母"l"是link(链接)的缩写,类似于windows下的快捷方式
字母“b”的表示块设备文件(block),一般置于/dev目录下,设备文件是普通文件和程序访问硬件设备的入口,是很特殊 的文件。没有文件大小,只有一个主设备号和一个辅设备号。一次传输数据为一整块的被称为块设备,如硬盘、光盘 等。最小数据传输单位为一个数据块(通常一个数据块的大小为512字节)
字母为“c”表示该文件是一个字符设备文件(character),一般置于/dev目录下,一次传输一个字节的设备被称为字符设 备,如键盘、字符终端等,传输数据的最小单位为一个字节。
字母为“p”表示该文件为命令管道文件。与shell编程有关的文件。
字母“s”表示该文件为sock文件。与shell编程有关的文件。
第1字符的后面9个字母表示该文件或目录的权限位。
r表是读 (Read) 、w表示写 (Write) 、x表示执行 (eXecute)
其中前三个表示文件拥有者的权限,中间三个表示文件所属组拥有的权限,最后三个表示其他用户拥有的权限。
第二字段:链接占用的节点
第三字段:文件(目录)拥有者
第四字段:文件(目录)拥有者所在的组
第五字段:表示文件大小
第六字段:文件(目录)最近访问(修改)时间
第七字段:文件名
cat
预览文件内容,一次性展示整个文件的内容
$ cat /etc/passwd
more
预览文件内容,会以一页一页的显示,逐页阅读 空格翻页,回车换行,q退出
$ more /etc/passwd
touch
可以创建文件或者更改最近访问时间 如果文件不存在,创建文件,如果文件存在,修改最后一次访问的时间
$ touch 文件名
$ touch test1
#查看文件修改时间
$ stat test1
man
查看指定命令手册
$ man ls
输入回车向下翻一行
输入空格向下翻一页
输入q退出手册
sudo
临时提升权限 如果没有使用sudo的权限,需要root用户操作/etc/sudoers文件,添加用户
/etc/sudoers文件默认是只读的,对root来说也是,因此需先添加sudoers文件的写权限,命令是: 即执行操作:chmod u+w /etc/sudoers
$ vi /etc/sudoers
其配置文件位于/etc/sudoers中。在/etc/sudoers文件中,添加
用户名 ALL=(ALL)ALL
注意:
如果出现sudo: unable to resolve host iZuf69b3ukcunchz57pmf8Z错误,需要修改host配置
使用管理员身份编辑
$ vi /etc/hosts
将对应用户的host那么添加到localhost后即可
127.0.0.1 localhost iZuf69b3ukcunchz57pmf8Z
sudo !! 执行上次命令
clear
清除屏幕内容
$ clear
history
列出历史命令
$ history
2.3.文件操作
创建目录/文件夹
-
在当前目录创建一个目录 - mkdir 目录名
# 在当前目录创建一个目录
$ mkdir web210x-test
-
在当前目录创建多个目录 - mkdir 目录名 目录名
# 在当前目录创建多个目录
$ mkdir a b
$ mkdir ~/a ~/b
-
在指定目录创建一个目录 - mkdir /目录名1/目录名2
$ mkdir /home/c
-
级联创建层次目录 - mkdir -p 目录1/目录2
$ mkdir -p e/f
$ mkdir -p ~/b/c
递归创建目录,即使上级目录不存在,会按目录层级自动创建目录
移动
-
mv 要移动的目录或文件,移动到的路径,将一个目录或文件移动到另一个地方
# 将a目录移动到b目录里
$ mv /a /b
-
如果是移动文件,并且还是将文件到同一个目录,相当于给重命名
$ mv test1 test2
-
常用的
# 将html文件转移到apache服务器
$ mv ~/test/index.html /var/www/html/test/
复制/拷贝
cp 命令既可以复制文件,也可以复制目录。
-
复制文件
# 创建文件
$ touch copy.txt
# 把源文件不改名复制到 b 目录下
$ cp copy.txt b
-
如果需要改名复制,命令如下:
#改名复制
$ cp copy.txt b/copy123.txt
-
如果复制的目标位置已经存在同名的文件,则会提示是否覆盖,例如:
$ cp -i copy.txt b
# 目标位置有同名文件,所以会提示是否覆盖
cp: overwrite 'b/copy.txt'? y
-
接下来我们看看如何复制目录,其实复制目录只需使用“-r”选项即可,例如:
#建立测试目录
$ mkdir movie
#目录原名复制
$ cp -r /home/movie b
$ cp -r ./movie b
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。 相当于 -d、-p、-r 选项的集合。
-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。
删除
-
rmdir 目录
# 创建一个目录
$ mkdir test
# 删除一个空目录
$ rmdir test
# 强制删除级联目录
$ rm -rf test
-
rm 文件
# 删除文件
$ rm test2
-
rm -R 目录
# 创建级联目录
$ mkdir -p test1/test2
# 递归删除非空目录中的内容
$ rm -R test1
查找
# 在根目录下查找.txt文件
$ find / -name '*.txt'
# 在根目录中搜索文件test, 并显示此文件所在目录的路径名
$ find / -name test
归档
# 将day02文件夹压缩到当前目录下,压缩包名称为xxx.tar.gz
$ tar –zcvf xxx.tar.gz ./c
# tar: Removing leading `/' from member names 使用绝对路径报错
$ tar -zcvPf b.tar.gz /home/c
解档
$ tar -zxvPf xxx.tar.gz
2.4.文件权限
在 Linux 命令中,chmod
用于修改文件或者目录的权限。对于文件或者目录的普通权限,共有 3 种,分别为:
r
:读取;
w
:写入;
x
:执行。
权限范围及代号
文件及目录的权限范围,包括:
u:User,即文件或目录的拥有者;
g:Group,即文件或目录的所属群组;
o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
a:All,即全部的用户,包含拥有者、所属群组以及其他用户。
权限的代号包括:
r:读取权限,数字代号为4;
w:写入权限,数字代号为2;
x:执行或切换权限,数字代号为1;
-:不具任何权限,数字代号为0;
[ +-= ] 含义
+: 增加权限
-: 撤销权限
=: 设定权限
使用chmod修改用户权限
chmod u/g/o/a +/-/= rwx 文件
chmod mode filename :权限模式:
$ chmod g-r file1 //file1文件组员没有读权限
$ chmod u+x,go+r file1 //file1文件用户添加执行权限,组员和其他人有读的权限
$ chmod a=rw file1 //chmod ugo=rw file1 全部用户都有读写权限
$ chmod g+w index.html //为index.html添加同组人权限
$ chmod -R o=rwx dir //级联生效-R
八进制数的形式标识:权限值模式
$ chmod 555 dante //a=rx
$ chmod 644 dante //u=rw,go=r
$ chmod 755 dante //u=rwx,go=rx
$ chmod 777 index.html
$ chmod -R 777 /var/www/html/you //权限把控,信息安全