Bash ——shell

Bash作为用户与操作系统之间的接口,让用户通过命令行输入各种指令来控制和操作计算机系统。

shell的两种解释:

1.linux命令解释器

Terminal  终端 ——》shell命令  ——》 Linux kernel (内核)

Linux内核的作用:

1.硬件的管理

2.内存的管理

3.文件的管理

4.进程的调度

Linux的基本命令:

1. ls

  • ls -l:列出当前目录下的文件和目录,以长格式显示,包含权限、所有者、组、大小、时间戳等信息。
  • ls -a:列出当前目录下的所有文件,包括隐藏文件(以.开头的文件)。
  • ls -F:在每个文件名后加上一个符号,表明文件类型,如/表示目录,*表示可执行文件。
  • ls -h:以人易读的格式显示文件大小,如KB、MB、GB。

2. touch

        touch 1.c:创建一个名为1.c的新文件,如果文件已存在,则更新文件的时间戳。


3. rm

  •         rm -f:强制删除文件,不提示确认。
  •         rm -r:递归删除目录及其内容。
  •         rm -i:在删除前询问用户确认。

4. mkdir

        •mkdir dir1 dir2:创建一个或多个目录。

5. rmdir

        •rmdir 123:删除空目录123。

6. cd

        •cd ..:移动到上级目录。

        •cd ../../../..:向上移动四级目录。

        •cd ~:移动到用户的家目录。

        •cd /home/linux/20190214:移动到指定的绝对路径目录。

7. cp

        •cp 1 2:将文件1复制为文件2。

        •cp -av srcdir tgtdir:递归复制目录srcdir到tgtdir,同时显示详细的进度信息。

8. mv

        •mv 1 2:将文件1重命名为2,或者将文件1移动到目录2(如果2是一个目录)。

9.cat

         cat filename1:显示filename1文件的内容。

10 操作符:管道 |

管道(  |   )是Linux中非常强大的一个概念,它允许将一个命令的输出作为另一个命令的输入。这极大地增强了命令的组合能力,使得可以轻松地进行多步数据处理。

        •cat /etc/passwd | less:先使用cat命令读取/etc/passwd文件的内容,然后将这些内容传递给less命令,less允许你分页查看文件内容,可以使用键盘箭头键滚动浏览,q键退出。

        •cat /etc/passwd | grep new -n:先读取/etc/passwd的内容,然后使用grep命令搜索包含单词new的行,并显示行号(-n选项)。

 11. whereis

whereis命令的输出通常分为三部分:

•b(binary):二进制文件的位置。

•m(manual):手册页的位置。

•s(source):源代码文件的位置。

12. grep

在文件中查找内容

grep [OPTIONS] PATTERN [FILE]...

 例如,搜索文件example.txt中包含"hello"的行:

grep hello example.txt


bash使用选项-n

-n选项告诉grep在输出中显示匹配行的行号。

grep 'main' ./20170408/sec3/01socket/ser.c -n

重定向

改变命令的输入和输出目的地,通常用于将命令的输出保存到文件中,或者将文件内容作为命令的输入

覆盖重定向 >

将命令的输出写入到指定的文件中,如果文件已经存在,原来的文件内容会被覆盖(清空)。

cat t1 t2 > t3

将t1和t2两个文件的内容合并,然后写入到t3文件中。如果t3文件已经存在,其原有内容会被覆盖。

追加重定向 >>

将命令的输出写入到文件中,但与覆盖重定向不同的是,它会在文件的末尾追加内容,而不是覆盖原有的内容。

压缩和解压命令

解除压缩:
tar -zxvf 文件名.tar.gz 

.tar.gz 和 .tgz  打包并gz压缩

压缩(cz打包+压缩):tar czvf FileName.tar.gz DirName

解压(xz解包+解压):tar xzvf FileName.tar.gz

2.shell脚本

解释型语言
边翻译边执行

shell脚本的本质就是一系列shell命令的集合

用途:

•系统维护:定期清理日志、备份数据等。

•环境配置:安装软件包、设置环境变量等。

•数据处理:批量修改文件、分析日志数据等。

•网络监控:定期检查服务器状态、发送警报邮件等。

1.shell脚本编写流程:
 


1.vim XX.sh  #!/bin/bash
2.编写脚本
3.chmod +x XX.sh
4. ./XX.sh 

/etc/ 配置文件

Permission denied   权限不足

解决办法 :chmod 修改文件的权限 


如何运行Shell脚本

1. 赋予执行权限:使用chmod命令给脚本添加执行权限。

chmod +x scriptname.sh

2. 执行脚本:

•直接执行(推荐):

./scriptname.sh


bash

•通过解释器执行: bash scriptname.sh


2.shell变量


1.环境变量: env


PATH:保存当前工作的默认路径
PWD:当前所在的工作路径
HOME:当前登录用户的家目录
...


