linux学习笔记

前言

Linux系统以目录管理系统,根目录是/,往下有bin、root、home等文件夹,超级用户的工作目录是/root, 普通用户的一般是/home/用户名 。各种外接设备要依赖目录进行管理,目录采用挂载来管理外接设备。e.g: 插入u盘后,u盘的文件夹挂载在/media文件夹,该文件夹下的u盘文件夹相当于win的快捷方式,只是一个逻辑映射而非物理内存上的映射。
在VMware中安装centos7,测试学习。
学习重点在标*章节,注意在实践中掌握知识点。

1 VIM编辑器*

1.1 一般模式

执行 vim 文件 后进入一般模式,用于复制、粘贴、删除。
p.s. 大写字母就是 shift+字母

符号意义
gg / shift + h光标移动至文件开头
shift + g/l光标移动至最后一行的开始
数字 + shift + g光标移动至第数字行开头
$光标移动至行末尾
^光标移动至行开头
w光标移动至下一个
e光标移动至下一个词尾
b光标移动至上一个词头
u撤销
x剪切光标所指字符
shift + x删除当前光标前面那个字符
r改变光标所指字符
shift + r更改光标以后的所有字符
yy复制光标所在行
p粘贴到光标下一行位置
dd删除
组合命令意义
y + 数字 + y复制几行
y$复制光标至行尾
y^复制行头至光标前一个字符
yw复制光标至词尾
d + 数字 + d删除几行
d$删除光标至行尾
d^删除行头至光标
dw删除从光标至词尾

1.2 插入模式

一般模式按i进入插入模式,esc退出插入模式

符号意义
i常用 光标前插入
I光标所在行头插入
a光标后插入
A光标所在行尾插入
o常用 光标下面一行
O光标上前一行插入

1.3 命令模式

一般模式 按 : 或 / 进入该模式, esc退出模式

命令意义
:w保存
:q退出
:wq保存并退出
:q!不保存强制退出
/词查找词,n下一个,N上一个
:范围s/目标/替换/标志在范围内根据标志进行替换。范围:%-全部;n1,n2-行数范围; 无-当前行。s字符。标志:g-全部; i-忽略大小写;没有/标志则替换首个
:%d删除全部内容
:set nu/nonu显示/ 隐藏行号
:noh取消高亮

2 网络配置*

2.1 检查网络联通

ping ip-address

windows ip address: win+r -> cmd -> ipconfig 查看连接的适配器显示的ip
Linux ip address: 设置->网络->设置 或 终端->ifconfig

2.2 网络连接方式

1.桥接 虚拟机直接连接外部网络,对外部可见,主机相当于网桥
2.NAT网络地址转换 虚拟机和主机构建一个专用网络,虚拟机可以访问外部网络,对外部不可见
3.仅主机 虚拟机无法和外部通信

2.3 更改虚拟机ip

虚拟机网络默认DHCP自动分配,每次分配新ip都得ping连通性。虚拟机ip改成静态分配可以减少连通性测试。
首先在windows中: 网络和Internet -> 状态 -> 更改适配器选项 -> VMware Network Adapter VMnet8 -> 状态 -> 详细信息 中查看虚拟机的IPv4。
接着虚拟机终端中: vim /etc/sysconfig/network-scripts/ifcfg-ens33 -> 修改BOOTPROTO=“static” -> 添加 IP、网关、DNS。

IPADDR=192.168.xxx.100
GATEWAY=192.168.xxx.2
DNS1=192.168.xxx.2

p.s. 这里的ip地址根据子网掩码写,最后的100可以写成任意。网关、dns同理。
最后执行 service network restart 重启网络。

2.4 主机-ip映射

在hosts文件中修改。
主机名改为xxx - hostnamectl set-hostname xxx
映射 vim /etc/hosts -> 添加 ip hostname
主机 C:\Windows\System32\drivers\etc的hosts末尾追加虚拟机中的几条映射,此时测试连通性直接ping hostname即可。

2.5 远程登录

ssh username@hostname

