最近学习苹果认证的《Mac OS X Support Essentials》教程,看到 Command Line 一节有很多实用的知识,下面选取一部分翻译 + 笔记,整理如下。
你可以整天驾驶汽车而不用知道如何修理它们,但是如果你希望当一个维护员,你就需要知道事情是如何运作的。同样的事情也发生在了 Mac OS X 上;你可以一直使用 Mac 而不用知道如何修理它,但是如果你想对系统做一些维护或解决一些问题,那么你需要知道如何使用 command-line。
1 为什么要使用命令行/如何开启命令行?
- 许多功能在图形界面不提供,只有通过命令行来实现。
- Finder会隐藏许多你不太会需要的文件,然而 command line 会允许你访问所有文件。
- 通过 command line 可以远程访问你的 Mac(利用 SSH)。
- administrators 用户可以通过
sudo
命令获得 root 用户权限。 - 通过 command-line script 可以使工作更高效。
- Terminal(终端)程序可以在“实用工具”里找到。
- 如果你开启手动输入用户名登陆模式,登陆时在用户名处输入
>console
可以直接进入命令行界面。随后你仍然需要登录到一个账户。
2 初识Command Line
- 许多命令会花费一些时间来执行,然而这中间不会给出任何提示或者进度条。一般结束后会出现一个“用户名$”的标记。如果没有出现,那么说明最后一条命令正在执行。
- 一条命令包括 Command Name、Options、Arguments、Extras 四个部分,但是后三个部分有时是可选的。Options 部分用
-
作为前导符。其中许多命令的 Options 部分只包含单个字母,这时可以合并。例如,ls -lA
和ls -l -A
是等效的。Arguments 部分用来细化这个命令或指定这个命令具体的实施对象,Extras 部分则用来进一步实现其他功能。 -
举例:下列命令包含前三个部分,用于删除 Junk 这个程序。
michelle$ rm -R /Applications/Junk.app
- 如果你输入了一些错误的命令,系统会返回一些错误信息。但是系统却不会阻止你做傻事(例如删除整个用户文件夹)。
3 关于 man 命令
虽然有上千条命令,每条命令还有许多可选参数和具体的使用方式,但是你却不需要记住这些命令。你只需要记住一个:man
大多数命令都会包含一个使用指南,会告诉你任何你需要知道的关于这个命令的所有细节,在命令行中输入 man command-name
即可获取。例如,你想知道ls
这个命令怎么使用,输入man ls
即可进入使用指南页面。
使用指南往往很长,所以你可以使用▲(上箭头)或▼(下箭头)来上下移动,使用 来翻页,输入/
和关键字来按照关键字搜索,按Q来退出使用指南页面。
那么——如果你连命令名称都不知道怎么办呢?输入man -k
和关键字来对整个使用指南数据库进行搜索。
4 命令行,文件和路径
如果知道如何使用命令是掌握 command line 的第一步,那么第二步就是学习如何在 command line 中使用文件路径。如果你掌握了文件路径,你将会发现这比使用 Finder 更加快捷。
注意
- command line 工具是大小写敏感的,并且对于文件名,必须包括扩展名。例如,你想找iTunes这个程序,输入
itunes
是无效的,必须输入iTunes.app
。 - Mac OS传统上喜欢使用“文件夹”(folders)这个名称,但是在 command line 中,主要使用“目录”(directory)这个词。这和 UNIX 是一致的。
4.1 两种路径:绝对路径和相对路径
- 绝对路径:完整描述一个文件的位置,总是以斜杠(
/
)(forward slash)开头。例如/Users/michelle/Public/Drop Box
。 - 相对路径:只描述一部分位置信息,它和你在 command line 目前的目录有关。当你打开新的 Terminal 程序时,command line 会话的目录应该是你的 home folder。这时 上面例子文件夹的相对路径写作
Public/Drop Box
。显然它从当前目录开始。和html类似,你也可以使用两个点(“..
”)来代表父目录,这样你就可以用相对路径表示上级或同级目录了。例如你可以输入cd ..
甚至cd ../..
4.2 切换到其他路径和目录
如果你想将当前 command line 会话切换到其他目录,需要用到三个命令:pwd
,ls
和cd
。
pwd
的含义是“print working directory”,会显示当前目录的绝对路径。ls
的含义是“list directory contents”,它会列出当前目录的内容。这个命令还有其他参数可选。cd
的含义是“change directory”,它会改变当前目录到你指定的目录。如果你不指定,则会返回你的 home folder。
4.3 处理特殊字符
如果目录中有特殊字符(空格,括号,引号,[]
,!
,$
,&
,*
,;
,|
,\
),那么直接输入空格会造成系统识别困难,必须使用特殊的语法来表示这些字符。例如上例中,空格前添加反斜杠“\
”(back slash)即可:cd Punlic/Drop\ Box/
。除了反斜杠,也可以用引号的方法:cd "Public/Drop Box"。
——如果不想手动输入,也可以把文件从 Finder 拖到 Terminal 窗口来创建绝对路径,这会方便一些,因为上面提到的所有特殊字符在拖动后都会自动变成系统可识别的表示方法。其实,更有效率的解决方案是使用 Tab Complete 功能。
Tab Complete 是 command line 中最能给你节省时间的特性之一,利用它的自动完成文件、目录名称功能还可以防止你输入错误。使用cd
进入你的 home folder,使用cd P
命令,然后按下tab按键。你可能会听到错误音,因为你的 home folder 内有多个 P 开头的文件夹。再按一次tab,Terminal 将会为你列出 P 开头的两个文件夹:Public 和 Pictures。按U,再按tab,Terminal 则会自动为你补全Public/
。Tab complete 同样会处理那些特殊字符。注意,这会在末尾保留/
符号,大部分时候这没问题,但如果出错,移除多余的/
试一试。
另外,鄂化符~
(tilde)在command line 中可以代表当前用户的 home folder。例如~/Public/Drop\ Box/
是合法的。
4.4 查看隐藏文件
为了简化工作,command line 和 Finder 都会隐藏许多文件和文件夹,这些内容通常是系统需要的。不借助第三方工具让 Finder 显示隐藏文件比较困难,但是在 command line 中却非常简单。首先,许多隐藏文件的隐藏是通过隐藏属性在 Finder 中隐藏的,而 command line 会忽略这些属性,所以这些文件会在 command line 中显示。另外,ls
命令会隐藏文件名以.
开头的文件,但是这些文件却可以被显示出来,方法是利用-a
选项。例如:
michelle$ ls -la
我们还添加了-l
选项,目的是控制输出格式。如果你注意输出内容的话,会发现还包括.
和..
两项,它们分别表示当前文件夹和父文件夹(如图)。如果你不想显示这两项,只需要把-a
改成-A
即可。
4.5 前往其他卷
在 command line 中,系统卷(也称为 root volume)是由开始的一个正斜杠表示的。然而也许听起来不可思议,在 command line 中其他卷看起来就在文件系统中一个叫做 Volumes 的文件夹中。下面的命令清晰地显示出这种逻辑关系:我从我的 home folder 出发,最终前往一个叫 Time Machine 的卷,该卷是外接在 Mac 上的。
bogon:~ renfei$ pwd
/Users/renfei
bogon:~ renfei$ cd /Volumes/
bogon:Volumes renfei$ pwd
/Volumes
bogon:Volumes renfei$ ls
Macintosh SSD Time Machine
bogon:Volumes renfei$ cd Time\ Machine/
bogon:Time Machine renfei$ pwd
/Volumes/Time Machine
5 用Command-Line管理文件
5.1 检视文件
有许多基础命令用来定位、检视文件和文件夹,包括cat
, less
, which
, file
以及find
。别忘了,你可以利用man
命令来查阅每个命令的使用指南。
5.1.1 cat
cat
是“concatenate”的意思,会按顺序读取文件并输出到 Terminal 窗口,语法为cat
后接你需要查看的文件的路径。cat
命令也可以用>>
来增加文本文件的内容,例如命令cat ../textOne.txt >> textTwo.txt
会把 textOne.txt 的内容添加到 textTwo.txt 的结尾。这个>>
就属于上一篇提到的“Extras”。
5.1.2 less
这个命令更适合用来查看长文本文件,因为它会允许你查找文本。语法为 less
后接文件路径,和cat
一样。用less
命令打开的文件其实和你查看命令使用指南的时候使用的是一个查看器,所以操作是相同的,同样可以使用▲(上箭头)或▼(下箭头)来上下移动文本,使用 来翻页,输入/
和关键字来按照关键字搜索,按Q来退出使用指南页面。除此之外,按V键来使用vi
文本编辑器。
5.1.3 which
这个命令会定位某个命令的文件路径。换言之,它会告诉你你执行某个具体命令的时候,在使用哪个文件。语法为which
后接某个命令。如图:
5.1.4 file
这个命令会尝试根据文件的内容输出文件类型。如果一个文件缺失了扩展名,那么这个命令可能会非常有用。语法为file
后接文件路径。如图,此例为一个 PNG 文件,还给出了它的尺寸、颜色数等信息。
5.1.5 find
这个命令用来根据搜索关键词定位文件路径。 find
命令不使用 Spotlight 搜索服务,但是它允许你设置非常具体的搜索条件,以及通配符(稍后介绍)。语法为find
后接搜索的起始路径,后接定义搜索的选项,后接搜索内容(包含在引号里)。例如:
注意
- 如果你要搜索根目录,也许你想使用
-x
选项来避免搜索 /Volumes 文件夹。 - 如果想使用 Soptlight 搜索服务,使用
mdfind
命令后接搜索关键词即可。
5.2 使用通配符(Wildcard Characters)
下面是常用的通配符:
- 星号(*,Asterisk)——代表任何长度的任何字符。例如
*.tiff
代表所有格式为tiff的文件。 - 问号(?,Question mark)——代表任何单个字符。例如
b?ok
匹配 book 但是不匹配 brook。 - 方括号([],Square brackets)——定义一定范围的字符,例如
[Dd]ocument
匹配 Document 以及 document;doc[1-9]
匹配doc1, doc2, ..., doc9。
配合使用上面三种通配符可以大大提高效率。
5.3 使用递归命令
简单来说,递归命令可以允许命令不执行于一个特定文件,而是指定的路径下的所有文件。大多数命令包含一个-r
或者-R
选项,来设定你想递归地执行这个命令。例如下面的例子,展示了添加-R
后ls
命令的执行方式:
5.4 编辑文件和文件夹
有许多基础的命令用来编辑文件和文件夹,包括mkdir
, cp
, mv
, rm
, rmdir
以及vi
。下面我们来简要地介绍一下这些命令。
5.4.1 mkdir
“make diretory”的缩写,用来创建文件夹,语法为mkdir
后接新文件夹的目录。可以用-p
选项,来一起创建路径中不存在的文件夹(这样你就不用挨层创建了)。
5.4.2 cp
“copy”的缩写,用来把文件从一处复制到另一处。语法为cp
后接原始路径,后接目标路径。如果你想复制整个文件夹和所有内容,需要添加-R
选项。如果指定的目标路径不含文件名,则 cp 命令会按原名复制。如果指定的目标路径包括文件名,则会复制为你指定的文件名。如果仅指定新文件名,则会在原处以新名称创建文件副本。注意,系统会自动替换同名文件而不出现提示。
5.4.3 mv
“move”的缩写,用来移动文件。语法为mv
后接原路径,后接新路径。mv 的指定路径规则和 cp 是一样的(没错,如果仅指定新文件名,它就成了重命名命令)。
5.4.4 rm
“remove”的缩写,会永久删除文件。注意,command-line中没有废纸篓。语法为rm
后接文件路径。然而,使用 rm 命令删除的文件有可能可以通过数据恢复工具恢复。如果希望安全删除文件,可以使用srm
命令。
5.4.5 rmdir和rm -R
rmdir是“remove directory”的缩写,这个命令会永久删除文件夹。再强调一遍,CLI 中木有废纸篓。语法为rmdir
后接希望删除目录的路径。然而,rmdir 命令无法删除含有任何其他文件的文件夹,所以大多数情形下rmdir
命令是不适用的。不过,你可以利用rm
添加-R
选项来删除文件夹及包含的所有文件。
5.4.6 vi
代表“visual”(视觉的),然而这个名称相当具有讽刺意味:vi可能是可视化效果最差的文本编辑器了。然而,vi 是 command line 中最常见的文本编辑器。用vi打开文本文件,只需要输入vi
后接文件路径即可。Mac OS X 还提供了nano
,一个更加现代的文本编辑器。它也更加方便,例如在底部包含了一个cheat小条(=_=),上面有常用的快捷键列表(你就不用背下来它们了)。然而,vi却有时是默认的文本编辑器,所以掌握vi是很有用的。
和less
命令类似,vi
命令会占用整个 Terminal 空间来显示文件内容。打开后,在“command模式”,vi 会等你输入一些预定义字符来告诉 vi 你想做什么。你也可以使用键盘上的箭头键单纯地浏览文件。你想编辑时,按A开始(会进入编辑模式)。文字会插入到光标处。如果你想保存,需要先退出编辑模式进入 command 模式。方法是按下esc键。回到 command 模式后,按住shift同时按两次Z来保存并退出。如果你不想保存,在 command 模式输入:quit!
并按enter
return直接退出。
6 用Command-Line管理系统
6.1 使用su来切换用户
su
命令代表“substitute user identity”,允许你在命令行中轻松切换到另一个用户账户。语法为su
后接用户的短名称。然后会要求你输入密码(但是输入的时候不会显示)。执行完毕后,命令的前缀会改变,表示你拥有其他用户的权利。你可以利用who -m
命令来验证当前登陆的身份。切换后,你会一直保持该用户身份,直至退出 Terminal 或者输入exit
命令。
6.2 关于sudo的使用
6.2.1 sudo概述
更强大的命令就是sudo
,代表“substitute user do”,或者,更恰当地,“super user do”。用sudo
执行一个命令会使用 root 账户权限。当然,使用之前需要 administrator 账户(管理员账户)的授权(如输入密码)。
默认情况下,任何管理员账户都可以使用sudo
来获取 root 权限,甚至当 root 账户在图形界面被禁用的情况下,sudo
依然有效。这个命令是很多情况下我们不得不使用 Terminal 的原因,——同样也是给每个用户管理员身份的危险所在。不过,你可以调整sudo
的配置文件,来限制它的使用。
bogon:~ renfei$ cat secret.txt
cat: secret.txt: Permission denied
bogon:~ renfei$ sudo cat secret.txt
Password:
This is the contents of the secret.txt text file that the user account renfei does not normally have access permissions to read. However, because he is an administrative user, she can use the sudo command to envoke root user access and read the contents of this file.
提示:如果由于你忘了使用sudo
而导致命令行返回一个错误,只需输入sudo !!
就可以用sudo
来执行上一条指令。
记住,权力越大责任越大。不恰当地使用sudo
可以轻易破坏你的系统设置。命令行只会在你第一次执行严重破坏性行为之前提示你,之后,它就会假设你清楚自己正在干什么。如果你只掌握三条使用命令行的准则,那将是:总是仔细检查你的命令;总是使用Tab completion来帮助你避免拼写错误;使用sudo
之前,总是仔仔细细检查你的命令。
6.2.2 使用 sudo 切换 Shell
如果你是一个管理员用户,你需要执行很多条需要 root 权限的命令,你可以临时切换整个命令行 shell 来取得 root 级别的访问权限。方法就是先输入sudo -s
,回车后再键入你的密码。
7 其他Command-Line技巧提示
- 输入命令
open .
可以用 Finder 打开当前的位置。 - 在 Terminal 的偏好里面可以设定它的外观和风格。
- 中止一个错误的或者发疯的命令,可以使用组合键control + C。
- 你可以在执行前编辑命令,只需要使用箭头和键盘上的其他字母。
- 没有输入任何命令时,你可以用▲和▼来浏览历史命令。同样可以编辑和再次执行。
- 你也可以使用
history
命令查看历史记录。 - 你可以使用组合键control + L清屏。
相关推荐
基于 OpenCV 的魔兽世界钓鱼机器人
供应链管理中信息共享问题的研究
青春文学中的爱情观呈现
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
XLSReadWriteII6.02.01.7z
图解系统-小林coding-v1.0
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
漫画作品与乌托邦理想追求
江苏建筑消防设施维护保养规程.rar
内容概要:论文介绍了一款名为DODRIO的交互式可视化工具,帮助自然语言处理(NLP)研究人员和从业者解析基于转换器架构的语言模型内部工作机理。DODRIO整合了概述图与详尽视图,支持用户比较注意力权重与其输入文本的句法结构和语义特征。具体而言,它包含了依赖关系视图(Dependency View)、语义关注图(Semantic Attention Graph)以及注意力头概览(Attention Head Overview),并利用不同的图形展示方法使复杂的多层多头转换器模型中的注意力模式更容易理解和研究。 适用人群:适用于从事深度学习、自然语言处理的研究人员和技术从业者;尤其适合对基于变换器架构的大规模预训练语言模型感兴趣的开发者们。 使用场景及目标:DODRIO用于探索转换器模型各层级之间的联系、验证已有研究成果,同时激发新假设形成。具体使用时可以选择特定数据集中的句子作为样本输入,观察不同注意力机制如何响应文本内容的变化。此外,还可以用来对比精简版本DistilBERT的表现,评估其相对全量模型BERT的优势与不足。 其他说明:DODRIO为开源项目,提供web端实施方式,使得
该代码使用scikit-learn的乳腺癌数据集,完成分类模型训练与评估全流程。主要功能包括:数据标准化、三类模型(逻辑回归、随机森林、SVM)的训练、模型性能评估(分类报告、混淆矩阵、ROC曲线)、随机森林特征重要性分析及学习曲线可视化。通过`train_test_split`划分数据集,`StandardScaler`标准化特征,循环遍历模型进行统一训练和评估。关键实现细节包含:利用`classification_report`输出精确度/召回率等指标,绘制混淆矩阵和ROC曲线量化模型效果,随机森林的特征重要性通过柱状图展示,学习曲线分析模型随训练样本变化的拟合趋势。最终将原始数据和预测结果保存为CSV文件,便于后续分析,并通过matplotlib进行多维度可视化比较。代码结构清晰,实现了数据处理、模型训练、评估与可视化的整合,适用于乳腺癌分类任务的多模型对比分析。
在智慧城市建设的大潮中,智慧园区作为其中的璀璨明珠,正以其独特的魅力引领着产业园区的新一轮变革。想象一下,一个集绿色、高端、智能、创新于一体的未来园区,它不仅融合了科技研发、商业居住、办公文创等多种功能,更通过深度应用信息技术,实现了从传统到智慧的华丽转身。 智慧园区通过“四化”建设——即园区运营精细化、园区体验智能化、园区服务专业化和园区设施信息化,彻底颠覆了传统园区的管理模式。在这里,基础设施的数据收集与分析让管理变得更加主动和高效,从温湿度监控到烟雾报警,从消防水箱液位监测到消防栓防盗水装置,每一处细节都彰显着智能的力量。而远程抄表、空调和变配电的智能化管控,更是在节能降耗的同时,极大地提升了园区的运维效率。更令人兴奋的是,通过智慧监控、人流统计和自动访客系统等高科技手段,园区的安全防范能力得到了质的飞跃,让每一位入驻企业和个人都能享受到“拎包入住”般的便捷与安心。 更令人瞩目的是,智慧园区还构建了集信息服务、企业服务、物业服务于一体的综合服务体系。无论是通过园区门户进行信息查询、投诉反馈,还是享受便捷的电商服务、法律咨询和融资支持,亦或是利用云ERP和云OA系统提升企业的管理水平和运营效率,智慧园区都以其全面、专业、高效的服务,为企业的发展插上了腾飞的翅膀。而这一切的背后,是大数据、云计算、人工智能等前沿技术的深度融合与应用,它们如同智慧的大脑,让园区的管理和服务变得更加聪明、更加贴心。走进智慧园区,就像踏入了一个充满无限可能的未来世界,这里不仅有科技的魅力,更有生活的温度,让人不禁对未来充满了无限的憧憬与期待。
内容概要:本文档介绍了基于MATLAB实现的贝叶斯优化(BO)、Transformer和GRU相结合的多特征分类预测项目实例,涵盖了详细的程序设计思路和具体代码实现。项目旨在应对数据的多样性与复杂性,提供一种更高效的多特征数据分类解决方案。文档主要内容包括:项目背景与意义,技术难点与解决方案,具体的实施流程如数据处理、模型构建与优化、超参数调优、性能评估以及精美的GUI设计;详细说明了Transformer和GRU在多特征数据分类中的应用及其与贝叶斯优化的有效结合,强调了其理论与实际应用中的价值。 适合人群:具备一定机器学习和MATLAB编程基础的研发人员,特别是从事多维数据处理与预测工作的专业人士和技术爱好者。 使用场景及目标:① 适用于金融、医疗、交通等行业,进行复杂的多维数据处理和预测任务;② 提升现有分类任务中复杂数据处理的准确度和效率,为各行业提供智能预测工具,如金融市场预测、患者病情发展跟踪、交通流量管理等。 其他说明:本文档包含了丰富的实战案例和技术细节,不仅限于模型设计本身,还涉及到数据清洗、模型优化等方面的知识,帮助使用者深入理解每一步骤背后的原理与实现方法。通过完整的代码样例和GUI界面设计指导,读者可以从头到尾跟随文档搭建起一套成熟的分类预测系统。
大数据的sql练习题,初级中级高级
内容概要:论文介绍了名为Transformer的新网络架构,它完全基于自注意力机制,在不使用递归或卷积神经网络的情况下建模输入与输出之间的全局依赖关系,尤其适用于长文本处理。通过多头自注意力层和平行化的全连接前馈网络,使得在机器翻译任务上的表现优于当时最佳模型。具体地,作者用此方法实现了对英语-德语和英语-法语翻译、句法解析等任务的高度并行化计算,并取得显著效果。在实验方面,Transformer在较短训练时间内获得了高质量的翻译结果以及新的单一模型基准。除此之外,研究人员还探索了模型变体的效果及其对于不同参数变化时性能的变化。 适用人群:从事自然语言处理领域的研究者、工程师、学生,熟悉深度学习概念尤其是编码器-解码器模型以及关注模型创新的人士。 使用场景及目标:主要适用于序列到序列(seq2seq)转换任务如机器翻译、语法分析、阅读理解和总结等任务的研究和技术开发;目标在于提高计算效率、缩短训练时间的同时确保模型性能达到或超过现有技术。 其他说明:本文不仅提出了一个新的模型思路,更重要的是展示了自注意力机制相较于传统LSTM或其他方式所拥有的优势,例如更好地捕捉远距离上下文关系的能力
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
自己写的远控木马,欢迎各位大佬改善