2.main(int argc,char* argv[])

argc:代表“argument count”(参数计数),是一个整型变量,表示传递给程序的命令行参数的数量。这包括程序本身的名称,也就是argv[0]。

argv:代表“argument values”(参数值),是一个指向字符指针数组的指针,其中每个元素指向一个字符串,这些字符串就是命令行参数。argv[0]通常包含程序的名称,argv[1]是第一个参数,依此类推。每个字符串都以空字符'\0'结尾。

 

 在很多编程语言中,包括C、C++和Shell脚本中,函数返回0通常表示成功,返回非0值通常表示某种形式的错误或异常情况。

3.位置参数

位置参数是指在脚本调用时通过命令行传递给脚本的参数。这些参数可以通过特殊的变量$0到$9来访问:

•$0:脚本文件名。这可以用来引用脚本本身的名字。

•$1:第一个参数。

•$2:第二个参数。

•…

•$9:第九个参数。

注意,位置参数的个数实际上可以超过9个,但需要使用${10}这样的语法来访问第十个及以后的参数。

4.内置变量

内置变量,用于获取脚本执行过程中的特定信息:

•$#:传入参数的个数。这可以帮助脚本确定有多少参数被传递进来。

•$?:上一条命令的退出状态。这可以用来检查上一个命令是否成功执行(0表示成功,非0表示失败)。

•$$:当前Shell的PID(进程ID)。这可以用于与其他进程通信或在日志中标识脚本实例。

 

#!/bin/bash# 输出脚本文件名和传入的参数
echo "Script name: $0"
echo "First argument: $1"
echo "Second argument: $2"# 输出参数个数
echo "Number of arguments: $#"# 检查上一句命令的执行结果
echo "Exit status of last command: $?"# 输出当前Shell的PID
echo "Current Shell PID: $$"# 拷贝文件
cp /etc/456 ./# 读取输入并输出
read -p "Enter a number: " a
echo "You entered: $a"# 算术运算
b=456
c=$((a + b))
echo "The sum is: $c"
./3.sh /etc/passwd 123

Script name: ./3.sh
First argument: /etc/passwd
Second argument: 123
Number of arguments: 3
Exit status of last command: 0
Current Shell PID: 12345
Enter a number: 123
You entered: 123
The sum is: 579

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

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

相关文章

15、电科院FTU检测标准学习笔记-基本性能

作者简介: 本人从事电力系统多年,岗位包含研发,测试,工程等,具有丰富的经验 在配电自动化验收测试以及电科院测试中,本人全程参与,积累了不少现场的经验 ———————————————————…

MyBatis(35)如何在 MyBatis 中实现软删除

实现软删除在MyBatis中通常意味着更新数据库记录的某个字段,而不是真正地从数据库中删除记录。这个字段(通常是is_deleted、deleted或status等)被用来标记记录是否被删除。下面我们将详细探讨如何在MyBatis中实现软删除,包括数据库…

简单状压dp(以力扣464为例)

目录 1.状态压缩dp是啥? 2.题目分析 3.解题思路 4.算法分析 5.代码分析 6.代码一览 7.结语 1.状态压缩dp是啥? 顾名思义,状态压缩dp就是将原本会超出内存限制的存储改用更加有效的存储方式。简而言之,就是压缩dp的空间。 …

VB 函数

VB 函数 Visual Basic(VB)是一种由微软开发的高级编程语言,广泛用于开发Windows桌面应用程序。在VB中,函数是一段执行特定任务的代码,它可以返回一个值。本文将详细介绍VB中的函数,包括基本概念、类型、语法和示例。 基本概念 函数是一段可重用的代码,用于执行特定的…

jdk中自带的并发类

1、seamplore 信号量 countDownLaunch:等待所有线程都完成,主线程在执行 CyclicBarrirer 内存屏障 exchanger 线程之间交换数据 phaser 阶段协同器 阻塞队列

AWS-WAF-Log S3存放,通过Athena查看

1.创建好waf-cdn 并且设置好规则和log存储方式为s3 2. Amazon Athena 服务 使用 (注意s3桶位置相同得区域) https://docs.aws.amazon.com/zh_cn/athena/latest/ug/waf-logs.html#waf-example-count-matched-ip-addresses 官方文档参考,建一个分区查询表…

C. Earning on Bets

题目 个人补充&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 #define ll long longconst int maxn 1e6 5, in…

C语言 | Leetcode C语言题解之第228题汇总区间

题目&#xff1a; 题解&#xff1a; char** summaryRanges(int* nums, int numsSize, int* returnSize) {char** ret malloc(sizeof(char*) * numsSize);*returnSize 0;int i 0;while (i < numsSize) {int low i;i;while (i < numsSize && nums[i] nums[i …

算法通关:004_1选择排序