首次输入密码后,后续免密登录。缺点是功能少。
工具Xshell,新建会话 -> 设置连接名,默认主机名=连接名 -> 输入用户名和密码 -> 连接。
工具Xftp传输文件,建立连接后直接拖动文件就可以传输主机和虚拟机的文件。

3 系统管理

服务service - 常驻内存的进程,生命周期长
进程process - 正在运行的程序或命令

3.1 service管理

systemctl start| stop| restsrt| status 服务名
查看服务 /usr/lib/systemd/system
p.s. centos6 的network和centos7的 NetworkManager服务重复,运行NetworkManager服务即可。
centos7 设置服务自启动 setup
查看服务 systemctl list-unit-files
查看级别 systemctl get-default
关闭自启动 systemctl disable 服务名

3.2 进程级别

centos6

级别权限
0停机
1单用户,root,禁止远程
2多用户,不支持网络和NFS网络文件系统
3常用 多用户,有NFS,登陆后进入控制台命令行模式
4无意义,保留
5常用 登陆后进入GUI
6重启

centos7
multi-user.target 等价于上面3:多用户有网,无GUI
graphical.target 等价于级别5: 多用户有网,有GUI

3.3 关机重启

命令意义
shutdown [option]默认1min后关机, option是数字 几分钟后关机,now 立刻,时间 按时间,-c 取消, -H 停机, -r 重启
sync数据从内存同步到硬盘
halt停机关闭系统,不断电
poweroff断电
reboot重启

4 Shell

Shell BASH命令行解释器。

4.1 Shell脚本

Shell接收应用程序、用户命令,调用OS内核;编程语言,可以把命令写进文件,脚本执行。
用户一般操作外层应用程序,通过Shell和Linux内核交互。
*.sh文件,开头为#!/bin/bash,后接注释、命令。

4.1.1 脚本执行

  • sh/bash 脚本 (没有x权限也可)
  • 带路径的脚本 (前提:有x可执行权限)
  • source/. 脚本 (不启动子Shell直接执行命令-可以更改环境变量,上两个启动子Shell)

4.1.2 变量

局部变量:只对当前Shell窗口有效。
全局:对当前Shell和其子窗口有效。
系统变量 e.g: $HOME

自定义变量

  • 定义:varname=val 没有空格,空格需要引使用号
  • 变成全局变量:export 变量
  • 类型:默认String
  • 定义只读变量:readonly varname=val 不能使用unset
  • 撤销变量:unset varname
  • 使用变量值要在前加$ e.g: echo $a

特殊变量

变量作用
$n数字代表命令后的第几个参数,0是命令,>9加大括号 e.g: $2 ${13}。
$#获取输入参数个数
$*以整体形式获取所有参数 e.g: abcefg
$@以单个形式获取所有参数 e.g: [abc, efg]
$?获取上一次命令状态0-255。 0表示正确。

运算符
$[] 或 $(())
此时其中的算式不需要转义。 e.g: a=$1*$2非法, a= $[$1*$2]才表示乘。

命令替换
$()
e.g: a= $( cd $1) 表示把括号内命令结果赋值给a

4.1.3 条件判断

test 条件 / [ 条件 ] -> echo $? 值为0意为条件True。 []中为空是False,注意这里的空格。

判断大小 -gt大于 -ge大于等于 -lt小于 -le小于等于 -eq等于 -ne不等于
判断权限 -r读 -w写 -x执行
判断文件 -e文件是否存在 -f文件是否存在且是文件 -d文件是否存在且是目录
&& 上一命令执行成功才执行下一条 ||上一命令不成功才执行下一条。e.g: 条件 && opa || opb 表示条件T就执行opa,否则执行opb,类似三元 a>b ? a=2 : b=2

4.1.4 流程控制

4.1.4.1 if
  • 单分支
    if [条件]
    then

    else

    fi

  • 多分支
    if [条件]
    then

    elif [条件]
    then

    else

    fi

if语句每一个条件的code都写在then和elif或else中。else项没有then直接写code。

4.1.4.2 case

