linux学习笔记(代码片段)

黄坤 黄坤     2022-12-12     740

关键词:

目录

1、Linux基本篇

1、Linux目录结构



2、vi和vim

2.1 基本介绍

所有的linux系统都会内建vi文本编辑器

vim具有程序编辑neglect,可以看做是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补全、编译和错误跳转等方便变成的功能特别丰富,在程序员中被广泛使用。

2.2 常见的三种模式及转换

2.3练习案例

# 1、练习复制、粘贴
进入一般模式 -> 复制几行就选几yy -> 按pp粘贴

# 2、练习删除
进入一般模式 -> 删除几行就选几dd

# 3、查找
进入命令模式 -> 输入/ -> 输入查找内容 ->得到第一个匹配位置 -> 输入n -> 下一个匹配位置

# 4、设置和取消行号
进入命令模式 -> 输入:nu -> 行号显示 -> 输入:nonu ->行号消失

# 5、光标调转到首行或尾行
进入正常模式 -> 输入gg -> 跳转到首行 -> 输入G -> 跳转到尾行

# 6、撤销动作
进入正常模式 -> 输入u -> 刚刚输入的内容被撤销

# 7、跳转到指定行
进入正常模式 -> 输入:set nu(也可以不显示行号) -> 输入想要跳转的行 -> shift + g -> 跳转成功

3、开机、重启、登录、注销

4、用户管理

linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统

linux的用户至少要属于一个组

4.1 添加用户

# 添加用户
useradd [-d:指定目录] 用户名

# 指定密码
passwd 用户名

4.2 删除用户

# 只删除用户
userdel 用户名

# 删除用户及目录
userdel -r 用户名

在删除用户时,一般不将目录删除

4.3 查询用户信息

# 查询用户信息
id 用户名

4.4 切换用户

# 切换用户
su 用户名

从权限高的用户切换到权限低的用户,不需要输入密码。反之,则要。

4.5 用户组

# 添加组
groupadd 组名

# 删除组
groupdel 组名

# 添加用户的时候添加组
useradd -g 组名 用户名

# 修改用户的组
usermod -g 新组名 用户名

5、实用指令

5.1 指定运行级别

常用的运行级别是3和5,要修改默认的运行级别可改文件/etc/inittab 的id:5:initdefault:这一行中的数字

# 切换运行级别
init [012356]

5.2 例子:如何找回root密码

思路:进入单用户模式,然后修改root密码


注意:该种方式重置密码必须要到实体机上操作,不能远程操作。

5.3 帮助指令

# 外部命令使用
man

# 内部命令使用
help 

5.4 文件目录类

1、pwd

# 显示当前目录的绝对路径
pwd

2、ls

# 显示当前文件和目录
ls [-a:显示所有] [-l:以列表形式显示]

3、cd

# 回到家目录
cd ~

# 返回上一级
cd ..

4、mkdir

# 创建目录
mkdir 目录名

# 创建多级目录
mkdir -p 目录名

# 删除目录(目录下为空)
rmdir 目录名

# 如果删除非空目录
rm -rf 

5、touch

# 创建文件
touch 文件名1,文件名2...

6、cp

# 拷贝文件
[\\:强制覆盖]cp [-r:递归复制整个文件夹] 原文件 目标目录

7、rm

# 删除文件或目录
rm [-r:递归删除整个文件夹] [-f:强制删除不提示]

8、mv

# 移动文件
mv 文件名路径 文件夹路径

# 重命名
mv 文件名 新文件名

9、cat

# 查看文件内容
cat [-n:显示行号] 文件名

# 分页查看文件内容(按空格查看下一页)
cat 文件名 | more 


10、>和>>

“>” : 输出重定向

“>>” : 追加

# 将列表的内容写入到文件中(覆盖写)
ls -l > 文件

# 将列表的内容写到文件中(追加)
ls -l >> 文件

# 将文件1的内容覆盖到文件2
cat 文件1 > 文件2

# 将内容追加到文件中
echo "内容" >> 文件

11、echo

# 输出内容到控制台
echo "内容"

#例子:输出环境变量
echo $PATH

12、head

# 输出文件前面10行内容(默认查看10条)
head 文件名

# 输出文件的前5行
head -n 5 文件名

13 、tail

# 输出文件后面10行的内容(默认查看10条)
tail 文件名