代码一定要自己手敲理解 public class _004 {//选择排序&#xff0c;冒泡排序&#xff0c;插入排序//交换public static void swap(int[] arr,int i ,int j){int temp arr[i];arr[i] arr[j];arr[j] temp;}//选择排序public static void selectSort(int[] arr){if(arr null…

YOLOv10改进 | Conv篇 | 利用FasterBlock二次创新C2f提出一种全新的结构(全网独家首发,参数量下降70W)

一、本文介绍 本文给大家带来的改进机制是利用FasterNet的FasterBlock改进特征提取网络&#xff0c;将其用来改进ResNet网络&#xff0c;其旨在提高计算速度而不牺牲准确性&#xff0c;特别是在视觉任务中。它通过一种称为部分卷积&#xff08;PConv&#xff09;的新技术来减少…

NLP入门——词袋语言模型的搭建、训练与预测

卷积语言模型实际上是取了句子最后ctx_len个词作为上下文输入模型来预测之后的分词。但更好的选择是我们做一个词袋&#xff0c;将所有分词装在词袋中作为上下文&#xff0c;这样预测的分词不只根据最后ctx_len个分词&#xff0c;而是整个词袋中的所有分词。 例如我们的序列是&…

javaweb图书商城系统带万字文档网上书城java项目java课程设计java毕业设计

文章目录 图书商城系统一、项目演示二、项目介绍三、万字项目文档四、部分功能截图五、部分代码展示六、底部获取项目源码带万字文档&#xff08;9.9&#xffe5;带走&#xff09; 图书商城系统 一、项目演示 网上书城 二、项目介绍 语言&#xff1a;java 数据库&#xff1a;…

ABAP中结合销售订单创建交货单的BAPI函数的使用方法

在ABAP中&#xff0c;结合销售订单创建交货单的BAPI是BAPI_OUTB_DELIVERY_CREATE_SLS。这个BAPI允许你基于一个或多个销售订单行项目来创建交货单。 如何使用BAPI_OUTB_DELIVERY_CREATE_SLS 准备数据&#xff1a; 确定销售订单号码和行项目号码。准备交货单的头数据&#xff0…

typora 两边太宽,设置宽度

步骤&#xff1a; 查看目前使用主题类型 文件 —> 偏好设置 —> 外观 —> 打开主题文件夹 修改对应的主题&#xff1a;max-width

MySQL 数据库支持存储emoji表情

当你通过node.js&#xff0c;往mysql存储emoji表情的时候&#xff0c;可能会遇到报错&#xff1a; code: ‘ER_TRUNCATED_WRONG_VALUE_FOR_FIELD’, errno: 1366, sqlMessage: “Incorrect string value: ‘\xF0\x9F\x8D\x94’ for column ‘nick_name’ at row 1”, sqlState…

AI推介-大语言模型LLMs之RAG(检索增强生成)论文速览(arXiv方向):2024.06.01-2024.06.20

文章目录&#xff5e; 1.StackRAG Agent: Improving Developer Answers with Retrieval-Augmented Generation2.FoRAG: Factuality-optimized Retrieval Augmented Generation for Web-enhanced Long-form Question Answering3.Model Internals-based Answer Attribution for T…

MySQL数据库主从复制+mycat读写分离+MHA实操

目录 一、主从复制 1.1 主从复制简介 1.2 MySQL支持的复制类型 1.3 主从复制的工作过程 1.4 主从复制的同步模式 1.4.1 异步复制&#xff08;Asynchronous replication&#xff09; 1.4.2 全同步复制&#xff08;Fully synchronous replication&#xff09; 1.4.3 半同…

力扣2356.二维差分模板——子矩阵元素加1

力扣2356.二维差分模板——子矩阵元素加1 模板题 最后将n2*n2的矩阵删去周围一圈变成n*n矩阵的操作 class Solution {public:vector<vector<int>> rangeAddQueries(int n, vector<vector<int>>& queries) {vector<vector<int>> res…

MyBatis(36)MyBatis 中如何有效地管理 SQL 语句

在MyBatis中有效地管理SQL语句是非常重要的&#xff0c;尤其是当面对较大或复杂的项目时。有效地管理SQL语句可以提高代码的可维护性、可读性和可重用性。以下是一些在MyBatis中有效管理SQL语句的策略&#xff1a; 1. 使用Mapper XML文件 MyBatis通过Mapper XML文件允许你将S…

前端 JS 经典:字符串比较

题目&#xff1a;比较两个字符串大小&#xff0c;两个字符串都是用-连接的数字&#xff0c;比如 1-2-33-55。比较方式是从左到右&#xff0c;依次比较每个数字的大小&#xff0c;遇到相等的数字继续往后比较&#xff0c;遇到不同的数字直接得到结果。 思路&#xff1a;定义一个…