首页 > 系统相关 >shell脚本之 Bash的常用命令

shell脚本之 Bash的常用命令

时间:2024-01-29 12:23:41浏览次数:34  
标签:字符 shell 匹配 echo 命令 sh 常用命令 执行 Bash

永远的 Hello world

1. 输出命令 echo

echo "Hello world" echo 'Hello world!'

选项: -e 支持反斜线控制的字符转换

​ 可以通过通配符 支持16进制ASCII字符

​ 还可以输出颜色 echo -e "\e[1;31m abcd \e[0m"

ehco -e "\e[1;颜色命令 内容 \e[0m"

30m 黑色
31m 红色
32m 绿色
33m 黄色

写shell脚本的一个例子

#!/bin/sh
#Author: Gray

echo -e "\e[1;31m Nothing is more lamentable than a dead heart \e[0m"

注意第一步的注释,是有作用的,不仅是注释,而且会读取

这个真的是血泪史啊,我刚开始以为是 应该填绝对路径,以为是注释而已,原来它真的不是注释而已啊,应该不会有什么问题,后来发现原来真的必须写成#!/bin/sh不然就会出现如下错误

-bash: ./h.sh: /home/sh: bad interpreter: No such file or directory

这个#!/bin/bash表示我写的是一个shell脚本

2. 如何执行脚本

如果我把上面的脚本存为hello.sh,那么我如何执行这个脚本呢?

  • 方法一 赋予执行权限,直接运行

chmod 755 hello.sh 这样所有的用户都可以执行

可以使用绝对路径的方式来执行 /home/ubuntu/Luxcom/hello.sh的方式来执行

也可以用相对路径的方式来执行./hello.sh
** 一般情况下,Linux中所有的命令都必须使用绝对路径或者相对路径来执行**

  • 方法二 通过Bash调用执行脚本

    bash hello.sh 可以不用赋予权限

3. Windows和Linux的回车符的转换问题

通过 -A cat 文件名可以查看文件隐藏起来的回车符

Windows中的回车符是M$表示的,而Linux中的回车符是用$表示的,所以Linux中不能执行使用Windows编写的脚本,该如何处理这个问题

可以使用dos2unix [Windows下的文件]这条命令把windows下的文件的回车符转化为Linux下的回车符格式

这个命令需要安装

3. bash基本功能

3.1历史命令与命令补全

历史命令 history

history [选项] [历史命令保存文件]

选项: -c 清空历史命令

-w 把缓存中的历史命令写入历史命令保存文件

历史命令默认保存1000条,这个条数可以修改

一些快捷键:

使用上、下箭头调用以前的历史命令

使用!n重复执行第n条历史命令

使用!!重复执行上一条命令

使用!字符串重复执行最后一条以该字符串开头的命令

命令与文件补全

在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按Tab键会自动进行补全

如果使用第一次没有补全,再按一次,会把所有的可能情况全部显示出来

3.2 命令别名与常用快捷键

命令别名

alias 别名='原命令' 设定命令别名

alias 查询命令别名

命令执行顺序:

  1. 第一顺位执行用绝对路径或相对路径执行的命令
  2. 第二顺位执行别名
  3. 第三顺位执行Bash的内部命令
  4. 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令

其实Linux中所有的命令都是需要使用绝对路径或者相对路径才能执行的,但是系统命令之所以能够不打绝对路径,是因为在Linux中有PATH环境变量,可以使用 echo $PATH 显示环境变量,Linux使用环境变量进行了简化操作

使用命令行设置的别名只能临时生效,重启之后会失效,如何才能使别名永久生效,需要写入配置文件.bashrc

快捷键

ctrl + A 强制终止当前命令

ctrl + L 清屏,相当于clear

ctrl + U 删除或者剪切光标左侧的内容

ctrl + Y 粘贴ctrl + U 或者ctrl + K剪切的内容

ctrl + D 退出当前用户

3.3 输入输出重定向

3.4 多命令顺序执行与管道符

多命令执行符 格式 作用
; 命令1;命令2 多个命令顺序执行,命令之间没有任何逻辑联系
&& 命令1&&命令2 逻辑与 当命令1正确执行,命令2才会执行
` `

* 管道符

管道符是一个非常有用的命令

命令格式: 命令1 | 命令2

命令1的正确输出作为命令2的操作对象

可以和grep这个命令一起使用,可以从输出内容中搜索自己想要寻找的具体的内容

  • 介绍一下grep命令

grep [选项] "搜索内容" 文件名 可以搜索文件中的某些具体内容

-i 忽略大小写

-n 输出行号

-v 反向查找

--color=auto 搜索出的关键字用颜色显示

例子: grep "echo" hello.sh 通过使用grep命令在hello.sh文件中寻找echo

cat hello.sh | grep -n --color=auto "Gray" 通过使用grep命令在输出中寻找 Gray

3.5 通配符和其他特殊字符

