Linux达人养成计划 I 学习笔记

Shell 是什么:

  • Shell 是一个命令解释器
  • Shell 还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强

Shell 的分类:

  • Bourne Shell:主要包括 sh, ksh, Bash(Linux 标准 Shell,与 sh 兼容), psh, zsh
  • C Shell:主要包括 csh, tcsh

注:系统支持的Shell类型可以在 /etc/shells 文件查询

脚本执行方式

echo [选项] [输出内容]

  • -e:支持反斜线控制的字符转换
控制字符 作用
\a 输出警告音
\b 退格键
\n 换行符
\r 回车键
\t 制表符
\v 垂直制表符
\0nnn 按照八进制ASCII码表输出字符,其中0是数字零,nnn是三位八进制数
\xhh 按照十六进制ASCII码表输出字符,其中hh是两位十六进制数

echo -e "\e[1;颜色代号 输出内容 \e[0m"

  • 30m 黑色
  • 31m 红色
  • 32m 绿色
  • 33m 黄色
  • 34m 蓝色
  • 35m 洋红
  • 36m 青色
  • 37m 白色

脚本

  • #!/bin/bash :脚本第一句,不能省略

脚本执行:

  • 赋予执行权限,直接运行

    • chmod 755 hello.sh
    • ./hello.sh
  • 通过 Bash 调用执行脚本
    • bash hello.sh

Bash 的基本功能

命令的别名与快捷键

alias :查看系统中所有的命令别名

alias 别名= '原命令' :设定命令别名(临时生效)

vi ~/.bashrc :写入变量配置文件(永久生效,需重新登陆或者执行 source ~/.bashrc 命令)

unalias :删除别名(临时生效)

命令生效顺序:

  • 第一顺位执行用绝对路径或者相对路径执行的命令
  • 第二顺位执行别名
  • 第三顺位执行 Bash 的内部命令
  • 第四顺位执行按照 $PATH 环境变量定义的目录查找顺序找到的第一个命令

常用快捷键:

  • ctrl+c :强制终止当前命令
  • ctrl+l :清屏,等于 clear 命令
  • ctrl+a :光标移动到命令行首
  • ctrl+e :光标移动到命令行尾
  • ctrl+u :从光标所在位置删除到行首
  • ctrl+z :把命令放入后台
  • ctrl+r :在历史命令中搜索

历史命令

history [选项] [历史命令保存文件]

  • -c:清空历史命令
  • -w:把缓存中的历史命令写入历史命令保存文件 ~/.bash_history

历史命令默认会保存1000条,可以在环境变量配置文件 /etc/profile 中进行修改

历史命令的调用:

  • 使用上、下箭头调用以前的历史命令
  • 使用 "!n" 重复执行第 n 条历史命令
  • 使用 "!!"" 重复执行上一条命令
  • 使用 "!字符串" 重复执行最后一条以该字符串开通的命令

在 Bash 中,按 "Tab" 键就会自动进行补全

输出重定向

标准输入输出:

设备 设备文件名 文件描述符 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/sdtout 1 标准输出
显示器 /dev/sdterr 2 标准错误输出

输出重定向:

类型 符号 作用
标准输出重定向 命令 > 文件 以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中
- 命令 >> 文件 以追加的方式,把命令的正确输出输出到指定的文件或设备当中
标准错误输出重定向 错误命令 2> 文件 以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中
- 错误命令 2>> 文件 以追加的方式,把命令的错误输出输出到指定的文件或设备当中
正确输出和错误输出同时保存 命令 > 文件 2>&1 以覆盖的方式,把正确输出和错误的输出都保存到同一个文件中
- 命令 >> 文件 2>&1 以追加的方式,把正确输出和错误的输出都保存到同一个文件中
- 命令 &> 文件 以覆盖的方式,把正确输出和错误的输出都保存到同一个文件中
- 命令 &>> 文件 以追加的方式,把正确输出和错误的输出都保存到同一个文件中
- 命令 >> 文件1 2>> 文件2 把正确的输出追加到文件1中,把错误的输出追加到文件2中

注:把命令结果输出到 /dev/null 相当于丢弃输出结果

输入重定向

wc [选项] [文件名]

  • -c :统计字节数
  • -w :统计单词数
  • -l :统计行数
  • ctrl + d :得到统计结果
符号 作用
命令 < 文件 把文件作为命令的输入
命令 << 标识符 ... 标识符 把标识符之间内容作为命令时的输入

管道符

多命令顺序执行:

多命令执行符 格式 作用
; 命令1 ; 命令2 多个命令顺序执行,命令之间没有任何逻辑关系
&& 命令1 && 命令2 当命令1正确执行,则命令2才会执行
|| 命令1 || 命令2 当命令1执行不正确,则命令2才会执行

命令1 | 命令2 :命令1的正确输出作为命令2的操作对象

通配符

通配符 作用
? 匹配一个任意字符
* 匹配0个或任意多个任意字符,也就是可以匹配任何容
[] 匹配中括号中任意一个字符
[-] 匹配中括号中任意一个字符,-代表一个范围
[^] 匹配不是中括号内的一个字符

