资讯专栏INFORMATION COLUMN

Linux Shell编程(1) - Bash 的基本功能:别名、快捷键、历史命令、输出重定向、管道

frontoldman / 2102人阅读

摘要:若要使别名永久生效,需要将该别名添加到配置文件中。命令文件以追加的方式,把命令的正确输出存储到指定的文件或设备中。反引号中的内容是系统命令,在中会先执行它。如将输出符号,而不是当做变量引用

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的方式得到变量的值
转义符。
跟在之后的特殊符号将失去特殊含义,变为普通字符。如$将输出$符号,而不是当做变量引用

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/10636.html

相关文章

  • Linux Shell基础

    摘要:主要在版的系统中使用,其语法和语言相类似而得名。命令查看不止有之前保存下来的还有本次登录后新操作的命令这些命令只有本次正确退出之后才会写入。分页显示文件内容文件名管道符命令命令命令正确的结果作为命令的操作对象。 一、Shell概述 1.1Shell是什么 概述:命令行解释器,翻译程序指令给内核请求调用硬件功能。通俗来讲是:内核和用户之间的命令解释器,相当于一个翻译官。 计算机识别:二进...

    qieangel2013 评论0 收藏0
  • Shell 基础知识--细说linux配套视频

    摘要:主要在版的系统中使用,其语法和语言相类似而得名。家族主要包括家族主要包括。标准错误输出重定向错误命令文件以追加的方式,把命令的错误输出输出到指定的文件或设备当中。当命令正确执行,则命令才会执行。 Shell 基础概括 Shell是什么? shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写...

    Jinkey 评论0 收藏0
  • Linuxshell基础(慕课网Linux达人养成计划课程笔记)

    摘要:的种类主要是和两类,两种不同的语法类型,彼此不兼容。文件名统计文件内容标记统计开始输入字符到标记之间的内容多命令顺序执行中的特殊符号 Shell概述 shell是Linux中的命令行解释器,为用户提供了一个向Linux内核发送请求一边运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至编写一些程序。 shell还是一个功能相当强大的编程语言,易编写,易调试,灵活。是解...

    Nosee 评论0 收藏0
  • LinuxShell使用

    摘要:基本参数系统提供的位置改变用户的环境改变普通用户的环境查看所有用户的环境变量环境变量查看环境变量常用环境变量介绍显示当前用户登录名显示当前用户的用户号显示当前用户的登陆显示当前用户的宿主目录显示当前用户所在的目录表示当前用户的命令搜索路径显 1、shell基本参数 #cat /etc/shells 系统提供的shell位置 #bsh、csh、ksh、bash 改变root用户的sh...

    superw 评论0 收藏0
  • SHELL(bash)脚本编程六:执行流程

    摘要:赋值语句对于非重定向的首个单词进行分析,如果该单词是一个赋值语句,则保持至扩展阶段处理。执行完毕后,收集命令的返回值。这些,就是执行命令的整个流程。 bash命令的执行分为四大步骤:输入、解析、扩展和执行。本文将详述bash命令的一般处理过程:如图所示showImg(https://segmentfault.com/img/bVIDr6?w=819&h=614); 输入 交互模式 在交...

    rollback 评论0 收藏0

发表评论

0条评论

frontoldman

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<