英文:jelvy ,编译:伯乐在线 - 巽离
如有好文章投稿,请点击 → 这里相识 详情
纯熟 地操纵 下令 行是一项常常 被我们忽视的技能,又大概 说我们将它看的太过秘密 。不外 作为一名软件工程师,把握 这一技能可以很洪流 平 上提拔 我们工作的机动 性 ,进步 工作服从 。这篇文章是我在与 Linux 打交道的过程中总结出的一些小本领 。有些很底子 ,有些也相称 专业,不太好懂。这篇文章不长 ,不外 假如 你能在工作中充实 利用 这里先容 的技能的话,那你也知之甚多了 。
这里的很多 内容一开始已出如今 Quora,但思量 到 Github 的用户性子 ,他们比我有天赋而且可以随时提出改进意见,因此利用 Github 更符合 。假如 你在本文中发现了错误大概 存在可以改进的地方,请果断提交 Issue 或 Pull Request!(固然 在提交前请看一下必读节和已有的 PR/issue)。
必读
这篇文档对新手与专家两适宜 。我们的目标 是覆盖面广(只管 包罗 统统 紧张 的内容) ,具体 (给出最常见的具体 的例子)以及简便 (克制 一些不须要 以及不干系 的东西)。 这里先容 的小本领 大概 在某个特定情境下至关紧张 ,又大概 可以或许 明显 地节省 时间。
本文为 Linux 所写,除了“仅限 MacOS 体系 ”一节 。别的 节中的大部分 内容都实用 于别的 Unix 体系 或 MacOS 体系 ,乃至 Cygwin。
固然 我们先容 大多数本领 对其他 shell 以及 Bash 脚本同样管用,但是本文的关注点是:交互式 Bash。
这里涵盖了“标准 ” Unix 下令 以及其他必要 安装指定软件包的下令 ——只要这个下令 充足 紧张 ,充足 管用,我就会在这里提一提 。
编注:为了控制篇幅 ,有些内容包罗 在引用内里 。你也可以通过 google 之类的工具来搜刮 具体 信息。利用 apt-get/yum/dnf/pacman/pip/brew 等下令 来安装新程序 。
利用 Explainshell 来获取下令 、选项 、管道等相干 信息的资助 。
底子
学习底子 的bash用法,具体 地说,阅读bash的man手册(man bash 并通读一遍);很简单 而且不长。其他的shell也同样可以 ,不外 bash 是最通用的(假如 只学习 zsh, fish 等,大概 在你本身 的工作环境 中会用的很顺畅,但是换个场景就歇菜了 ,比如 在服务器上操纵 )。
至少学习一种文本编辑器 。最好是 vim (vi), 在终端随机编辑文档方面,其他编辑器跟它相比没有一点竞争力(纵然 大部分 时间你用的是其他一些大型 IDE ,比如 Emacs,大概 一些其他时髦的编辑器)。
知道怎样通过 man 来阅读文档(好奇心重的人大概 就直接 man man了,列出差别 章节号 ,如:1表现 平凡 的shell下令 , 5表现 文件格式和规范, 8 代表体系 管理下令 等)。学会利用 apropos 来查找 man 手册 。要知道有些下令 不是可实行 文件,而是 bash 内置的 ,对于这种下令 呢,可以利用 help 大概 help -d 来获取资助 (比方 cd)。
学会利用 和 来重定向输入输出,学会利用 | 来创建 管道。相识 用于覆盖输出文件 , 用户追加到输出文件 。 学习标准 输出 stdout 和 标准 错误 stderr。
学习文件通配符 * (大概 尚有 ? 和 {…})和引用,明白 双引号和单引号的区别。(具体 信息看下面的变量睁开 )
纯熟 把握 bash 的任务 管理器: 、ctrl-z、ctrl-c、jobs 、fg、bg、kill 等等 。
认识 ssh, 而且 知道怎样 通过 ssh-agent, ssh-add等实现无暗码 认证。
根本 的文件管理下令 : ls 和 ls -l (特别 地 , 你得知道ls -l 结果 中的每一列是什么意思),less, head, tail 和 tail -f(最好也弄清楚 less +F 是嘛意思), ln 和 ln -s (相识 硬链接和软毗连 的区别和优缺点), chown, chmod, du (磁盘利用 环境 : du -hk *)。对文件体系 来说 , df, mount, fdisk, mkfs,lsblk 。
根本 的网络管理下令 : ip 大概 ifconfig, dig。
纯熟 把握 正则表达式,以及grep/egrep 工具的多种标记 。有须要 知道 -i, -o, -A 以及 -B 选项的意思。
学会利用 apt-get, dnf 大概 pacman(根据差别 的发行版选择)来查找大概 安装软件包 。确保你安装了 pip 来安装 python 相干 的下令 行工具。(下面先容 的那些工具都可以利用 pip 来安装)
一样平常 利用
在 Bash中 ,利用 Tab 键来补全下令 ,利用 ctrl-r 来查询汗青 下令 。
在 Bash 中,利用 ctrl-w 来删除上一个单词,ctrl-u 删除整行下令 。利用 alt-b 和 alt-f 来逐单词向前向后跳转 ,ctrl-k 将鼠标位置到行末的全部 字符删除,ctrl-l清屏。查察 man readline 中的”Key Bindings”这一节相识 Bash 中默认的组合键。尚有 其他的很多 ,比如 说 alt-. 可以用来上翻之前的下令 ,alt-* 扩展为当前目次 下的全部 文件 。
假如 你偏好 vi风格的组合键,可以 set -o vi。
利用 history下令 查察 近期的下令 。尚有 其他很多 简写下令 ,比如 !$表现 上一个参数 ,!!实行 上一条下令 等 。不外 通常我们更常用的是 ctrl-r和alt-. 。
回到上一个工作目次 : cd –
假如 你下令 敲到一半发现尚有 其他事没做,想要稍后实行 ,怎么办呢?利用 alt-# 给这条下令 行首加上# ,再回车当做一条解释 (大概 利用 ctrl-a,#,回车)。之后通过汗青 下令 找它返来 继承 往下敲 。
Xargs 大概 parallel 下令 也很管用。我们还可以利用 -L 大概 -P 选项限定 每行参数个数。假如 对实行 结果 不确定的话,可以先用 xargs echo 查察 。同样, -I{} 选项用起来也很顺手 。比方 :
find.-name'*.py'| xargsgrepsome_function
cathosts| xargs-I{}sshroot@{}hostname
【增补 : find . -name “.dsc ” | xargs -L 2 echo 可以将当前目次 下全部 .dsc 文件列出 ,而且 限定 每行表现 两项。
find . -name “.dsc” | xargs -I{} mv {} {}.bak 可以将当前目次 下全部 后缀为 .dsc 的文件更名为 .dsc.bak
-I 选项告知 xargs 用每项的名称更换 {}】
Pstree -p 可以很清楚 的展示进程 树。
利用 pgrep 和 pkill 来根据名称找出进程 大概 向进程 发送信号 (留意 -f 的用法)
相识 一些发送给进程 的信号 。比如 ,可以利用 kill -STOP [pid] 来克制 进程 。 Man 7 signal 查察 全部列表。
利用 nohup 大概 disown 下令 让程序在背景 不停 运行 。
通过 netstat -lntp 大概 ss -plat 下令 来查抄 哪些进程 正在监听端口(默认环境 下监听 TCP 端口, 利用 -u 监听 UDP)。
利用 lsof 查察 全部 打开的套接字和文件。详情自 man
利用 alias 给常用下令 创建别名 。比方 alias ll=’ls -latr’ 为我们创建新的别名 ll。
在 Bash 脚本中,利用 set -x 来调试输出。尽大概 的利用 严格 模式 。假如 盼望 制止 我们的程序发生错误的环境 下还继承 运行 ,可以通过设置 set -e 来限定 。还可以利用 set -o pipefail 来严格 限定 错误(话说这种题目 比力 玄妙 ,必要 多意会 )。对于比力 复杂而扳连 甚多的脚本,可以利用 trap 。
在 Bash 脚本中 ,子 shell (用括号包罗 )可以用来很方便的构造 下令 。一个常见用法是临时 切换到差别 的工作目次 ,比方 :
# 在当前目次 工作
(cd/some/other/dir other-command)
# 继承 在原目次 工作
请留意 ,在 Bash 中有多种变量睁开 的方式。
查抄 某变量是否存在: ${name:?error message}。比方 :假如 某个 Bash 脚本必要 一个参数 , input_file=${1:?usage: $0 input_file} 就可以 。
数学睁开 式: i=$(((i+1)%5))
序列: {1..10}
截断字符串: ${var%suffix} 和 ${var#prefix},比方 var=foo.pdf, 下令 echo ${var%.pdf}.txt 打印 foo.txt。
通过 (some command) 这种方式可以将下令 的输出视为文件。比方 ,比力 本地 和长途 的 /etc/hosts 文件:
diff /etc/hosts (ssh somehost cat /etc/hosts)
要知道 Bash 中 “here documents” 的用法,比如 cat EOF …【man bash,搜刮 Here Documents】
在 Bash 中,通过 : some-command logfile 21 的方式来重定向标准 输出和标准 错误 。通常的 ,为了包管 你实行 的下令 不会在标准 输入中残留一个打开的文件句柄,导致无法操纵 终端,最佳实践是加上 /dev/null.
利用 man ascii 查察 十六进制和十进制值的ASCII表。man unicode,man utf-8 ,以及 man latin1 有助于你去相识 通用的编码信息。
利用 screen 大概 tmux 下令 来操纵 多屏,尤其是在毗连 长途 session 、断开大概 重连 session 等环境 下非常实用 。另一个轻量级的生存 会话的工具是 dtach。
ssh 中,相识 怎样 利用 -L 或 -D(偶尔 必要 用 -R)去开启隧道黑白 常有效 的 ,比方 当你必要 从一台长途 服务器上访问 web。
优化 ssh 设置 偶然 间 大概 很管用,比方 下面这个 ~/.ssh/config 修改了一些设置 ,相对于利用 默认设置 的其他服务器来说 ,它可以有效 克制 特定网络环境 下毗连 被扬弃 ,利用 压缩数据(有效 用于低带宽毗连 中的 scp 操纵 ),以及多通道等:
TCPKeepAlive=yes
ServerAliveInterval=15
ServerAliveCountMax=6
Compression=yes
ControlMaster auto
ControlPath/tmp/%r@%h:%p
ControlPersist yes
SSH 尚有 其他一些安全相干 的选项 ,须警惕 利用 ,比方 在单个子网、主机大概 可信托 的网络中:
StrictHostKeyChecking=no,ForwardAgent=yes
获取文件的八进制格式的权限 ,这种权限在体系 设置 中很管用,但是 ls 并不表现 ,而且 很轻易 搞砸 。可以利用 这条下令 :
stat -c '%A %a %n' /etc/timezone
从别的 一条下令 中,以交互的方式选择值 ,可以利用 percol 大概 fzf。
利用 fpp 来与其他下令 输出的文件交互(如git)【facebook PathPicker, github 上的项目,比方 git status | fpp, find . -name “*.vala ” | fpp】
对一个简单 的 web 服务器来说,将当前目次 下全部 的目次 (包罗 子目次 )展示给所处网络的全部 用户 ,利用 : python -m SimpleHTTPServer 7777 (利用 端口 7777 和 Python 2)或python -m http.server 7777 (利用 端口 7777 和 Python 3)。
以某种权限来实行 下令 ,利用 sudo(root 权限)或sudo -u(其他用户)。利用 su大概 sudo bash来启动一个指定用户权限运行的 shell 。利用 su -模仿 其他用户的登录。
文件和数据处理 惩罚
在当前目次 下找到某名称的文件, find . -iname ‘*something’ (或其他雷同 方式)。找到其他恣意 位置的某个文件 ,利用 locate something (但请留意 : updatedb 大概 无法索引到新增的文件)
在源代码或数据文件中搜刮 ,利用 ag(比 grep -r 更好) 。
将 HTML 文件转化为文本格式: lynx -dump -stdin
可以试试 pandoc 来对 Markdown、HTML 以及其他各种文件举行 格式转换。
假如 某些环境 下你必要 处理 惩罚 XML 数据,那么试试 xmlstarlet 吧 ,固然 它有点汗青 沧桑感但简直 挺好用的。
对 JSON 数据来说, 用 jq 。
对于 Excel 大概 CSV 文件, csvkit 提供诸如 in2csv, csvcut, csvjoin, csvgrep 等实用小工具。
关于 Amazon S3 , s3cmd 很方便而 s4cmd 更快。 Amazon 官方的 aws 工具是其他 AWS 相干 工作的基石 。
相识 怎样 利用 sort 和 uniq,包罗 uniq 的 -u 参数和 -d 参数,详见后文“一行下令 ”节。别的 可以相识 一下 comm。
相识 怎样 利用 cut,paste 和 join 来更改文件 。很多 人都会利用 cut ,但险些 都不会利用 join。
相识 怎样 运用 wc 去盘算 新行数(-l),字符数(-m),单词数(-w)以及字节数(-c)。
知道用 tee 来将标准 输入的内容复制到文件大概 标准 输出 ,就像 ls -al | tee file.txt
要知道语言环境 大概 对很多 下令 行工具产生玄妙 地影响,包罗 排序的次序 和性能。大多数 Linux 的安装过程会将 LANG 或其他有关的变量设置本地 化 。但是请留意 当你改变语言环境 后,排序的结果 大概 会随之变革 。而且国际化大概 会大大低落 sort 或其他下令 的运行服从 。某些环境 下(比方 聚集 运算 、去重操纵 等)你可以放心的利用 export LC_ALL=C 来忽略掉国际化并利用 基于字节的次序 。
相识 awk 和 sed 关于数据的简单 处理 惩罚 的用法。比方 ,将文本文件中第三列的全部 数字求和:
awk '{ x += $3 } END { print x }'
这可比 Python 实现的代码量少三倍也快三倍。
perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt
更换 一个或多个文件中出现的字符串:
perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt
利用 rename 完成批量文件的重定名 。对于更复杂的环境 ,可以利用 repren[https://github.com/jlevy/repren]
# 将备份文件 foo.bak 还原至 foo
rename‘s/.bak$//’*.bak
# 将全部 的文件名、目次 、内容等全部重定名
repren--full--preserve-case--from foo--tobar.
利用 shuf 从一个文件中随机选取行。
相识 sort 的参数。处理 惩罚 数字方面,利用 -n 大概 -h 来处理 惩罚 可读性数字(比方 du -h 的输出) 。明白 关键字的工作原理(-t 和 -k)。请留意 !假如 你想要仅按第一个域来排序必要 -k1,1 ; -k1 意味着按整行排序。稳固 排序(sort -s)在某些环境 下很有效 。比方 ,以第二个域为主关键字,第一个域为次关键字举行 排序,你可以利用 sort -k1 ,1 | sort -s -k2,2。
假如 你想在 Bash 下令 行中写 tab 制表符(举个栗子: sort 的 -t 参数指定分隔符:sort -t”tab ” -k2 sortfile),按下 ctrl-v [Tab] 或键入 $’t’ (后者大概 更好,由于 你可以复制粘贴它)。
标准 的源代码对比及归并 工具是 diff 和 patch。利用 diffstat 查察 变动 总览数据 。留意 到 diff -r 对整个文件夹有效 。利用 diff -r tree1 tree2 | diffstat 查察 变动 总览数据。
对于二进制文件 ,利用 hd 使其以十六进制表现 以及利用 bvi 来编辑二进制 。
同样对于二进制文件,利用 strings(加上 grep 等等)答应 你查找一些文本。
二进制文件对比(Delta 压缩),利用 xdelta3。
利用 iconv 更改文本编码 。而更高级的用法 ,可以利用 uconv,它支持一些高级的 Unicode 功能。比方 ,这条下令 将全部 元音字母转为小写并移除了:
uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] ; ::Any-NFC; ' input.txt output.txt
拆分文件 ,查察 split(按巨细 拆分)和 csplit(按模式拆分)。
利用 zless,zmore,zcat 和 zgrep对压缩过的文件举行 操纵 。
体系 调试
对于 web 调试来说 ,curl 和 curl -I 都是很趁手的工具,它们的好基友 wget 也不错,大概 是更时尚一点的 httpie。
利用 iostat 、netstat、top (htop 更佳)和 dstat 去获取硬盘、cpu 和网络的状态。纯熟 把握 这些工具可以使你快速的对体系 的当前状态有一个大概相识 。
若要对体系 有一个深度的总体认识 ,利用 glances。它在一个终端窗口中向你提供一些体系 级的数据。这对于快速的查抄 各个子体系 非常有资助 。
若要相识 内存状态,运行并明白 free 和 vmstat 的输出 。尤其留意 “cached”的值,它指的是 Linux 内核用来作为文件缓存的内存巨细 ,因此它与空闲内存无关。
Java 体系 调试则是另一码事了 ,不外 有一个简单 的小本领 可以用于 Oracle 的 JVM 或其他 JVM ,运行 kill -3 pid 会将一个完备 的栈轨迹和堆概述(包罗 GC 的细节)生存 到标准 输出/日记 文件。
利用 mtr 去跟踪路由,用于确定网络题目 。
用 ncdu 来查察 磁盘利用 环境 ,它比常用的下令 ,如 du -sh *,更节流 时间。
查找正在利用 带宽的套接字毗连 或进程 ,利用 iftop 或 nethogs。
ab 工具(捆绑于 Apache)可以简单 粗暴地查抄 web 服务器的性能 。对于更复杂的负载测试,利用 siege。
wireshark,tshark 和 ngrep 可用于复杂的网络调试。
相识 strace 和 ltrace 。当你想知道程序运行失败 、挂起乃至 瓦解 的缘故起因 ,大概 你想对性能有个总体相识 的话,这两个工具非常 管用。留意 profile 参数(-c)和附加到一个运行的进程 参数 (-p)。
相识 ldd 下令 来查抄 共享库等等 。
知道怎样 用 gdb 来调试运行程序并获取堆栈轨迹。
学会利用 /proc。它在调试正在出现的题目 的时间 偶然 会结果 惊人。比如 :/proc/cpuinfo,/proc/meminfo ,/proc/cmdline,/proc/xxx/cwd,/proc/xxx/exe,/proc/xxx/fd/ ,/proc/xxx/smaps 。
假如 想调试已经发生的题目 ,sar 显得很管用。它会列出CPU、内存、网络等汗青 统计数据。
关于更深条理 的体系 分析以及性能分析,看看 stap(SystemTap) ,perf,以及sysdig 。
查察 你当前利用 的体系 ,利用 uname 大概 uname -a (Unix/kernel 信息) or lsb_release -a (Linux 发行版信息)。
假如 某些题目 看起来稍显搞笑 ,试试查察 dmesg 信息(大概 是硬件或驱动题目 )。
一行下令
一些组合下令 :
当你必要 对文本文件做聚集 交、并 、差运算时, sort/uniq 连合 出击显得非常管用 。假设 a 与 b 是两个内容差别 且去重的文件。这种方式服从 很高,而且 对各种巨细 的文件都实用 ,不管是在小文件还是 上G的大文件。(sort 不受内存束缚 ,不外 假如 /tmp 所处的根分区容量有限,你大概 必要 -T 参数) ,参阅前文中关于 LC_ALL 和 sort 的 -u 参数的部分 。
catab| sort| uniq c# c is a union b
catab| sort| uniq-d c# c is a intersect b
catabb| sort| uniq-u c# c is set difference a - b
利用 grep . * 下令 来查抄 目次 下全部 文件的内容,比方 那些包罗 很多 设置 设置的目次 : /sys/, /proc/, /etc。
对文本文件中第三列数据盘算 总和(相比python 快三倍,代码量却只有 python 的1/3):
awk '{ x += $3 } END { print x }' myfile
假如 想查察 目次 树中文件的巨细 大概 日期,下面这条下令 雷同 递归的 ls -l,但是输出结果 比 ls -lR 更易读:
find . -type f -ls
Xargs 大概 parallel 下令 也很管用。我们还可以利用 -L 大概 -P 选项限定 每行参数个数 。假如 对实行 结果 不确定的话 ,可以先用 xargs echo 查察 。同样, -I{} 选项用起来也很顺手 。比方 :【前面已经有了,内容重复】
find.-name'*.py'| xargsgrepsome_function
cathosts| xargs-I{}sshroot@{}hostname
假设你有一个雷同 于 web 服务器日记 文件的文本文件 ,而且 某个特定值只会出如今 某些行上,比如 会在 URL 中出现的 acct_id 参数。假如 你想盘算 出每个 acct_id 值有多少次哀求 ,利用 如下代码:
运行这个函数从这篇文档中随机获取一条小本领 (分析 Markdown 文件并抽取项目):
functiontaocl(){
curl-shttps://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md|
pandoc-fmarkdown-thtml|
xmlstarlet fo--html--dropdtd|
xmlstarlet sel-t-v"(html/body/ul/li[count(p)0])[$RANDOM mod last()+1]"|
xmlstarlet unesc| fmt-80
}
管用的小冷门
expr:盘算 表达式、布尔操纵 或正则匹配
m4:简单 地宏处理 惩罚 器
yes:多次打印字符串
cal:日历
env:实行 一个下令 (脚本文件中很有效 )
printenv: 打印环境 变量(在调试时大概 脚本中很管用)
look: 找出以某字符串开头的英文单词(大概 文件中的某一行)
cut, paste 和 join :数据处理 惩罚
fmt: 格式化文本段落
pr : 将文本格式化为页数据大概 列数据
fold : 封装文本中的行【比如 -w 指定宽度 ,不利用 默认的80】
Column: 将文本格式化为列大概 表数据
expand 和 unexpand:制表符与空格之间转换
nl:添加行号
seq:打印序列数字
bc:盘算 器
factor:分解因数 【比方 factor 100,输出 2 2 5 5】
gpg:加密并署名 文件
toe:终端范例 列表
nc:网络调试及数据传输
socat:套接字署理 ,与 netcat 雷同
slurm:网络负载监督 器
dd:在文件或装备 间传输数据
file:确定文件范例
tree:以树的情势 表现 路径和文件 ,雷同 于 ls,不外 这条下令 会递归表现
stat:文件信息
time:实行 下令 ,并盘算 实行 时间
tac:反向输出文件
Shuf :将文件中的数据随机选择分列
comm: 逐行比力 已排序的文件
pv: 监控通过管道的数据
hd 和 bvi:生存 大概 编辑二进制文件
strings: 提取二进制文件的文本内容
Tr: 字符转换与处理 惩罚
Iconv 或 uconv: 文本编码的转换
Spit 和scplit : 分割文件
Sponge: 在写之前读取全部 输入 ,在对同一个文件读写很管用,比方 : grep -v something some-file | sponge some-file 【将文件中全部 匹配 something 的行都删除】
units:单位 转化与盘算 ;将一种计量单位 转换为另一种等效的计量单位 (参阅 /usr/share/units/definitions.units)
7z: 一种高效的压缩工具
Ldd: 查察 动态库的信息
Nm: 提取可实行 文件大概 obj 文件的符号
Ab:web 服务器性能分析工具
Strace: 调试体系 调用
Mtr:网络调试跟踪工具
Cssh: 可视化的并发 shell
Rsync :可用于长途 文件目次 同步
Wireshark 和 tshark : 抓取包与网络调试
Ngrep: 网络层的 grep 工具
Host 和 dig: DNS 查找
Lsof : 处理 惩罚 文件形貌 符和 socket 信息【列出全部 打开的文件】
dstat : 通用的系齐备 计工具
glances:高条理 的多子体系 概览
iostat:CPU 和硬盘利用 状态
htop:top 的加强 版
last:登入汗青 记录
w:当前登岸 用户
id:用户/组 ID 信息
sar: 体系 汗青 数据统计
iftop 或 nethogs:套接字及进程 的网络利用 率
ss:套接字数据统计
dmesg:引导及体系 错误信息
hdparm:SATA/ATA 磁盘操纵 及性能分析
lsb_release:Linux 发行版信息
lsblk:列出块装备 信息:树状图展示你的磁盘以及磁盘分区信息
lshw,lscpu,lspci ,lsusb 和 dmidecode:查察 硬件信息,包罗 CPU、BIOS 、RAID、显卡、其他装备 等
fortune,ddate 和 sl:开个打趣 …… 假如 对心灵鸡汤大概 奔驰 的小火车感爱好 的话 ,可以本身 试试
仅限 MacOS
以下是仅限于 MacOS 体系 的本领
用 brew (Homebrew)大概 port (MacPorts)举行 包管理 。这些可以用来在 Mac 体系 上安装以上的大多数下令 。
用 pbcopy 复制任何下令 的输出到桌面应用,用 pbpaste 粘贴输入。
用 open 大概 open -a /Applications/Whatever.app 利用 桌面应用打开文件 。
Spotlight: 用 mdfind 搜刮 文件,用 mdls 列出元数据(比方 照片的 EXIF 信息)。
留意 MacOS 体系 是基于 BSD UNIX 的 ,很多 下令 (比方 ps,ls,tail ,awk,sed)都和 Linux 中有些微的差别 ,受 System V-style Unix 和 GNU 工具影响很大。你可以通过标题为 “BSD General Commands Manual” 的 man 页面发现这些差别 。在有些环境 下 GNU 版本的下令 也大概 被安装(比方 gawk 和 gsed 对应 GNU 中的 awk 和 sed )。假如 要写跨平台的 Bash 脚本 ,克制 利用 这些下令 (比方 ,思量 Python 大概 perl )大概 颠末 细致 的测试。
免责声明
除了特别 不起眼的功能外,为了方便各人 阅读,这里写了一些 shell 脚本代码 。但是陪伴 着力气 而来的是责任。总之 ,运行需审慎 。
看完本文有劳绩 ?请分享给更多人
关注「Linux 爱好者」,提拔 Linux技能