case $var in
“val1”)
code
;;
“val2”)
code
;;

*)
default
;;
esac

*)是默认情况, 其他每一个值都有)和结束时的双分号;;
结束语esac

4.1.4.3 for
  • for (( 初始;条件;变量变化 ))
    do

    done

  • for var in val1 val2 val3…
    do

    done
    这里的值列表用空格隔开

4.1.4.4 while

while [条件]
do

done

4.1.5 读取控制台输入

read [op] 参数
读取控制台输入,-p提示信息, -t 指定等待时间(秒),超过该时间直接退出,参数即输入赋给哪个变量。类似scanf(“%d”, &n)。e.g: read -t 10 -p “请输入一个整数” a
意为等待时间10秒,提示信息"请输入一个整数",用户输入的数字赋值给变量a。

4.1.6 函数

4.1.6.1 系统函数

basename string/path suffix 获取最后一个/后面的内容,带suffix后缀意为不包含后缀。e.g: basename /root/xxx/xxxx.txt .txt 意为截取该路径中最后一个/后的内容且不带.txt后缀,即xxxx; basename /root/xx/xxx 意为截取得到xxx,可能是文件也可能是目录。

dirname 文件绝对路径 获取文件的路径,即该路径最后一个/以前的内容。e.g: dirname /root/xx/xxx/xxxxx.txt 得到该文件的路径:/root/xx/xxx。

4.1.6.2 自定义函数

[ func ] funcname[(传入参数)]
{
CODE…
[return val;]
}

调用函数: 函数名 参数1 参数2 …

[]项均为可选项。调用函数前要先声明, $?获取函数返回值,无return 语句默认最后一句结果是返回值,返回值只能是0-255数字。函数内不用专门写传入参数,直接用$1 $2… 表示传入的参数。

4.1.7 正则

常规匹配 不包含特殊符号的正则表达式
特殊字符

符号意义举例
^一行的开头^a 匹配a开头的行
$一行的结束bash$ 匹配以bash结尾的行
^$匹配空行
.一个任意字符r.g 匹配r开头、g结尾,中任意一个字符的行
*和上一个字符连用,匹配上一个字符0或多次ro*t 匹配r开头,o个数0或任意个,t结尾的字符所在行
.*匹配所有字符^a.*bash$ 匹配a开头、bash结尾的任意字符所在行
[]字符区间,匹配某个区间的一个字符[a-c,e-f] 匹配a-c或e-f中的一个字符,[0,3]* 匹配任意长度的0或3组成的string
\转义,把一些命令使用的有作用的符号转义成普通字符‘\ $ ’ 匹配dollar符号,本身$在命令里可以做取值操作,此时加反斜杠\表示不作取值操作,而只是字符’ $ ’

扩展特殊符号
grep加-E才能使用扩展匹配

符号意义举例
+出现一次或多次a+ 匹配出现1或多次的a
出现0或1次a? 匹配0或1次的a
{n}出现n次a{3} 匹配aaa

4.1.8 文本处理工具

命令意义举例
cut [op] filename-f 列号 -d分隔符,按分隔符分割列,默认\t制表符 -c按字符分割,后加数字表示取第几列echo $ PATH 竖线 cut -d “:” -f 3- 表示从系统变量PATH中以:为分隔符截出第三列至最后。$PATH=1:5:3:6:2:7 则截取出3:6:2:7
awk [] ‘/patterni/{actioni} …’ filenamepattern是匹配模式,action找到匹配内容执行的命令, -F指定分隔符,-v赋值用户定义变量

awk
文本分析工具,把文件逐行读入,以空格为分隔符将每行切片。

内置变量 FILENAME文件名, NR已读记录数-行号, NF浏览记录的域个数-列数
关键词BEGIN END
e.g: cat /etc/passwd | awk -F “:” ‘/^root/ {print $1","$7}’ 表示在passwd文件中使用:作分隔符,找出root开头的那行,打印第一列,逗号,第七列’。
e.g: awk -F “:” -v i=5 ‘{print $3+i}’ /etc/passwd
表示列出passwd文件以:分隔符的第三列结果加i的结果

