Linux学习笔记
第一章:Linux概述
优点:
* 内核免费
* 完全开源
* 可自我进行封装系统级程序
虚拟机:
* 为了避免重装系统
虚拟化软件VMware:
* 方便构建虚拟机
开发注意:
* Linux更注重命令行
* Linux图形化界面不稳定
* 命令行减少系统占用
* 跨越Windows和Linux交互不方便,因此需要远程连接,使用finalshell
第二章:Linux基础命令
Linux与Windows的区别:
* Linux没有盘符,只有一个根目录
* Linux路径使用”/“,Windows使用”\“
* ”/usr/local"中的第一个”/“表示Linux系统的根目录
* 示例:/test/hello.txt
Linux命令:
概念:
* 命令行:即Linux终端(Terminal),是一种命令提示符页面
* 命令:即Linux程序,一个命令就是一个程序,无图形化界面
* 注意命令行,命令,文件三者的概念不同
* 命令可简单定义为 command [-options] [parameter]
· command为命令本身
· -options为命令的一些选项,即行为细节
· parameter为命令的参数,用于控制命令的指向目标
· 例如,ls -l /home/local代表以列表形式显示文件夹
ls命令:
ls [-a -l -h] [Linux路径]
· ls 默认平铺用户目录下的文件夹
· ls 命令参数:
-a 表示all,列出所有文件和文件夹,包括隐藏的,“.bin”含有.表示隐藏
-l 表示list,以列表形式表示
-h 表示以容易阅读的形式展示文件大小,必须以-lh,-hl使用
cd、pwd命令:
cd [Linux路径]
· cd 带参数,指向目标路径
· cd 不带参数,回到工作目录
· 作用为改变默认路径
pwd
· 打印工作目录
相对路径、绝对路径和特殊路径:
· 绝对路径:以根目录为起点
· 相对路径:以当前目录为起点
· 特殊路径:
"." 表示当前目录,如 cd./Desktop等于 cd Desktop
".." 表示上一级目录,如 cd ..返回上一级,cd ../.. 返回上两级
"~" 表示HOME目录
mkdir命令:
mkdir [-p] [Linux路径]
-p 可选,自动创建不存在的父目录,适合创建多级文件夹
· 路径必填
touch、cat、more命令:
toucch [Linux路径]
· 作用为创建文件,注意是文件;ls -l,d代表文件夹
cat [Linux路径]
· 作用为读取文件内容,显示全部内容
more [Linux路径]
· 作用为读取文件内容,但是可以翻页
· 空格翻页,q进行推出
cp、mv、rm命令:
cp [-r] 参数1 参数2
-r 可选,用于复制文件夹使用,表示递归
参数1,Linux路径,表示被复制的文件或文件夹
参数2,Linux路径,表示要复制到的目录
mv 参数1 参数2
参数1,Linux路径,表示被移动的文件或文件夹
参数2,Linux路径,表示要移动到到的目录
· 可以用来进行改名
rm [-r -f] 参数1 参数2 …… 参数n
-r 用于删除文件夹
-f 强制删除
参数 代表目标路径
· rm命令支持通配符*, 用来做模糊匹配
· test*,表示匹配任何以test开头的内容
· *test,表示匹配任何以test结尾的内容
· *test*,表示匹配任何包含test的内容
su root (然后输入密码)
· 表示切换根用户,exit可以退回,一定记得退回
· 根用户时,千万别使用以下命令(狗头)
rm -rf /
rm -rf /*
which、find命令:
which 要查找的命令(也就是程序)
· 查找所需要的程序在哪
find 起始路径 -name "被查找的文件名"
或 find 起始路径 -size +|- n[kMG]
+、- 表示大于或者小于
n表示大小数字
kMG,注意k小写,k表示kb,M表示MB,G表示GB
· -name支持通配符
grep、wc命令:
grep [-n] 关键字 文件路径
-n 可选,表示在结果中显示匹配的行的行号
关键字 必填,表示过滤的关键字,带有空格或其他符号,建议使用""包住
文件路劲 必填,表示要过滤的文件路径,可作为内容输入端口
· 注意是过滤文件中的内容
wc [-c -m -l -w] 文件路径
-c 统计bytes数量
-m 统计字符数量
-l 统计行数
-w 统计单词数量
文件路径 被统计的文件,可作为内容输入端口
管道符 "|"
· 作用为将管道左边命令的结果,作为右边命令的输入
echo、tail命令:
echo 要输出的内容
· 类似print语句
` ` 命令用反引号(也称为飘号)
· echo `pwd`表示使用pwd命令
· 键盘上 ~ 所在的按键打出来这个符号 `
>、>>重定向符号
> 将左侧命令的结果,覆盖写入右侧文件
>> 将左侧命令的结果,追加写入到右侧文件
tail [-f -num] [Linux路径]
-f 表示持续跟踪
-num 表示查看尾部多少行,不写默认10行
Linux路径 代表文件路径
·Linux中CTRL+C代表强制停止
vi、vim编辑器:
vim(visual interface)
· vim为vi的加强版本,兼容vi指令
· 可编辑文本,还有shell程序编辑功能
三种工作模式:
命令模式
· 此模式下,所有按键都被认为是命令,以驱动不同的功能
· 此模式下,不可进行自由文本编辑
输入模式
· 即所谓的编辑模式、插入模式
· 可对自由文本内容进行编辑
底线模式
· 以冒号:开始,通常用于文件的保存、退出
vim 文件路径
· 路径不存在,编辑创建的新文件
· 路径存在,直接编辑旧文件
三种工作模式的切换及快捷键如下图
第三章:Linux用户组及权限控制:
Root用户:
· 同Windows或者MacOS,都是权限最大的管理员
su [-] [用户名]
- 可选,表示是否在切换用户后加载环境变量
· 切换后,可以通过exit命令或者CTRL+D退出切换
sudo 其他命令
· 在其他命令前,带上sudo,表示临时赋予这一条命令Root权限
· 需要注意的是,普通用户必须有sudo配置认证
1.进行配置,通过vi sudo命令,会自动打开vi编辑器的:/etc/sudoers
2.在文件最后添加
用户名 ALL=(ALL) NOPASSWORD:ALL
3.ESC, 然后通过输入:wq保存
用户、用户组:
· Linux的权限管控分为用户和用户组
用户组管理:
· 需要在Root权限下执行
groupadd 用户组名
· 创建用户组
groupdel 用户组名
· 删除用户组
用户管理:
创建用户:
useradd [-g -d] 用户名
-g 指定用户组,不指定的话,会创建同名用户组并自动加入,-g的前提是组存在
-d 指定用户HOME路径,不指定,HOME目录默认在:/home/用户名
删除用户:
userdel [-r] 用户名
-r 删除用户的home目录,不使用-r,删除用户时,home目录保留
查看用户所属组:
id [用户名]
用户名 提供则查看用户,不提供则查看自身
修改用户所属组:
usermod -aG
查看信息:
getent passwd
· 查看系统全部用户信息
getent group
· 查看系统全部组信息
权限信息解读:
权限细节:
权限信息:
RWX信息解读:
权限信息修改:
· 只有文件、文件夹的所属用户或者Root用户才可以修改
chmod [-R] 权限 文件或者文件夹路径
-R 对文件内的全部内容应用相同的操作
· 例如,chmod u=rwx, g=rx, o=x hello.txt
· 其中,u表示user所属用户权限,g表示group权限,o表示other其他用户权限
· 其中可通过数字快速修改,如,chmod 751 hell.txt
chown命令:
· 修改文件、文件夹的所属用户和用户组
· 普通用户无法修改,只能root用户
chown [-R] [用户][:][用户组] 文件或者文件夹路径
-R 对文件内的全部内容应用相同的操作
用户 修改所属用户
用户组 修改所属用户组
: 用于分割用户和用户组
第四章:Linux快捷键、系统信息、系统监控、文件上传和下载:
快捷键:
CTRL+C快捷键:
· 可以强行停止程序,也可以跳过输入错误的命令
CTRL+D快捷键:
· 退出账户登录或者某些特定程序的专属页面,例如Python
· 不能用于vi/vim
history命令:
· 查看历史输入的命令
· 可结合grep命令进行过滤
![命令前缀]:
· 自动搜索并执行匹配前缀的命令(由新到旧)
· 例如,如果输入过python命令,可以用!p去执行过去的python命令,p是你想要匹配的前缀
CTRL+R快捷键:
· 敲击后,可以输入内容,然后系统去匹配与内容相关的历史命令
光标移动快捷键:
CTRL+A 跳到命令开头
CTRL+E 跳到命令结尾
CTRL+键盘左键 向左跳一个单词
CTRL+键盘右键 向右跳一个单词
CTRL+L快捷键 或者 clear命令:
· 清理屏幕输出
Linux安装软件:
· yum为RPM包软件管理器,自动化安装Linux软件,自动解决依赖问题
yum [-y] [install | remove | search] 软件名称
-y 自动确认,无需手动安装
install 安装
remove 卸载
search 搜索
· yum命令需要root权限,可以切换用户或者使用sudo命令
· Linux系统中的软件安装包大多数为.rpm格式
· 注意Ubuntu使用apt命令,CentOS使用yum命令
apt [-y] [install | remove | search] 软件名称
· 除此之外基本没有区别
控制软件启动和关闭:
· systemctl命令控制启动、停止、开机自启
systemctl [start | stop | status | enable | disable] 服务名
start 启动
stop 关闭
status 查看状态
enable 开启开机自启
disable 关闭开机自启
软链接:
· 类似Windows的快捷方式,指向原本的文件或者文件夹
ln -s 参数1 参数2
-s 创建软链接
参数1 被链接的文件或文件夹
参数2 要链接去的地方
日期和时区:
date [-d] [+格式化字符串]
-d 按照给定的字符串显示日期,一般用于日期计算
%Y 年
%y 年份后的两位数字
%m 月份
%d 日
%H 小时
%M 分钟
%S 秒
%s 自1970-01-01 00:00:00 UTC到现在的秒数
· 例如, date +%Y-%m-%d 输出年月日
· 例如, date -d "+1 day" +%Y-%m-%d 原先基础山加一天
· -d支持的时间标记有year、month、day、hour、minute、second
Linux要修改时区符合显示生活时间
· 首先,rm -f /etc/localtime
· 然后,ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
· 注意,需要root权限
ntp程序自动校准
· 启动ntpd服务后会定期校准时间
IP地址、主机名:
lo地址:
· 此IP地址代表本机
0.0.0.0:
· 直到本机或者端口绑定中确定绑定关系
主机名:
· 通过hostname命令查询
修改主机名:
hostnamectl set-hostname 主机名
固定IP:
虚拟机VMware中:
1.在VMware Workstation中配置IP地址网关和网段
2.在linux中配置
· vim /etc/sysconfig/network-scripts/ifcfg-ens33
· BOOTPROTO 中dhcp改static
· 新添加IPADDR="你想要的IP地址"(IPADDR设置为你想要的IP地址)
· IPADDR="192.168.88.128"
NETMASK="255.255.255.0"
GATEWAY="192.168.88.2"
DNS1="192.168.88.2"
· systemctl restart network重启就OK了
网络传输
ping [-c num] ip或者主机名
-c 检查的次数,不写默认无数次
· 要下载东西统一到清华镜像源去下载,否则有些软件奇慢无比
· https://mirrors.tuna.tsinghua.edu.cn/
wget [-b] url
-b 后台下载,会写日志到wgee-log文件
curl [-O] url
-O 用于下载文件
· 发起网络请求
端口:
nmap IP地址
· 可以查看IP地址的端口
· 非系统自带
netstat -anp | grep 端口号
· 查看指定端口
· 非系统自带
进程管理:
ps [-e -f]
-e 显示出全部的进程
-f 以完全格式化的形式展示信息
· 一般来说,固定使用ps -ef
kill [-9] 进程ID
-9 表示强制关闭
主机状态:
top [-p -d -c -n -b -i -u]:
-p 只显示某个进程的信息
-d 设置刷新时间,默认是5s
-c 显示产生进程的完整命令
-n 指定刷新次数
-b 以非交互式全屏模式运行,以批次方式执行top,一般配合-n指定输出次数
-i 不显示任何闲置(idle)或无用(zombie)的进程
-u 查找特定用户启动的进程
· 查看CPU、内存使用情况
· 命令详解和交互式选项如下:
df [-h]
-h 人性化显示
· 显示磁盘信息
iostat [-x][num1][num2]
-x 显示更多信息
num1 数字,刷新间隔
num2 数字,刷新几次
sar -n DEV num1 num2
-n 查看网络,DEV表示查看网络接口
num1 刷新间隔
num2 刷新次数
环境变量:
PATH变量:
· 这个变量存储的是每次我们要执行的命令的地址,如执行cd,则会到
· PATH=/home/cornly/python3/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/cornly/.local/bin:/home/cornly/bin
· 这个路径去找是否有cd这个命令
echo $PATH 或者 echo ${PATH}ABC
· 取变量,如 echo $PATH
得/home/cornly/python3/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/cornly/.local/bin:/home/cornly/bin
· {}表示找ABC这个量
Linux环境变量设置(很重要):
上传和下载:
压缩和解压:
Linux常用zip、tar、gzip格式压缩包
tar [-c -v -x -f -z -C] 压缩得到的文件名字 参数1 参数2 参数3 …… 参数n
-c 创建压缩文件
-v 显示压缩、解压过程
-x 解压模式
-f 要创建或者解压的文件,位置必须处于最后一个
-z gzip模式,不使用则是tar模式,若使用,一般放在第一位
-C 选择解压的目的地,用于解压模式
zip [-r] 压缩得到的文件名字 参数1 参数2 参数3 …… 参数n
-r 包含文件夹时需要带上,不包含时可不写
unzip 要解压文件的名字 [-d] 参数
-d 指定的解压位置
参数 位置
Python安装及远程开发:
Python安装:
· 安装的话可以参考别人的链接,如下:
https://zhuanlan.zhihu.com/p/469420901?utm_id=0
远程开发:
· 远程部署直接SSH上找Linux上的python解释器就好了
· 但是要注意请直接找到最开始的python解释器,而不是软链接后的那个
· 因为可能是链接的缘故,远程开发使用软链接的快捷程序是识别不到里面的包和模块
· 所以只能选中最开始的那个解释器
pycharm远程开发:
· 请注意如果要执行文件,一定需要先上传到Linux本地,再执行,否则是没有文件的
· /home/cornly/python3/bin/python3.8 /tmp/pycharm_project_531/Except.py
· 上面一行代表的是左边是python解释器,右边是你需要上传文件的地址,531为代号
· 尽量使用root或者高权限用户,不然文件有时候上传会无法更新
· 远程部署直接SSH上找Linux上的python解释器就好了
· 但是要注意请直接找到最开始的python解释器,而不是软链接后的那个
· 因为可能是链接的缘故,远程开发使用软链接的快捷程序是识别不到里面的包和模块
· 所以只能选中最开始的那个解释器
pycharm远程开发:
· 请注意如果要执行文件,一定需要先上传到Linux本地,再执行,否则是没有文件的
· /home/cornly/python3/bin/python3.8 /tmp/pycharm_project_531/Except.py
· 上面一行代表的是左边是python解释器,右边是你需要上传文件的地址,531为代号
· 尽量使用root或者高权限用户,不然文件有时候上传会无法更新