Linux使用学习笔记1到2 命令行与shell 基础运维命令

news2024/12/25 0:58:20

在学习使用ubuntu等各种喜他构建服务器的过程中遇到很多问题,意识到只是跟着网络的教程没办法管理好一个完整的应用部署和运行。遂开始学习linux基本知识,以应对服务器常见问题和软件的使用和维护。

shell

望文生义,大概意思是一个外壳,包裹着内核,能够解析用户输入的命令转化为执行的程序交给内核。

 shell的种类很多,比如bash,ksh,使用C语言编写,指的是一种命令解释程序,同时也是一种解释型程序设计语言。

内置命令和外置命令:

cd,pwd这种属于内置命令,

ls其实是外置的命令,实际调用的命令在/bin/ls中。

当在命令行中显示#号时,说明处于超级用户状态,否则为*,代表普通用户。

命令行的格式

command -option arguments

命令 选项 参数

ls -a

ls -l

ls -al

ls -al /etc

ls -l /etc;cp 123.txt 123.txt

mv a.txt\
 b.txt

参数可以有多个,可以多语句一行也就可以多行组成一条语句。

通配符

用于描述字符串,方便用户使用命令。

ls -a *.txt

cp /var/* /opt

ls -l /etc/*/*.conf

分别是对应什么样子的操作:

列出当前目录下以.txt结尾的文件

在/var目录下,复制所有文件到/opt目录

列出etc目录下所有子目录中的.conf类型文件

其余通配符有? [],分别对应单个任意字符和任意一个在方括号内的字符。

shell的输入输出和重定向

linux下系统打开的三个文件:标准输入,标准输出和标准错误输出。

wc < /etc/a.txt
wc << aa
somethinghere
aa

这就是输入重定向,把文件里的内容输入给wc命令代替我们键盘输入,或者是使用<<将aa与aa间隔符号之间的文本输入给wc。当然aa可以是bb也可以是其他字符。

输出重定向就是反着来,把命令的输出交给文本文件。

ps -ef > ps.txt

cat a.txt b.txt c.txt >all.txt

如果不想覆盖原有文件可以使用>>操作符。

ps -ef >> ps.txt

cat a.txt b.txt c.txt >>all.txt

错误重定向:除了标准输入和标准输出的重定向,还有错误输出和错误输入的重定向,也就是只有在命令执行出现错误的时候会输出的信息将去往我们定义的地方。使用的是2>和2>>。

ps -ef 2> ps.txt

cat a.txt b.txt c.txt 2>>all.txt

管道

什么叫管道,简而言之就是把命令连接起来,用上一个命令的输出作为下一个命令的输入。

ls -l /etc|more

ps -ef|grep httpd|wc -l

转义字符

对所有解释型语言程序来说,不可避免存在符号与文本或者字符串内的标点产生混淆,这时候转移字符就出现了。

/可以使后续的字符不被看成特殊字符,例如abc/?就会被看做一个abc?的字符串,而不会把问号作为一个通配符。包括参数中的:,?号,当然某些符号是不被允许作为文件名的一部分的。

‘’单引号的作用就是忽视内部的特殊字符和转义字符。

""双引号的作用类似单引号,但是没有忽视其中的$,`,\。

他们分别对应变量,命令执行和转义符号。

不过还有更多的用法,比如$(),${}这类,分别和反引号类似以及和$类似,但是在具体使用时有一些区别,$()内部可以叠加更多的命令。${}则是有分隔符可以区分我们的变量和其他字符文本。

str=`ls -l`
str2=`wc \` ls -l \` `

str3=$(ls -l)
str4=$(wc$(ls -l))

echo $str1 /n $str2

注意,这里叠加使用命令的输入相当于作为参数或者说我们输入的字符使用,而不是类似于重定向。这里会发现叠加ls -l的输出给wc命令作为后续参数会导致wc命令识别到代表-r权限的这一字符从而报错:没有对应的选项,反观重定向,就会正常的输出内容里的统计数据了。

基础运维命令

解压缩

tar

归档和解除归档文件的基础命令。这里只要知道是这个命令可以解压就可以了,具体的参数和选项可以查阅资料。

tar -cvf /etc/myzip.zip /etc

