Linux学习笔记

一.Linux基础

1.1 操作系统的作用

没有安装操作系统的计算机,通常被称为裸机
如果想在裸机上运行自己所编写的程序,必须用机器语言书写程序
如果计算机上安装了操作系统,就可以在操作系统上安装支持的高级语言环境,用高级语言开发程序


操作系统的作用:

●直接控制不同的硬件进行工作

●把操作硬件的方法封装成一个又一个的系统调用,供其他成员直接访问

1.2 主流操作系统

根据应用领域不同分为四类操作系统
★桌面操作系统
★服务器操作系统
★嵌入式操作系统
★移动设备操作系统

1>桌面操作系统
Windows系列:用户群体大/安全性稳定性不好
MacOS:适用于开发人员/基于Unix
Linux:应用软件少
2>服务器操作系统:
Linux:安全、稳定、免费。占有率高
Windows Server:付费。占有率低
3>嵌入式操作系统
Linux:
4>移动设备操作系统
ios:
Android(基于Linux)

1.3 虚拟机

虚拟机:指通过软件模拟的具有完整硬件系统功能的。运行在一个完全隔离环境中的完整的计算机系统

1.4 Linux发展历程

Unix 肯汤普逊 丹尼斯里奇 星际旅行游戏
Linux 林纳斯 为访问大学主机上的新闻和邮件

1.5 Linux内核版本

●内核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序。它提供了一个在裸设备与应用程序之间的抽象层
●终端命令->系统调用->硬件

1.6 Linux文件和目录结构

单用户操作系统和多用户操作系统
●单用户操作系统:指一台计算机在同一时间只能由一个用户使用,一个用户独自享用系统的全部硬件和软件资源
Windows XP之前的版本都是单用户操作系统
●多用户操作系统:指一台计算机在同一时间可以由多个用户使用。多个用户共同享用系统的全部硬件和软件资源
Unix和Linux的设计初衷就是多用户操作系统

1.7 常用linux终端命令

在职场中,大量的服务器维护工作都要在远程通过SSH客户端来完成。并没有图形界面、所有的维护工作都需要通过命令来完成
Ctrl+shift++ 放大终端窗口的字体显示
Ctrl+- 缩小终端窗口的字体显示

命令 对应英文 作用
ls list 查看当前文件夹下的内容
pwd print work directory 查看当前文件夹
cd[目录名] change directory 切换文件夹
touch[文件名] touch 如果文件不存在,新建文件
mkdir[目录名] make directory 创建目录
rm[文件名] remove 删除指定的文件名
clear clear 清屏

自动补全:在敲出文件/目录/命令的前几个字母之后,按下tab键,ctrl+c退出选择

1.8 终端命令

终端命令格式

Command [-options] [parameter]
Command:命令名,相应功能的英文单词或单词的缩写
[-option]:选项,可用来对命令进行控制,也可以省略
Parameter:传给命令的参数。可以是一个、两个或者多个
[ ] 代表可选
删除文件夹命令 rm -rf/-r [文件名]

查询命令帮助信息
command --help

mkdir --help

man command

man mkdir

1.9 文件与目录常用命令

●查看目录内容 ls 类似于Dos下的dir命令,[.文件名]隐藏文件
ls -a 显示隐藏文件 .当前所在目录 ..显示上级目录
ls -l 以列表形式显示文件的详细信息
ls -h 配合-l以人性化形式显示文件大小(ls -l -h = ls -lh)
尧泽艾拍太

通配符
*任意多个字符
?代表任意一个字符
[]提取匹配的字符组 lsnbsp;[1234]23.txt   ls [1-3]23.txt


●切换目录     cd

cd/cd ~    切换到当前用户的主目录

cd -    在最近两次工作目录切换


●创建和删除操作

touch
rm     rm删除的目录不能恢复
rm -f    强制删除,忽略不存在的文件,无须提示
rm -r    递归地删除目录下的内容,删除文件夹时必须加此参数

mkdir
mkdir -p 可以递归创建目录 mkdir -p a/b/c/d


●拷贝和移动文件

tree [目录名]  以树状图列出文件目录的结构
tree -d 只显示目录不显示文件

cp 源文件 目标文件   复制文件或目录
cp -I   覆盖文件前提示

mv 源文件 目标文件  移动文件/目录或目录重命名


●查看文件内容