# 数据文件后面5行
tail -n 5 文件名

# 实时追踪该文档的所有更新
tail -f 文件名

14、ln

软链接也叫符号链接,类似于windows里的快捷方式,主要存放链接其他文件的路径

当我们使用pwd指令查看目录时,仍然看到的是软链接所在的目录

# 创建软连接
ln -s 文件 软链接名

# 删除软链接
rm -rf 软链接名

15、history

# 查看所有执行过的命令
history

# 查看最近使用过的5条命令
history 5

# 执行历史命令中的第5条命令
!5

5.5 时间日期类

1、date

# 显示当前时间
date

# 分别显示当前年月日,时分秒
date "+%Y"
date "+%m"
date "+%d"
date "+%H"
date "+%M"
date "+%S"

# 显示当前时间
date "+%Y年%m月%d %H时%M分%S秒"

# 设置当前系统时间为2018-10-10 11:22:22
date -s "2018-10-10 11:22:22"

2、cal

# 显示当前日历
cal

# 显示2020年日历
cal 2020

5.6 搜索查找类

1、find

find指令将从指定的目录下向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端

# 按文件名查找
find 目录 -name 文件名
例:查找/下后缀为.txt的文件
find / -name *.txt

# 按拥有者来查找
find 目录 -user 用户名

# 按文件的大小来查找
find 目录 -size [+大于 -小于 null等于]指定大小和单位
例:在/下查找大于20M的文件
find / -size +20M

2、locate

#1、安装mlocate
yum install mlocate

#2、创建locate数据库
updatedb

#3、查询
locate 文件名

3、grep指令和“|”

-- 查找文件中配置的值
cat 文件名 | grep [-n:显示行号] [-i:忽略大小写] 查找的值

5.7 压缩和解压缩

1、gzip/gunzip

# 压缩(压缩的文件不保存)
gzip 文件名

# 解压 
gunzip 文件名 

2、zip/unzip

# 压缩
zip [-r:递归压缩,即压缩目录] 压缩后的文件名 压缩目录

# 解压
unzip [-d:指定解压目录] 文件名

3、tar

# 压缩
tar -zcvf 压缩名.tar.gz 压缩文件1,2...

# 解压
tar -zxvf 文件名

# 解压到指定目录(目录要存在)
tar -zxvf 文件名 -C 目录名

5、组管理和权限管理

1、查看文件所有者

# 查看文件所有者
ls -ahl

2、修改文件所有者

# 修改文件所有者(组不会发生变化)
chown 用户名 文件名

3、修改文件所在的组

# 修改文件所在的组
chgrp 组名 文件名

4、修改用户所在的组

# 修改用户所在组
usermod -g 组名 用户名

5、权限基本介绍



6、修改文件或目录的权限

# 举例:
#1、给abc.txt 文件的所有者添加读写的权限,给所在组读执行权限,给其他组读执行权限
chmod u=rw,g=x,o=r abc.txt

#2、给abc.txt文件的所有者除去执行的权限,增加组写的权限
chmod u-x,g+w abc.txt

#3、给abc.txt文件的所有用户添加读的权限
chmod a+r abc.txt

6、磁盘管理

# 查询系统整体磁盘使用情况
df -h

# 查询自动目录磁盘使用情况
du -h [-s:指定目录占用大小汇总] [-h:带计量单位] [-as:含文件] [--masx-depth=1:子目录深度] /目录

#统计指定目录下有多少个文件(不包括文件夹中的)
ls -l /home | grep "^-" | wc -l

#统计指定目录下有多少个目录(不包括文件夹中的)
ls -l /home | grep "^d" | wc -l

#统计指定目录下有多少个文件(包括文件夹中的)
ls -lR /home | grep "^-" | wc -l

#统计指定目录下有多少个目录(包括文件夹中的)
ls -lR /home | grep "^d" | wc -l

#以树形显示文件结构
yum instal tree
tree

7、网络配置原理

linux网络环境配置

第一种方式(自动获取): 登录后,通过界面来设置自动获取ip

​ 特点:linux启动后会自动获取ip,缺点是每次自动获取的ip地址可能不一样

第二种方式(指定固定的ip)

​ 说明:直接修改配置文件来指定ip,并可以链接到外网,编辑/etc/sysconfig/network-scripts/ifcfg-eth0

