Bash 的基本功能

一、命令别名

1. 命令生效的顺序

执行使用绝对路径或相对路径执行的命令

执行别名

执行Bash内部命令

执行按照 $PATH 环境变量定义的目录顺序查找到的第一个命令

2. 查看别名

命令格式

alias [别名]

实例

[vagrant/tmp] ]$alias

alias grep='grep --color=auto'

alias l='ls -CF'

alias la='ls -A'

alias ll='ls -AlhF --color=auto'

alias ls='ls --color=auto'

alias vi='vim'

[vagrant/tmp] ]$alias ls

alias ls='ls --color=auto'

[vagrant/tmp] ]$alias cp

-bash: alias: cp: not found

3. 设置别名

命令格式

alias 别名='命令 参数'

实例

[vagrant/tmp] ]$alias cat='cat -n'

[vagrant/tmp] ]$alias less='less -mN'

[vagrant/tmp] ]$alias

alias cat='cat -n'

alias grep='grep --color=auto'

alias l='ls -CF'

alias la='ls -A'

alias less='less -mN'

alias ll='ls -AlhF --color=auto'

alias ls='ls --color=auto'

alias vi='vim'

设置别名永久生效

在上面的命令行中那样设置别名,别名只能在当前bash中使用,且一旦退出登录,别名便会失效。

若要使别名永久生效,需要将该别名添加到 ~/.bashrc 配置文件中。

~/.bashrc 文件

# some more ls aliases

alias grep='grep --color=auto'

alias ll='ls -AlhF --color=auto'

alias la='ls -A'

alias l='ls -CF'

alias vi='vim'

alias cat='cat -n'

alias less='less -mN'

4. 删除别名

命令格式

unalias 别名

实例

[vagrant/tmp] ]$alias

alias cat='cat -n'

alias grep='grep --color=auto'

alias l='ls -CF'

alias la='ls -A'

alias less='less -mN'

alias ll='ls -AlhF --color=auto'

alias ls='ls --color=auto'

alias vi='vim'

[vagrant/tmp] ]$unalias grep

[vagrant/tmp] ]$unalias cat

[vagrant/tmp] ]$alias

alias l='ls -CF'

alias la='ls -A'

alias less='less -mN'

alias ll='ls -AlhF --color=auto'

alias ls='ls --color=auto'

alias vi='vim'

删除别名永久生效

与设置别名一样,若要永久删除别名,将该别名从 ~/.bashrc 配置文件中删除即可。

二、常用快捷键

Ctrl + c :强制停止当前命令

Ctrl + l :清屏

Ctrl + a :光标移到命令行首

Ctrl + e :光标移到命令行尾

Ctrl + u :从光标所在位置删除到行首

Ctrl + z :发命令放入后台执行

Ctrl + r :在命令历史中搜索

三、历史命令

1. 命令格式

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

2. 选项

-c 清空历史命令

-w 把缓存中的历史命令写入历史命令保存文件

~/bash_history

3. 历史保存条数

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

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)

HISTSIZE=1000

HISTFILESIZE=2000

4. 历史命令的调用

使用上、下箭头调用以前的历史命令

使用 !n 重复执行第n条历史命令

使用 !! 重复执行上一条命令

使用 !字符串 重复执行最后一条以该字符串开头的命令

四、输出重定向

1. 标准输入与输出

设备

设备文件名

文件描述符

类型

键盘

/dev/stdin

0

标准输入

显示器

/dev/stdout

1

标准输出

显示器

/dev/stderr

2

错误输出

2. 输出重定向

标准输出重定向

命令 > 文件

以覆盖的方式,把命令的正确输出存储到指定的文件或设备中。

命令 >> 文件

以追加的方式,把命令的正确输出存储到指定的文件或设备中。

错误输出重定向

错误命令 2> 文件

以覆盖的方式,把命令的错误输出存储到指定的文件或设备中。

错误命令 2>> 文件

以追加的方式,把命令的错误输出存储到指定的文件或设备中。

正确输出与错误输出同时保存

命令 > 文件 2>&1

以覆盖的方式,把命令的正确输出和错误输出都存储到指定的文件中。

命令 >> 文件 2>&1 (常用)

以追加的方式,把命令的正确输出和错误输出都存储到指定的文件中。

命令 &> 文件

以覆盖的方式,把命令的正确输出和错误输出都存储到指定的文件中。

命令 &>> 文件 (常用)

以追加的方式,把命令的正确输出和错误输出都存储到指定的文件中。

命令 >> 文件1 2>> 文件2 (常用)

把命令的正确输出追加到文件1中,把错误输出追加到文件2中。

# 将 shell.sh 运行的正确输出存储到 access.log 文件,错误输出存储到 error.log 文件

shell.sh >> access.log 2>> error.log

3. 输入重定向

命令 < 文件

