侧边栏壁纸
博主头像
口鸟人 博主等级

言念君子 . 温其如玉

  • 累计撰写 39 篇文章
  • 累计创建 16 个标签
  • 累计收到 14 条评论

目 录CONTENT

文章目录

Linux: shell基础学习(1)

koniaoer
2024-05-05 / 2 评论 / 1 点赞 / 54 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2024-05-06,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

bash篇

bash 特性汇总

文件路径命令自动补全

当你忘记路径时,按tap键会自动补全

当你忘记某个命令时,输入前几个字母按tap键会显示相关命令

别名alias

给命令一个别名,防止其他人违规操作

快捷键

ctrl + a 移动到行首

ctrl + e 移动到行尾

ctrl + u 删除光标之前的字符

ctrl + x 删除光标之后的字符

ctrl + l 清空终端内容,同于clear

通配符

历史命令记录

history 显示历史命令

语法:history [参数]

参数:

-c:清空历史命令记录。

-a:将当前会话中执行的命令追加到历史命令记录中。

-w:将历史命令记录写入历史命令文件(默认为~/.bash_history)。

-r:读取历史命令文件中的命令记录,并将其添加到当前命令历史记录中。

-n:显示最近的N条历史命令。

-p:显示以指定字符串开头的历史命令。

-s:将指定的字符串添加到命令历史记录中。

调用历史记录命令 ![命令行数]

!! 执行上一次命令

[方向键] 查询历史命令

echo 用于字符串的输出

echo $HISTSIZE

ps命令

变量含义

变量的定义与引用

单引号不能识别特殊语法,双引号能识别到特殊符号

变量与值之间不能有空格

变量的作用域

本地变量,只针对于当前的shell进程

局部变量的作用范围仅限命令行所在的shell或shell脚本文件中

环境变量

全局变量的作用范围则包括本shell进程及其子进程

  • 用户个人配置文件 ~/.bash_profile (以个人配置文件优先加载,读取变量)

  • 远程登陆用户特有文件 ~/.bashrc

  • 全局配置文件 /etc/profile , /etc/bashrc ,且系统建议最好创建在 /etc/profile.d/ ,而非直接修改主文件,修改全局配置文件会影响所有登录系统的用户

检查系统环境变量的命令

set 输出所有变量,包括全局变量,局部变量

env 只显示全局变量

declare 输出所有变量(同set)

exprot 显示和设置环境变量值

撤销环境变量

unset 变量名,删除变量或函数

设置只读变量

readonly 只有shell结束,只读变量才会失效

awk

特殊变量:shell内置的特殊功效变量

特殊状态变量
$?

用法:echo $?

0 : 成功

!0: 失败

$$
$!
$_
特殊参数变量
$0 获取shell脚本文件名

$n
$#
$*
$@

自定义变量

shell子串

bash基础内置命令

echo /(printf)

eval

exec

export

read

shift

${变量} 返回变量值

${#name} 返回变量长度

${变量:num} 返回变量第num个后的字符

${变量:num:num2} 返回变量第num个字符的num2个字符

${变量#a*c} 从开头删除最短匹配a-c的字符

${变量##a*c} 从变量开头删除最长匹配的a-c的字符

${变量%a*c} 从变量结尾开始删除最短匹配的a-c的字符

${变量%%a*c} 从变量结尾开始删除最长匹配的a-c的字符

${变量/str/string} 用string代替第一个匹配的str

${变量//str/string} 用string代替所有的str

${变量:-word} 如果变量为空,返回word字符串

${变量:=word} 如果变量为空,把word赋值给变量并返回word字符串

${变量:?word} 如果变量为空,返回错误信息,否则输出变量值

${变量:+word} 如果变量为空,什么都不做,否则返回word

创建进程列表(创建子shell)

开辟子shell可以在多个子shell同时运行

Linux默认的有关shell的变量

BASH_SUBSHELL #该变量的值如果是0就是在当前shell中,否则就是在开辟的子shell

SHLVL

使用子shell运行

shell的进程列表理念,使用( )小括号就是开启shell运行命令

(cd ~;pwd;ls ;cd /tmp/ ;pwd;ls;echo $BASH_SUBSHELL)

子shell嵌套

多个子shell嵌套只需要多加几个( )小括号就行

(cd ~;pwd;ls ;cd /tmp/ ;(pwd;ls;echo $BASH_SUBSHELL))

利用括号,开启子shell的理念,以及检查,在shell脚本开发中,经常会用子shell进行多进程的处理提高程序并发执行效率

内置命令,外置命令

内置命令: 在系统启动时就加载入内存,常驻内存,执行效率更高,但是占用资源 (cd,ls ...) compgen -b

外置命令: 系统需要从硬盘中读取程序文件,再读入内存加载(外置命令一定会开启一个子进程运行)

ctrl +

1

评论区