这一句的操作为,把/etc目录的文件全部打包到myzip文件,-c创建新的文件,-v显示所有归档文件的名称,以及我们的-f参数代表紧接着要给出存储路径的选项,必须作为该命令最后一个选项(因为后面要跟归档的文件存储设备或者路径)。

能做到按照时间选择要打包的文件,也能做到按照文件名单独排除文件,当然了也是允许使用通配符的。

解压操作只要在选项里使用-x即可,意味从对应文件中还原出归档文件。

tar -zxvf /etc/myzip.zip /etc

-z选项代表中间使用了gzip程序,进行解压或者压缩,前面的归档不等于压缩。-j代表使用bzip2程序。

允许我们解压到指定目录,包括只解压部分文件。

tar -zxvf myzip.tar.gz foder/mylog -C /myname/dir/ 

gzip

一个单纯的解压,压缩命令,注意只能处理文件,就算输入目录也会压缩目录下的文件而不保留目录。

gunzip是gzip的硬链接,我们不多说。

gzip [选项] 解/压缩的文件名

-d解压,-r递归式压缩对应目录,-t检查完整性,-v显示解压/压缩的文件详细名称。

-num指定压缩级别,默认为-6,

gzip -d等于gunzip命令。

zip命令也是压缩。

zip -r /etc/etcbak.zip /etc
gzip -9v /etc/etcbak.zip.gz

上面就是做了两次压缩处理。

gzip -l  /etc/etcbak.zip.gz

显示压缩文件所有信息

gzip -d /etc/etcbak.zip.gz

解压文件

bzip2

bzip -9vk mydir.zip myzip1.zip myzip2.zip

之后会生成对应的mydir.zip.bz2,myzip1.zip.bz2,myzip2.zip.bz2

-f覆盖要生成的文件名同名文件

-k保留压缩源文件

-d为解压缩选项。

文件检索

find

find pathname [options] [-print -exec -ok 命令 {} \;]
选项:
-name 'myfile.*'
-lname 'myfile.*'
-gid n
-uid n
-empty
-type 文件类型
-mtime +n/-n 
-path ''
-group ''
-depth
-prune
-size n
-user ''

格式如上,对应的功能分别是:

查询对应名字的文件,可使用通配符。

查询对应名称的链接文件,可使用通配符

查询用户组id为n的文件

查询用户id为n的文件

查询为空的文件

查询指定文件类型的文件 这里的文件类型可以是b,c,f,l,d,p,s,分别对应块文件,字符设备文件,普通文件,链接文件,目录,管道,socket文件。

根据时间查询,+n代表n天以前,-n代表n天之前到现在,也就是以n天以前为节点。

根据路径字符串匹配

根据用户组字符串匹配

要求先查找当前目录文件

要求跳过对应目录文件,在与-depth同时使用的情况下是被忽略的选项

查找对应大小的文件

按照用户匹配字符串查找

命令中-print代表将查找结果输出到标准输出,-exec代表对查找到的文件执行后续的命令,{}代表刚刚查询到的文件。}和\之间要有空格,要以;结尾。-ok会询问用户是否执行后续命令。

find / \( -path /var/log -o -path /usr/bin \) -prune -o -name "main.c" -print

 从根目录 / 开始搜索。
忽略 /var/log 和 /usr/bin 目录(及其子目录)。
在其他目录中查找文件名为 main.c 的文件,并打印其路径。
因此,这条命令会在不进入 /var/log 和 /usr/bin 的情况下,查找文件名为 main.c 的文件。

find / -type f -size 0 -exec ls -al {} \;

 找到所有大小为0的普通文件,并列出他们的完整路径。

给其他命令传递参数的过滤器命令xargs

linux读取命令有两种方式,命令行参数和标准输入。cat,grep就是这样的命令。

echo 'livey' | cat name1

这个命令组合中cat会输出name1文件的内容,而不是livey字符串,为什么?

此时echo的输出被导入到cat的标准输入,但是cat并不会从标准输入中读取内容,标准输入是一个缓冲区,linux中很多命令都是从命令行中获取参数之后才从标准输入中读取。

echo 'livey' | cat name1 -

这里就会让cat不仅读取name1文件还会读取前面给来的标准输入了。

kill,rm这些程序如果不指定要处理的内容,是不会从标准输入中读取的,所以类似于:

echo '516'| kill 也是无法执行的。

那么实际生产中怎么实现这种思路的命令呢

