一、Linux Shell基础

简介:

1.1、shell基础

  Bash 是一个与Bourne Shell兼容的、执行从标准输入设备文件读取的命令的语言解释器。Bash是Bournae-Again Shell的缩写。Bash与原来的Unix sh Shell向后兼容,并且融合了一些有用的Korn Shell和C Shell的特性。它相对于sh在编程和交互式使用两方面都有功能改进。另外,大部分的sh脚本可以在不修改的情况下由Bash直接运行。

  Linux环境由以下几部分构成:

内核-------------------Linux操作系统的核心

Shell------------------为用户和内核提供一个交互环境

终端模拟器-------------允许用户输入命令并在屏幕上回显命令的运行结果

Linux桌面和窗口管理器--Linux桌面是各种软件应用程序的集合、它包含文件管理器、窗口管理器等

 与登录Shell相关的文件

  当Linux系统的运行级别为3时,用户可以从本地登录到系统控制台,或在系统运行级别为5时直接以图形界面方式登陆。在这两种情况下登录时都需要输入用户名和密码。用户登陆时Bash将会使用以下初始化文件和启动脚本:

/etc/profile------------------系统级的初始化文件,定义了一些环境变量,由登录Shell调用执行

/etc/bash.bashrc或者/etc/bashrc----其文件名根据不同的Linux发行版而异,每个交互式shell的系统级的启动脚本,定义了一些函数和别名

/etc/bash.logout--------------系统级的登录shell清理脚本,当登陆shell退出时执行

$HOME/.bash_profile、$HOME/.bash_login、$HOME/.profile--用户个人初始化脚本,由登录shell调用执行。这三个脚本只有一个会被执行,按照此顺序查找,第一个存在的将被执行

$HOME/.bashrc----------------用户个人的每个交互式shell启动脚本

$HOME/.bash_logout-----------用户个人的登录shell清理脚本,当登录shell退出时执行

$HOME/.inputrc---------------用户个人的由readline使用的启动脚本,定义了处理某些情况下的键盘映射

交互式登录式读取次序:(直接通过终端输入用户信息登录系统)

  /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

非交互式登录读取次序:(su ,图形界面的终端,执行脚本)

  ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

1.2、bash操作基本技巧

(1)光标跳转:

Ctrl+a:跳到命令行首  

Ctrl+e跳到命令行尾

Ctrl+u:删除光标至命令行首的内容

Ctrl+k:删除光标至命令行尾的内容   

Ctrl+l:清屏

Ctrl+z:将当前命令送至后台

Ctrl+shift+c:复制

Ctrl+shift+v:粘贴

(2)History:查看命令历史列表

  -c:清空命令历史   

  -d [n]: 删除指定位置的命令

  -w:保存命令历史至历史文件中

缓冲区中的命令会在shell退出时保存至 .bash_history文件中

命令历史相关的环境变量:

  HISTSIZE:命令历史中可以保存的命令的个数;

  HISTFILE:命令历史文件;

  HISTFILESIZE:命令历史文件可以保存的命令的个数;

  HISTCONTROL:控制命令历史的生成;

    ignoredups:忽略记录重复的命令;连续的相同命令才为重复;

    ignorespace:不记录以空白字符开头的命令;

    ignoreboth:同时具有上面两种特性;

(3)命令历史的使用技巧:

  !n:执行命令历史中的第n条命令;

  !-n:执行命令历史中的倒数第n条命令;

  !!: 执行上一条命令;

  !string:执行命令历史中最近一个以指定字符串开头的命令

  !$:引用前一个命令的最后一个参数(或者Esc, .   Alt+.);

(4)命令别名:在shell中定义的别名仅在当前shell生命周期中有效。

  alias CMDALIAS='COMMAND [options] [arguments]' 

(5)命令替换: $(COMMAND)  或者 `COMMAND`

(6)文件名通配: globbing

*:任意长度的任意字符    

?:任意单个字符

[^]:匹配指定字符范围外的任意单个字符  如:[^0-9]

[]:匹配指定范围内的任意单个字符  

[:space:]:空白字符

[:punct:]:标点符号   

[:lower:]:小写字母   

[:upper:]: 大写字母

[:alpha:]: 大小写字母

[:digit:]:数字

[:alnum:]: 数字和大小写字母

1.3、bash脚本基础知识

1、变量中字符的长度:${#VARNAME}

2、脚本配置文件

   /etc/rc.d/init.d/服务脚本;

  配置文件:/etc/sysconfig/服务脚本同名的配置文件

3、局部变量定义

  local VAR_NAME=

4、命令mktemp   创建临时文件或目录

  mktemp /tmp/file.XX -d: 创建为目录

5、信号kill -SIGNAL PID

  信号状态1: HUP  2: INT   9: KILL   15: TERM

trap 'COMMAND' 信号列表    

  信号捕捉,但9和15无法捕捉  Ctrl+c: SIGINT

6、一行执行多个语句,语句间用分号分隔

7、测试脚本是否有语法错误:

  bash -n 脚本       bash -x 脚本:单步执行

8、第一行:#!/bin/bash    exit: 退出脚本   

  /dev/null:等价于一个只写文件. 所有写入它的内容都会永远丢失




本文转自 梦想成大牛 51CTO博客,原文链接:http://blog.51cto.com/yinsuifeng/1941744,如需转载请自行联系原作者

相关文章
|
6月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
560 9
|
6月前
|
算法 Linux Shell
Linux实用技能:打包压缩、热键、Shell与权限管理
本文详解Linux打包压缩技巧、常用命令与原理,涵盖.zip与.tgz格式操作、跨系统传文件方法、Shell运行机制及权限管理,助你高效使用Linux系统。
Linux实用技能:打包压缩、热键、Shell与权限管理
|
6月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
546 2
|
8月前
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
940 1
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
11月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
1228 25
|
10月前
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
285 4
|
10月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
533 3
|
11月前
|
Linux Shell
shell_42:Linux参数移动
总的来说,参数移动是Linux shell脚本中的一个重要概念,掌握它可以帮助我们更好地处理和管理脚本中的参数。希望这个解释能帮助你理解和使用参数移动。
244 18
|
Shell Linux
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
1046 32