linux基础——vim及bash的使用

2023-11-07

vim

vim介绍: vim是linux里的文本编辑工具,是vi的升级版的软件,是程序员文本编辑器  --》用来写程序的工具

安装:   yum install vim -y 

用法:

  

命令模式:
    yy 复制当前行
    5yy 向下复制5行  copy
    dd 删除(剪切)当前行
    5dd 向下删除5行 delete、
    p 粘贴 paste
    u 撤销  undo
    ctrl+r  恢复  redo

末行模式:
    :w   保存 written  
    :w  abc.txt    另存为
    :wq  保存并且退出  written quit
    :q  退出  quit
    :q! 退出不保存 --》强制退出
    :wq!  强制退出并且保存
    :x  保存并且退出
    :set nu  显示行号
    :set number
    :set nonu  取消行号
    :set nonumber

[root@sanchuang ~]# vim  cs.txt
[root@sanchuang ~]# cat cs.txt
hunan
changsha
linux
123456

bash

bash介绍:bash是linux里的一个解析器,是心啊人与机器交互

解释器:是一个程序软件,用于对某些代码或者命令进行解释,帮我们去解释

shell是解释器的大类名称,平时输入linux命令,都称呼shell命令,bash是设立了解释器大类里最优秀的解释器。

shell解释器工作原理流程图:

 

Linux命令的分类
内部命令:属于Shell解释器的一部分
外部命令:独立于Shell解释器之外的程序文件

bash  : 安装好bash这个软件,就有的命令,内部命令
需要额外安装的命令,就是外部命令

安装:yum install bash -y

用法:

[root@scmaster ~]# rpm -ql bash  查看bash软件安装到哪里去了,会有哪些文件

bash命令流程图:


 


练习:点歌程序,抽同学出来唱歌

1.准备一个歌手名单,里面有全部的同学名字name.txt
2.编写抽歌手的脚本,随机抽取一个同学
3.抽过的同学,不能再抽
4.当所有的同学都抽过了,从新开始

需求分析:
    1.随机数
    2.如何到name.txt文件里抽取学生名字

[root@server html]# mkdir /singer
[root@server html]# cd /singer/
[root@server singer]# vim name.txt
[root@server singer]# cat name.txt 
小周

小刘

小李

小白

小花

小猫

[root@server singer]# cat name.txt |wc -l
6
[root@server singer]# 
wc 是一个统计命令

命令替换——varname=$(命令)  先执行命令,然后将命令的执行结果赋值给varname这个变量

实现代码如下:

#!/bin/bash

while true
do
	#产生随机数
	lucky_num=$( echo   $((RANDOM % 18 + 1)) )
	#得到歌手名字
	singer_name=$( cat name.txt |head -n $lucky_num |tail -1 )
	#判断歌手是否抽取过
	if  grep  "$singer_name"  old_name.txt &>/dev/null  ;then
		#echo "$singer_name 已经抽取过了"
		old_lines=$(wc -l < old_name.txt)
		if (( $old_lines == 18 ));then
			echo "所有的人都已经抽过一遍了,请重新开始"
			#清空唱歌的歌手名字,方便重新开始
			>old_name.txt
		fi
		#继续抽取
		continue
	else
		#输出歌手
		echo  "请我们的著名歌手 $singer_name 演唱歌曲"
		#保存歌手到old_name.txt文件
		echo  "$singer_name"  >>old_name.txt
		#结束循环
		break
	
	fi
