你真的懂linux吗——精华干货篇分享(老少皆宜)

大家好呀!今天来和大家分享一些超实用的 linux知识。(有基础的无基础的的都可以看看哦,掏心掏肺把觉得比较精华有用的都掏出来了,点个赞吧......)

一、系统和包管理器

大众常见的 Linux 系统主要分为 debian 和 redhat 两种类型。

  • debian 系列

    • 发行版:包含 ubuntu 和 kali。ubuntu 特点是图形化程度较高,kali 则是集成了各类工具,主要面向渗透测试人员。

    • 软件包:大部分的软件包的都是deb(debian 专属简写)的格式,kali 或 ubuntu 换源的时候配置的就是 deb 包(源就是下载源)。最好的理解方式就是类似windows的exe扩展名,是个直接可以执行的东西。

    • 包管理工具:使用 apt 管理工具,通过 apt-get 命令来管理 deb 包。

    • 下面是对它的基本使用,比如怎么下载一个应用?直接install。还有就是update,它就是从软件源(软件仓库)中获取最新的软件包信息

  • redhat 系列

    • 发行版:如 centos 等。

    • 软件包格式:RPM。和上面一样理解就可以了

    • 包管理方式:可直接使用 RPM 安装,当然现在也可使用更高级的包管理器 YUM 来安装软件。(具体的区别自行查找)

    • 用法也就是yum install,makeache这些(我没有centos这里借一下别人的图)

二、Shell 脚本解释器

  • Shell 与解释器的概念:我们进到linux里面是不是有一个命令行窗格?那个就是SHELL,它的字面意思是壳,是用户与操作系统沟通的桥梁。我们也可以叫它Shell 解释器,它的作用就是能够将命令转换为可执行代码。

  • 常见的 Shell 解释器

    • sh:是 Unix/Linux 系统的默认 shell。

    • bash:是 sh 的增强版,功能更加丰富,也是许多系统的默认 shell。

    • dash:轻量级 shell,常用于 Debian 系统,其启动速度快,但功能相对较少。在 Debian 系统及其衍生版中,/bin/sh 指向 /bin/dash。

    • zsh,最新的kali里面用的就是这个

三、目录与特殊变量

1.特殊目录(你真的知道吗)

提问:home目录是家目录吗?~是什么?分不清根本分不清(滑稽)

概念:

home 目录用来存放以用户命名的文件夹,里面包含用户的相关设置,当我们创建用户的时候linux系统会自动帮我们创建它们,用来隔离各自的用户环境。这个/home它是共享的,比如我有两个用户,hzhz和kiritio1024513,我们进到任何一个用户的/home目录里面都会有这么两个文件夹/hzhz和/kiritio1024513

在这两个文件夹里面有什么呢?就分别用户各自的文件,比如各自的桌面Desktop,如下图

~ 目录是什么呢?它就是等同于以用户命名的文件夹。比方说我在kiritio这个用户使用~,它就是会到home目录下对应的用户文件位置了

举一反三

root 用户的 home 目录就是 /root(刚刚说共享的时候没有说这个,一般用户是看不到root用户的home目录的)

2.父子进程和变量作用

A.父子进程

一旦讨论到变量,我们肯定离不开作用域,这里在讲作用域之前我们先讲一下子进程

进程就是正在运行程序的实例,刚刚说的在Linux里面的shell就是一个进程(你可以ps列出进程看下),子进程呢就是复刻父进程的克隆,唯一不同的是它是有点虚拟化的意味的,当系统在判断一个程序运行是否会崩溃的时候,就会让子进程先去逝世,崩溃了也不会对父进程有太大影响。

所以我们在使用shell的时候也可以整一个子shell,如下图

当我们输入一个bash的时候就已经进入一个子进程shell了,我这个截图是ctrl+d退出以后的截图

B.作用域

了解完父子shell以后我们就可以讲作用域了

a.局部变量,和任何一门编程语言一样都只能在函数内部调用

b.全局变量,只能在当前进程使用,在新的进程和子shell里面是输出不了的。$x=1,它只会在当前这个shell窗口(也就是当前进程输出),新开一个窗口是没有的,如下图

新进程:

子shell:

c.环境变量

环境变量,学过windows的应该都有接触过环境变量的概念,如下图,环境变量的作用就是用于配置系统行为、指定文件路径的

我们在linux里面使用env 命令来显示环境变量,下面是实例

环境变量和上面两个变量还有一个突出的区别就是永久性的问题,我们平常在用 export 设置的就是暂时的环境变量,它会在 env 输出中显示。但是他们都是临时,重启以后都会不见的,想要设置永久的话就要写入.shellrc的配置文件里面,比如.bashrc或者.zshrc)。

临时设置:

使用 export 命令如下

我们也可以直接添加到环境变量里面的$PATH

例如export PATH=$PATH:/tmp/hello2

永久设置:

使用.shellrc 文件可用于应用设置的环境变量、别名、函数、shell 选项等配置。这里我的是zshrc

常用的环境变量

第一个$PATH,当前找可执行文件的路径

第二个$SHELL,当前的shell解释器

第三个$HOME,当前的home目录

四、输入输出流

在每个运行中的命令行程序其实都连接着三个数据流,作为其与外部环境沟通的渠道

1.标准输入 (0):向程序输入数据

2.标准输出(1):程序的输出 (默认输出到当前终端)

3.标准报错(2):报错消息(默认输出到当前终端)

(ls ./test 2>error.txt报错信息藏起来只要成功信息,这里我们可以丢到dev/null里面,null字面意思也都知道,就是用来放垃圾信息的,这样我们在执行命令的时候就可以避开报错信息,不会在整个页面了)

五、常用命令

find

find. -type (d/f/l) -name ".*"命令
在当前目录及子目录中查找类型为目录(d)、文件(f)或链接(l)且名称匹配的文件。*是通配符表示所有
例:find. -type f -name "*.txt"在当前目录及子目录中查找所有扩展名为.txt 的文件。

pwd

pwd 会显示当前的路径,会造成一定的信息泄露。
(我们在渗透的时候如果有机会敲这个命令,就可以通过这个判断当前程序的位置,在传webshell的时候就很有用)

sudo

sudo命令用于以超级用户(root)权限执行命令。
例如,sudo apt-get update会以root权限执行软件包更新操作
sudo su直接切换到root用户

systemctl

systemctl命令可用于对服务进行各种操作,具体如下:
restart:用于重启服务,例如systemctl restart sshd会重启sshd服务;
stop:用于停止服务;
status:用于查看服务状态,例如systemctl status apache2会查看apache2服务的当前状态;
enable:用于设置服务开机自启。
systemctl list-units --type=service命令用于列出所有服务。
注:在对服务配置文件进行修改后,常需执行systemctl daemon-reload命令重新加载系统服务,之后再执行如systemctl restart docker(以重启Docker服务为例)等相关操作,使修改生效。

history

这个命令再常用不过了,history看历史输入。
但是我们不一定每次都能实时看到history,这里我们的思路就是去找它的存储位置。然后cat查看它的文件。
history存储在.shell_history里面,比如.zsh_history 文件。(在~家目录里,用于存储部分历史命令)

实际就可以这样运用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值