kill ps -ef| grep 'ddd'这种可以做到。

或者就是使用命令:

for procid in $(ps -aus | grep "some search" | awk '{}print $2'); do kill -9 $procid; done

利用for循环通过ps -aux| grep "some search" | awk '{print $2}'; do kill -9 $procid; done

获取了要kill的所有pid,然后调用kill -9命令。每次处理一个,循环删除。

以下的命令也可以做到

ps -ef | grep 'ddd' |xargs kill 

xargs命令可以通过管道接受字符串,并将接收到的字符串通过空格分隔成许多参数。然后传递给后面的命令。

echo '--help' | cat
echo '--help' | xargs cat

第一句输出的是--help,echo的内容被当作标准输入作为cat读取的内容,但是第二句等价于:

cat --help

怎么理解呢?echo的输出通过管道被定向到后面,第一句是直接作为输入处理,第二局则是作为cat的一个命令参数来运行cat命令

例子:

批量重命名文件夹下的文件

touch {1..9}.txt
ls | xargs -t -i mv {} {}.bak

-i参数代表把分割处理传递到{}所在的地方,否则不加该选项就会默认送到命令的尾端。

-t参数表民表示每次执行都会在stderr上打印一遍命令的执行过程,然后才正式执行,类似还有一个-p选项,这一选项运行我们对每一个空格分割的参数都会询问yesorno,

批量删除目录名下为txt后缀的文件

find . -name "*.txt" | xargs -p rm -rf
find . -name "*.txt" | xargs -i -t rm -rf {}

此意为删除找到的所有文件,但是找到的所有文件都是作为一句rm -rf 的参数出现。也就是只有一次yes询问,如果使用-i参数,就会每一个文件都单独作为参数。

-d可以指定分隔符。

echo '11@22@33' |xargs -d '@' echo

输出为:

当不指定xargs后面的命令时,默认调用的是echo命令。

ls | xargs -n 3 -t

-n后面接上一个数字意思是每次传递给后面命令的参数数目。

find 和xargs属于一个rpm包,findutils,之间配合很方便,都是当删除文件名中含有空格的时候,需要特殊注意。

touch "one space.log"
ls
find -name "* *.log"

 这里找到的文件会是:

./one space.log

如果交给xargs,会发现它把找到的一个文件以空格分开了成了两节。最后会删除两个不知道存不存在的one文件和space.log文件。

怎么解决?

如果使用find的-print0命令可以让输出的结果用\0来分割,而不是\n,然后使用xargs -0来配对,-0就是特殊的-d选项,也就是指定分隔符为\0。

第二个方法就是不在find上处理,而在xargs上处理,使用-i选项使前面的输出不被分割

find -name "* *.log" | xargs -i rm -rf "{}"

第一个方法更广泛,第二个方法更具通用性。

注意这里大括号两边有双引号来防止中间的空格被解释。 

如果不加-i和双引号加括号就会删错文件啦! 

文件的连接合并排序去重

join

将两个文件指定列中内容相同的行连接起来。找出两个文件中指定列内容相同的行,加以合并,再输出到stdout设备(标准输出),

join -t
-i 
-1
-2
指定分割符
忽略大小写
指定文件第几列整合
指定文件2第几列整合

就像数据库一样,是不是好理解很多,文件1中含有对应列,文件2中也含有对应列,这样两个文件就可以根据这一列互相对应把文件像表格一样组合起来变成一个新的表格。

join -t 't' -1 3 file1.txt -2 3 file2.txt

通过-t指定分隔符,输出内容将file1.txt的第三列和file2.txt的第三列整合。同时相同的字段移到每行最前面。

paste

合并文件的列命令,直接将两个文件相同的行贴在一起。第一行和第一行组合,中间隔一个tab。

paste file1.txt file2.txt

sort

文本排序命令,使用格式为

sort [-t 分隔符] [-kn1,n2] [-nru]

-n意为使用纯数字排序,默认为使用字母顺序进行排序.

-r指的是反向排序

-u指的是只展示重复数据中的一个。

-t指定分隔符

-k以区间排序

cat /etc/passwd | sort |head
cat /etc/passwd | sort -t ':' -k3 -n |head

这里指将数据按照指定的':'分隔符来给我们选的第3列来排序,排序的依据是按照数字排序,最后给head命令输出前十行。

uniq

