Linux学习bash与脚本编程篇七

本文详细介绍Bash脚本的基础知识,包括历史命令查询、命令别名设置、环境变量使用、变量操作、随机数生成、命令提示符定制、路径与命令查找顺序、环境配置以及数据流重定向等核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习bash与脚本编程

Borne again shell 简称bash

可以使用的shell在文档/etc/shells

bash的几个功能

历史命令:

history n列出最近n个命令

命令别名设置:

alias ll=”ls -l”

取消别名

Unalias  别名

查询命令是否为内置bash命令:type

Type name

在bash下面命令执行与快速编辑

Ctrl+u从光标处向前删除

Ctrl+k从光标处向后删除命令字符串

Ctrl+a让光标移动到命令串最前面

Ctrl+e光标移动到最后

变量使用

变量与变量内容等号=连接

name=shuiyihang

等号两边不能出现空格,若有空格应用双引或者单引号包括

双引号内特殊字符$name保持原有属性

单引号内为文本

可用转义字符\将enter,空格变成一般字符

查看变量内容echo $name

环境变量的功能

随机数生成器$RANDOM,变量范围0~32767

declare -i  $RANDOM*10/32767[-i就是整数值]

使用env观察系统环境变量

Set观察所有变量[系统和自定义变量],轻易不要单独使用,会打印出很长的数据,可以配合grep筛选

自定义变量只能在一个shell进程里面使用

除非export[将自定义变量转为环境变量]

测试:bash打开新的线程

//上图打错了,但结果不影响

$PS1:

命令提示符

\d显示日期,格式[星期 月 日]

\H完整主机名

\h省略主机名

\t显示时间

\u用户账号

\w完整的工作目录

\W利用basename函数取得工作目录

\#执行的第几个命令

//basename   /etc/hello/test   获取路径的文件名

\$提示字符,root就是\#

设置PS1

$PS1=’[\u@\H\w\t]\$’

查看进程PID  echo  $$或者ps

将环境变量转为自定义变量declare +x   name

//由此可以想象declare -x name 把name加入全局变量

//declare单独不要使用,和set一样会打印出很多........

标记通过环境导出到后续命令的名称,使用+而不是-关闭属性,

查看上一个命令的返回值

echo  $? 成功执行命令返回0

//出了个小问题,之前打开vim不小心使用了ctrl+z,以为是关闭进程,实际是挂在后台了

//导致无法退出logout

//解决办法

//jobs -l 命令列出所有进程

//fg %n[n为进程号1,2之类]在前台运行   bg同,后台运行

//kill %n或者kill PID

查看语系

locale -a查看所有支持语系编码

变量键盘读取,数组与声明:read,array,declare

read  variable适用于脚本里面使用

declare 声明变量的类型

declare -i  var 将变量声明为整数[integer]

declare -a  var 声明为数组

declare -r  var将变量设置为只读属性,不可更改

只读属性只能注销才能恢复

declare -p列出变量属性

变量内容的删除,取代,替换

${var#/*:}

删除变量开始最短的#,/开始标志,:结束的标志,*通配符

#替换文字最短一个

##替换文字最长一个

#和##都是从前面开始删除

%和%%是从后面开始删除

 

开始标志:,结束标志bin

Bash shell的操作环境

路径与命令查找顺序

  1. 以相对或绝对的路径执行命令,例如/bin/ls或者./ls
  2. 由alias找到命令
  3. 由bash内置的builtin命令执行
  4. 通过$PATH变量查找执行

举例:echo 为一个bash内置命令

alias  echo=’echo hello’[只能单引号使用,双引号具有保持变量原有属性的设置]

bash的登陆与欢迎信息:/etc/issure,/etc/motd

\d显示本地端日期

\l[小写L]显示第几个终端界面

\m显示硬件等级

\n主机网络名称

\r操作系统版本

\t本地端时间

\S操作系统的名称

\v操作系统版本

\d和\t,\l效果

bash的环境配置

前几节的命令别名,自定义变量,一旦注销都会消失,要想保留设置,就要将这些设置写入配置文件

login shell需要输入用户及账号密码登录

non-login shell 在X-window上面直接召唤terminal或者在一个终端下面bash命令进入

这两个取得bash的情况,读取的配置文件并不一样

/etc/profile  

只有login shell读取,每个用户登录取得bash必读取的配置文件,想要调整所有用户环境使用这个,不过没事不要随便改变这个文件

~/.bash_profile

~/.bash_profile

~/.bash_login

~/.profile

上面三个文件只读取一个,如果不存在才会读下一个

只有login shell读取

实际读取的是~/.bashrc文件

non-login shell,仅读取~/.bashrc

source 命令

读入环境配置文件

 

 

在.bashrc文件里修改添加别名测试

 

注:source和.功能一样

echo无法打印出别名

终端快捷命令查看stty -a

Ctrl+Q

Ctrl+S

数据流重定向

1>覆盖方法,正确数据写入

1>>累加方法,正确数据写入

2>覆盖方法,错误数据写入

2>>累加方法,错误数据写入

若只有>>,>,默认是1

双向重定向tee

数据一份送往文件,一份发送到屏幕

echo $PATH|tee 1.txt|cut -d “:” -f 1

 

命令执行

cmd1;cmd2   先执行cmd1,再执行cmd2

cmd1&&cmd2若cmd1执行完毕,且正确执行[$?=0],则执行cmd2

若cmd1执行完毕错误,则不执行cmd2

cmd1||cmd2若cmd1执行完毕,且正确执行[$?=0],则不执行cmd2

若cmd1执行完毕错误,则执行cmd2

管道命令

管道命令|仅能处理上一个命令传来的正确信息,对于错误信息无处理能力

选取命令cut,grep

将一段数据分析后,取出我们想要的

cut -d “分割字符” -f num

-d,-f一般配合使用,num代表取出第几段

grep[常用]

-c计算找到匹配字符次数

-i忽略大小写

-n顺便输出行号

-v反向选择[没有关键词的行]

--color=auto关键词部分加上颜色

排序命令sort,wc,uniq

wc计算输出数据的行数,字数,字符数

字符转换命令tr,col,join,paste,expand

tr

用来删除一段信息中的文字或者是进行文字信息替换

tr [-ds]  set1....

-d 删除信息中的set1字符

-s替换重复字符

|tr “[a-z]” “[A-Z]”转为大写

col用来处理将tab键转为空白

-x将tab键转为空白

感觉用没用作用不太大........

Join

用来处理两个文件之间的数据,主要用在处理两个文件当中,有相同数据的那一行,才将他们加在一起

//join不太好用....................

paste

paste [-d接分隔符默认tab] file1  file2

expand

将tab转为空格

 

 

划分命令split

文件太大,使用split将文件分割

-b num[num为分割的大小,可以接单位b,k,m],默认以字节单位

-l用行数来进行划分//split有问题

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值