命令行艺术

2024年 7月 20日 38.8k 0

命令行艺术-1

流畅地使用命令行是一个常被忽略的技能,或被认为是神秘的奥义。但是,它会以明显而微妙的方式改善你作为工程师的灵活度和生产力。这是我在 Linux 上工作时发现的有用的命令行使用小窍门和笔记的精粹。有些小窍门是很基础的,而有些是相当地特别、复杂、或者晦涩难懂。这篇文章不长,但是如果你可以使用并记得这里的所有内容,那么你就懂得很多了。

其中大部分最初出现在Quora上,但是考虑到兴趣所在,似乎更应该放到 Github 上,这里的人比我更能提出改进建议。如果你看到一个错误,或者更好的某种东西,请提交问题或 PR!(当然,提交前请看看必读小节和已有的 PR/Issue。)

必读

范围:

  • 本文是针对初学者和专业人员的,选题目标是覆盖面广(全都很重要)、有针对性(大多数情况下都给出具体实例)而简洁(避免不必要内容以及你能在其它地方轻松找到的离题的内容)。每个小窍门在某种情形下都很必需的,或者能比替代品大大节省时间。
  • 这是为 Linux 写的。绝大部分条目都可以同样应用到 MacOS(或者甚至 Cygwin)。
  • 主要针对交互式 Bash,尽管大多数小窍门也可以应用到其它 shell,以及常规 Bash 脚本。
  • 包括了“标准的”UNIX 命令以及那些需要安装的软件包(它们很重要,值得安装)。

注意:

  • 为了能在一篇文章内展示尽量多的东西,一些具体的信息会被放到引用页里。你可以使用 Google 来获得进一步的内容。(如果需要的话,)你可以使用 apt-get/yum/dnf/pacman/pip/brew 来安装这些新的程序。
  • 使用 Explainshell 来获取命令、参数、管道等内容的解释。

基础

  • 学习基本 Bash 技能。实际上,键入man bash,然后至少浏览一遍所有内容;它很容易理解,没那么长。其它 shell 也不错,但是 Bash 很强大,而且到处都可以找到(如果在你自己的笔记本上只学习 zsh、fish 之类,会在很多情形下受到限制,比如使用现存的服务器时)。
  • 至少学好一种基于文本的编辑器。理想的一个是 Vim(vi),因为在终端中编辑时随时都能找到它(即使大多数时候你在使用 Emacs、一个大型的 IDE、或一个现代的时髦编辑器)。
  • 学习怎样使用 man 来阅读文档(好奇的话,用 man man 来列出分区号,比如 1 是常规命令,5 是文件描述,8 用于管理员)。用 apropos 找到帮助页。了解哪些命令不是可执行程序,而是 Bash 内置的,你可以用 helphelp -d 得到帮助。
  • 学习使用 >0])[$RANDOM mod last()+1]" |
    xmlstarlet unesc | fmt -80
    }

    晦涩难懂,但却有用

    • expr:实施算术或布林操作,或者求正则表达式的值
    • m4:简单的宏处理器
    • yes:大量打印一个字符串
    • cal:漂亮的日历
    • env:(以特定的环境变量设置)运行一个命令(脚本中很有用)
    • look:查找以某个字符串开头的英文单词(或文件中的行)
    • cutpaste 以及 join:数据处理
    • fmt:格式化文本段落
    • pr:格式化文本为页/列
    • fold:文本折行
    • column:格式化文本为列或表
    • expandunexpand:在制表符和空格间转换
    • nl:添加行号
    • seq:打印数字
    • bc:计算器
    • factor:分解质因子
    • gpg:加密并为文件签名
    • toe:terminfo 条目表
    • nc:网络调试和数据传输
    • socat:套接字中继和 tcp 端口转发(类似 netcat
    • slurm:网络流量可视化
    • dd:在文件或设备间移动数据
    • file:识别文件类型
    • tree:以树形显示目录及子目录;类似 ls,但是是递归的。
    • stat:文件信息
    • tac:逆序打印文件
    • shuf:从文件中随机选择行
    • comm:逐行对比分类排序的文件
    • hdbvi:转储或编辑二进制文件
    • strings:从二进制文件提取文本
    • tr:字符转译或处理
    • iconvuconv:文本编码转换
    • splitcsplit:分割文件
    • units:单位转换和计算;将每双周(fortnigh)一浪(浪,furlong,长度单位,约201米)转换为每瞬(blink)一缇(缇,twip,一种和屏幕无关的长度单位)(参见: /usr/share/units/definitions.units)(LCTT 译注:这都是神马单位啊!)
    • 7z:高比率文件压缩
    • ldd:动态库信息
    • nm:目标文件的符号
    • ab:Web 服务器基准测试
    • strace:系统调用调试
    • mtr:用于网络调试的更好的路由追踪软件
    • cssh:可视化并发 shell
    • rsync:通过 SSH 同步文件和文件夹
    • wiresharktshark:抓包和网络调试
    • ngrep:从网络层摘取信息
    • hostdig:DNS查询
    • lsof:处理文件描述符和套接字信息
    • dstat:有用的系统统计数据
    • glances:高级,多个子系统概览
    • iostat:CPU和磁盘使用率统计
    • htop:top的改进版
    • last:登录历史
    • w:谁登录进来了
    • id:用户/组身份信息
    • sar:历史系统统计数据
    • iftopnethogs:按套接口或进程的网络使用率
    • ss:套接口统计数据
    • dmesg:启动和系统错误信息
    • hdparm:SATA/ATA 磁盘操作/改善性能
    • lsb_release:Linux 发行版信息
    • lsblk:列出块设备,以树形展示你的磁盘和分区
    • lshw:硬件信息
    • fortuneddatesl:嗯,好吧,它取决于你是否认为蒸汽机车和 Zippy 引用“有用”

    更多资源

    • 超棒的shell: 一个shell工具和资源一览表。
    • 严格模式 用于写出更佳的shell脚本。

    免责声明

    除了非常小的任务外,其它都写出了代码供大家阅读。伴随力量而来的是责任。事实是,你能在Bash中做的,并不意味着是你所应该做的!;)

    via: https://github.com/jlevy/the-art-of-command-line

    作者:jlevy 译者:GOLinux 校对:wxy

    本文由 LCTT 原创翻译,Linux中国 荣誉推出

相关文章

Linux 命令行的聊天工具 CenterIM
Linux 桌面年仍未到来 但 Linux 移动之年已到来
12 个在线学习 Linux 技能网站
Linux Mint : 会是另一个新的 Ubuntu 吗?
W3Conf 开发者大会将于下周召开
Ubuntu 10.04 ARM 处理器上网本版本结束服务期

发布评论