Shell命令-常用操作
Shell基础
1 Shell命令的基本格式
基本格式
command [选项] [参数]
[]
表示可选的,也就是可有可无。有些命令不写选项和参数也能执行,有些命令在必要的时候可以附带选项和参数。
短格式选项和长格式选项
Linux 的选项又分为短格式选项和长格式选项。
- 短格式选项是长格式选项的简写,用一个减号
-
和一个字母表示,例如ls -l
。 - 长格式选项是完整的英文单词,用两个减号
--
和一个单词表示,例如ls --all
。
一般情况下,短格式选项是长格式选项的缩写,也就是一个短格式选项会有对应的长格式选项。当然也有例外,比如 ls 命令的短格式选项
-l
就没有对应的长格式选项,所以具体的命令选项还需要通过帮助手册来查询。
2 单引号、双引号、反引号
单引号:用于希望其中的内容原样输出的场景。
a=123
echo 'a=$a'
echo 'echo 1'
# 输出 a=$a ,不会做取变量的操作
# 输出 echo 1,不会执行echo 1的命令
双引号:用于希望在其中填充变量和执行命令的场景。
a=123
echo "a=$a"
echo "`cat 2.txt`"
echo "cat 2.txt"
# 执行结果
# a=123 执行了取变量的操作
# hello world! 执行了反引号中的命令
# cat 2.txt 与写了反引号做对比
反引号:用于在双引号中引用命令,表示执行这个命令。或者将命令的结果赋值给一个变量的场景。支持嵌套
将命令的结果赋值给变量
variable=`command`
variable=$(command)
# 推荐第二种方式,可读性更好,单引号与反引号不好区分
变量的输出
#!/bin/bash
ps=`ps -ef`
echo $ps ps1=`ps -ef`
echo "$ps1"
注意:如果被替换的命令的输出内容包括多行(也即有换行符),或者含有多个连续的空白符,那么在输出变量时应该将变量用双引号包围,否则系统会使用默认的空白符来填充,这会导致换行无效,以及连续的空白符被压缩成一个。
具体执行效果可以运行上面的shell脚本,观察可知,带双引号的变量输出会保留原本的格式,而不带的,换行会被压缩一个空格,格式乱了,不利于接下来的过滤信息。所以推荐使用双引号来输出变量。
3 关于$*与$@
相同点:两者都可用于从函数中取参数
不同点
当不被双引号包含时,两者没有任何区别
当被双引号包含时,$@会将参数分割,而$*会将所有参数视为一个整体
#!/bin/bash
# $@ 不带双引号
for var in $@; do
echo "$var"
done
# $* 不带双引号
for var in $*; do
echo "$var"
done
# $* 带双引号
for var in "$*"; do
echo "$var"
done
# $@ 带双引号
for var in "$@"; do
echo "$var"
done
4 字符串操作
4.1 字符串的赋值
可以使用三种方式进行字符串的赋值
a=string
b='string'
c="string"
4.2 字符串的拼接
直接进行拼接就好或者在双引号内部拼接
a="user"
b="wang"
echo "$a is $b"
# 输出 user is wang
4.3 字符串的截取
字符串的截取是经常用到的操作,例如路径截取、版本号截取
主要分为两种方式:
已知想要的字符串的起始和结束的下标,可以通过指定下标的方式截取
语法:${string:start:length}
已知想要的字符串是什么结构,不确定起始和结束的下标,可以通过子串匹配的方式截取
${string#*chars} # 使用#截取右边的所有字符,第一个匹配的
${string##*chars} # 使用##截取右边的所有字符,最后一个匹配的
${string%chars*} #使用% 截取左边的所有字符,第一个匹配的
${string%%chars*} #使用%% 截取左边的所有字符,最后一个匹配的
测试程序
#!/bin/bash
a='hello aa, hello bb'
# 1
echo "1 ---指定截取位置---"
# 指定截取位置 从左向右计数,下标从0开始计数
echo "${a:0:5}"
echo "${a:10}"
# 指定截取位置 从右向左计数,下标从1开始计数
echo -----
echo "${a:0-8:8}"
echo "${a:0-8}"
# 2
# 匹配子串
echo "2 ---匹配子串截取---"
# 从左边开始匹配
echo "${a#*'hello'}" # 可以使用单引号引用字符串
echo "${a##*hello}"
# 从右边开始匹配
echo -----
echo "${a%hello*}"
echo "${a%%hello*}"
汇总
格式 | 说明 |
---|---|
$ | 从 string 字符串的左边第 start 个字符开始,向右截取 length 个字符。 |
$ | 从 string 字符串的左边第 start 个字符开始截取,直到最后。 |
$ | 从 string 字符串的右边第 start 个字符开始,向右截取 length 个字符。 |
$ | 从 string 字符串的右边第 start 个字符开始截取,直到最后。 |
$ | 从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。 |
$ | 从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。 |
$ | 从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。 |
$ | 从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。 |
4.4 字符串的替换
#用变量替换${a//}做字符串替换
${a/要被取代的字串/新的字串} # #变量a中的第一个匹配的字符串会被替换
${a//要被取代的字串/新的字串} #变量a中所有匹配的字符串都会被替换,多了一个 /
#用sed做字符串替换
sed 's/要被取代的字串/新的字串/' # 用来替换第一个匹配的字符串
sed 's/要被取代的字串/新的字串/g' # 用来替换所有匹配的字符串,多了一个 g
Shell命令-常用操作的更多相关文章
- Linux Shell数组常用操作详解
Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...
- linux shell 命令常用快捷键
下面是一些shell的常用快捷键,快捷键玩熟悉了在一定程度上是可以提高工作效率滴… Ctrl + a 切换到命令行开始 Ctrl + e 切换到命令行末尾 Ctrl + l 清除屏幕内容 Ctrl + ...
- Shell命令行操作
1.1 shell提示符 [me@linuxbox ~]$ 如果最后一个字符是"#",表示当前终端会话有超级用户权限.使用root用户登录或者使用能提供超级用户权限的终端能获得该权 ...
- top 命令常用操作
1.显示进程参数 top -c 下面操作为top命令后操作 2.按cpu/mem排序 shift + p/m 3.高亮 排序列 按x键 4.高亮 变化进程行 按b键 5.显示cpu每核的运行状态 按1 ...
- linux shell 字符串常用操作
1.shell内置的字符串操作 表达式 含义 ${#string} $string的长度 ${string:position} string中,从位置$position开始提取字符串 ${string ...
- Shell命令-网络操作之基础之telnet、ssh
文件及内容处理 - telnet.ssh 1. telnet:使用TELNET协议远程登录 telnet命令的功能说明 telnet 命令用于远端登入.执行 telnet 指令开启终端机阶段作业,并登 ...
- vi命令常用操作
一.vi的操作模式 vi提供两种操作模式:输入模式(insert mode)和指令模式(command mode).在输入模式下,用户可输入文本资料.在指令模式下,可进行删除.修改等各种编辑动作. ...
- Shell命令-网络操作之基础之scp、wget
文件及内容处理 - scp.wget 1. scp:用于不同主机之间复制文件 scp命令的功能说明 scp 命令用于 Linux 之间复制文件和目录.scp 是 secure copy 的缩写, sc ...
- Shell命令-网络操作之基础之ping、route
文件及内容处理 - ping.route 1. ping:测试主机之间网络的连通性 ping命令的功能说明 ping 命令用于检测主机.执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信 ...
- 一些风骚的shell命令行操作
1.用你最喜欢的编辑器来敲命令 command <CTRL-x CTRL-e> 在已经敲完的命令后按<CTRL-x CTRL-e>,会打开一个你指定的编辑器(比如vim,通过环 ...
随机推荐
- 【大数据-课程】高途-天翼云侯圣文-Day1:互联网大数据揭秘(大数据介绍&MR实现双十一举牌)
一.大厂职级 P7:年薪百万 二.大数据发展 1.职业路线和岗位角色 2.大数据行业发展 三.大数据的位置 1.热门行业 大数据承上启下 2.三者关系 啤酒和尿不湿:启发可以放在一块 3.大数据作用 ...
- python自然语言处理(NLP)1------中文分词1,基于规则的中文分词方法
python中文分词方法之基于规则的中文分词 目录 常见中文分词方法 推荐中文分词工具 参考链接 一.四种常见的中文分词方法: 基于规则的中文分词 基于统计的中文分词 深度学习中文分词 混合分词方法 ...
- python重要内置模块
目录 包的概念 包的具体使用 编程思想的转变 常用内置模块之collections模块 (收集) 常用内置模块之time模块 (时间) 常用内置模块之random模块 (随机) os模块 sys模块 ...
- 边框 display属性 盒子模型 浮动 溢出 定位 z-index
目录 边框 隐藏属性 钓鱼网站 display visibility 盒子模型 调整方式 浮动 溢出 圆形头像的制作 定位 z-index属性 边框 /*border-left-width: 5px; ...
- 几种数据库jar包获取方式
摘要:以下提供的都是各个数据库较为官方的jar包获取方式. 本文分享自华为云社区<JDBC连接相关jar包获取及上传管理中心白名单处理>,作者:HuaWei XYe. jar包获取 以下提 ...
- CH9434-MCU代码移植,芯片使用详细说明(附Linux开发资料链接)
简介 CH9434是一款SPI转四串口转接芯片,提供四组全双工的9线异步串口,用于单片机/嵌入式/安卓系统扩展异步串口.提供25路GPIO,以及支持RS485收发控制引脚TNOW.本篇基于STM32F ...
- [python] 基于matplotlib实现圆环图的绘制
圆环图本质上是一个中间切出一块区域的饼状图.可以使用python和matplotlib库来实现.本文主要介绍基于matplotlib实现圆环图.本文所有代码见:Python-Study-Notes # ...
- dfs学习笔记
题目链接 可以通过参考一道例题来加深对dfs的认知和学习 题意描述 按照字典序输出自然数 1 到 n 所有不重复的排列,即 n 的全排列,要求所产生的任一数 字序列中不允许出现重复的数字. 输出格式 ...
- [cocos2d-x]从源码角度思考convertToWorldSpace()与convertToWorldSpaceAR()坐标系的转换
convertToWorldSpace() 话不多说,先上源码,之后再慢慢讲解: (5和6图截图的时候重复了,这里就不弄出来了) 只要通过图1到图8中我写的注释进行分析(不懂的地方可以自己去翻一下co ...
- 02-Sed语法介绍
1 Sed语法介绍 介绍Sed支持的基本命令及其命令行语法,Sed可以通过以下两种形式进行调用: 学习sed命令使用之前,需要掌握正则表达式的用法. sed [-n] [-e] 'commands' ...