​ 要求:将ip地址配置为静态的,ip地址为192.168.183.130

8、进程管理

1、显示系统执行的进程

# 查看父进程
ps -ef 

# 查看指定进程的父进程
ps -ef | grep 进程名

# 查看进程树
pstree [-p:显示进程的pid] [-u:显示进程的所属用户] 

2、杀进程

# 杀进程
kill [-9:强制进程立即停止] 进程号

# 杀所有的进程(支持通配符)
killall 进程名称
# 案例1 踢掉某个非法登录用户
# 查找到用户的pid
ps -aux | grep 进程名
kill 进程号

# 案例2 终止远程登录服务sshd,在适当的时候再次重启sshd服务
kill 进程号

# 案例3 终止多个gedit编辑器
kill gedit

# 案例4 强制杀掉一个终端
kill -9 进程号

3、服务管理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ixFuzg6Z-1620961371093)(C:\\Users\\22846\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210508121158391.png)]

# 查看防火墙的状态,关闭防火墙和重启防火墙
service iptables status
service iptables stop
service ipdatbles start
# telnet指令检查linux的某个端口是否在监听,并且可以访问
telnet ip 端口
# 查看有哪些服务可用
ls -l /etc/init.d/

4、运行级别的开启和关闭

#通过chkconfig命令可以给每个服务的各个运行级别设置自启动/关闭
#查看服务
chkconfig --list | grep 服务名
chkconfig 服务名 --list

#设置开启或关闭
chkconfig --level 5 服务名  on/off
# 应用案例
#1 请显示当前系统所有服务的各个运行级别
chkconfig --list

#2 请查看sshd服务的运行状态
service sshd status

#3 将sshd服务在运行级别5下设置为不自动启动,看看有什么效果
chkconfig --level 5 sshd no

#4 当运行级别为5时,关闭防火墙
chkconfig --level 5 iptables off

#5 在所有的运行级别下,关闭防火墙
chkconfig iptables off

#6 在所有的运行级别下,开启防火墙
chkconfig iptables on

5、动态监控

1、查看系统状态


#举例
# 1、监视特定用户
输入top -> 按u ,输入用户名

# 2、终止指定的进程
输入top -> 按k ,输入进程号

# 3、指定系统状态更新时间(每隔10秒自动更新,默认是3秒)
top -d 10

2、查看网络状态

netstat [-an:按一定顺序排列输出] [-p:显示哪个进程在调用]
# 查看系统所有的网络信息
netstat -anp | more

# 查看服务名为sshd的服务的信息
netstat -anp | grep sshd

9、rpm 和yum

1、rpm

# 查询已经安装的rpm列表
rpm -qa | grep xx 
# 卸载rpm包
rpm -e xxx

# 安装rpm包
rpm -rvh

2、yum

# 查看软件列表
yum list

# 安装指定的yum包
yum install xx

10、shell编程

1、hello world

# 创建一个shell脚本,输出hello world!
vim myShell.sh

# myShell.sh中放入下面内容
#!/bin/bash

# 在执行之前要加权限
chmod 744 myShell.sh

# 两种方式执行(绝对路径和相对路径)
./myShell.sh
/opt/myShell.sh

# 也可以不加执行权限,但是要加sh才能执行
sh ./myShell.sh
sh /opt/myShell.sh

2、shell变量的介绍

shell中的变量可以分为:系统变量和用户自定义变量

系统变量: H O M E 、 HOME 、 HOMEPWD 、 S H E L L 、 SHELL 、 SHELLUSER

echo "PATH=$PATH"
echo "user=$USER"

自定义变量:

(1) 定义变量 :变量 = 值

(2) 撤销变量 : unset 变量

(3) 声明静态变量 : readonly 变量,注意;不能unset

3、定义变量的规则

