Linux

Linux 学习笔记

1.1基本介绍

  • linux的文件系统是采用级层式的树状目录结构,在此结构上的最上层是根目录"/",然后在此目录下在创建其他的目录。"~"是家目录

1.2.具体的目录结构

/bin 【常用】(/usr/bin、/uer/local/bin)
是Binary的缩写,这个目录存放着最常使用的命令 (ls,vi,cat)
    
/sbin (/usr/sbin、/usr/local/sbin)
s就是Super user的意思,这里存放的是系统管理员使用的系统管理程序

/home 【常用】
存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录是以用户的账号命名

/root 【常用】
该目录为系统管理员,也称作超级权限者的用户主目录

/lib
系统开机所需要的最基本的动态链接共享库,起作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库

/lost+found 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件

etc 【常用】
所有的系统管理所需要的配置文件和子目录,比如安装mysql数据库,my.conf

/usr 【常用】
这是一个非常重要的目录,用户很多应用程序都放在这个目录下,类似于windows下的program files目录。

/boot 【常用】
存放的是启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件

/proc 
这个目录是一个虚拟的目录,他是系统内存的映射,访问这个目录来获取系统信息

/srv 
service缩写,该目录存放一些服务器启动后需要提取的数据

/sys 
这是linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统sysfs

/tmp
这个目录是用来存放一些临时文件的

/dev
类似于windows的设备管理器,把所有的硬件用文件的形式存储

/media【常用】
linux系统会自动识别一些设备,例如U盘,光驱等等,当识别后,linux会把识别的设备挂载到这个目录下

/mnt 【常用】
系统提供该目录是为了让用户临时挂载别的系统文件,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里面的内容了。D:/mushare

/opt
这是给主机额外的安装软件所存放的目录。如安装ORACLE数据库就可以放到该目录下。默认为空

/usr/local【常用】
这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码的方式安装的程序

/var 【常用】
这个目录中存放着在不断扩充的东西 ,习惯的将经常修改的目录放在这个目录下。包括各种日志文件

/selinux 【security-enhanced linux】
SELinux是一种安全子系统,他能控制程序自能访问特定的文件,有三种工作模式,可以自行设置

1.3.Vim编辑器

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

image-20220829100257086

1.3.1.文件的保存

1、进入文件 vim 文件名(vim test.txt)
2、编辑完成之后,按ESC键 跳到命令模式(命令前面冒号是必要的):
:w  保存文件但不退出vi
:w file 将修改另外保存到file中,不退出vi
:w!  强制保存,不退出vi
:wq 保存文件并退出vi
:wq! 强制保存文件,并退出vi
:q 不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑

1.4.关机和重启的命令

基本介绍