cat 文件名  查看文件内容、创建文件、文件合并、追加文件内容等功能
cat -b 文件名   对非空行显示行号
cat -n 文件名  对输出的所有行编号

more 文件名   分屏显示文件内容
grep 搜索文本文件名  搜索文本文件内容

grep as 123.txt

 -n 显示匹配行及行号

grep -n as 123.txt

 -v 显示不包含匹配文本的所有行

grep -nv as 123.txt

 -I 忽略大小写

常用的搜索模式
^a 行首,搜索以a开头的行
Ke$ 行尾,搜索以ke结束的行


●其他 echo echo会在终端中显示参数指定的文字,通常会和重定向联合使用   重定向>和>> 将本应显示在终端的内容输出/追加到指定的文件中  >表示输出 >echo hello python > a >>表示追加 管道|  将一个命令的输出通过管道作为另一个命令的输入   常用的管道命令有: >more: ls -lha ~ | more >grep: ls -lha ~| grep Do

1.10 关机/重启

shutdown 选项 时间   关机/重新启动
shutdown  命令可以安全关闭或者重新启动
  -r  重新启动 不指定选项和参数,默认表示1分钟之后关闭电脑
  -c  取消关机计划

常用命令
重新启动操作系统,其中now表示现在

shutdown -r now

立刻关机,其中now表示现在

shutdown now

系统在今天的20:30会关机

shutdown 20:30

系统再过十分钟自动关机

shutdown +10

1.11 查看和配置网卡信息

ifconfig  查看/配置计算机当前的网卡配置信息
ping  检测到目标ip地址的连接是否正常

127.0.0.1  用于本地回环测试
网卡(我们可以把电脑比作电话,网卡相当于SIM卡,IP地址相当于电话号码)
网卡是一个专门负责网络通讯的硬件设备
IP地址是设置在网卡上的地址信息

1.12 远程登录和复制文件(Windows没默认安装)

ssh用户名@ip secure shell 关机/重新启动
scp 用户名@ip:文件名或路径 用户名@ip文件名或路径 secure copy 远程复制文件

ssh基础(数据传输是加密、压缩的)
  在linux中SSH是非常常用的工具,通过ssh客户端我们可以连接到运行了SSH服务器的远程机器上
  SSH客户端是一种使用Secure shell(SSH)协议连接到远程计算机的软件程序
  SSH是目前可靠、专门为远程登录会话和其他网络服务提供安全性的协议

  域名和端口号

域名:由一串用点分隔的名字组成,例如:www.itcast.cn(是IP地址的别名,方便用户记忆)
端口号:通过ip地址找到计算机,通过端口号可以知道计算机上运行的应用程序(访问服务器时候没有指定端口号,使用默认的端口号)

ssh客户端的简单使用
◆使用exit退出当前用户的登陆
◆ssh这个终端命令只能在Linux或者Unix系统下使用
◆如果在windows系统中,可以安装putty,或者Xshell客户端软件即可

ssh [-p port] user@remote ssh -p 22 python@目标ip

user:是在远程计算机上的用户名,如果不指定的话默认为当前用户
remote:是远程机器的地址,可以是IP/域名,或者是后面会提到的别名
port:是SSH Server监听的端口

