shell学习1

shell脚本1

1.脚本基础

shell程序是linux/unix操作系统与用户交互的接口

1.1 内建命令

内建命令:shell程序本身可以接收并处理的指令

外部命令:从path路径中搜索,创建一个当前shell的子进程,子进程执行

type -a 指令

[root@iZjrkzhzhrquk8Z ~]# type -a pwd
pwd 是 shell 内建
pwd 是 /usr/bin/pwd

pwd既有内建版本,也有外部命令版本

1.2 退出登录

logout

exit

ctrl+D

1.3 自定义shell
  • 历史命令记录:

    history
     1000  export LANG="en_US";export LANGUAGE="en_US";export LC_ALL="en_US";top
     1001  ls
     1002  clear
     1003  type -a pwd
     1004  history
    
    
  • 自定义shell:

    [root@iZjrkzhzhrquk8Z ~]# alias hh=‘ls -l‘
    [root@iZjrkzhzhrquk8Z ~]# hh
    总用量 4
    drwxr-xr-x 4 root root  154 5月   6 21:59 gocqhttp
    drwxr-xr-x 8 root root  207 5月   6 22:08 rebot
    drwxr-xr-x 2 root root 4096 5月   6 15:48 rpm
    
  • 永久生效,将shell写入用户目录下的初始化文件.bashrc,此文件每次登录会自动执行,修改后重新登录即可生效

1.4 修改命令行提示符

命令行提示符通过内建变量PS1和PS2定义的,通过修改二者即可改变其显示

[root@iZjrkzhzhrquk8Z ~]# export PS1=‘<love>[\w]‘
<love>[~]ls
gocqhttp  rebot  rpm
<love>[~]cd rebot/
<love>[~/rebot]ls

PS2一般使用于命令行里较长命令的换行提示信息

PS1特殊字符

参数 作用
\H 主机名
@ 12小时制时间
\A 24小时制时间
\! 命令历史列表编号
\W 当前工作目录名
\$ 如是root则为#否为 $
1.5 PATH环境变量

可以不加路径直接执行命令,path定义了执行外部命令时bash的搜索路径,有先后次序。

[17:49]~#echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[17:57]~#export PATH=~/bin:${PATH}
[17:58]~#echo $PATH
/root/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[18:04]~#ls bin/
hello.py  hello.sh
[18:04]~#hello.sh
hello world

如上图,添加root目录下bin到环境变量,可以直接执行其下的脚本(需要chmod+x)

1.6 获取帮助
  • 使用内建命令help来获取bash的帮助信息 help help,只能用于内建命令
  • man获得外部命令的man手册页
  • info显示帮助信息
[18:16]~#help for
for: for 名称 [in 词语 ... ] ; do 命令; done
    为列表中的每个成员执行命令。
    
    `for‘ 循环为列表中的每个成员执行一系列的命令。如果没有
    `in WORDS ...;‘则假定使用 `in "$@"‘。对于 WORDS 中的每
     个元素,NAME 被设定为该元素,并且执行 COMMANDS 命令。
    
    退出状态:
    返回最后执行的命令的状态。
1.7 shell 脚本

vim hello

#!/bin/bash
# 注释,以上指定了shell程序/bin/bash来执行程序
cal #显示日历
date #显示当前时间和日期
echo ‘Hello World!‘ 
[18:30]~#hello
      五月 2021     
日 一 二 三 四 五 六
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31               
2021年 05月 10日 星期一 18:30:17 CST
Hello World!

执行脚本的方法,filename为绝对路径

  • source + filename
  • chmod +x file,然后./file
  • bash,sh + filename
  • source+<+filename
1.8 注释

# 单行注释

:<<!
#注释内容块
!

参考书目:
[1] 张泽.Linux Shell编程艺术[M]. 北京:电子工业出版社,2014.1

shell学习1

上一篇:Linux下安装Redis


下一篇:Linux(CentOS 7) 安全加固之非业务端口服务关闭 postfix port 25