4.1.9 实时通信

mesg 查看是否可以把信息显示在终端,是-y
who 查看在线终端,-T 查看服务器所有终端哪些可以通信, 可以+号
write user 终端号 空格键 msg 给在某终端的user发送msg

4.2 命令

一般命令的格式 命令+选项option+参数,option是可选项,以下一般在意义列里写选项及作用,有时在命令列省略[option]。e.g: |cat [option] file | 查看文件,-n显示行号| 表示cat -n file为查看文件并显示行号。

4.2.1 帮助命令

命令意义
man [option] 命令进入命令解释页面,-f 解释Shell内置命令
命令 --help解释命令
help 命令获取Shell内置命令解释。 e.g: help cd

p.s. type 命令 检查命令是否是Shell内置命令

  • 快捷键
    • ctrl +c 停止进程
    • ctrl + l 清屏
    • Tab 补全
    • 上下键 历史命令

4.2.2 文件命令

命令意义
pwd当前工作目录的绝对路径
lslist 列出目录内容
cd [option] 目录切换目录 ,cd -表示两个目录切换,cd ~表示跳转用户的工作目录,只有cd表示跳转当前目录
.表示当前目录
两点表示上级目录
mkdir [option] 目录名新建目录, option是-p 直接新建不存在的父目录
rmdir [option] 目录删除目录, -p和最里的子目录: 删除含有子目录的目录
touch 文件新建空文件
cp [option] source destsource复制到dest ,dest可以是目录、文件, -r表示递归复制source的所有文件、目录
rm [option] 目录删除目录 -r递归删除,-f强制
mv old new移动old到new 或 重命名old为new
cat [option] 文件查看文件内容, 适合小文件 -n显示行号
more 文件分屏查看文件
less 文件比more更多功能, 根据需要动态加载内容,适合大文件
echo [option] output控制台输出内容 -e表示读取\原意不需要转义,e.g:\n 直接读取换行,无-e则直接输出\n
a > b输出重定向, 把a内容覆盖文件b
a >> b追加,不覆盖
head [option] 文件显示文件头部内容, -n 数字表示前几行
tail [option] 文件尾部, -n 数字表示后几行,-f 实时追踪更新
ln -s [source] 软链接最前面是小写L,类似win创建快捷方式,软链接存放文件的地址
rm -rf 软链接删除软链接,注意若软链接后跟/表示删除链接的实际文件
history查看控制台历史命令

less 在控制台查看文件的操作

操作意义
空格 or [pagedown] or [p]下一页
[b] or [pageup]上一页
q离开less
/key向下查找key, n向下、N向上
?key向上查找key, n向下、N向上

注:.开头的文件是隐藏文件;
\是原生命令,去除命令本身的后缀。e.g: \cp … 强制执行复制,没有询问,cp … 是cp -i …的缩写,自带询问;
alias 显示命令完整形态。

4.2.3 时间日期命令

命令意义
date当前时间
date +%s时间戳,距离1970-1-1的秒数
date +%Y显示年份
date “+%Y-%m-%d %H:%M:%S”当前时间以 年-月-日 时:分:秒 形式
date -d ‘x days age’x>0表示前x天,x<0表示后x天
date -s ‘YYYY-mm-dd HH:MM:SS’设置系统时间
cal本月日历
cal 20002000年日历

4.2.4 用户管理命令

命令意义
useradd 用户名添加用户
userdel 用户名删除用户
passwd user设置密码
id user查看用户是否存在
su user跳转到其他用户
sudo 命令赋权,前提要现在 /etc/sudoers文件赋用户root权
/etc/passwd该文件记录用户信息
who am i当前是哪个用户
whoami实际会话是谁先发起的 e.g:先是root->su user1 -> su user2, 运行该命令得到root

4.2.5 用户组管理命令

命令意义
groupadd 组名添加组
usermod -g 组名 user设置user到某组
groupmod -n 新组名 旧组名改组名
groupdel 组名删除组
/etc/group查看分组情况的文件

