Linux(6)-命令行的使用,history,shell脚本


Linux入门很简单-第六章笔记

1.终端shell,man

Linux 是一个内核,内核管硬件-显卡、声卡、内存、硬盘、硬盘上的程序调度
Shell–将程序猿操作意图转述给内核。其本质是一个二进制程序,路径/bin/bash。

终端负责提供输入命令的交互界面,去环境变量Path中唤醒对应的命令程序,执行具体的操作。

多种多样的shell终端–bash,csh,ksh。
ubuntu 中默认的shell 是bash。(在/etc/passwd文件中会表明默认的shell终端是什么)

  1. Ctrl+alt+T 唤醒伪终端(Gnome终端)
  2. Ctrl+alt+F1 唤醒的黑漆漆终端, Ctrl+alt+F7回到图形界面

终端输出

chenyingying@chenyingyingde-Air:~$
// 用户名@计算机名:当前目录$
// $命令提示符,mac的命令提示符为%

bash 执行的操作:

  1. 预留关键字:for、history–自己操作
  2. 命令程序:ls、free–去环境变量中找命令程序交由他们来执行

环境变量PATH中记录了bash 找程序的路径,按照该路径列表挨个去找命令程序。 如果报 xxx:command not found, 就需要查看是环境变量中是否存在该命令的bin文件路径。如果没有请设置相应的路径(第12条)

// 查看环境变量的内容,以冒号分割各个路径
echo $PATH
/usr/local/sbin:/usr/local/bin:/Users/chenyingying/anaconda3/bin:/Users/chenyingying/anaconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin

提示:/usr/local目录与/usr目录结构类似,都包含bin,sbin,lib,incud等目录。一般来说/usr中存放从软件源中安装的软件,/usr/local中存放用户用其他方式安装的软件。

/usr/sbin–useradd,gdm,smbd,nmbd 管理级的程序
/usr/bin – 有ls命令程序

一般情况下:

  1. 普通用户使用命令存放目录–/bin, /usr/bin, /usr/local/bin
  2. root 用户使用命令存放目录–/sbin, /usr/sbin, /usr/local/sbin

要运行一个二进制程序,而且该程序不在PATH所包含的所有路径中(新下载的安装程序),在运行的时候加上路径即可,bash 就直接去写的路径中找相应的二进制程序了。

./setup.sh // 直接运行该二进制程序

man 命令解说员, 查看命令的作用,按Q键推出解说界面。
pwd- print woking directory --输出当前工作目录
date–打印当前的日期
Linux 软件设计的理念–只做一个功能,但是要做到最好。通过多个程序组合可以实现任何功能。
bash 会将所有的通配符都展开之后再传递给实际的命令。

1.1 Ctrl+r–匹配查找历史命令

按照模糊印象查询历史命令:就用Ctrl+ r 组合键进入历史记录搜寻状态。
键盘输入一个字母,当前命令行就会匹配最接近的命令,
按下enter会执行匹配的命令,按下右键(上下左右方向键中的右键)会进入命令编辑状态
在这里插入图片描述

1.2 history [n] --列出历史命令

history [n] n为数字,列出最近的n条命令

history 3 # 显示3条命令

所有的历史命令存在~/.bash_history中,打开该文件可以查看所有的命令
(mac中history 3无效,会显示所有的历史命令)

1.3!–执行历史命令

! number 执行第number条命令
! command 从历史命令中找到最近的以command开头的命令执行
!! 执行上一条命令
参考博文:https://blog.csdn.net/gui951753/article/details/79225429

2.shell 编程

2.1 shell脚本

把程序打包

  1. 文本编辑器,编辑shell 脚本,存成xxx.sh的格式
  2. 赋予 脚本可执行权限:

chmod +x ./xxx.sh

  1. 运行脚本(./十分必要)

./xxx.sh

注意:

  1. 脚本文件并不要求特定的扩展名,只要是文本文件,具有可执行的权限即可。一般习惯上将脚本文件扩展名设为.sh

2.2 注释

shell 脚本的注释用#号

2.3 指明所用的shell

shell 脚本文件第一行说明使用的shell (有点类似于解释器的说明)

#!/bin/bash

也可以直接在运行脚本程序时显式指定

bash xxx.sh

2.4 支持函数

有一段代码需要在脚本里使用执行多次,可以将其写成一个函数直接调用。Bash中的函数是没有参数列表, 参数按照位置传递的,而且自动给出变量名称,例如$1就表示第一个参数,当然$2就是第二个参数,参数之间用空格区分。

#!/bin/bash
# shell 脚本函数使用dmeo
function parse() {     # 定义函数
  echo "$0"
  echo "$1"            # 传达给函数的第一个参数
}
parse $1               # 调用函数,不需要写小括号
parse $2

# 运行脚本------
bash test.sh 123 321

# 脚本输出------
test.sh
123
test.sh
321

2.5 使用变量

shell 中的变量类型只有字符串

#!/bin/bash
value=128
echo value
echo $value    # 取变量的值,否则直接使用'value'字符串
player1=YOGA   # 似乎空格符号都不能用,./shell_test.sh: line 5: YOGA: command not found
player2=KEN
echo ${player1}vs${player2}

算术运算

num=8
num=$num+1
echo $num
num=8
num=`expr &num+1`
echo $num

输出

8+1
./shell_test.sh: line 12: num+1: command not found
expr: syntax error

环境变量–在整个系统运行中都有效的变量.例如PATH,$HOME-当前用户的家目录,$TZ-本系统所在的时区,
可以通过export 让一个用户变量,变成全局变量(环境变量在当前会话结束后失效)

# mac zsh没有设置全局变量成功
export num=8
echo $num

2.6 解析命令行参数

参考
可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推。其中 $0 为执行的文件名。

./extract_cyy.sh 123 # 在编写bash 脚本时, 123 可以通过$1获取

2.7 if, for, case, while

该有的它都有,不过我觉得…应该不会大量用到shell编程吧
(此处略,被虐了再回来补好吧)

if语句的基本语法如下, 条件判断可以包括:字符串的判断, 数值的判断, 文件和目录的判断, 复杂逻辑判断

if [ command ];then
   符合该条件执行的语句
elif [ command ];then
   符合该条件执行的语句
else
   符合该条件执行的语句
fi

参考文档: shell 语言中的 if 条件判断

2.8 shell脚本中的引号

Shell脚本中,经常会使双引号或者单引号将字符串括起来,也可以不使用引号来定义字符串变量。

单引号是全引用, 变量不替换。被单引号括起的内容不管是常量还是变量都不会发生替换。
双引号是部分引用,变量替换。被双引号括起的内容常量还是常量,变量则会发生替换,替换成变量内容。如果双引号中有命令、变量等,会先把变量、命令解析出结果。
无引号 定义字符串时,字符串不能包含空白字符(如Space或Tab)。
反引号 命令替换,通常把命令输出结果保存在变量中, 如果命令不用反引号包含,那么命令不会执行,而是直接输出。

var=dablelv
echo '$var'     # 输出:$var    原样输出单引号里的内容
echo "$var"     # 输出:dablelv 先进性变量取值操作,然后在echo该值
echo `ls`

参考文档:Shell 双引号和单引号的区别

3.bash 发展历史

Thomp Shell-Ken Thompson-Unix操作系统接口界面,用来与人类交流。
Bourne Shell-Steve Bourne-加入控制流的shell–成为后来的Unix 标准shell。
Bourne Again Shell-Brain Fox-就是后来的bash,完善了Bourne Shell。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值