好玩的shell

§ 0x01 为什么写这个

Shell是命令行中和Linux交互的主要界面,在日常开发中,和它打的交道也最多。学习shell的过程中,发现了一些有意思的地方。想记录一下,分享给也正在学习shell的同学。这里指一般Linux发行版上自带的Bash Shell。

§ 0x02 alias——为什么rm时一定要提示下我?

# rm 1
rm: remove regular empty file `1'? 

许多人不明白。为什么有的环境中rm不提示,有的环境中一下有提示。有的人为了省事,直接加了-f的参数。其实是环境中的rm被转成了alias。通过alias rm 可以确认。

$ alias rm
rm='rm -i'

§ 0x03 内置函数——为什么cd指令找不到可执行文件?

shell有一些内置函数或者叫指令。这些指令不是由可执行文件提供的。
通过type指令可以查看一个指令是否是内置的。示例如下:

pi@rp:~ $ type ls
ls is aliased to `ls --color=auto'
pi@rp:~ $ type cd
cd is a shell builtin

通过以上可以知道cd是内置的函数,所以没有对应的可执行文件。而ls是一个别名alias。

所有的内置指令可以通过在man bash中搜索SHELL BUILTIN COMMANDS找到。

§ 0x04 set 指令

set 可以用来打开一些选项。
比较有用的有

set -x # 开启代码回显。方便定位异常点。
set -o pipefail # 开启管道失败。当管道中某个命令失败时,整个管道的退出状态为非0.

§ 0x05 快捷键

ctrl+r # ,可以搜索历史命令
fc # 可以在默认编辑器中编辑上个命令,如果上个命令比较复杂,这是个不错的方法。

§ 0x06 Shell就是解释器

登录SSH后台后,其实就是进入了解释器上下文了,如下定义一个函数玩玩。

pi@rp:~ $ my() {
> echo hello
> }
pi@rp:~ $ my
hello
pi@rp:~ $

§ 0x0a 学习Bash的建议

  1. 常看man bash里面的内容;
  2. 学习社区里比较好的Shell写法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值