用于检查和删除文本文件中重复出现的行。一般与sort结合使用。

uniq -c
uniq -d 

-c意为在每列判别显示此行重复的次数。

 -d意为仅显示重复出现的行。

uniq --count
uniq --repeated

这两句等同前两句。

但是uniq对不相邻的重复行无能为力,这就是使用sort的时候,将这个文件排序之后,重复行就自动相邻了。

系统运维监控类命令

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2036419.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

交错字符串[中等]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给定三个字符串s1、s2、s3&#xff0c;请你帮忙验证s3是否是由s1 和s2交错 组成的。 两个字符串s和t交错 的定义与过程如下&#xff0c;其中每个字符串都会被分割成若干 非空 子字符串&#xff1a; s s1 s2 ... sn t t1 t2 …

数据结构---单链表实现

单链表是什么 我的理解是“特殊的数组”&#xff0c;通过访问地址来连接起来 1怎么创建链表 ----通过结构体&#xff08;成员有存入数据的data和指向下一个节点的地址的指针&#xff08;结构体指针&#xff09;next 初始架构---DataType 对应存入数据类型&#xff0c;此处的N…

一款基于Java外卖配送系统,专为多商户入驻设计,包含用户端、商家端、配送端以及总管理后台(附源码)

前言 在当前的外卖配送市场中&#xff0c;软件系统的状态常常面临一些挑战&#xff0c;例如多商户管理复杂性、用户体验不一致、后端服务的稳定性和安全性等。这些痛点不仅影响了商户和用户的满意度&#xff0c;也限制了平台的扩展性和发展潜力。 为了解决这些现状&#xff0…

B站搜索建库架构优化实践

前言 搜索是B站的重要基础功能&#xff0c;需要对包括视频、评论、图文等海量的站内优质资源建立索引&#xff0c;处理来自用户每日数亿的检索请求。离线索引数据的正确、高效产出是搜索业务的基础。我们在这里分享搜索离线架构整体的改造实践&#xff1a;从周期长&#xff0c;…

【论文阅读】BoT-SORT: Robust Associations Multi-Pedestrian Tracking

题目&#xff1a;BoT-SORT: Robust Associations Multi-Pedestrian Tracking 作者&#xff1a;Nir Aharon* Roy Orfaig Ben-Zion Bobrovsky motivation: 作者来得很直接&#xff0c;就说他们用相机运动模型和优化卡尔曼做了个可以解决具有挑战的跟踪问题的算法:BOT-SORT;说他们…

工程数学线性代数(同济大学数学系)第六版(更新中)

第1章 行列式 2 全排列和对换 一、排列及其逆序数 全排列 1个逆序、逆序数 奇排列&#xff0c;偶排列 二、对换 对换&#xff1a;排列中任意两个元素对调 相邻对换&#xff1a;相邻两个元素对换 对换改变排列的奇偶性。 4 行列式的性质 5 行列式按行&#xff08;列&…

有趣的的rce漏洞复现分析

目录 无字母数字绕过正则表达式 解读代码 解题思路 异或 或 取反 无字母数字绕过正则表达式 首先我们依然是搭建环境&#xff08;环境依然是Ubuntu下部署&#xff0c;和之前的漏洞环境一样&#xff09; <?php error_reporting(0); highlight_file(__FILE__); $code…

<数据集>车间工人、安全帽、安全背心识别<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;3465张 标注数量(xml文件个数)&#xff1a;3465 标注数量(txt文件个数)&#xff1a;3465 标注类别数&#xff1a;3 标注类别名称&#xff1a;[person, helmet, vest] 序号类别名称图片数框数1person346594732helm…

Android 13 GMS 内置壁纸

如图&#xff0c;原生系统上&#xff0c;设备上的壁纸 显示系统内置壁纸。如果没有添加内置壁纸&#xff0c;就显示默认的壁纸。点击进去就是预览页面 扩展下&#xff0c;默认壁纸在 frameworks/base/core/res/res/drawable-sw720dp-nodpi/default_wallpaper.png frameworks/b…

云开发微信小程序--即时聊天(单人聊天,多人聊天室)

云开发微信小程序–即时聊天 介绍&#xff1a;本小程序包含欢迎界面&#xff0c;注册&#xff0c;登录&#xff0c;一对一聊天&#xff0c;群聊&#xff0c;好友添加请求验证过程&#xff0c;修改好友备注以及删除好友&#xff0c;退出群聊&#xff0c;特殊角色卡片展示&#…