通配符 作用
? 匹配一个任意字符
* 匹配0个或任意多个字符
[] 匹配括号中任意一个字符,例如[abc]代表一定匹配一个字符
[-] 匹配中括号中任意一个字符,-代表一个范围,例如[a-z]代表匹配一个小写字母
[^] 逻辑非,表示匹配不是中括号内的一个字符,例如[^0-9]匹配不是一个数字的字符

Bash中的其他特殊字符

符号 作用
单引号 '' 会使特殊字符丧失作用
双引号 "" 有些特殊符号仍然会又作用
反引号` ` 反引号括起来的内容是系统命令,在bash中会优先执行
$() 和反引号``的作用一样,更推荐使用$()
注释
$ 用于调用变量的值,比如需要调用变量name的值时,需要用$name的方式得到变量的值
\ 转义符

1. 基础正则表达式

正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配

grep awk sed 等命令可以支持正则表达式

通配符用来匹配符合条件的文件名,通配符是完全匹配

ls find cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配

2. 字符截取命令

cut字段提取命令

printf命令

awk命令

sed命令

3. 字符处理命令

排序命令 sort

语法: sort [选项] 文件名

选项:

-f 忽略大小写

-n 以数值型进行排序,默认使用字符型排序

-r 反向排序

-t 指定分隔符,默认分隔符是制表符

-k n[,m]: 按照指定的字段范围排序,从第n字段开始,m字段结束(默认到行尾)

统计命令 wc

语法: wc [选项] 文件名

选项:

-l 只统计行数

-w 只统计单词数

-m 只统计字符数

标签:字符,shell,匹配,echo,命令,sh,常用命令,执行,Bash
From: https://www.cnblogs.com/guanghui-hua/p/17994246

相关文章

  • shell脚本之 shell编程
    1.Bash的变量shell中变量的设置规则变量名称可以由字母、数字和下划线组成,但是不能以数字开头在Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必须指定变量类型为数值型变量使用等号连接,等号左右两侧不能有空格如果变量的值有空格(Linux中空格代表分割),需要使用单......
  • 解决使用PowerShell执行命令出现“因为在此系统上禁止运行脚本”的问题
    1、......
  • [Git]入门及其常用命令
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/17993832出自【进步*于辰的博客】Git的难点在于细节很多,一般很难一次性掌握。若想快速学会乃至掌握,就需要查阅博文、视频等资料,手打测试一些常用命令。参考笔记二,P79~81;笔......
  • (22)Powershell中的环境变量
    (22)Powershell中的环境变量本节介绍Powershell中环境变量的查看和使用,主要包括以下内容:为什么要设置环境变量。Powershell中环境变量的查看。Powershell中环境变量的更改。总结1.为什么要设置环境变量使用过Java语言的一定知道在安装完JDK之后要配置环......
  • (21)Powershell中的通配符
    (21)Powershell中的通配符1.使用通配符进行文件的模糊查找Powershell中的通配符可以实现模糊查找,也就是说可以对一组项(而不是单个项)进行查找。例如,如果想查找D:\MyPowerShell目录中所有扩展名为.ps1的文件,可以执行以下命令:PSC:\test>Get-ChildItemC:\test\*.ps1......
  • (20)Powershell中的特殊运算符
    (20)Powershell中的特殊运算符Powershell中除了常见的算术运算符,赋值运算符,比较运算符,位运算符,逻辑运算符,字符串的拆分和合并运算符,转义字符,还有一些特殊的运算符,这些特殊的运算符往往可以解决一些特殊的问题,比如执行运行命令,更改值的数据类型等。1.&(调用运算符)使用&(......
  • start cmd or shell from current directory in windows file explorer
    startwindowscmdincurrentdirectoryMypreferanceofstartingcmdinacertaincertaindirectoryissimplynavigatingtothedirectroy;pressingctrl+Ltofocustheaddressbar;typingcmd+enter.Bythisway,anewconsolewindowwillstartandit......
  • ソート順調整(power shell版)
    ソート順調整(powershell版)简易版处理指定的单个文件。单个文件或文件数量不多的时候,可以不用bat处理,使用sakura进行sort一下就行。@echooffchcp65001rem対象ファイルsettargetFile=D:\Workstation\BAT\常用\sample.txtremPowerShellのコマンドレットを組み立て......
  • PowerShell编写Windows服务器的DDNS-ipv6客户端
    这个代码保存成ddnsv6.fm20.cn.ps1就能正常运行了functionGet-GUID(){#指定注册表路径$path="HKLM:\Software\Firadio\ddnsv6.fm20.cn"#如果注册表路径不存在则创建if(-not(Test-Path$path)){New-Item-Force-Path$path>$null}......
  • Shell常用语法
     Shell常用语法参考:shell中()、(())、[]、[[]]、{}的作用(很详细)https://blog.csdn.net/JineD/article/details/119945587单小括号,(cmd1;cmd2;cmd3)新开一个子shell顺序执行命令cmd1,cmd2,cmd3,各命令之间用分号隔开,最后一个命令后可以没有分号。单大括号,{cmd1;cm......