done

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux基础——vim及bash的使用 的相关文章

  • linux-x64 二进制文件无法在 linuxmusl-x64 平台上使用错误

    我正在安装Sharp用于使用 package json 的 Nodejs 项目的 docker 映像上的映像压缩包 当我创建容器时 我收到有关 Sharp 包的以下错误 app node modules sharp lib libvips
  • 如何在 Ubuntu 中创建公共 HTML 文件夹?

    简单的问题 但由于某种原因我无法在谷歌上找到确切的答案 我在 Slicehost 上安装了全新的 Ubuntu 并且想在我的主目录中为包含一堆静态 HTML 文件的简单网站创建一个公共目录 我该怎么做呢 只是打字的问题吗mkdir publ
  • 如何阻止ubuntu在使用apt安装或更新软件包时弹出“Daemons using outdatedlibraries”? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我最近新安装了 Ubuntu 22 04 LTS 我发现每次使用 apt 安装或更新软件包时 它都会询问我有关Which servic
  • 无需超级用户即可在 Linux 中打开 RAW 套接字

    我必须编写一个在 Linux 上运行的 ping 函数 语言是 C 所以 C 也可以 在网上搜索并查看源代码ping命令 事实证明我应该创建一个原始套接字 icmp sock socket AF INET SOCK RAW IPPROTO
  • 尽管 if 语句,Visual Studio 仍尝试包含 Linux 标头

    我正在尝试创建一个强大的头文件 无需更改即可在 Windows 和 Linux 上进行编译 为此 我的包含内容中有一个 if 语句 如下所示 if defined WINDOWS include
  • 如何获取 (Linux) 机器的 IP 地址?

    这个问题和之前问的几乎一样如何获取本地计算机的IP地址 https stackoverflow com questions 122208 get the ip address of local computer 问题 但是我需要找到一个的I
  • 使用 MAX_ORDER / 包含 mmzone.h

    根据https www kernel org doc Documentation networking packet mmap txt https www kernel org doc Documentation networking pa
  • C修改printf()输出到文件

    有没有办法修改printf为了将字符串输出到文件而不是控制台 我尝试在互联网上查找一些内容 发现了类似的电话dup dup2 and fflush这可能与此有关 EDIT 也许我不清楚 问题是这是C考试问题 问题如下 解释一个通常将字符串输
  • 为什么opencv videowriter这么慢?

    你好 stackoverflow 社区 我有一个棘手的问题 我需要你的帮助来了解这里发生了什么 我的程序从视频采集卡 Blackmagic 捕获帧 到目前为止 它工作得很好 同时我用 opencv cv imshow 显示捕获的图像 它也工
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • 如何使用Android获取Linux内核的版本?

    如何在 Android 应用程序中获取 Linux 内核的版本 不是 100 确定 但我认为调用 uname r 需要 root 访问权限 无论如何 有一种不太肮脏的方法可以做到这一点 那就是 System getProperty os v
  • Linux/POSIX:为什么 fork() 不分叉*所有*线程

    众所周知 POSIX下创建新进程的默认方式是使用fork 在 Linux 下 这在内部映射到clone 我想知道的是 众所周知 当一个人打电话时fork 子进程是用单个线程创建的 调用的线程fork cf https linux die n
  • 我什么时候应该编写 Linux 内核模块?

    有些人出于某种原因想要将 Linux 中的代码从用户空间移动到内核空间 很多时候 原因似乎是代码应该具有特别高的优先级 或者只是 内核空间更快 这对我来说似乎很奇怪 我什么时候应该考虑编写内核模块 有一套标准吗 我怎样才能激励将代码保存在
  • cdc_acm:无法设置 dtr/rts - 无法与 USB cdc 设备通信

    我试图使用 pic24fj128gb206 枚举 usb cdc 设备 设备似乎已正确枚举 但是当我将设备连接到 Linux PC 时 我从内核收到以下警告消息 cdc acm 1 8 1 6 7 1 0 failed to set dtr
  • Vim 中退格键的奇怪行为(从 Mac SSH 到 Linux)

    I didn t change any setting of my Vim but today the Backspace gets some crazy behavior Every time when I hit it it does
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序
  • 嵌入式 Linux – 部署固件更新的机制? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在考虑在 Yocto 项目上开发一个嵌入式 Linux 项目 一个工业应用程序 我有几个问题想问那些有嵌入式 Linux 经验的人 Y
  • 如何wget目录中最新的文件

    我想编写一个 bash 脚本来下载并安装最新的每日构建程序 RStudio 是否有可能使wget仅下载目录中最新的文件http www rstudio org download daily desktop http www rstudio
  • 来源和出口有什么区别?

    我正在编写一个 shell 脚本 以读取具有 key value 对的文件并将这些变量设置为环境变量 但我有疑问 如果我这样做source file txt是否会将该文件中定义的变量设置为环境变量 或者我应该逐行读取文件并使用导出命令设置它
  • 为 OpenWrt 编写和编译程序

    我有一个在 OpenWRT 下运行的具有 MIPS 架构的嵌入式设备 系统类型 MediaTek MT7628AN ver 1 eco 2机器 WRTnode2P 处理器 0CPU型号 MIPS 24KEc V5 5 我想通过我的电脑 ub