4.2.6 文件权限命令*

ll 命令查看文件类型。
e.g: -rw-------. 1 root root 1800 x月 xx xx:xx filename表示为 普通文件、文件属者有读和写权限、文件属者同组其他用户没有任何权限、除前两项用户外其他用户也没有任何权限、文件属于root、root在root组、文件大小、时间、文件名。
下标0 -普通文件,d目录,l链接,c字符设备, b块设备。
1-3 user文件拥有者权限。
4-6 group文件属者同组权限。
7-9 other其他用户权限。
其中无权用-表示。
文件:r可读, w可写,x可执行。
目录:r可读即可以list目录,w可修改但不包括删除文件,删除文件==对文件所在目录有w权限,x可进入目录。

命令意义
chmod [{ugoa} {±=} {rwx}] 文件/目录改文件/目录权限,a=all=u+g+o,+加权, =赋权,-去权,-R表递归
chmod 421 文件/目录同上,从下标1开始隔三位划一次作为一个二进制,顺序rwx,有权就为1,4 2 1意为100 010 001表示u可读、g可写、o可执行
chown [option] user 文件/目录改变文件/目录的拥有者 ,-R递归
chgrp 组 文件/目录改变文件/目录所属的组

4.2.7 搜索查找命令

命令意义
find 查找范围 [option]在范围内递归地查找文件, -name fileName 按文件名查找,这里通配符加引号如"*.txt", -user userName 按用户名,-size +/-xxMB 按文件大小
locate key在文件名-路径的数据库中查找key,快速定位文件路径
updatedb更新文件名-路径的数据库以便于locate
which/whereis 命令命令在哪
grep [option] key source在source文件中查找key,-n显示行号
竖线管道符,把前面命令结果传递给后面命令
wc统计行数、词个数、字节

e.g: grep boot /home/xx/xxx 数线 wc 表示在文件中查找boot词并统计词个数

4.2.8 解压缩命令

命令意义
gzip 文件压缩文件
gunzip 文件.gz 文件解压
zip [option] xxx.zip 文件压缩文件为 xxx.zip,-r压缩目录
unzip [option] xxx.zip解压zip, -d <目录> 设置解压路径
tar [option] xxx.tar.gz 内容打包压缩文档,-c打包生成.tar文件, -x解包.tar文件, -z打包加gz压缩, -C解压到指定目录, -f指定压缩文件名称, -v显示详细信息,压缩一般tar -zcvf xxx.tar.gz 内容,解压一般tar -zxvf xxx.tar.gz -C <解压目录>把文件解压到该目录

4.2.9 磁盘查看和分区命令*

命令意义
tree 目录树状查看目录
du 目录/文件显示每个子目录的磁盘使用情况, -h显示单位如GB KB,-a还显示文件 -c还显示总和大小,-s只显示总和,–max-depth=n显示深度为n的目录大小
df [option]查看空余磁盘, -h带单位
free显示当前可用内存
lsblk [option]查看设备挂载情况 -f显示文件系统信息FSTYPE
mount [-t vfstype] [-o option] device dir挂载设备device到dir,-t vfstype文件系统的类型和-o通常不用指定
umount 挂载点/设备卸载设备
fdisk分区,-l 详细显示磁盘分区,该命令只能root用户操作