其他特殊符号:

符号 作用
'' 在单引号中所有的特殊符号都没有特殊含义
"" 在双引号中特殊符号都没有特殊含义,但是"$", "`", ""例外
`` 反引号括起来的内容是系统命令,在 Bash 中会先执行它。和$()作用一样,不过推荐使用$(),因为反引号非常容易看错
$() 和反引号作用一样,用来引用系统命令
# #开头的行代表注释
$ 用来调用变量的值
\ 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符

Linux 学习 (八) Shell的更多相关文章

  1. (原创)鸟哥linux学习script shell相关笔记

    在使用鸟哥linux进行script shell学习的过程中碰到一些不太明白的知识点,在这里进行一些记录 1. [root@www scripts]# vi sh03.sh #!/bin/bash # ...

  2. (零)linux 学习 -- 从 shell 开始

    The Linux Command Line 读书笔记 - 部分内容来自 http://billie66.github.io/TLCL/book/chap02.html 文章目录 前言 什么是 she ...

  3. linux 学习10 shell 基础

    10.1 Shell概述 .Shell是什么 Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编写一 ...

  4. Linux学习——自定义shell终端提示符

    转自:here 我使用的Linux发行版是LinuxMint 17.2 Rafaela,默认情况下Terminal中的shell提示包括了用户名.主机名.当前目录(绝对路径)和提示符.这样会导致当进入 ...

  5. linux 学习随笔-shell基础知识

    1:用户的shell历史命令保存在home/username/.bash_history中 #!!  执行用户的上一条命令 #!pw  执行命令历史中最近一次以pw开头的命令 2:'*'来匹配零或多个 ...

  6. Linux学习之Shell编程基础

    转自:http://my.oschina.net/itblog/blog/204410 1 语法基本介绍1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来 ...

  7. 【Linux学习八】脚本编程

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 一.多层bash#.和source都是当前bash [root@nod ...

  8. linux学习总结----shell编程

    ## 环境变量 ## 全局变量 ``` 常见的全局环境变量 PATH 指令的搜索路径 HOME 用户的家目录 LOGNAME 登录名 SHELL 脚本的类型 使用全局环境变量 echo $PATH 自 ...

  9. (六)linux 学习 -- 从 shell 眼中看世界

    The Linux Command Line 读书笔记 - 部分内容来自 http://billie66.github.io/TLCL/book/chap08.html 文章目录 字符展开 `*` 路 ...

随机推荐

  1. pythn print格式化输出---------"%s 和 % d" 都是什么意思?

    pythn print格式化输出. %r 用来做 debug 比较好,因为它会显示变量的原始数据(raw data),而其它的符号则是用来向用户显示输出的. 1. 打印字符串 print (" ...

  2. WebUploader点击上传文件选择框会延迟几秒才会显示

    accept: { title: 'Images', extensions: 'jpg,jpeg,png', mimeTypes: 'image/*' } 改为 accept: { title: 'I ...

  3. Spring Boot统一异常处理实践

    摘要: SpringBoot异常处理. 原文:Spring MVC/Boot 统一异常处理最佳实践 作者:赵俊 前言 在 Web 开发中, 我们经常会需要处理各种异常, 这是一件棘手的事情, 对于很多 ...

  4. SAP MM 无价值物料管理的一种实现思路

    SAP MM 无价值物料管理的一种实现思路 笔者所在的项目,客户工厂处于先期试生产阶段,尚未开始大规模的商业化生产,但是这并不影响客户集团总部的SAP项目实施.笔者于7月初加入该工厂的第2期SAP项目 ...

  5. 解决nginx配置负载均衡时invalid host in upstream报错

    当前平台: windows nginx版本: 1.11.5 前言: 在配置负载均衡时,同时也需要设置反向代理,当修改了nginx.conf时,发现nginx服务无法开启. 1. 打开"ngi ...

  6. 如何获得MIUI10系统的root超级权限

    MIUI10系统有没有办法拥有root超级权限?做开发的人都清楚,android手机有root超级权限,如果手机拥有root相关权限,能够实现更强的功能,举个栗子做开发的人企业的营销部门,使用某些营销 ...

  7. Git命令备忘

    最近在用Git,查了点相关资料,逻辑依然不太明了,先整理一部分备忘,以后补充 一.本地Git与Github/码云的关联 1. 设置本地用户名,邮箱 git config --global user.n ...

  8. Linux 中磁盘阵列RAID10配置

    首先,了解一下RAID是什么?(百度所得) 独立磁盘冗余阵列(RAID,redundant array of independent disks)是把相同的数据存储在多个硬盘的不同的地方(因此,冗余地 ...

  9. C#List<object>排序

    //定义一个集合 var list = new List<Object>();//这里的Object为对象类型 //假设list已经有数据存进去,根据对象的某个字段升序或降序 var or ...

  10. java每日一总结

    一, 1.安装jdk时路径中不能有空格或者中文. 二, 1.进入文件夹:cd+文件夹名称. 2.进入多级文件夹:cd+文件夹1\文件夹2\文件夹3. 3.返回上一级:cd 空格+... 4.返回根路径 ...