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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI与编程:一个学生的心路历程与思考

前言 大家好,本人是在一个在校的大学生,方向是前端语言。爱好是码代码和看一点小新闻,游戏也是喜爱的。其实本篇文章的想法是源于网上一些人对AI以及对前端的看法,看完网上的评论后我也是有感而发。本篇文章的讨论中心也是围绕着A…

IDA*——AcWing 180. 排书

IDA* 定义 IDA*(Iterative Deepening A*)是一种结合了深度优先搜索(DFS)的递归深度限制特性和A搜索的启发式估价函数的搜索算法。它主要用于解决启发式搜索问题,尤其是当搜索空间很大或者搜索成本不确定时。 IDA* 是…

SprongBoot及其基础应用全套部署脚本和配置

POM.xml配置 </dependencies> <!--skywalking日志监控依赖--><dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-logback-1.x</artifactId><version>8.5.0</version></dependency&g…

轻松驾驭开发之旅:Maven配置阿里云CodeUp远程私有仓库全攻略

文章目录 引言一、为什么选择阿里云CodeUp作为远程私有仓库&#xff1f;二、Maven配置阿里云CodeUp远程私有仓库的步骤准备工作配置Maven的settings.xml文件配置项目的pom.xml文件验证配置是否成功 三、使用阿里云CodeUp远程私有仓库的注意事项 引言 在软件开发的世界里&#…

软件工程(上)

目录 软件过程模型&#xff08;软件开发模型&#xff09; 瀑布模型 原型模型 V模型 构件组装模型 螺旋模型&#xff08;原型瀑布&#xff09; 基于构件的软件工程&#xff08;CBSE&#xff09; 快速应用开发模型&#xff08;RAD&#xff09; 统一过程&#xff08;UP&a…

Http Json参数到x-www-form-urlencoded参数的在线转换工具

Json参数到x-www-form-urlencoded参数的在线转换工具

C语言 printf 函数多种输出格式以及占位输出

一、输出格式 在C语言中&#xff0c;printf 函数提供了多种输出格式&#xff0c;用于控制不同类型数据的输出方式。 1.整数输出格式 %d&#xff1a;以十进制形式输出整数。 %o&#xff1a;以八进制形式输出整数&#xff08;无前导0&#xff09;。 %x 或 %X&#xff1a;以十六进…

CMD命令详细介绍 | 超详细版本!

文章目录 启动cmd命令用户启动使用管理员的账号启动 文件夹命令网络命令其他常用命令介绍常用快捷方式程序员相关命令 本文参考了博客园一篇帖子&#xff0c;ULR&#xff1a;cmd常用命令介绍(可收藏) - Mrwhite86 - 博客园 (cnblogs.com) CMD是Windows操作系统自带的命令行解释…

嵌入式C语言面试相关知识——内存管理(不定期更新)

嵌入式C语言面试相关知识——内存管理&#xff08;不定期更新&#xff09; 一、博客声明二、自问题目1、嵌入式系统的内存布局是怎么样的&#xff1f;2、动态内存分配在嵌入式系统中的使用有什么注意事项&#xff1f;3、什么是内存碎片&#xff0c;如何减少内存碎片&#xff1f…

恢复出厂设置后如何从 iPhone 恢复数据

在 iPhone 恢复出厂设置后&#xff0c;所有数据都会被删除&#xff0c;并且 iPhone 将恢复到原始出厂设置&#xff0c;这意味着您的所有 iPhone 数据&#xff0c;包括照片、视频、联系人和应用程序都将消失。 幸运的是&#xff0c;如果您有备份可以恢复&#xff0c;这并不一定…

Edge浏览器油猴插件的安装与使用

油猴 (又称篡改猴或Tampermonkey) 是最流行的浏览器扩展之一。它允许用户自定义并增强网页的功能。用户脚本是小型 JavaScript 程序&#xff0c;可用于向网页添加新功能或修改现有功能。使用油猴&#xff0c;您可以轻松在任何网站上创建、管理和运行这些用户脚本。 1.插件的安…

pycharm配置conda解释器

假如我新建了一个conda虚拟环境&#xff0c;名为python3.8

【数据结构与算法】快速排序霍尔版

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《数据结构与算法》 期待您的关注 ​

鸿蒙NEXT不再支持安卓这条路真的走的通吗?

前言 看到高赞又是一片嘲讽&#xff0c;“apk换种打包方式”等等轻松拿几百赞&#xff0c;我也是无语。 国内多家互联网大厂都已经启动HarmonyOS Next应用开发&#xff0c;预计明年正式上线&#xff0c;如今业内很多人都已经知道了。 网络上相关报道也有很多&#xff0c;新浪…

06.C2W1.Auto-correct

往期文章请点这里 目录 OverviewAutocorrectWhat is autocorrect?How it works Building the modelMinimum edit distanceMinimum edit distance algorithmMinimum edit distance Part 2Minimum edit distance Part 3 往期文章请点 这里 Overview 本周学习目标&#xff1a;…

Vue 使用 @click 绑定点击事件

https://andi.cn/page/621505.html

oracle数据库默认表空间详解

文章目录 oracle数据库默认表空间列表 oracle数据库默认表空间列表 系统表空间&#xff08;System Tablespace&#xff09; 系统表空间包含了系统级别的元数据&#xff0c;如数据字典、系统表和存储过程等。例如SYSTEM表空间用于保存数据库的数据字典、PL/SQL程序的源代码和解释…

通信协议_Modbus协议简介

概念介绍 Modbus协议&#xff1a;一种串行通信协议&#xff0c;是Modicon公司&#xff08;现在的施耐德电气Schneider Electric&#xff09;于1979年为使用可编程逻辑控制器&#xff08;PLC&#xff09;通信而发表。Modbus已经成为工业领域通信协议的业界标准&#xff08;De f…

04.C1W3.Vector Space Models

往期文章请点这里 目录 Vector Space ModelsWord by Word and Word by DocWord by Document DesignWord by Document DesignVector Space Euclidean DistanceEuclidean distance for n-dimensional vectors Euclidean distance in PythonCosine Similarity: IntuitionCosine S…

验证回文串-string题目

用双指针&#xff0c;left right从两头往中间对比&#xff0c;不是字母的都略过&#xff0c;比的时候化成小写字母 125. 验证回文串 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool isPalindrome(string s) {if(s.size() < 1)return true;int left …