注: 硬盘设备名sda 表示使用SATA硬盘-容量大 or SCSI硬盘-速度快。sda的a表示第一块硬盘,sda1的1表示第一块硬盘的第一块分区。
挂载: 映射目录和存储位置,根据挂载点找到文件内容。e.g: 虚拟机设置->CD/DVD-> 选中’使用ISO镜像文件’ -> 设备状态勾选’已连接’ 此时虚拟机桌面弹出一个光盘图标。lsblk找到光盘挂载点为/run/media/root/…, 此时光盘已自动挂载到挂载点。
手动挂载: mount /dev/cdrom 目录 此时把设备/dev/cdrom即光盘挂载到自定义的目录。
设置开机自动挂载: /etc/fstab 文件追加 '/dev/cdrom 自定义挂载目录 iso9660 defaults 0 0’内容, 第一个0是dump备份, 第二个0优先级。
虚拟机新磁盘分区:

  1. 虚拟机添加新硬盘20G, reboot重启虚拟机后,lsblk和fdisk -l 查看新硬盘sdb, fdisk /dev/sdb进入磁盘分区,m进入帮助页面, n开始分区,p分配一个主分区,接下来默认,此时20G都划分到sbd1,w保存更改并退出。
  2. 再fdisk -l 查看磁盘分区此时可以看到sdb sdb1, lsblk -f查看得知sdb1没有FSTYPE因此要格式化,mkfs -t xfs /dev/sdb1命令对设备/dev/sdb1设置FSTYPE=xfs。
  3. mount /dev/sdb1 /home/xx/ 命令把设备sdb1挂载到xx目录, 再复制a文件到xx目录,此时xx目录下只有a,umount /home/xx 卸载,此时xx目录没有a。

p为主分区,e为扩展分区。Linux中一块硬盘最多4个p,其中一个p可以作为多个e,一块硬盘总共最多分为16块,即p1-4,e5-16, e最多12块。

4.2.10 进程管理命令*

进程process:一个正在执行的程序或命令。
*d.service 均为守护服务。

命令意义
ps [option]进程状态管理, a带终端的所有用户进程,u当前用户的所有进程, x用户友好显示。-e所有进程,-u某用户的进程, -f完整格式显示,-ef通过PPID查看父子进程
kill [op] PID终止进程 -9强制终止
killall 进程名终止所有包含该名字的进程,谨慎使用
pstree进程树, -p显示PID, -u显示进程所属用户括号显示。
top实时监控进程 -d 秒数 设置监控间隔时间,-i不显示闲置、僵死进程, -p查看指定PID进程。 进入后的操作: P以CPU使用率排序, M以内存使用排序, N以PID排序, u筛选用户, k kill
netstat [option]查看网络状态和端口,-a显示所有套接字socket, -n数字化显示,-l 显示监听的服务, -p显示哪个进程在调用

4.2.11 系统定时任务命令

命令意义
crontab系统定时任务,首先要启动crond服务, -e编辑任务, -l查询, -r 删除该用户所有任务

任务格式 * * * * * 命令

第几个星号意义
1分钟0-59
2小时0-23
3第几天 1-31
4月1-12
5周几0-7 07都为周日

星号代表通配符, 逗号代表不连续时间, -代表连续时间,*/n表示间隔n分钟执行一次。
e.g: */10 1,2 * 6-9 * echo “h” >> /xxx/xx
意为: 6-9月的每天1和2时,每隔10分钟 就执行一次xx文件中写h的命令。

4.2.12 包管理

4.2.12.1 RPM

安装包必须在本地,必须先安装依赖项。
名称格式: 软件名-version-硬件平台.rpm

命令意义
rpm -qa列出所有RPM包,-qi表示显示详情
rpm -e [option] 软件名卸载该包, --nodeps强制卸载别的软件的依赖软件
rpm -i RPM包全名安装, -v显示详情, -h 进度条, --nodeps安装前不检查依赖
4.2.12.2 YUM

能够从指定服务器自动下载RPM包,并安装且自动处理依赖关系,一次性安装所有依赖。

命令意义
yum [option] paras-y对所有回答yes, 参数 install/update/remove/check-update/list/clean/deplist 安装、更新、删除、检查更新、显示、清理缓存、显示依赖关系

更换镜像源, 相应网址下载repo文件替换 /etc/yum.repos.d/CentOS-Base.repo

4.2.13 克隆虚拟机

vm右键虚拟机克隆
对新虚拟机更改IP:vim /etc/sysconfig/network-scripts/ifcfg-ens33 中的IP地址。
改主机名: hostnamectl set-hostname 主机名。
p.s. 快照: 类似于存档,保存当前虚拟机文件和状态。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值