shutdown -h now			立刻进行关机
shutdown -h 1			"hello,1分钟后会关机了"
shutdown -r now			现在重新启动计算机
halt					关机
reboot					重新启动
syn					把内存的数据同步到磁盘(执行以上命令时建议先syn一下

1.4.1.用户登录和注销

基本介绍
1、登陆时尽量少用root账号登录,因为他是系统管理员,最大的权限,避免操作失误。可以利用普通用户登录,登陆后再用"su -" 用户名"命令来切换成系统管理员身份

2、在提示符下输入logout即可注销用户

使用细节
logout注销指令在图形运行级别无效,在shell界面有效

1.5.添加用户

添加用户:useradd 用户名
修改密码:passwd 用户名
删除用户:userdel   用户名
		userdel -r 用户名
查询用户信息指令:id 用户名

image-20220829101625760

查看当前用户:who am i

1.6.用户组

新增组:groupadd 组名
删除组:groupdel 组名
// 注意:如果当添加用户时没有指定组,会默认创建和这个用户同名的组,同时把用户放到该组里
增加用户时直接加上组
指令:useradd -g 用户组 用户名
移动组:usermod -g 组名 用户名

image-20220829102321560

image-20220829102330927

image-20220829102342369

2.1.Linux实践——实用指令

运行级别说明:

0:关机

1:单用户【找回丢失密码】

2:多用户状态没有网络服务

3:多用户状态有网络服务

4:系统未使用保留给用户

5:图形界面

6:系统重启

常用运行级别是3和5,也可以指定默认运行级别

* 查看当前的运行级别   systemctl get-ddefault
* 改变为 systemctl set-default multi-user.target(3级别)

2.2.帮助指令

help:命令 (功能描述:获得shell内置命令的帮助信息)
man:[命令或配置文件](功能描述:获得帮助信息)
// 在linux下隐藏文件是以 “.” 开头的

2.3.文件目录类

pwd:(功能描述:显示当前工作目录的绝对路径)
ls:[选项] [目录或是文件]
// 常用选项
-a : 显示当前目录所有的文件和目录,包括隐藏的
-l : 以列表的方式显示信息
cd:[参数] (功能描述:切换到指定的目录)
mkdir:[选项] 要创建的目录    
rmdir:[选项] 要删除的空目录
// rmdir删除的是空目录,如果欲删除的目录下有内容则无法删除
// 如果需要删除非空目录,需要使用rm -rf 要删除的目录
   
touch 文件名称(用于创建空文件)
cp [选项] source dest (copy拷贝文件导指定目录)
// 将 /home/hello.txt 拷贝到 /home/bbb 目录下
cp /home/hello.txt /home/bbb
// 递归复制整个文件夹,将/home/aaa 目录下的文件全部拷贝到/home/bbb下
cp -r /home/aaa /hom/bbb
=============================================================================
rm指令(remove,移除文件或目录
rm:[选项] 要删除的文件或目录
// -r : 递归删除整个文件夹
// -f :强制删除不提示
// 使用细节:强制删除不提示的方式,带上-f参数即可
mv指令(move,移动文件与目录或重命名)(以可剪切文件夹)
mv oldNameFile newNamefile (功能描述:重命名)
mv /temp/movefile /targetFolder (功能描述:移动文件,剪切)
cat [选项] 要查看的文件 (查看文件内容)
// 常用选项: -n 显示行号
// cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令 |more
more:要查看的文件(基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容)
==软连接==
也称为符号链接,类似于windows里的快捷键方式,主要存放了连接其他文件的路径
基本语法:ln -s [原文件或目录] [软链接名](功能描述:给原文件创建一个软链接

2.4.时间日期类

  • date指令-显示当前日期
基本语法:
date				显示当前时间
date +%Y			显示当前年份
date +%m			显示当前月份
date +%d			显示当前是哪一天
date "+%Y-%m-%d %H:%M:%S" 显示年月日时分秒
=============================================================================
// date指令还可以设置日期
date -s 字符串时间
date -s "2021-6-20 16:44:30"
// 查看日历指令   
cal [选项]      (功能描述:不加选项,显示本月日历)
cal 2021      显示2021整年的日历

2.5.搜索查找类

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

    在当前目录及其子目录下搜索所有以 .txt 结尾的文件
    find [搜索范围] [选项]
    
    locate 命令会在系统的文件数据库中搜索与关键词匹配的文件,并立即返回结果。需要注意的是,locate 命令搜索的文件数据库不是实时更新的,而是定期更新的,因此可能无法搜索到最新创建的文件
    locate:搜索文件
    locate example.txt
    手动更新文件数据库
    sudo updatedb
    
    which指令:可以查看某个指令在哪个目录下
    =========================================================================
    grep:[选项] 查找内容 源文件    
    选项:
    -n 显示匹配行及行号
    -i 忽略字母大小写   
    cat /home/hello.txt |grep -n "yes"       hello.txt文件夹中输出同样的
    grep -n "yes" /home/hello.txt
    
选项 功能
-name<查询方式> 按照指定的文件名查找模式查找文件
-user<用户名> 查找属于指定用户名所有文件
-size<文件大小> 按照指定的文件大小查找文件

首先了解下三剑客的使用范围
grep:普通搜索,主要用于搜索关键字
sed:每次读入一行来处理的,sed 适合简单的文本替换和搜索,sed读取一行,以行作为单位,进行处理。
awk:每次读入一行来处理的(同sed),但awk读取一行,切割成字段,以字段为单位,进行细节处理。

2.5.1 grep

grep [option] pattern file

  • grep:这是一个命令行工具,用于在文件中搜索指定模式的文本。
  • [option]:这是可选的命令选项,用于控制搜索行为。例如,你可以使用 -i 选项来忽略大小写,或者使用 -n 选项来显示匹配行的行号。
  • pattern:这是你要搜索的模式或者字符串。grep 将会在文件中查找包含这个模式的行。
  • file:这是你要搜索的文件的名称。你可以指定一个或多个文件来进行搜索。
操作选项  |  含义
-v | 显示不被pattern匹配到的行
-i |  忽略字符大小写
-n |  显示匹配的行号
-c | 统计匹配的行数
-o | 仅显示匹配到的字符串
-E | 使用扩展正则表达式
-A -B -C |打印命中数据的上下文
 **举例说明**
  • 1.查找文件中包含root的行数: grep -c 'root' 文件名
  • 2.查找文件内容不包含root的行: grep -vn root 文件名
  • 3.查找以s开头的内容: grep ^s 文件名
  • 4.搜索以t结尾的内容: grep t$ 文件名
  • 5.grep pattern -r dir /递归搜索

2.5.2 sed

sed是流编辑器,一次处理一行内容
sed -e 脚本 文本文件 以选项中指定的script来处理输入的文本文件

-n:禁止 sed 的默认打印行为

-i:编辑

-e:空间模式

动作    |    含义    |    举例    |
a    |新增|    sed -e '行号 a 新增内容‘ 文件名    | 使用新内容替换第几行
c    |取代|    sed -e '2,5c 新内容' | 新内容取代2-5行
d    |删除|    sed -e '2,5d'| 删除2-5行
i    |插入|    sed -e '2i 内容' | 第2行前面插入新行
p    |打印|    sed -n '/root/p'| 打印匹配到root的内容CEN
s    |全部替换| sed -e '/s/old/new/g' | 用new取代old

*注:sed常用动作,-e只对模式空间进行操作,不对源文件修改
举例说明

  • 1.查询2024年3月19号开头的文件,并且显示输出:sed -n '/^2024-03-19/p' news.txt
  • 2.使用hello全局替换root:sed -e 's/root/hello/g' 文件名
  • 3.-i直接修改文件内容: sed -i 's/root/hello/g' 文件名

2.5.3 awk

把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行后续处理
形式: awk 'pattern {action}' 文件名
pattern:正则表达式

参数 | 含义
BEGIN | 处理文本之前要执行的操作
END | 处理文本之后要执行的操作
F | 设置分隔符
NF | 字段数
NR | 行数
RS | 控制返回记录的分隔符,标识换行的标志
$0 | 返回整条记录
$1 | 表示当前行的第一个字段
$2 | 表示当前行的第二个字段
以此类推

awk pattern 语法

awk 'BEGIN{}END{}'    开始和结束
awk '/Running'        正则匹配
awk '/aa/,/bb/'       区间选择

举例说明

  • 1.以冒号作为分隔符,搜索./passwd有root关键字的所有行,并显示对应的shell
    awk -F : '/root/{print $0}' ./passwd

  • 2.打印./passwd的第二行信息
    awk -F : 'NR == 2{print $0}' ./passwd

  • 3.编写一个awk脚本,打印文件第八行
    awk 'NR==8{print $0}' 文件名

  • 4.使用begin加入标题
    awk 'BEGIN{print "BEGIN,BEGIN"}{print $1, $2}' 文件名

  • 5.自定义分隔符
    echo "123|456|789" | awk 'BEGIN{RS="|"}{print $0}'

  • 6.编写一个awk脚本,功能是打印所有行
    awk '{print $0}' 文件名

  • 7.用awk命令打印文件所有行的第一个字段
    awk -F ':' '{print $1}' 文件名

  • 8.打印输入行总数
    awk 'END{print NR}' 文件名

  • 10.打印每行字段数
    awk -F : '{print NF}' 文件名

  • 11.打印最后一行
    awk 'END{print $0}' 文件名

  • 12.打印字段数多于4个的行
    awk -F : '{if(NF>4){print $0}}' 文件名

  • 13.打印文件所有字段的总数
    awk -F: '{num+=NF}{print num}' 文件名

  • 14.打印3 - 8行
    awk '{if(NR>=3 && NR<=8){print $0}}' 文件名

  • 15.在文件顶部加上标题“Document”
    awk 'BEGIN{print "Document"}{print $0}' 文件名

  • 16.隔行删除(1, 3, 5, ...行删除)
    awk '{if(NR%2==0){print $0}}' 文件名

  • **17.查找system替换成SYSTEM **
    awk 'gsub("system","SYSTEM"){print $0}' 文件名

  • 18.取ifconfig eth0 的IP
    ifconfig | awk '/inet /{print $2}' | awk '{if(NR==2){print $0}}'

    ifconfig | awk '/netmask /{print $2}' | awk 'NR==1{print $0}'

  • 19.打印一列数字(1到100)的总和
    seq 100 | awk '{sum += $1} END {print sum}'

2.6.压缩和解压

  • gzip/gunzip指令

  • gzip用于压缩文件,gunzip用于解压文件的

    gzip文件		(功能描述:压缩文件,只能将文件压缩为*.gz文件
    gunzip文件    (功能描述:解压文件命令)
    
  • zip/unzip指令

  • zip用于压缩文件,unzip用于解压的,在整个项目打包发布中很有用的

    zip [选项] xxx.zip 将要压缩的内容(一般是文件和文件夹)
    uzip [选项] xxx.zip (功能描述:解压文件)
    // zip的常用项: -r 递归压缩,即压缩目录
    // zip -r myhome.zip /home/
    // unzip的常用项 : -d<目录> : 指定解压后文件的存放目录
    // unzip -d
    
  • tar指令

  • tar指令是打包指令,最后打包后的文件是.tar.gz的文件

    tar [选项] xxx.tar.gz   打包的内容 (功能描述:打包目录,压缩后的格式.tar.gz)
    
选项 功能
-c 产生.tar打包文件(创造压缩文件)
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解压.tar文件(解压缩文件)
案例1:压缩多个文件,将/home/pig.txt和/home/cat.txt 压缩成pc.tar.gz
tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt

案例2:将/home的文件夹压缩成myhome.tar.gz
tar -zcvf myhome.tar.gz /home/

案例3:pc.tar.gz 解压到当前目录
tar -zxvf pc.tar.gz

案例4:将myhome.tar.gz  解压到/opt/tmp2目录下 mkdr/opt/tmp2/
tar -zxvf myhome.tar.gz -C opt/tmp2
// 因为解压的目标地址不是当前文件夹,要去别的文件加,所以要加-C
posted @   zhangyf1121  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示