UNIX Shell 知识考查:从入门到“放弃“的终极指南

阅读原文

4.5 UNIX Shell:程序员与计算机的"塑料友情"

各位程序员朋友们,你们是否经常遇到这样的场景:面对黑漆漆的命令行窗口,手指悬在键盘上方,大脑一片空白,就像猫见了黄瓜——完全不知所措?别担心,今天我们就来揭开 UNIX Shell 这个"神秘面纱",让你从"命令行恐惧症"患者变成"终端操控大师"!

UNIX Shell,这个听起来高大上的名词,其实就是你和计算机之间的"翻译官"。它就像是你和操作系统之间的"塑料姐妹花"——表面上亲密无间,背地里却经常闹别扭(尤其是当你输错命令的时候)。但别小看这个"翻译官",它可是 UNIX 世界的"扛把子",掌握着系统生杀大权。

Shell 的"前世今生"

让我们先来点历史课,不过别担心,不会像大学课堂那样让你昏昏欲睡:

  • Bourne shell (sh):1979年由 Stephen Bourne 开发,相当于 Shell 界的"老古董"。它就像你爷爷那台老式收音机——功能单一但可靠,适合系统管理自动化,但交互功能?不存在的!

  • C shell (csh):70年代末由伯克利的大佬们开发,就像给老收音机加了个蓝牙功能。它注重交互体验,但脚本执行速度嘛...就像用蓝牙传输大文件——慢得让人想砸电脑。

  • Korn shell (ksh):1986年 AT&T 的 David Korn 出品,相当于给老收音机加上了智能语音助手。它集成了 Bourne shell 的优点,又加入了 C shell 的一些酷炫功能。

  • Bash (Bourne Again shell):1988年 Brian Fox 推出,Linux 系统的默认 Shell。它就像瑞士军刀——功能多到让你怀疑人生,兼容性也好到离谱。

  • TC shell (tcsh):C shell 的"豪华升级版",就像给蓝牙收音机又加了个触屏。

4.5.1 常见考点汇总:Shell 的"七宗罪"

想要征服 Shell,你得先了解它的"七宗最":

  1. Shell 的定义与功能:它就是个"传话筒",但千万别小看它,惹毛了它分分钟让你的系统"原地爆炸"。

  2. Shell 内置命令:这些是 Shell 自带的"独门绝技",就像你手机里的预装应用——有的实用,有的鸡肋。

  3. Shell 编程的位置参量: 、 1、$2...这不是在玩数字游戏,而是脚本编程的"通关密码"。

  4. Shell 的命令行参数:-a、-b、-c...字母表都快被用完了,每个字母背后都可能藏着惊天秘密。

  5. 标准 I/O 和重定向:这是 Shell 的"乾坤大挪移",能把输入输出玩出花来。

  6. 正则表达式与模式匹配:程序员界的"摩斯密码",学好了能让你少写一半代码。

  7. 文本处理三剑客

    • grep

      文本界的"搜狗",找东西比你的前女友翻你手机还快。

    • sed

      流编辑器中的"闪电侠",处理文本快到让你怀疑人生。

    • awk

      数据处理界的"瑞士军刀",功能强大到让人想哭。

4.5.2 经典考题及解析:Shell 面试"求生指南"

面试试题1:grep 的"捉迷藏"游戏

题目:使用 grep 命令在 Linux 系统中实现下列查找:

  1. 显示所有包括 tom 或 Tom 的行(大小写不敏感)

  2. 显示所有不包括 lily 的行

  3. 显示所有以 M 开头、以 t 结尾的行

  4. 显示所有包含以大写字母开头,后跟 3 个小写字母的单词的行

解答

# 1. 找 Tom 或 tom,-i 表示"我不管大小写"
grep-i'tom' datafile

# 2. 排除所有 lily,-v 表示"眼不见为净"
grep-v'lily' datafile

# 3. 找 M...t 的行,表示开头,$表示结尾
grep'M.*t$' datafile

# 4. 找如"John"这样的单词,[A-Z]表示大写字母,[a-z]{3}表示3个小写字母
grep'\<[A-Z][a-z]\{3\}\>' datafile