Windows下SSH客户端的安装
![Putty和Xshell]:{http://xshellcn.com}

SSH高级(有关SSH配置信息都保存在用户家目录下的.ssh目录下)ls -alh known_host
★免密码登陆 **本地使用私钥对数据进行加密/解密 服务器使用公钥对数据进行加密/解密
步骤:
   ■配置公钥
   执行ssh-keygen即可生成SSH钥匙,一律回车即可—生成两个文件id-rsa.pub公钥 id-rsa私钥
   ■上传公钥到服务器
   执行ssh-copy-id -p port user@remote,可以让远程服务器记住我们的公钥

★配置别名
每次都输入ssh -p port user@remote,时间久了就会觉得很麻烦,特别是当user,remote和port都得输入,而且还不好记忆
而配置别名可以让我们进一步偷懒,譬如用:ssh mac来替代上面这么一长串,那么就在~/.ssh/config里面追加以下内容(创建config文件):
Host mac
  hostName ip地址
  user itheima
  port 22
保存之后,即可用ssh mac实现远程登录了,scp同样可以使用

scp的使用
★scp就是secure copy,是一个在Linux下用来进行远程拷贝文件的命令
★它的地址格式和ssh基本相同,需要注意的是,在指定端口时用的是大写的
-P而不是小写的

把本地当前目录下的01.py文件复制到远程家目录的Desktop/01.py

scp -P port 01.py user@remote:Desktop/01.py

把远程家目录下的Desktop/01.py文件复制到本地当前目录下的01.py

scp -P port user@remote:Desktop/01.py 01.py

加上-r选项可以传送文件夹
把当前目录下的demo文件夹复制到远程家目录下的Desktop

scp -r demo user@remote:Desktop scp -P 22 -r python@remote:Desktop demo

把远程家目录下的Desktop复制到当前目录下的demo目录

scp -r user@remote:Desktop demo

1.13 用户权限相关命令

在Linux系统中,无论是本机或是远程登录系统。每个系统都必须拥有一个账号,并且对于不同的系统资源拥有不同的使用权限
在Linux系统中,可以指定每一个用户针对不同的文件或者目录的不同权限
★对文件/目录的权限包括

序号 权限 缩写 数字代号
01 read 4
02 write 2
03 执行 excute 1

★组
为了方便用户管理,提出了组的概念
在实际应用中,可以预先针对组设置好权限,然后将不同的用户添加到对应的组中,从而不用为每一个用户设置权限

文件权限示例/目录权限示例

目录 拥有者权限 主权限 其他用户权限
- r w - r w - r - -
d r w x r w x r - x

硬链接数:有多少种途径能够访问指定的目录,子目录越多硬链接数越多
拥有者:家目录下文件/目录的拥有者通常就是当前用户

chmod简单实用
  chmod可以修改用户/组对文件/目录的权限
  chmod +(增加权限)/-(减少权限)rwx 文件名/目录名

linux终端执行文件.(当前目录)/01.py
执行01.py文件,先设置文件为可执行权限chmod +x 01.py
01.py文件

./01.py

在Linux终端中,要想针对目录执行终端命令,必须赋可执行权限,可读权限代表打开文件权限,可写表示修改文件权限

超级用户
●Linux系统中的root账号通常用于系统的维护和管理,对操作系统的所有资源具有所有访问权限

sudo
●su是substitute user的缩写,表示使用另一个用户的身份
●sudo命令用来以其他身份来执行命令,预设的身份是root
●用户使用sudo时,必须先使用密码,之后有5分钟的有效期限,超过期限则需要重新输入密码
若未经授权的用户企图使用sudo,则会发出警告邮件给管理员

1.14 组管理终端命令

创建组/删除组的终端命令都需要通过sudo执行

序号 命令 作用
01 groupadd 组名 添加组
02 groupdel 组名 删除组
03 cat/etc/group 确认组信息
04 chgrp 组名 文件/目录名 修改文件/目录的所属组

演练目标
在python用户的桌面文件夹下创建python学习目录

mkdir python学习

新建dev组

sudo groupadd dev

将python学习目录的组修改为dev

sudo chgrp -R dev Python学习/

1.14用户管理 终端命令

创建用户/删除用户/修改其他用户密码的终端命令都需要通过sudo执行

序号 命令 作用 说明
01 useradd -m -g 组 新建用户名 新建新用户 ●-m自动建立用户家目录 ●-g 指定用户所在的组,否则会建立一个和用户同名的组
02 passwd 用户名 设置用户密码 如果是普通用户,直接用passwd可以修改自己的账户密码
03 userdel -r 用户名 删除用户 -r 选项会自动删除用户家目录
04 cat /etc/passwd ' ' grep 用户名 确认用户信息

■创建用户时,如果忘记添加-m选项指定新用户的家目录—最简单的方法就是删除用户,重新创建
■创建用户时,默认会创建一个和用户名同名的组名
■用户信息保存在/etc/passwd文件中

1.15 查看用户信息

序号 命令 作用
01 Id[用户名] 查看用户UID和GID信息
02 Who 查看当前所有登陆的用户列表
03 Whoami 查看当前登陆用户的账号名

id python

用户信息保存在/etc/passwd文件中
组信息保存在/etc/group文件中

passwd文件
/etc/passwd文件存放的是用户信息,由六个分号组成的七个信息,分别是
1.用户名
2.密码(x,表示加密的密码)
3.UID(用户标识)
4.GID(组标识)
5.用户全名或本地账号
6.家目录
7.登陆使用的shell命令,就是登陆以后,使用的终端命令。ubuntu默认是dash

1.16 usermod命令

usermod 可以用来设置用户的主题/附加组 和登陆shell
主组:通常在新建用户时指定,在etc/passwd的第四列GID所对应的组
附加组:在etc/group中最后一列表示该组的用户列表,用于指定用户的附加权限
设置了用户的附加组之后,需要重新登陆才能生效
修改用户的主组(passwd 中的 GID)

usermod -g 组 用户名

修改用户的附加组

usermod -G 组 用户名

修改用户登录Shell

usermod -s /bin/bash

注:默认使用useradd添加的用户是没有权限使用sudo以root身份执行命令的,可以使用以下命令,将用户添加到sudo附加组中

1.17 which命令(查看所用命令所在位置)

■etc/passwd是用于保存用户信息的文件
■/usr/bin/passwd是用于修改用户密码的程序
which ls

 bin和sbin
  ◆在linux中,绝大多数可执行文件都是保存在/bin、/sbin、/usr/bin、/usr/sbin
  ◆/bin(binary)是二进制执行文件目录,主要用于具体应用
  ◆/sbin(system binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理
  ◆/usr/bin(user commands for applications)后期安装的一些软件
  ◆/usr/sbin(super user commands for applications)超级用户的一些管理程序
cd这个终端命令是内置在系统内核中的,没有独立的文件,因此用which无法找到cd命令的位置

1.18 切换用户

序号 命令 作用 说明
01 su -用户名 切换用户,并且切换目录 可以切换到用户家目录,否则保持位置不变
02 exit 退出当前账号

权限不够,使用su命令切换到有权限的用户,exit退出该用户返回原来用户,再次exit退出shell
su - 不接用户名 切换到root用户,不安全

su: Authentication failure

1.19 修改文件权限

序号 命令 作用
01 chown 修改拥有者
02 chgrp 修改组
03 chmod 修改权限

修改文件目录的拥有者

chown 用户名 文件名|目录名 sudo chown zhangsan python学习/ --修改python学习目录的所有者
递归修改文件目录的组
chgrp -R 组名 文件名|目录名 -R可以递归修改该目录下的子目录及文件

递归修改文件权限

chmod -R 755 文件名|目录名
chmod在设置权限时,可以简单的用三个数字进行表示,分别对应拥有者/组和其他用户的权限

拥有者 其他
r w x r w x r w x
4 2 1 4 2 1 4 2 1

1.20 系统信息相关命令

方便通过远程终端维护服务器时,查看服务器上当前系统日期和时间/磁盘空间 占用情况/程序执行情况

时间和日期

 ■date
 ■cal

序号 命令 作用
01 date 查看系统时间
02 cal calendar查看日历,-y选项可以查看一年的日历

磁盘和目标空间

 ■df
 ■du

序号 命令 作用
01 df -h disk free显示磁盘剩余空间
02 du -h [目标名] disk usage显示目标下的文件大小

-h 以人性化的方式显示文件大小

进程信息 所谓进程通俗的说就是当前正在进行的一个程序

ps aux process status查看进程的详细状况
  ps默认只会显示当前用户通过终端启动的应用程序

ps选项说明功能

选项 含义
a 显示终端上的所有进程。包括其他用户的进程
u 显示进程的详细状态
x 显示没有控制终端的进程(显示所有正在执行的程序)

top  动态显示运行中的进程并且排序
  要停止top可以直接输入q
kill [-9] 进程代号  终止指定代号的进程,-9表示强行终止
使用kill命令时,最好只终止由当前用户开启的进程,而不要终止root身份开启的进程,否则可能导致系统崩溃

1.21 其他命名

查找文件

find
 find命令功能非常强大,通常用来在特定的目录下搜索符合条件的文件

序号 命令 作用
01 find[路径] -name “*.py” 查找指定路径下扩展名是”.py”的文件,包括子目录

如果省略路径,表示在当前文件夹下查找
之前学习的通配符,在使用find命令时同时可用

搜索在桌面目录下,文件名包含1的文件

find Desktop/ -name “1

软链接

ln

序号 命令 作用
01 ln -s 被链接的源文件链接文件 建立文件的软链接,用通俗的方式讲类似于windows下的快捷方式

没有-s选项建立的是一个硬链接文件 (硬链接):链接的文件删除不会影响源文件

两个文件占用相同的硬盘空间,工作中几乎不会建立文件的硬链接
源文件要使用绝对路径,不能使用相对路径没这样可以方便移动链接文件后,仍然能够正常使用
Linux学习笔记_第1张图片

在Linux中文件名和文件的数据是分开存储的

演练目标
将桌面目标下的01.py移动到demo/b/c目录下

mv 01.py demo/b/c

在桌面目录下新建01.py的软链接FirstPython的软链接

相对路径:ln -s demo/b/c/01.py FirstPython
绝对路径:ln -s /home/python/Desktop/demo/b/b/01.py FirstPython

将FirstPython移动到demo目录下,对比使用相对路径和决定路径的区别

mv First* demo

打包和压缩

tar
在不同的操作系统中,常用的打包压缩方式是不同的,windows常用rar;mac常用zip,Linux常用tar.gz打包解包
  tar是Linux中最常用的备份工具,此命令可以把一系列文件打包到一个大文件中们也可以把一个
打包的大文件恢复成一系列文件,不负责压缩
■tar的命令格式如下:
打包文件

tar -cvf 打包文件.tar 被打包的文件/路径……

解包文件

tar -xvf 解包文件.tar

tar选项说明

选项 含义
c 生成档案文件,创建打包文件
x 解开档案文件
v 列出归档解档的详细过程,显示进度
f 规定档案文件名称,文件后面一定是.txt文件,所以必须放选项最后

f选项必须放在最后,其他选项可以随意

打包解包演练
删除桌面下所有的内容

cd Desktop->rm -r *

在桌面下新建三个空白文件 01.py、02.py、03.py

touch 01.py
touch 02.py
touch 03.py

将这三个文件打一个py.tar的包

tar -cvf py.tar 01.py 02.py 03.py

新建tar目录,并且将py.tar移动到tar目录下

mkdir tar
mv py.tar tar

解包py.tar

tar -xvf py.tar

压缩/解压缩

 ■gzip
  tar与gzip命令结合可以使用实现文件打包和压缩
  tar只负责打包文件,包不压缩
  用gzip压缩tar打包后的文件,其扩展名一般用xxx.tar.gz
 在Linux中,最常见的压缩文件格式就是XXX.tar.gz

 在tar命令中有一个选项-z可以调用gzip,从而可以方便的实现压缩和解压缩的功能

命令格式如下
压缩文件

tar -zcvf 打包文件.tar.gz 解压缩的文件/路径……

解压缩文件

tar -zxvf 打包文件.tar.gz

解压缩到指定路径

tar -zxvf 打包文件.tar.gz -C 目标路径

选项 含义
-c 解压缩到指定目录。注意:要解压缩的目录必须存在

 ■bzip2(two)
  tar与bzip2命令结合可以使用实现文件打包和压缩(用法和gzip一样)
  tar只负责打包文件,但不压缩
  用bzip2压缩tar打包后的文件,其扩展名一般用XXX.tar.bz2
  在tar命令中有一个选项-j可以调用bzip2,从而可以方便的实现压缩和解压缩的功能

命令格式如下
压缩文件

tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径……

解压缩文件

tar -jxvf 打包文件.tar.bz2

软件安装

 apt -get
 apt是advanced Packaging.Tool,是linux下的一款安装包管理工具
 可以在终端中方便的安装/卸载/更新软件包
安装软件

$ sudo apt install 软件名

卸载软件

$ sudo apt remove 软件名

更新已安装的包

$ sudo apt upgrade

  ■安装演练
一个小火车提示

$ sudo apt install sl
$ sl

一个比较漂亮的负责当前进程排名的软件

$ sudo apt install htop

 ■配置软件源
  ◆如果希望在ubuntu中安装软件更加快速,可以通过设置镜像源,选择一个访问网速更快的服务器来提供软件下载/安装服务
  ◆更换服务器之后,需要一个相对比较长时间的更新过程,需要耐心等待。更新完成后,再安装软件都会从新设置的服务器下载软件了
所谓镜像源,就是所有服务器的内容都是相同的(镜像),但是根据所在位置不同,国内服务器通常速度会更快一些
Linux学习笔记_第2张图片

图形界面设置镜像源
Linux学习笔记_第3张图片

你可能感兴趣的:(Linux学习笔记)