104-127-linux-vim-shell基础

news2024/11/19 20:42:51

104-linux-shell:

1.shell基础

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TimrhwkR-1670680591839)(png/1644373423077.png)]

分类:linux使用Bash,可通过vi /etc/shells查看linux支持的shell类型。

1、echo

[root@localhost ~]#echo	[选项]	[输出内容]
选项:
	-e:支持反斜线控制的字符转换(具体百度吧)
	-n:取消输出后行末的换行符号(就是内容输出后不换行)
举例:
[root@localhost ~]# echo -e "\l la"\
[root@localhost ~]# echo -e "ab\bc"ac
[root@localhost ~]#	echo -e "a\tb\tc\nd\te\tf"

2、脚本的执行

vim test.sh
chmod 755 test.sh

3、历史命令查看

[root@localhost~]# history	[选项]	[历史命令保存文件]:
-c:	清空历史命令
一w: 把历史命令写入文件。不指定历史命令保存文件,默认保存文件~/.bash_history 中

历史命令的调用(了解即可):
上、下箭头调用以前的历史命令,“!n”重复执行第n条历史命令,“!!”重复执行上一条命令,“!字串”重复执行最后一条以该字串开头的命令,“!$”重复上一条命令的最后一个参数

4、Bash常用快捷键

ctrl+A 	把光标移动到命令行开头。
ctrl+E	把光标移动到命令行结尾。
ctr1+C	强制终止当前的命令。
ctr1+L	清屏,相当于clear命令。
ctr1+U	删除或剪切光标之前的命令。一行很长的命令,不用退格键一个一个的删除
ctr1+K	删除或剪切光标之后的内容。
ctr1+Y	粘贴ctrl+U或ctrl+K剪切的内容。
ctr1+R	在历史命令中搜索,ctr1+R后会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索。
ctr1+D	退出当前终端。
ctr1+Z	暂停,并放入后台。这个快捷键牵扯工作管理的内容,我们在系统管理章节详细介绍。。。暂不了解
ctrl+S	暂停屏幕输出。
ctrl+Q	恢复屏幕输出。

5、输入输出重定向

​ 1).Bash标准输入输出

设备设备文件名文件描述符类型
键盘/ dev/stdin0标准输入
显示器/dev/stdout1标准输出
显示器/dev/stderr2标准错误输出
#输出重定向
命令 > 文件,以覆盖(>>追加)方式吧命令正确输出输出到指定文件或设备当中
错误命令 2> 文件,以覆盖(>>追加)方式吧命令错误输出输出到指定文件或设备当中
命令 > 文件2 > &1,以覆盖(文件  >> 命令 追加)方式正确输出和错误输出都保存在同一个文件当中(等同于 命令 &>文件    命令 &>>文件)
命令>>文件 1 2>>文件2,正确的输出追加到文件1,错误输出追加到文件2

6.多命令执行顺序

#wc统计行数
[root@localhost~]# wc[选项][文件名]选项:
-C	统计字节数		-w	统计单词数		-l	统计行数
#命令执行顺序
命令1;命令2(顺序执行,无关)	命令1&&命令2(并且) 命令1||命令2(或)

7、管道符|

[root@localhost~]#grep[选项]"搜索内容”文件名选项:
-A数字:列出符合条件的行,并列出后续的n行
-B数字:列出符合条件的行,并列出前面的n行
-C:统计找到的符合条件的字符串的次数
-i:忽略大小写
-n:输出行号
一V:反向查找
--color=auto搜索出的关键字用颜色显示
例如:
[root@localhost ~]# grep " /bin/bash"/etc/passwd
[root@localhost~]# grep -A 3 "root" /etc/passwd#查找包含有“root”的行,并列出后续的3行
[root@localhost~]# grep -n "/bin/bash"/etc/passwd#查找可以登录的用户,并显示行号
[root@localhost~]# netstat -an | grep "ESTABLISHED" | wc -1#如果想知道具体的网络连接数量,就可以再使用wc命令统计行数

8、通配符

通配符作用
?匹配一个任意字符
*匹配О个或任意多个任意字符,也就是可以匹配任何内容
[]匹配中括号中任意一个字符。例如:[abc]代表一定匹配一个字符,或a,或b,或c。
[-]匹配中括号中任意一个字符,-代表一个范围。例如:[a-z]代表匹配一个小写字母。
[^]逻辑非,匹配不是中括号内的一个字符。例如:[ ^0-9 ]代表匹配一个不是数字的字符。

9、Bash中其他特殊符号的含义