(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头

(2)等号两侧不能用空格

(3)变量名称一般习惯为大写

将命令的返回值赋给变量

A=`ls -la` 反引号,运行里面的命令,并把结构返回给变量A
A=$(ls -la)等价于反引号

4、设置环境变量

4.1 基本语法

export 变量名=变量值(将shell变量输出为环境变量)

source 配置文件(让修改后的配置信息立即生效)

echo $变量名 (查询环境变量的值)

4.2 多行注释

5、 位置参数变量

6、 预定义变量


7、 运算符的使用

# 计算(2+3)* 4的值
$(((2+3)*4))

$[(2+3)*4]

TEMP=`expr 2 + 3`
RESULT `expr $TEMP \\* 4`
echo "result=$RESULT"

# 请求出命令行的两个参数[整数]的和
SUM=$[$1+$2]
echo "SUM=$SUM"

8、 if-else

# 案例1 "ok" 是否为"ok"
if [ "ok" = "ok"]
then 
	echo "equal"
fi

# 案例2 23是否大于22
if [ 23 -gt 22]
then 
	echo "大于",
fi

# 案例3 、/root/shell/aaa.txt目录中的文件是否存在
if [ -e /root/shell/aaa.txt ]
then
	echo "存在"
fi

9、for

第一种方式:

for 变量 in 值1 值2 值3

do

​ 程序

done

# 打印命令行输入的参数
for i in "$*"
do
	echo "the num is $i"
done

第二种方式

for ((初始值;循环控制条件;变量变化))

do

​ 程序

done

# 从1加到100的值输出显示
SUM=0
for ((i=1;i<=100;i++))
do
	SUM = $[$SUM+$i]
done
echo "sum=$SUM"

10、while

# 从命令行输入一个数n,统计1+..+n的值是多少
SUM=0
i=0
while [ $i -le $1 ]
do
	SUM=$[$SUM+$i]
	i=$[$i+1]
done
echo "sum=$SUM"

11、read读取控制台的输入

# 读取控制台输入的num值
read -p "请输入值:" NUM1
echo "您输入的值是num1=$NUM1"

# 读取控制台输入一个num值,在10秒内输入
read -t 10 -p "请输入值:" NUM1
echo "您输入的值是num1=$NUM1"

12、函数

12.1 basename

12.2 dirname

12.3 自定义函数

# 计算两个参数的和(read),getSum
function getSum()
	SUM=$[$n1+$n2]
	echo "和是$SUM"


# 调用方式
read -p "请输入第一个数n1:" n1
read -p "请输入第二个数n2:" n2
getSum $n1 $n2

11、综合案例


然后执行定时任务

crontab -e

10 2 * * * /usr/sbin/mysql_db_backup.sh

linux学习笔记(代码片段)

Linux学习笔记(二)Author:akynazhBlog:akynazh.site一些文件操作pwdpwd[-P]-P:显示出确实的路径,而非使用链接(link)路径。mkdirmkdir[-mp]目录名称-m:设置文件的权限喔!直接设置,不需要看默认权限(umask... 查看详情

linux学习笔记(代码片段)

Linux学习笔记(一)Author:akynazhBlog:akynazh.siteLinux开机CMOS是记录各项硬件参数且嵌入在主板上面的储存器BIOS则是一个写入到主板上的一个固件(固件就是写入到硬件上的一个软件程序)。这个BIOS就是在开机的时候,计算... 查看详情

linux学习笔记持续更新(代码片段)

Linux笔记安装部分:分区注意:swap虚拟内存为内存的两倍例如4G(如果大的话就不用设置)boot分区主引导500M/根全部分配还可以创一个/data,可以用来挂载东西用配置部分:hostnamectlset-hostnamename#设置主机名... 查看详情

linux学习-linux系统及编程基础笔记(代码片段)

useraddzhangsanpasswdzhangsanvisudo往/etc/sudoers文件中添加zhangsan#visudo找到如下的行rootALL=(ALL)ALL往该行下面添加zhangsanzhangsanALL=(ALL)ALL2.2Linux的基本结构一些根文件系统中较为重要的二级目录:①/boot:存放系统引导时所需的文件&#... 查看详情

嵌入式linux学习笔记fbtft使用笔记(代码片段)

前言在断断续续学习了比较长时间的嵌入式Linux之后,我着手准备自己设计一款Linux的小电脑,在设计硬件之前,我需要掌握一些软硬件的使用,比如fbtft用于驱动小LCD屏幕,usb摄像头,2.4Gwifi模块等我对Linu... 查看详情

嵌入式linux学习笔记fbtft使用笔记(代码片段)

前言在断断续续学习了比较长时间的嵌入式Linux之后,我着手准备自己设计一款Linux的小电脑,在设计硬件之前,我需要掌握一些软硬件的使用,比如fbtft用于驱动小LCD屏幕,usb摄像头,2.4Gwifi模块等我对Linu... 查看详情

linux学习笔记(代码片段)

目录1、Linux基本篇1、Linux目录结构2、vi和vim2.1基本介绍2.2常见的三种模式及转换2.3练习案例3、开机、重启、登录、注销4、用户管理4.1添加用户4.2删除用户4.3查询用户信息4.4切换用户4.5用户组5、实用指令5.1指定运行级别5.2例子&#x... 查看详情

linux学习笔记(代码片段)

文章目录前言一.Shell基础1.查看2.安装3.使用4.Bash基本特性Bash解释器具有许多方便的快捷键查看历史命令命令别名标准输入输出的重定向管道二.helloworld三.变量1.自定义变量定义变量取消变量变量规范2.环境变量3.位置变量4.预定义... 查看详情

linux深度学习进展笔记(代码片段)

1.环境搭建无线网卡驱动AX201安装:下载合适的无线网卡驱动具体下载链接:https://www.intel.com/content/www/us/en/support/articles/000005511/wireless.html把下载好的ucode文件复制到/lib/firmware里cp*.ucode/lib/firmware-然后重启增加用户组sudoadd 查看详情

linux深度学习进展笔记(代码片段)

1.环境搭建无线网卡驱动AX201安装:下载合适的无线网卡驱动具体下载链接:https://www.intel.com/content/www/us/en/support/articles/000005511/wireless.html把下载好的ucode文件复制到/lib/firmware里cp*.ucode/lib/firmware-然后重启增加用户组sudoadd 查看详情

linux学习笔记——常用命令(代码片段)

...量的Python库文件,能点灯,能做视觉处理、机器学习和科学计算。也逐渐认识到系统的强大,也慢慢不局限于做一些小作品。目标是嵌入式Linux 查看详情

linux学习笔记2022-11-12---------linux基础(代码片段)

目录1.用户类型2.终端terminal2.1终端类型2.2查看当前的终端设备3.交互式接口3.1交互式接口类型3.2什么是shell3.3Shell是如何连接用户和内核的?3.4Shell还能连接其它程序3.5Shell也支持编程3.6Shell是一种脚本语言4.修改主机名5.命令提... 查看详情

嵌入式linux学习笔记(代码片段)

常用操作&相关知识压缩解压解压.tar.bz2tar-vxjflinux-imx-4.1.15-2.1.0-g8a006db.tar.bz2压缩.tar.bz2tar-vcjfalientek_uboot.tar.bz2alientek_uboot编译将前面编译出来的led.o文件链接到0X87800000这个地址,使用如下命令:arm-linux-gnueab 查看详情

linux进程——学习笔记(代码片段)

文章目录认识操作系统冯诺依曼体系结构是计算机的基本结构操作系统进程的概念task_struct的内容进程抢占:并行和并发查看进程创建进程理解fork:进程的状态孤儿进程进程的优先级认识操作系统冯诺依曼体系结构是计... 查看详情

linux进程——学习笔记(代码片段)

文章目录认识操作系统冯诺依曼体系结构是计算机的基本结构操作系统进程的概念task_struct的内容进程抢占:并行和并发查看进程创建进程理解fork:进程的状态孤儿进程进程的优先级认识操作系统冯诺依曼体系结构是计... 查看详情

mooc《linux操作系统编程》学习笔记-实验六(代码片段)

实验六线程同步实验https://www.icourse163.org/learn/UESTC-1003040002?tid=1455108444#/learn/content?type=detail&id=1228729539&cid=1245454470实验六 线程同步实验https://www.icourse163.org/learn/UESTC-1003040002?tid=14 查看详情

linux学习笔记(代码片段)

文章目录🍋fork()🍓理解fork🍋进程状态🍅操作系统下描述的状态🍅具体的操作系统Linux下的进程状态🥝运行状态就一定在运行吗?🥝S和D的区别🥝T状态🥝Z状态🥝什么样的进程杀不掉... 查看详情

iptables学习笔记(代码片段)

学习的视频:http://edu.51cto.com/course/12914.htmlIPTABLESLINUX防火墙引言:iptables作为一款老牌的Linux防火墙,给Linux系统提供了基于内核的安全防护机制。优点:系统自带,无需安装,工作在OS底层(内核)从理论上说安全性更高;缺点... 查看详情