Bash ——shell

news2024/9/23 15:29:16

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.coloradmin.cn/o/1915534.html

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

相关文章

Java中实现一维数组逆序交换的完整解决方案

引言 ❤❤点个关注吧~~编程梦想家(大学生版)-CSDN博客 在日常编程中,处理数组时经常会遇到需要逆序交换数组元素的情况。逆序交换即是将数组的第一个元素与最后一个元素交换,第二个元素与倒数第二个元素交换,依此类推…

Internet Download Manager6.42最新下载器互联网冲浪小能手们!

今天我要来种草一个超级棒的宝贝——Internet Download Manager(简称 IDM)。这个小家伙简直是下载界的“速度与激情”代言人,让我彻底告别了等待的日子。🎉 IDM马丁正版下载如下: https://wm.makeding.com/iclk/?zoneid34275 …

【最强八股文 -- 计算机网络】【快速版】TCP 与 UDP 头部格式

目标端口和源端口: 应该把报文发给哪个进程包长度: UDP 首部的长度跟数据的长度之和校验和: 为了提供可靠的 UDP 首部和数据而设计,接收方使用检验和来检查该报文段中是否出现差错 源端口号和目的端口号: 用于多路复用/分解来自或送到上层应用的数据。告诉主机报文段…

自动气象站的主要功能优势

在科技日新月异的今天,我们生活的方方面面都受到了科技的影响。其中,自动气象站作为气象观测领域的重要一环,不仅提升了气象数据的准确性和时效性,还为我们的日常生活、农业生产、灾害预防等提供了重要的数据支持。 自动气象站概述…

【GIS开发小课堂】WebGIS开发必学开源框架Openlayers,附赠视频教程、电子书、笔记源码

WebGIS开发之Openlayers 当前,WebGIS开发热门程度越来越高,市场招聘供需比处于较为紧张的状态。 常见的WebGIS开源框架有:OpenLayers、Leaflet、MapBox、MapFish、GeoServer、GeoEXT、MapInfo等。公司最希望求职者具备至少一种框架开发技能…

数字信号处理及MATLAB仿真(5)——z变换

采样的其他概念咱们后面再慢慢的讲述吧,先把z变换的程序给大家展示一下,总的来说呢,就用一个函数——ztran就行了。在 MATLAB 中,可以使用 ztrans 函数来进行 Z 变换。ztrans 函数用于对离散时间信号或系统进行 Z 变换&#xff0c…

MySQL Undo Log

总结自bojiangzhou undo log称为撤销日志或回滚日志。在一个事务中进行增删改操作时,都会记录对应的 undo log。在对数据库进行修改前,会先记录对应的 undo log,然后在事务失败或回滚的时候,就可以用这些 undo log 来将数据回滚到…

java 实现Comparable接口和实现Comparator接口排序的区别

Comparable接口 作用: Comparable接口是在类的内部实现的,用于指定类的默认比较规则。当一个类实现了Comparable接口时,它必须实现compareTo方法,该方法用于定义对象之间的自然顺序。 实现方式: 实现Comparable接口的…

【Go系列】 Go语言的入门

为什么要学习Go 从今天起,我们将一同启程探索 Go 语言的奥秘。我会用简单明了的方式,逐一讲解 Go 语言的各个知识点,帮助你从基础做起,一步步深化理解。不论你之前是否有过 Go 语言的接触经验,这个系列文章都将助你收获…

农业采摘--RGBD数据转point cloud

一、RGBD图像转点云数据的步骤 将RGBD图像转点云数据常包含五个步骤: 1. 图像采集: 使用RGBD相机同时捕获颜色(RGB)和深度(Depth)信息。颜色记录了场景的彩色视觉信息,而深度图像记录了场景中每…

个人面试总结

写在前面:以下是自己在拟录用后回顾总结的了一下当时面试题目,把标答写了出来,供以后复习所使用,希望大家理性食用~~ 预祝大家都能找到心仪的工作 笔试题目: 1.1. java中Collection和Collections的区别 Collection…

Ae After Effects2024 for Mac 视频处理软件

Mac分享吧 文章目录 效果一、准备工作二、开始安装1、Anticc简化版安装1.1双击运行软件,安装1.2 解决来源身份不明的开发者问题1.3 再次运行软件,即可进行AntiCC安装 2. Ae2024安装2.1 打开 Ae 2024 安装包组2.2 将 Ae 安装包拖至桌面2.3 安装 Ae2024 &…

0708,LINUX目录相关操作

主要是冷气太足感冒了&#xff0c;加上少吃药抗药性差&#xff0c;全天昏迷&#xff0c;学傻了学傻了 cat t_chdir.c #include <stdio.h> #include <unistd.h> #include <error.h> #include <errno.h> #include <sys/stat.h>int main(int argc…

PyTorch实现BERT预训练模型转化指南

huggingface官方的介绍&#xff1a; https://huggingface.co/transformers/converting_tensorflow_models.html 直接用命令行 把箭头处路径改为自己放原有tf版本预训练模型的路径 回车后会有一大堆提示&#xff0c;然后发现路径下多了一个bin文件&#xff0c;加上原本的config…

【C++深度学习】多态(概念虚函数抽象类)

✨ 疏影横斜水清浅&#xff0c;暗香浮动月黄昏 &#x1f30f; &#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;C学习 &#x1f680; 欢迎关注&#xff1a;&#x1f44d;点赞 &…

从零开始读RocketMq源码(三)Broker存储Message流程解析

目录 前言 准备 消息载体CommitLog 文件持久化位置 源码解析 broker消息对象MessageExtBrokerInner 异步存储message CommitLog的真相 创建MappedFile文件 加入异步刷盘队列 Message异步存储MappedByteBuffer 总结 前言 在面试中我们经常会听到这样的回答&#x…

31_JQuery一文读懂,JS的升级版

今日内容 零、 复习昨日 一、JQuery 零、 复习昨日 1 js数组的特点(长度,类型,方法) - js数组的长度不限 - 类型不限 - 提供很多方法2 js中和的区别 - 判断数值相等 - 判断数值和数据类型同时相等3 js表单事件的事件名(事件属性单词) - 获得焦点 onfocus - 失去焦点 onblur …

自媒体运营怎样引流客源?

不管是企业还是个人&#xff0c;越来越多都在做自媒体引流运营&#xff0c;那有什么引流客源的方式呢&#xff1f; 高质量内容&#xff1a;创作并分享有价值的内容&#xff0c;吸引目标受众&#xff0c;提升内容的分享和传播效果。 SEO优化&#xff1a;优化文章标题、关键词和…

React学习笔记01

一、学习资料 1.学习网课 黑马程序员前端React18入门到实战视频教程&#xff0c;从reacthooks核心基础到企业级项目开发实战&#xff08;B站评论、极客园项目等&#xff09;及大厂面试全通关_哔哩哔哩_bilibili 2.学习文档 快速入门 – React 中文文档 二、React 1.定义 …

如何在玩客云中安装小雅AList并实现使用手机平板远程连接听歌看电影

文章目录 前言1. 本地部署AList2. AList挂载网盘3. 部署小雅alist3.1 Token获取3.2 部署小雅3.3 挂载小雅alist到AList中 4. Cpolar内网穿透安装5. 创建公网地址6. 配置固定公网地址 前言 本文主要介绍如何在安装了CasaOS的玩客云主机中部署小雅AList&#xff0c;并在AList中挂…