随机推荐

  • 【最优潮流】二阶锥松弛在配电网最优潮流计算中的应用(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 1 1 目标函数 1 2 约束条件 1 3 基于二阶锥松弛的模型转换 2 运行结果 2 1 算例分析 2
  • 大数据高频面试题-手写代码

    手写代码 2 1 快排 2 2 归并 2 3 手写Spark WordCount 2 4 冒泡排序 2 5 二分查找 2 6 二叉树之Scala实现 2 6 1 二叉树概念 2 6 2 二叉树的特点 2 6 3 二叉树的Scala代码实现
  • Jmeter的非GUI页面压测命令

    1 压测指令 jmeter bat n t 脚本文件绝对路径 脚本文件 jmx l 结果文件 jtl e o 生成测试报告绝对路径 注意 非GUI压测指令须在Jmeter的bin目录下执行 2 命令解析 n 命令行模式 t 指定jmx脚本地
  • 关于某日头条_signature参数逆向生成纯补环境

    主要是jsvmp里面 练习逆行中 函数的调用和补环境的手法 var window global var document document referrer var location href protocol https var navi
  • bash vim mode

    如果只想在bash中使用vi模式的Readline 在 bashrc 中添加 set o vi
  • 面试题 31:连续子数组的最大和(滴滴的“连续最大和”)

    刚才在笔滴滴的测试开发 编程题第一个就是求连续子数组的最大和问题 这个题在 剑指offer 也有这么一道题 题目描述如下 输入一个整型数组 数组里有正数也有负数 数组中一个或连续多个的多个整数组成一个子数组 求所有子数组的和的最大值 要求时
  • MyBatis学习(六):MyBatis的一对多关联如何操作

    上面一篇文章是关于MyBatis的一对一的关联如何操作 这一篇文章将主要讲述一对多 如何实现 首先还是在上面的一个class表 然后再构建一个student表 一个班级的学生会有很多 因此这就是所说的一对多 要实现的操作就是通过class的
  • K8s为什么需要calico? calico 原理深入理解.

    文章目录 为什么需要calico 网络插件 千千万 为何k8s要用calico calico的架构 calico Pod 跨node通信 tunl0 的作用 为什么所有pod的默认网关都是 169 254 1 1 什么是ARP 代理 jks
  • Springboot使用@Data注解,不用写get/set方法

    Springboot使用 Data注解 不用写get set方法 1 引入依赖
  • 关于项目跟进

    为什么写这个 因为之前自己同时在跟进几个项目 还在做新需求 没有忙过来 自己觉得自己项目那块没有抽出时间做好 所以列下看看哪些流程 是自己需要注意的 这都谈不上项目管理 只能说项目跟进 距离项目经理更是差得远 总之后面会补上这块的知识 激励
  • Ubuntu下安装VS Code以及C/C++插件(PS工作目录的创建)

    参考 Visual Studio Code Ubuntu下安装 以及C C 插件大全 作者 一只青木呀 发布时间 2020 08 05 11 55 53 网址 https blog csdn net weixin 45309916 arti
  • 8.ElasticSearch系列之索引模板与索引

    1 索引模板创建索引 可以通过kibana工具进行创建索引模板 也可以自定义语句 如创建poi索引模板 POST index template poi index patterns poi template settings index n
  • 【Spring】Spring依赖注入与控制反转理解

    Spring是一个庞大的框架 封装了很多成熟的功能 能够让我们无需重复造轮子 其次 它使用IOC进行依赖管理 利用JAVA的反射机制 将实例的初始化交给Spring Spring可以通过配置文件管理实例 我们就不用自己初始化实例啦 有人会问
  • 2021-01-13

    Jacinto 7处理器设备和子系统概述 上 本文概述TI下一代汽车处理器系列的主要架构特征和优势 这张幻灯片列出了Jacinto 7 SoC的不同方面 我将在后续章节中介绍这些内容 这里讨论的特性一般适用于Jacinto 7系列中的所有派
  • [学习日志]伤害生效由谁来决定?

    伤害生效由谁来决定 普通攻击 使用动画事件 用动画事件是最普遍的一种方式 假如我的伤害生效是在动画结束之后呢 攻击动画片段只有2秒时长 要在3秒才对敌方造成伤害 那么动画事件就做不到了 计时器 把伤害生效是点交给计时器去操作 攻击的时候开始
  • 网络拓扑的分类

    一 按网络所覆盖的地理范围分类 1 局域网 LAN 局域网Local Area Network 简称 LAN 是一种私有网络 一般在一座建筑物内或建筑物附近 比如家庭 办公室或工厂 局域网络被广泛用来连接个人计算机和消费类电子设备 通过网络
  • swift 之AVFoundation自定义相机界面拍照、录像、保存到相册、合成视频

    1 自定义相机拍照 自定义相机 1 前置和后置摄像头 typedef NS ENUM NSInteger AVCaptureDevicePosition AVCaptureDevicePositionUnspecified 0 AVCapt
  • CVPR 2020

    Editing in Style Uncovering the Local Semantics of GANs 作者 Edo Collins Sabine S sstrunk School of Computer and Communica
  • 笔试题目1

    腾讯笔试 2 假设函数f1的时间复杂度O n 那么f1 f1的时间复杂度为 A O n B O n n C O n log n D 以上都不对 这个题目我的思路是A 讨论后答案应该是D 因为f1的返回值不确定 如果是个数组当然复杂度就不同了
  • linux基础——vim及bash的使用

    vim vim介绍 vim是linux里的文本编辑工具 是vi的升级版的软件 是程序员文本编辑器 用来写程序的工具 安装 yum install vim y 用法 命令模式 yy 复制当前行 5yy 向下复制5行 copy dd 删除 剪切