Linux Shell Workshop 笔记

发布于 2022-04-12 12:58:14 字数 6462 浏览 1450 评论 0

在日常工作中,命令行工具已凭借其强大的功能和简洁的交互形式称霸类 Unix 操作系统。

你是否在使用命令行工具的时候为找不到合适的工具而烦恼?是否在面对复杂任务的时候感到力不从心?

本次 workshop 将为你揭开 shell command 的神秘面纱!通过本次 Linux 密室逃脱之旅,你将会掌握一些实用的 shell 技能,超越 GUI 限制,提升工作效率。

正式开工

场景:vagrant 启动虚拟机,使用 ssh「快速」登录 Linux 机器,发现 Tomcat 没启动,启动后发现端口被占用 http://192.168.33.20:8080/,然后 kill 掉进程却发现内容被压缩然后找不到了,切换用户(找到密码)才发现文件,解压后却发现内容被篡改,然后一键替换内容才最终还原网页。

命令/快捷键解释/作用/备注
ssh-keygen -t rsa后续选择文件夹可以在当前位置生成密钥对
scp id_rsa.pub dev@192.168.33.20:/.ssh拷贝公钥(id_rsa.pub)到服务器上
cat id_rsa.pub >> authorized_keys快速添加内容到特定文件 > 覆盖、>> 增加
ssh -i ./id_rsa dev@192.168.33.20(--identity_file 带上身份认证秘钥)
echo IdentityFile $PWD/id_rsa >> ~/.ssh/config一行命令 id_rsa 文件路径增加到指定配置文件
ssh bwsssh + 别名 Host,快速登录到 Linux 机器
tldr systemctl>> man tldr 好于 man,只是比较慢

命令/快捷键解释/作用/备注
set -o emacs设置 bash 的快捷键模式
Ctrl + A跳到行首
Ctrl + E跳到行尾
Ctrl + U清除当前输入
Ctrl + R搜索历史命令
Ctrl + L清屏,但保留记录
Ctrl + K从当前位置删除至尾
Ctrl + W删除单词

命令/快捷键解释/作用/备注
grep -v ^# .README.md找出非注释消息
lsof -i:8080查找特定端口进程
`ps -efgrep java`查找特定程序进程
sudo systemctl restart tomcatsystemctl 是系统命令,需要 sudo
cat /proc/version查看当前系统信息
Linux version 3.10.0-327.18.2.el7.x86_64 (builder@kbuilder.dev.centos.org)
(gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) )
#1 SMP Thu May 12 11:03:55 UTC 2016
命令/快捷键解释/作用/备注
grep -rI 747339117 .查找特定文字的文件
set encoding:utf-8vim 设置编码
Ctrl + Zvim 转入后台进程
fg + Enter返回 vim 后台进程
find root_path -name '*.tar.gz'找到特定后缀名的文件
find / -name "*.tar.gz" 2>>/dev/null过滤无用错误信息(2)
cat /etc/passwd查看所用用户
su - Darker切换到用户并新建 shell(带环境变量)(A mere - implies -l, --login.)
[dev@localhost ~]$ su Darker
Password:
[Darker@localhost dev]$ sudo -iu dev
[dev@localhost ~]$

grep -r "Darker" | 找到密码 U2Fsd, 再查找一次 tar 包

.README.md:This is the message: Check the port and
kill the process, you can start tomcat right.
# Kissing your hand may make you feel very good,
but a diamond and sapphire bracelet lasts for ever. -- Darker:U2Fsd,
命令/快捷键解释/作用/备注
tldr locate也可以快速定位文件并且省内存,但是需要 sudo 权限
alias ll='ls -al'设置别名(只在当前进程生效,写入 .bashrc
tar -zxvf /home/Darker/.src/20/.web.tar.gz解压文件,注意 -z 参数在不同系统作用不同
sudo mv index.html /usr/share/tomcat/webapps/ROOT/页面正常但是发现网页内容被篡改了
sudo sed -i 's/Darker/ThoughtWorkers/g' index.html替换文本 /find/replace/
sed -r 's/regex/replace/g' filename则用于替换正则表达式
cd /etc/sudoers.d/可以新建文件给每个用户设置 sudo 权限
sudo -l查看当前用户的 sudo 权限
history查看所有命令记录
Ctrl + D返回上一个 Session,用于连续退出
pstree树状显示所有的进程

禁止网页右键? 使用 JavaScript 可以做到,监听事件永远返回 false

Installing the Z Shell (zsh) on Linux, Mac OS X and Windows,可惜也需要 sudo 权限。

Finally!!!

另外不得不说 Dash 太好用了,好用到哭,/(ㄒ o ㄒ)/~~

一点儿小思考

关于 DevOps 的一个疑问?其工作的持续时间是一阵一阵的吗?如果一次性都做完了,那么性质就变成了一劳永逸的事情,岂不是之后都不用再维护了吗?

那么 DevOps 如何使得需求源源不断来保证自己工作的必要性呢,(手动微笑)而这样的性质似乎很适合拿来做咨询项目呀?

另一方面的思考就是,正因为其不持续的必要性,DevOps 应当作为开发者的基本素质而不应为其专门设置职位,在迭代开始的最早期就把最困难的部分做好做完善,一劳永逸。

而随着 AWS 等各类“服务”性质平台的不断完善,这方面的工作大概会越来越少并且现有工具、脚本都将成为资产,值得被维护,也应当被持续维护,但属于 Developer 分内的事情。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

qq_Yqvrrd

文章 0 评论 0

2503248646

文章 0 评论 0

浮生未歇

文章 0 评论 0

养猫人

文章 0 评论 0

第七度阳光i

文章 0 评论 0

新雨望断虹

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文