符号作用
’ ’单引号中所有的特殊符号,如“$”和“”(反引号)都没有特殊含义。
" "在双引号中特殊符号都没有特殊含义,但是“$”、“~”和“\”是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义
``系统命令,在 Bash中会先执行它。和 ( ) 作 用 一 样 , 不 过 推 荐 使 用 ()作用一样,不过推荐使用 ()使(),因为反引号非常容易看错。
$ ()和反引号作用一样,用来引用系统命令。
()用于一串命令执行时,()中的命令会在子Shell中运行
{}用于一串命令执行时,0中的命令会在当前Shell中执行。也可以用于变量变形与替换。
[]用于变量的测试。
#注释
$用于调用变量的值,如需要调用变量name 的值时,需要用$name的方式得到变量的值。
\转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如$将输出“$”符号,而不当做是变量引用。

2、Bash变量和运算符

变量查看

[root@localhost~]# set	[选项]
-u:	如果设定此选项,调用未声明变量时会报错(默认无任何提示)
-X:	如果设定此选项,在命令执行之前,会把命令先输出一次
#删除变量
unset 变量名
#环境变量查看
env | grep 变量名

1).变量:命名规则,等号两边无空格,特殊含义需加单/双引号。单引号是普通字符,双引号有特殊含义。

2).变量分类:

​ 用户自定义变量(x,y): 名称:自定义 作用:自定义 内容:自定义(name=“ceshi”)

​ 环境变量:
​ 用户自定义环境变量(java): 名称:自定义 作用:自定义 内容:自定义(export age=“19”)
​ 系统自带环境变量(path): 命令:确定 作用:确定 内容:自定义(env)(echo P A T H ) , 添 加 P A T H = " PATH),添加PATH=" PATH,PATH="PATH":/root/sh
​ 位置参数变量($1): 名称:确定 作用:确定 内容:自定义

位置参数变量作用
$nn为数字,$0代表命令本身,$1- 9 代 表 第 一 到 第 九 个 参 数 , 十 以 上 的 参 数 需 要 用 大 括 号 包 含 , 如 9代表第一到第九个参数,十以上的参数需要用大括号包含,如 9{10}.
$*这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体
$@这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待
$#这个变量代表命令行中所有参数的个数

预定义变量($?); 名称:确定 作用:确定 内容:自定义

预定义变量作用
$ ?最后一次执行的命令的返回状态。值为0,上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。
$ $当前进程的进程号(PID)
$ !后台运行的最后一个进程的进程号(PID)

1、接受键盘输入

[root@localhost~]#read	[选项]	[变量名]
-p“提示信息”:在等待read输入时,输出提示信息
-t秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间
-n字符数:read命令只接受指定的字符数,就会执行
-S:隐藏输入的数据,适用于机密信息的输入

read -t 30 -p "Please input your name: " name
read -n 1 -t 30 -p "Please select your gender[M/F]: " 

2、Shell运算符

数值运算的方法

#方法一使用declare(不常用) declare --help

#数值变量
[root@localhost~]#declare 	[+/-]	[选项]	变量名:declare -i cc=$aa+$bb
-:设定类型属性
+:取消变量的类型属性
-a:将变量声明为数组型
-i:将变量声明为整数型(integer)
-r:讲变量声明为只读变量。注意,一旦设置为只读变量,既不能修改变量的值,也不能删除变量,甚至不能通过+r取消只读属性
-X:将变量声明为环境变量
-p:显示指定变量的被声明的类型

#数组变量类型
[root@localhost ~]# name [0]="shen chao"
[root@localhost ~]# name[1]="li ming"
[root@localhost ~]# echo $ {name}
shen chao#输出数组的内容,如果只写数组名,那么只会输出第一个下标变量
[root@localhost ~]#echo $ {name[*]}
shen chao li ming #输出数组所有的内容

#环境变量,可以使用declare将变量声明为环境变量。同export命里一样。
[root@localhost~]# declare -x test=123	#把变量test声明为环境变量

方法二,使用expr 或let数值运算工具

[root@localhost ~]# dd=$(expr $aa + $bb)#注意“+”号左右两侧必须有空格
[root@localhost ~]# let ee=$aa+$bb		#let比expr要求宽松一些

方法三,使用“ ( ( 运 算 式 ) ) ” 或 “ ((运算式))”或“ (())[运算式]”方式运算

[root@localhost~]# ff=$(( $aa+$bb ))
[root@localhost ~]# gg=$[ $aa+$bb ]

3、Shell常用运算符