把文件内容作为命令的输入

# 在mysql中执行sql文件中的语句

mysql -uroot -p < db.sql

# 统计 access.log 文件的行数,单词书,字符数

wc < access.log

4 24 130

# 实际上该命令不加 < 也可以执行

wc access.log

4 24 130 access.log

命令 << 标识符 ... 标识符

命令 << 标识符

...

标识符

将两个相同标识符之间的内容作为命令的输入。

类似PHP中的heredoc语法。

五、多命令顺序执行

1. 多命令顺序执行

多命令执行符

格式

作用

;

命令1 ; 命令2

多命令顺序执行,命令之间没有任何逻辑关系

&&

命令1 && 命令2

逻辑与

当命令1正确执行时,命令2才会执行

当命令1执行不正确时,命令2不会执行。

||

命令1 || 命令2

逻辑或

当命令1正确执行不正确时,命令2才会执行

当命令1正确执行时,命令2不会执行。

# 根据两次日期输出的差值,计算中间压缩命令执行的时间

date; tar -zcvf etc.tar.gz /etc; date

# 根据输出 yes 还是 no,判断第一条命令是否正确执行

ls && echo yes || echo no

2. 管道符

命令格式

命令1 | 命令2

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

# 使用 less 命令查看 /etc/ 下目录或文件信息

ll /etc/ | less -mN

# 查看当前建立连接的端口数量

netstat -an | grep ESTABLISHED | wc -l

# 去掉配置文件中的注释和空行,并生成一个新的配置文件

cat /etc/redis/redis.conf | grep -v "#" | grep -v "^$" > /etc/redis/redis6379.conf

# 在/home目录下查找包含“max_children”的文件

sudo find /home -type f -name '*' | xargs grep "max_children"

六、Shell中特殊符号

1. 通配符

通配符

作用

匹配一个任意字符

*

匹配0个或任意过个任意字符,也就是可以匹配任何内容

[]

匹配中括号中任意一个字符。例如:[abc]代表匹配a/b/c中的任意一个字符

[-]

匹配中括号中任意一个字符。- 代表一个范围。例如:[a-z]代表匹配任意一个小写字母

[^]

逻辑非,匹配不是中括号中任意一个字符。例如:[^0-9]代表匹配任意一个不是数字的字符

[vagrant/tmp] ]$ll

total 0

-rw-rw-r-- 1 vagrant vagrant 0 May 3 02:21 ab1

-rw-rw-r-- 1 vagrant vagrant 0 May 3 02:21 ab2

-rw-rw-r-- 1 vagrant vagrant 0 May 3 02:21 ab3

-rw-rw-r-- 1 vagrant vagrant 0 May 3 02:21 abc

-rw-rw-r-- 1 vagrant vagrant 0 May 3 02:21 abc.log

-rw-rw-r-- 1 vagrant vagrant 0 May 3 02:21 abd

-rw-rw-r-- 1 vagrant vagrant 0 May 3 02:21 abe

[vagrant/tmp] ]$ls abc

abc

[vagrant/tmp] ]$ls abc*

abc abc.log

[vagrant/tmp] ]$ls ab?

ab1 ab2 ab3 abc abd abe

[vagrant/tmp] ]$ls ab[0-9]

ab1 ab2 ab3

[vagrant/tmp] ]$ls ab[0-9a-z]

ab1 ab2 ab3 abc abd abe

[vagrant/tmp] ]$ls ab[^a-z]

ab1 ab2 ab3

2. Bash中其他特殊符号

符号

作用

''

单引号。

单引号中所有特殊符号,如 $ 和 ` (反引号) 都没有特殊含义

""

双引号。

双引号中特殊符号都没有特殊含,但是 $ 、 ` (反引号) 、和 \ 是例外,分别拥有“调用变量的值”、“引用命令”、“转义符”的特殊含义

``

反引号。

反引号中的内容是系统命令,在Bash中会先执行它。

$()

和反引号作用一样,用来引用系统命令。不过推荐使用$(),因为反引号非常容易看错。

#

在Shell脚本中,#开头的行代表注释

$

用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值

\

转义符。

跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出$符号,而不是当做变量引用