面试试题2:I/O 重定向的"魔术戏法"

题目:请解释 bash shell 中标准 I/O 和重定向,exec 命令和重定向。

解答

Shell 启动时继承了三个"神秘通道":

  • stdin

    (标准输入):通常是键盘,就像你的嘴巴

  • stdout

    (标准输出):通常是屏幕,就像你的脸

  • stderr

    (标准错误):通常也是屏幕,就像你做错事时的表情

重定向操作符

  • < 文件名

    把文件喂给程序当输入

  • > 文件名

    把程序输出存到文件(会覆盖原文件,小心!)

  • >> 文件名

    把程序输出追加到文件(不会覆盖,比较温柔)

  • 2> 文件名

    把错误信息存到文件(终于不用看红字了)

exec 命令: 这个命令就像"灵魂附体",能让当前程序"变身"成另一个程序。它还能不创建子 Shell 就改变输入输出,简直是个"变形金刚"。

# 用 ls 替换当前 shell(用完就"死")
execls

# 把 filea 作为标准输入
exec<filea

# 把输出重定向到 filex
exec>filex

面试试题3:Shell 脚本的"诞生记"

题目:谈谈对 shell 脚本的认识并说出如何创建 shell 脚本?

解答

Shell 脚本就是一堆命令的"集合体",相当于给计算机的"购物清单"。创建步骤简单到哭:

  1. 第一行

    写上 #!/bin/bash,这叫 shebang,不是脏话!

  2. 注释

    用 # 开头,写给人类看的,计算机会自动忽略

  3. 命令

    把你平时在命令行敲的东西写进去

  4. 给权限

    用 chmod +x 脚本名 赋予执行权限,不然脚本就是个"废柴"

示例:

#!/bin/bash
# 这是一个超级简单的脚本
echo"Hello World!"# 打印经典语句
ls-l# 列出文件

面试试题4:元字符的"秘密语言"

题目:请解释 shell 中元字符的含义,如 *?(cmds) 等。

解答

元字符是 Shell 的"摩斯密码",掌握它们你就能和 Shell"说悄悄话":

  • *

    匹配任意数量字符(包括零个),就像"随便"

  • ?

    匹配单个字符,就像"一个字"

  • [abc]

    匹配 a、b 或 c,就像"三选一"

  • [!abc]

    匹配除了 a、b、c 的字符,就像"除了这三个都行"

  • (cmds)

    在子 Shell 中执行命令,就像"开小灶"

  • {cmds}

    在当前 Shell 中执行命令,就像"大锅饭"

面试试题5:Sed 的"文字魔术"

题目:谈谈对 Shell 流编辑器 Sed 的认识并对 Sed 常用命令简单进行介绍。

解答

Sed 是文本处理的"闪电侠",它处理文本的速度比你女朋友变脸还快。常用命令:

  • s/old/new/

    替换文本,就像"整容手术"

  • d

    删除行,就像"人间蒸发"

  • p

    打印行,就像"大声朗读"

  • a\text

    在行后追加文本,就像"补充说明"

  • i\text

    在行前插入文本,就像"开场白"

示例:

# 把所有的"love"换成"hate"
sed's/love/hate/g' file.txt

# 删除所有空行
sed'/^$/d' file.txt

结语:Shell 学习的"终极奥义"

学习 Shell 就像学习一门新语言,刚开始你可能会觉得:

  • rm -rf /

     看起来人畜无害

  • chmod 777

     像某种神秘代码

  • 管道符 | 就是个竖线而已

但请记住,Shell 是个"记仇"的家伙,你犯的每个错误它都会"秋后算账"。所以:

  1. 备份!备份!备份!

     重要的事情说三遍

  2. 慎用 rm -rf,除非你想体验"从零开始"

  3. 多使用 man 命令,它比百度靠谱

  4. 练习、练习、再练习,直到手指抽筋

最后送大家一句 Shell 界的"至理名言":"With great power comes great responsibility."(能力越大,删库风险越大)祝大家在 Shell 的世界里玩得开心,别把服务器玩崩了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的雷神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值