优先级运算符说明
13-,+单目负、单目正
12!,~逻辑非、按位取反或补码
11*,/ ,%乘、除、取模
10+,-加、减
9<<, >>按位左移、按位右移
8<=,> =,<, >小于或等于、大于或等于、小于、大于
7=,!=等于、不等于
6&按位与
5^按位异或
4|按位或
3&&逻辑与
2||逻辑或
1=,十=,一—,*=,/=,%=,&=,^=,l=,<<=,>>=赋值运算且赋值

4、变量的测试与内容置换(知道有这个东西,记一个就行,用的时候使用一下就好)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vrOC2uxA-1670680591840)(png/1644397169576.png)]

3、环境变量配置文件

source 配置文件或者 . 配置文件

环境变量配置文件

  1. 、登录时生效的环境变量配置文件
    Linux登录时主要生效的环境变量配置文件有以下:

/etc/profile
/etc/profile.d/*.sh

~/.bash_profile

~/.bashrc

4、变量的测试与内容置换(知道有这个东西,记一个就行,用的时候使用一下就好)

[外链图片转存中...(img-vrOC2uxA-1670680591840)]

3、环境变量配置文件

source 配置文件或者 . 配置文件

环境变量配置文件

  1. 、登录时生效的环境变量配置文件
    Linux登录时主要生效的环境变量配置文件有以下:

/etc/profile
/etc/profile.d/*.sh

~/.bash_profile

~/.bashrc
/etc/bashrc

学习路径:https://space.bilibili.com/302417610/,如有侵权,请联系q进行删除:3623472230

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

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

相关文章

Python实现ALO蚁狮优化算法优化支持向量机分类模型(SVC算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蚁狮优化(Ant Lion Optimizer&#xff0c;ALO)算法是Mirjalili于2015提出的一种新型元启发式群智能算法…

185.基于Django的富文本编辑器安装与使用

1.DjangoUeditor 1.1 概述 富文本编辑器&#xff0c;在web开发中必不可少&#xff0c;但是django没有自带富文本编辑器&#xff0c;因此我们需要使用第三方库&#xff0c;这里使用DjangoUeditor DjangoUditor是百度开源的在线HTML编辑器&#xff0c;功能非常强大&#xff0c;像…

VUEElement简单介绍。

目录 一、VUE 1、基本介绍 2、Vue 指令 3、生命周期 二、Element 1、基本介绍 2、Element 布局 一、VUE 1、基本介绍 ▶ 概述 Vue 是一套前端框架&#xff0c;免除原生JavaScript中的DOM操作&#xff0c;简化书写。 我们之前也学习过后端的框架 Mybatis &#xff0c;My…

Linux下C/C++实现类似netstat命令(列出TCP和UDP连接)

网络连接一般包括最基本的五元组信息(源地址、目标地址、源端口、目标端口、协议号)再加上所属进程信息pid, exe, cmdline等。其中这两项数据大多可直接读取linux /proc目录下的网络状态连接文件/proc/net/tcp、/proc/net/udp), 进程状态目录(/proc/pid/xx)。 Linux 下的/proc…

Java基于JSP的报刊订阅管理系统

随着人类的发展&#xff0c;人们对信息的获取方式也越来越多&#xff0c;虽然很多时候人们习惯了通过手机来获取各类信息&#xff0c;但是手机也逐渐的成为了危害人类健康的杀手之一&#xff0c;为了能够让大家回归到健康的生活中来&#xff0c;我开发了本系统&#xff0c;旨在…

基于jsp+mysql+ssm医药进销存管理系统-计算机毕业设计

项目介绍 为了减少传统医药进销存管理的繁杂的工作量&#xff0c;提高医药进销存管理的效率而设计开发了此系统。本系统综合各方面的需求决定采用B/S架构&#xff0c;并利用clipse搭建java开发平台。从而共同完成整个医药的设计开发。系统实现的功能主要包括&#xff1a;用户在…

java 通过InetAddress获取ip 计算机名称操作

本文属于java网络编程部分 需要你的网络编程三要素 有所了解 如果您尚未了解 可以先查看我的文章 java网络编程三要素 而 为了更好的获取和使用IP地址 java提供了InetAddress类 来到文档 首先 他在 java的net包下 所以 想用它 是需要导包的 根据文档叙述 InetAddress就是一个…

python数据分析及可视化(十七)聚宽(双均线分析、因子选股策略、多因子选股策略、均值回归理论、布林带策略、PEG策略、权重收益策略)

聚宽 聚宽是一个做金融量化的网站&#xff0c;https://www.joinquant.com&#xff0c;登录注册&#xff0c;如果你写的文章、策略被别人采纳&#xff0c;增加积分&#xff0c;积分用于免费的回测时长。在我的策略&#xff0c;进入策略列表&#xff0c;里面有做好的策略模板可以…

Web前端105天-day40-GIT

git--版本控制系统(VCS) 目录 前言 一、版本控制系统(VCS) 二、Git中的常用概念 三、Git中的常用命令 四、分支 五、远程仓库(代码托管平台) 总结 前言 day40学习开始 一、版本控制系统(VCS) 用于项目中文件的存储、共享、历史回退、合并、代码追踪文件历史常用版本控制…

acwing基础课——spfa

由数据范围反推算法复杂度以及算法内容 - AcWing 常用代码模板3——搜索与图论 - AcWing 基本思想&#xff1a; 一般单源最短路我们都可以用spfa算法来做&#xff0c;如果过不了再尝试其他算法。 spfa算法就是在bellman-ford算法的基础上就行优化&#xff0c;bellman-算法是每…

微信小程序|小程序事件

首先,我们在index.wxml中与index.js中添加如下代码: <button bindtap="alert">bindtap</button>Page({data: {},alert: function (event) {wx.showToast({title: 触发成功, // 标题icon: success, // 图标类型,默认successduration: 1500 // 提示窗停…

贪吃蛇复现-CoCube

需要完成下面所提及博文中里面所有前序案例&#xff1a; 从开环到闭环的旅程-CoCube 在完成如上代码之后&#xff0c;添加一个彩蛋&#xff0c;贪吃蛇的案例。 蓝桥ROS之半自动贪吃龟turtlesim版 基本上就是上述代码复现一下&#xff0c;完全没有难度的。 贪吃蛇复现-CoCubep…

程序员最关心的问题,我都帮你们问AI了

前言 最近几天互联网刮起了一阵ChatGPT风&#xff0c;起因是OpenAI发布了一个全新的聊天机器人模型—— ChatGPT&#xff0c;可以像人类交谈般回答大部分问题甚至还能直接帮你写代码。 我们先来试试让它帮我们写个代码&#xff1a; 有一丝丝的恐惧&#xff0c;害怕过两年就会失…

redis—主从,哨兵,集群

redis常见的使用方式 Redis的几种常见使用方式包括: Redis单副本;Redis多副本(主从) ;Redis Sentinel (哨兵) ;Redis Cluster;Redis自研。 使用场景: 如果数据量很少&#xff0c;主要是承载高并发高性能的场景&#xff0c;比如缓存一般就几个G的话&#xff0c; 单机足够了。…

Qt扫盲-QPushButton 理论总结

QPushButton 理论总结一、简述二、常用要点1. 快捷键相关2. 信号相关3. 默认按钮3. 推荐使用4. 重复功能5. 菜单功能一、简述 PushButton 按钮或CommandButton 按钮应该是图形用户界面中最常用的小部件。按下&#xff08;单击&#xff09;一个按钮就可以命令计算机执行某些操作…

【1691. 堆叠长方体的最大高度】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你 n 个长方体 cuboids &#xff0c;其中第 i 个长方体的长宽高表示为 cuboids[i] [widthi, lengthi, heighti]&#xff08;下标从 0 开始&#xff09;。请你从 cuboids 选出一个 子集 &#xff0c…

快速傅里叶变换及Python代码实现

一、前言 我想认真写好快速傅里叶变换&#xff08;Fast Fourier Transform&#xff0c;FFT&#xff09;&#xff0c;所以这篇文章会由浅到细&#xff0c;由窄到宽的讲解&#xff0c;但是傅里叶变换对于寻常人并不是很容易理解的&#xff0c;所以对于基础不牢的人我会通过前言普…

阿里巴巴2022年最新最全500道Java后端面试大全(值得收藏)

进大厂是大部分程序员的梦想&#xff0c;而进大厂的门槛也是比较高的&#xff0c;所以这里整理了一份阿里、美团、滴滴、头条等大厂面试大全其中概括的知识点有&#xff1a;Java基础、spring、springmvc、springboot、springcloud、JVM、Tomcat、dubbo、netty、zookeeper共有50…

Java中四大线程池应用及详解

线程池的思想 我们使用线程的时候就去创建一个线程&#xff0c;这样实现起来非常简便&#xff0c;但是就会有一个问题&#xff1a; 如果并发的线程数量很多&#xff0c;并且每个线程都是执行一个时间很短的任务就结束了&#xff0c;这样频繁创建线程就会大大降低系统的效率&a…

移动网络技术--名词介绍

GPRS网络制式&#xff08;General Packet Radio Service&#xff09;为“通用分组无线服务”&#xff0c;它是利用“包交换”&#xff08;Packet-Switched&#xff09;的概念所发展出的一套基于GSM系统的无线传输方式。 GGSN&#xff08;Gateway GPRS Supporting Node,网关GPR…