linux右箭头符号,Linux Shell编程(1) - Bash 的基本功能:别名、快捷键、历史命令、输出重定向、管道符、Shell中特殊符号......相关推荐

  1. linux 命令解码空格,Shell 编程:Bash空格的那点事

    先了解下bash中什么时候该用空格,什么时候不该用. 1. 等号赋值两边不能有空格 2. 命令与选项之间需要空格 3. 管道两边空格可有可无 我们来看看常见的问题 1. 赋值时等号两边或者只有左边多了 ...

  2. Linux的Bash——(三)命名别名与历史命令

    3 命令别名与历史命令 在早期DOS年代,可以使用 cls 清楚我们屏幕上的信息,但是在Linux当中使用的是 clear 清楚画面.那么我们可不可以让cls等于clear呢?在Bash当然可以,这样 ...

  3. Shell 编程:Bash空格的那点事

    空格,一个看不见的字符,很不起眼,也正由于不起眼,很多人经常忽略它,导致代码出错,却还找不着北.这里,我们来聊聊bash中空格的那点事. 先了解下bash中什么时候该用空格,什么时候不该用. 1. 等 ...

  4. linux echo 变量 字符串,echo命令 – 输出字符串或提取Shell变量的值

    echo命令用于在终端设备上输出字符串或变量提取后的值,这是在Linux系统中最常用的几个命令之一,但操作却非常简单. 人们一般使用在变量前加上$符号的方式提取出变量的值,例如:$PATH,然后再用e ...

  5. linux echo 变量 字符串,echo命令 – 输出字符串或提取Shell变量的值 – 运维那些事...

    echo命令用于在终端设备上输出字符串或变量提取后的值,这是在Linux系统中最常用的几个命令之一,但操作却非常简单. 人们一般使用在变量前加上$符号的方式提取出变量的值,例如:$PATH,然后再用e ...

  6. python调用linux命令输出结果,Python-运行shell命令并捕获输出

    小编典典 这个问题的答案取决于你使用的Python版本.最简单的方法是使用以下subprocess.check_output功能: >>> subprocess.check_outp ...

  7. shell编程之条件语句(文件测试,test命令,字符串和逻辑测试,if单支语句,if双支语句,if多支语句,case命令,用if写跑步小实验)

    文章目录 shell编程之条件语句 条件测试 test命令 整数值测试 free -m 提供了更简洁的查看系统内存使用情况: 字符串和逻辑测试 字符串 逻辑测试 一元运算符,二元运算符和三元运算符 i ...

  8. shell 编程 错误 bash: [: missing `]'

    一:问题的提出 代码: [oracle@localhost SHELL]$ lspids() { > >         USAGE="Usage: lspids [-h] pr ...

  9. Shell编程:Bash引号的那点事

    促使我想写这个系列的文章,是因为看到总有人提到相同的问题,犯相同的错误,曾经我也是这么过来的,不忍心看到后面还有人经常这么曲折的过来. 先了解下,在bash脚本中,有三种引号 1. 单引号 ' 2. ...

  10. java 实现回收站功能,shell编程之实现windows回收站功能分享

    #!/bin/bash #配置回收站最大的存储空间(字节) #maxmemory=51200 (50M) #maxmemory=102400 (100M) #maxmemory=512000 (500 ...

最新文章

  1. Linux ls信息给qt gui,如何使用Qt 4把ls命令的结果显示到GUI界面上去?
  2. s2sh集成dataSource配置无效的问题 -Access denied for user 'sa'@'localhost'
  3. 有赞客户行为收集与实时处理系统设计
  4. php 主观题判分,司法考试改革后多少分通过,客观题主观题分数怎么算?
  5. springboot学习笔记(十)
  6. FFmpeg编译找不到库文件
  7. HihoCoder - 1441 后缀自动机一·基本概念(模拟,后缀自动机入门好题)
  8. linux解压tz zip,TZ 文件扩展名: 它是什么以及如何打开它?
  9. [wikioi]多源最短路
  10. 苹果公司反诉堡垒之夜开发商Epic,寻求惩罚性赔偿
  11. ios字典存bool_iOS 常见的数据存储方式
  12. java中的字符串处理
  13. linux中printf命令,总结linux下printf命令的用法
  14. const定义常量_JS声明变量var、let 、const(含重点示例)
  15. javah 找不到类文件的解决办法
  16. Jmeter配置元件之HTTP授权管理器与 HTTP缓存管理器-19
  17. python 古典密码第一弹(凯撒密码,Playfair密码,维吉尼亚密码)
  18. 【思维模型】五分钟了解<乔哈里窗>,为什么学习乔哈里窗?什么是乔哈里窗?怎么应用乔哈里窗?
  19. 每周荐书:架构、Scratch、增长黑客(评论送书)
  20. 一个没有混进大厂的普通程序员,10年真实收入变化

热门文章

  1. jetbrains projector远程开发使用入门
  2. 计算机组成原理_DRAM和SRAM
  3. 手机5款令人爱不释手的APP 好用到爆
  4. QQ邮箱代收Gmail邮箱
  5. python爬虫-国家企业_国家企业信用公示系统的爬取
  6. 不要签名证书将网页打包封装成苹果APP,无需苹果企业签名,IPA证书签名,ios签名证书,免越狱安装
  7. Unity教程2D入门
  8. windows下利用注册表regedit手动删除文件
  9. Python 转义字符(含用法)
  10. 佳能2900打印机与win10不兼容_lbp2900+驱动下载