Android中的EventBus的用法

1. EventBus简介 EventBus是一个优化了的事件发布/订阅模式实现的库&#xff0c;常用于Android程序组件间的通信。它可以简化不同组件之间的通信工作&#xff0c;避免复杂和耦合的依赖关系。EventBus通过事件驱动来降低代码耦合度&#xff0c;提高开发效率和代码清晰性。 2. …

自动化数据采集:Lua爬虫与JSON解析的深度整合

在互联网数据采集领域&#xff0c;自动化技术的应用日益广泛。Lua语言以其轻量级和灵活性&#xff0c;成为开发高效爬虫的理想选择。而JSON作为Web数据交换的标准格式&#xff0c;其解析技术在Lua爬虫开发中占据了核心地位。本文将探讨如何将Lua爬虫与JSON解析深度整合&#xf…

C++学习指南(四)------string

欢迎来到繁星的CSDN。本期内容主要包括字符串string。 一、什么是string&#xff1f; C语言中的string 我们在C语言中已经遇到过字符串了。 那为什么C还要单独的列出来string呢&#xff1f; 尽管这里包的头文件是iostream&#xff0c;但arr数组储存常量字符串123456789的形式仍…

Leetcode - 周赛410

目录 一&#xff0c;3248. 矩阵中的蛇 二&#xff0c;3249. 统计好节点的数目 三&#xff0c;3250. 单调数组对的数目 I dfs记忆化 dfs记忆化1&#xff1a;1改递推 四&#xff0c;3251. 单调数组对的数目 II 一&#xff0c;3248. 矩阵中的蛇 本题就是一道纯模拟题&#x…

JavaScript Web API入门day3

目录 1.事件流 1.1 事件流和两个阶段说明 1.2 事件捕获 1.3 事件冒泡 1.4 阻止冒泡 1.5 解除默认行为 1.6 解绑事件 2.事件委托 3.其他事件 3.1 页面加载事件 3.1.1 load方式 3.1.2 DOMContentLoaded 3.2 元素滚动事件 3.2.1 什么是元素滚动事件 3.2.2 获取元素…

【qt小系统】通过qt折线图实现论文内容-快餐店排队效能分析

摘要&#xff1a; 商户收银需求与收银能力不匹配&#xff0c;是一个普遍问题&#xff0c;高峰不足/平常过剩。参考论文《混合制排队模型下中式快餐店排队系统的优化_荣艳蕊.pdf》&#xff0c;本文主要使用QT5、QtChart等完成了基于以上论文模型的关于排队模型优化的图表对比功能…

精品UI资源下载分享类响应式模板素材资源下载站源码

在其他网站看到的这个源码&#xff0c;感觉UI挺漂亮的&#xff0c;就搬来了。 感兴趣的自己下载后搭建下看看&#xff0c;个人感觉UI很漂亮 2024/8/10修复&#xff1a; 标签页面显示的文章跳转链接不正确 源码下载&#xff1a;https://download.csdn.net/download/m0_66047…

开源免费的表单收集系统TDuck

TDuck&#xff08;填鸭表单&#xff09;是一款开源免费的表单收集系统&#xff0c;它基于Apache 2.0协议开源&#xff0c;用户可以随时下载源码&#xff0c;自由修改和定制&#xff0c;也可以参与到项目的贡献和反馈中。TDuck表单系统不仅支持私有化部署&#xff0c;还提供了丰…

uniapp预览图片uni.previewImage图片放大

<image v-if"file.image!" :src"file.image" click"previewImage(file.image)"></image>file: {image: ,status: 1}, // 预览 图片previewImage() {uni.previewImage({current: 1,urls: [this.img] // 是个 数组 单张的&#xff08…

【产品那些事】什么是应用程序安全态势管理(ASPM)?

文章目录 前言当前应用安全(AppSec)推进遇到的问题关于ASPM的定义 为什么需要ASPM&#xff1a;B端客户核心需求ASPM产品关键策略理想状态下的ASPMASPM与CSPM的区别国内外产品参考 前言 随着现代软件开发实践的快速演变&#xff0c;特别是在敏捷开发和 DevOps 的推动下&#xf…