Linux笔记1

对此新家的话,怎样挑选Linux教程是老大纳闷的行。视频教程大多止是道片面的知识点,比较零碎,大部条书籍很为难啃,虽然书籍会以知识分类,可庞杂的知识体系往往让人望而生畏,遇到一个坎时特别为难跨过去。

图片 1

进一步关键的凡,初家很不便识别哪些文化是常用之,哪些是一味需要了解即可。而对教程编写者来说,也坏不便开这么的别,同样的知识点,对于不同采取人群,重要程度是无等同的。

Alt text

我当一个Linux新手,深知在上学过程被遇见的各种坑。新手总是希望会有一样依好宝典,囊括了所有的技巧,只待随着效法,就可知化大师。

  • Product
    Hunt链接
  • 官网链接 <–
    戳戳我
  • 下载页面
  • GitHub项目

可是,这种想法是免现实的。每一个好手的成人途径都不尽相同,高手并无是通过学习一些图书而练成的,而是在连解决问题遭,累积经验,逐步构建了温馨之学识体系。

2017年头,我花了大约三个星期日写了基于Electron的GitHub
Gist管理软件Lepton。开始止将其看成读书Electron的练项目,却出乎意料她竟然火了扳平把。

于是,最好的教科书,肯定是自己收拾而成为的。这为是自家勾勒《Linux笔记》系列之落脚点。这个系列以不止更新,记录自己以应用Linux过程中之各种题材。

规范揭晓后,Lepton于GitHub的星数在一如既往宏观左右根据上了1000,连续好几上刊登上了GitHub
daily trending的前十(JS和All
language)。在接受不少妙趣横生的Issue和PR之衍,还为Slack一个尖端工程师引荐加入Electron官网的feature
app之一。甚至还于有些海外媒体自然报道。(这里、这里、和这里)

才记录问题会见显示非常心碎,故而借助《The Linux Command
Line》作为文化主线,便于进行归档,所列举的知识点来源来差不多地处,有些是团结行过程被总结所得。

图片 2

Linux

Alt text

命令行概念

图形用户界面让简单的职责还便于得,
而令行界面使完成复杂的天职成为可能

如出一辙游说及令执行,我们确实靠的凡 shell。shell
就是一个次,它承受由键盘输入的命, 然后将命传递让操作系统去实施

网上关于以GitHub上打造高星项目之更分享不多,少数几乎首也是巨牛级别之,让人口学习起来无从下手。所以自己思将这次有意思的经验写下去和大家大饱眼福。

快捷切换目录

快捷键 运行结果
cd 更改工作目录到你的家目录。
cd – 更改工作目录到先前的工作目录。
cd ~user_name 更改工作目录到用户家目录。例如, cd ~bob 会更改工作目录到用户“bob”的家目录。

Lepton介绍

图片 3

Alt text

Lepton举凡相同慢超过平台(Mac/Windows/Linxu)的snippet管理软件,简单来说,“码笼”。

文件命名规则

  • 盖 “.” 字符开头的文件称是藏匿文件

  • 文件称及下令名是大大小小写敏感的。文件名 “File1” 和 “file1”
    是据区区只例外之文书称

  • Linux
    没有“文件扩展名”的概念,不像其他一些系统。可以据此而欣赏的另名字来受文件起名

  • 虽然 Linux
    支持添加文件称,文件称可能带有空格,标点符号,但标点符号仅限使用
    “.”,“-”,下划线。最重点的凡,不要当文件称中行使空格。如果您想表示词和
    词间的空格,用生划线代替

功能

  • 查询/新建/修改/删除 Snippet
  • 当地搜索
  • 语言标签 + 个性化标签
  • 格式化Description(title + tag)
  • Markdown渲染
  • 方便文本编辑
  • 语法高亮
  • 云端同步 + 跨平台支持(Win + macOS + Linux)
  • 型始于源

基本功命令

ls — 列出目录内容
file — 确定文件类型
less — 浏览文件内容

初衷

Lepton类型之初衷是制一缓慢保存snippet的“印象代码”。

用作一如既往号称码匠,平时亟需拿总的snippet保存在好管理之地方,就比如平常将笔记保存在印象笔记里平等。如果印象笔记能保留snippet就哼了!可惜印象笔记对代码块支持不好,需要以别的地方拿代码块高亮,然后再度糊回来,并时常出现格式混乱。

咱俩也可以动用Google
Drive/Dropbox/其他云盘。缺点是,这种基于文件夹的治本不若竹签适合检索。还有一部分单机软件仍Snippets,
能实现地方代码保存,可惜不支持逾平台并(比如从Mac到Windows)。

及2017新春寿终正寝,GitHub
Gist恐是最最可保存snippet的云端。它不仅仅支持中心的语法高亮、分享、隐私设置,还会见保留代码的富有历史版本,甚至还提供了REST
API支持。美中欠缺的凡,Gist没有供标签效应,而且网页端支出不周到,所有snippet按照时间各个堆积在联合,难以有效管理。虽然有少数叔着的客户端,比如GistBox,但是都闭源且开发停滞。所以,我认为以Electron

  • Gist打之过平台的snippet manager将是一个不易的切入点。

ls 命令选项

选项 长选项 描述
-a –all 列出所有文件,甚至包括文件名以圆点开头的默认会被隐藏的隐藏文件。
-d –directory 把这个选项与 -l 选项结合使用,可以看到所指定目录的详细信息,而不是目录中的内容。
-F –classify 这个选项会在每个所列出的名字后面加上一个指示符。例如,如果名字是 目录名,则会加上一个’/’字符。
-h –human-readable 当以长格式列出时,以人们可读的格式,而不是以字节数来显示文件的大小。
-l 以长格式显示结果。
-r –reverse 以相反的顺序来显示结果。通常,ls 命令的输出结果按照字母升序排列。
-S 命令输出结果按照文件大小来排序。
-t 按照修改时间来排序。

浅析长格式列表各字段含义

-rw-r--r-- 1 root root  358374 2007-04-03 11:05 ubuntu Sax.ogg
字段 含义
-rw-r–r– 对于文件的访问权限。第一个字符指明文件类型。其后三个字符是文件所有者的 访问权限
1 文件的硬链接数目
root 文件属主的用户名
root 文件所属用户组的名字
32059 以字节数表示的文件大小
2007-04-03 11:05 上次修改文件的时间和日期
oo-cd-cover.odf 文件名

术调研

种类开始前,我于Electron feature
app网页上追寻其中的开源项目,希望得以借鉴经验,少踩坑。

碰巧的凡,我于GitHub社区找到了一个艺栈相似的型pupaFM。作者xwartz提供了详细的commit记录,阅读commit记录就是如看史故事一样有意思
。通过以该地重现pupaFM大概前60单commit,我大概了解了Redux+React+Electron搭建项目之中坚办法,也又点亮Webpack技能点。

Lepton纵使以这个基础及多建筑起来的。为了方便其他开发者方便借鉴Lepton更,我尽量保证commit记录之可读性,代码里呢供详细的comment,以污染承好开源精神。

file 确定文件类型

file filename

senlong@LAPTOP-JRJD2V5P:~$ file /etc/passwd
/etc/passwd: ASCII text

社区支持

无须夸张地说,Lepton型不是闭门造车,它在开发阶段从太阁程序员社区遇取了大老之支撑。2016年的上,社区被的分子1MHz恰揭晓了外相同基于Electron的著作Knotes,并以社区中享用了他的开支经历,我念后那个让启发。向1MHz请教后,他对Lepton的开提出了成百上千深深的建议,尤其是UI库选择与自动更新这有限只地方;)

约莫两周后,Lepton框架和基本功能初具雏形,我于太阁程序员社区以邀请到了首批判内测用户,得到众多有趣的报告。(尤其感谢meilinz、Aaronice、1MHz、hongbojing、blukpine)

自家这次将品种经验总结成文,也是以对太阁社区回馈:)

less 浏览文件内容

less filename

senlong@LAPTOP-JRJD2V5P:~$ less /etc/passwd

艺实现

Lepton所选用的框架是Electron。Electron把Node.js和Chromium两者结合,开发者可以运用JavaScript进行过平台的桌面APP开发。同时,项目还选用React

  • Redux来构建前端UI和管理App的状态,并运用Webpack来作为构建工具。

图片 4

Alt text

下面用讨论一些技能实现达标之底细。

less 选项

命令 行为
Page UP or b 向上翻滚一页
Page Down or space 向下翻滚一页
UP Arrow 向上翻滚一行
Down Arrow 向下翻滚一行
G 移动到最后一行
1G or g 移动到开头一行
/charaters 向前查找指定的字符串
n 向前查找下一个出现的字符串,这个字符串是之前所指定查找的
h 显示帮助屏幕
q 退出 less 程序

代码高亮

Lepton采用Highlight.js来进行代码的语法高亮。由于Highlight.js作者良傲娇地不支持line
number,我正用这时上就技术。下面是终极效果图。

图片 5

Alt text

Linux目录规范

  • / 根目录,万物起源。

  • /bin 包含系统启动和运转所必须的二进制程序。

  • /boot 包含 Linux 内核,最初的 RMA
    磁盘映像(系统启动时,由驱动程序所要),和
    启动加载程序。有趣的文本: /boot/grub/grub.conf or menu.lst,
    被用来安排启动加载程序。 /boot/vmlinuz,Linux 内核。

  • /dev 这是一个暗含设备结点的特殊目录。“一切都是文件”,也要是用于装备。
    在这个目录里,内核维护着她支持的配备。

  • /etc 这个目录包含有系统层面的配置文件。它为暗含一多元之 shell
    脚本,
    在系统启动时,这些脚本会运行每个系统服务。这个目录中之其它公文应该是可读的文件文件。有意思的文书:虽然/etc
    目录中的别样文件还好玩,但这里只有排有了片我直接喜欢的文书:
    /etc/crontab, 定义自动运行的任务。
    /etc/fstab,包含存储设备的列表,以及跟她们相关的挂载点。/etc/passwd,包含用户帐号列表。

  • /home 在一般的配备环境下,系统会在/home
    下,给每个用户分配一个目录。普通只能
    在他们好的目下创造文件。这个界定保护系统免受错误的用户活动破坏。

  • /lib 包含核心系统程序所用的库文件。这些文件以及 Windows
    中的动态链接库相似。

  • /lost+found 每个使用 Linux 文件系统的格式化分区或配备,例如
    ext3文件系统,
    都见面发之目录。当有的恢复一个摔的文件系统时,会为此到者目录。除非文件系统
    真正的毁损了,那么这个目录会是只缺损目录。

  • /media 在今之 Linux 系统面临,/media
    目录会包含可转移除媒体设备的挂载点, 例如 USB 驱动器,CD-ROMs
    等等。这些装备连至计算机后,会自行地挂载到是目录结点下。

  • /mnt 在早来的 Linux 系统受到,/mnt 目录包含可移除设备的挂载点。

  • /opt 这个/opt 目录给用来安装“可选取的”软件。这个重点为此来囤可能
    安装在系统受到之商业软件产品。

  • /proc 这个/proc
    目录很特殊。从存储于硬盘上的文件的义及说,它不是真的文件系统。
    反而,它是一个是因为 Linux
    内核维护的虚构文件系统。它所包含的文书是内核的窥视孔。这些文件是不过读之,
    它们会告知您本是哪些监管计算机的。

  • /root root 帐户的家目录。

  • /sbin
    这个目录包含“系统”二进制文件。它们是得主要系统任务之次第,通常为最佳用户保留。

  • /tmp 这个/tmp
    目录,是故来囤由各种程序创建的临时文件的地方。一些配备,导致系统每次
    重新启航时,都见面清空这个目录。

  • /usr 在 Linux 系统面临,/usr
    目录可能是最老的一个。它含普通用户所欲的具备程序和文件。

  • /usr/bin /usr/bin
    目录包含系统装置之可执行程序。通常,这个目录会包含多序。

  • /usr/lib 包含由/usr/bin 目录中之程序所用之共享库。

  • /usr/local 这个/usr/local
    目录,是非系统发行本自带,却打算给系统采用的顺序的安装目录。
    通常,由源码编译的次会设置在/usr/local/bin 目录下。新装置之 Linux
    系统遭到,会满怀于是目录,
    但却是空目录,直到系统管理员放些东西顶她其中。

  • /usr/sbin 包含众多系统管理程序。

  • /usr/share /usr/share 目录包含众多由/usr/bin
    目录中之主次下的共享数据。
    其中囊括像默认的部署文件,图标,桌面背景,音频文件等等。

  • /usr/share/doc
    大多数安装于网遭到的软件包会包含部分文档。在/usr/share/doc 目录下,
    我们好找到本软件包分类的文档。

  • /var 除了/tmp 和/home
    目录外,相对来说,目前我们见到底目是静态的,这是说,
    它们的内容未见面改变。/var
    目录是唯恐要转移的文本存储的地方。各种数据库,假脱机文件,
    用户邮件等等,都驻扎在这里。

  • /var/log 这个/var/log
    目录包含日志文件,各种系统活动的笔录。这些文件充分主要,并且
    应该时刻监测它。其中最要之一个文书是/var/log/messages。注意,为了系统安全,在部分系统被,
    你得是极品用户才会查看这些日记文件。

代码分行

如齐图,代码块放在了一个HTML
table中。首先用正则式/\r?\n/把代码分行,并同时计算每行对应之line
number。line number放在上面HTML
Table中的首先排列,代码放在第二排。使用Table的补益是,当某行代码太长导致一行放不下一旦被迫撤回时,它不见面进line
number的列中。下面是休应用Table时可能会见赶上的题材。

图片 6

Alt text

迅速操作

命令行最为倚重的对象之一即是懈怠;用极少的击键次数
来就最好多之干活。另一个对象是若的指头永远不要去键盘,永不沾摸鼠标。
以下的bash 特性使键盘使用起来更便捷,更加便捷。

活动光标

按键 操作
Ctrl-a 移动光标到行首。
Ctrl-e 移动光标到行尾。
Ctrl-f 光标前移一个字符;和右箭头作用一样。
Ctrl-b 光标后移一个字符;和左箭头作用一样。
Ctrl-l 清空屏幕,相当于clear。

觅历史命令

history

history起一定多之快捷键操作,要切记并无容易。一般是翻开历史命令内容,搜索相关命令,再经过命令id执行,简单明了

[root@senlong tmp]# history | less
不要复制line number

有时,我们当网上复制代码时,会遇到误选line number,导致如下图备受line
number也并被复制的现象。

图片 7

Alt text

Lepton的化解方案是下data-pseudo-content来号行数,避免了line
number被误选复制的题材,效果妥妥的!

图片 8

Alt text

下面奉上snippet。详细代码请看之gist。

  let lineNumber = 0
  const contentTable = adaptedHighlightedContent.split(/\r?\n/).map(lineContent => {
    return `<tr>
              <td class='line-number' data-pseudo-content=${++lineNumber}></td>
              <td>${lineContent}</td>
            </tr>`
  }).join('')

  // 最后输出:`<pre><code><table class='code-table'>${contentTable}</table></code></pre>`

Markdown渲染

Lepton采用marked模块进行Markdown渲染(Markdown
转换为 HTML)。感兴趣的话,大家为可以亲自召开同样悠悠markdown editor!

var marked = require('marked');
console.log(marked('I am using __markdown__.'));
// Outputs: <p>I am using <strong>markdown</strong>.</p>

图片 9

Alt text

React + Redux state

开班经常,我就将有Dialog的show/hide作为React component的local
state来拍卖。当时本人认为它同app的大局state无关,应该置身component中。后来,随着dialog数目的多(search/create/edit/delete/logout),属于不同component的dialog出现了互覆盖、难以调和的景。最后我只好将她改回全局的redux
state。这是一致碰小更。

标签实现

GitHub Gist本身不支持标签。我一样开始想方设法是由此一个secret
gist来保存及一块标签。后来察觉这个点子有些问题。

  1. 频率不高,每次标签变化都使拿富有标签记录还描绘副是secret
    gist,而且出错后容易丢失记录,最后弃用。
  2. 开发者不应在从来不收获用户同意的气象下,私自动用secret
    gist来囤积数据。任何关于gist的转移都应有用户来做决定。

目前方是透过description部分的特殊字符#tags来保存于定义的签。优点是签分散到每个gist中,每次就待创新该gist对许部分的价签即可,可以联手到云端。而且它们可读性强,即使用户发生一样天抛弃Lepton退回原生的网页端,也会随便读懂description的音。

图片 10

Alt text

图片 11

Alt text

UI设计

图标

图片 12

Alt text

作为程序员,能把图标制作到这程度我是杀满意的了…

Lepton意思是轻子,是凭借非参与大相互作用的自旋为ћ/2
的费米子,其中电子Electron是极出名的轻子。项目自名Lepton,是对Electron框架的致敬。(这等同系列之类型好所以情理粒子起名,比如Electron、Atom、Photon等)

初步时候,曾想用β衰变图(β衰变会时有发生两种轻子)来当Lepton图标,可惜总打不好。后来退而求其次,总能打个圆形图案表现有粒子感吧(其实用圆形代表轻子是老无得法的),最后以描写轮眼的启发下,有矣今天的筹划。

图标的制作方法简单、成本低、时间短,但成效是。具体而言,先用系统自带工具画一个逗号,然后去下第一独网站拿图纸转换成svg,然后再次去其次单网站管svg文件转换成Material风格的图标。即使来回折腾几通呢就是半时的事体。

下奉上网站链接:

  • http://pngtosvg.com/
  • https://android-material-icon-generator.bitdroid.de/
界面设计

Lepton的界面几乎从来不设计,我可怜克制地不失去填补加不必要之要素。

前举行的门类(比如这个,和这个),由于设计过度,到新兴就略微驾驭不了。这次吸取经验,
能就此Bootstrap原色就因此原色,能免弥加button就非上加button,能用黑白就绝不花。这样下去,不仅节省了时空,界面反而让人赞美好看。有时开玩笑,说灵感来自清水混凝土。

CodeMirror

CodeMirror举凡同样款第三方的text
editor,提供了广大格外硬的编制功能。(比如代码块的collapse/expand、语法高亮)

图片 13

Alt text

来自GitHub社区的wujysh在把CodeMirror集成到Lepton达到开了要命美之做事!正是以生异的献,Lepton原先蹩脚的text
editor进化为了现在之代码编辑利器。

而且他以针对产品的下和布局及呢提出了森精之见地;)

本土搜索

Lepton初期就使elasticlunr.js来落实当地搜索。遗憾之是,它时仅仅支持英文的整词搜索,比较鸡肋。后来自我改用了fusejs,华丽丽地支持partial
search和国语,搜索效果瞬间充满血复活。

图片 14

Alt text

不满的凡,Lepton并无支持针对代码有的寻,具体技术上之由来可以参照这Issue。目前支撑搜索的片段是:description、文件称、tags

自动更新

Electron自带了一个autoUpdater模块,可以自动检测server上的新本子,并自行在后台下载。

Lepton连从未直接使用自带的autoUpdater,而是利用electron-builder合并的换代模块。每次release时候,electron-builder会把包文件和包含版本信息的meta
data文件上传到GitHub的release页面。当Lepton开辟时,它会自动检测release页面上之时髦版本信息,若觉察出新本子,便会唤起用户下载。

注意,当通告暨Mac App Store时候,必须使关这些auto updater的作用。

类推广

说明文档

外一个GitHub项目还应该发一致客完善之求证文档,以便于人家了解此项目。我个人的惯是,即使项目举行不完,也会见把开不结的由来与脚下底速度以征文档上勾画清楚,做到善始善终。

就是自我勾勒说明文档的有的事例:例子1、例子2、例子3。

Lepton的早期成功得益于较完好的文档,不少用户还针对文档内容提出了改进之提议。这里奉上曾经总结了的形容说明文档的资源。

首亮相

项目雷同开始在了V2EX社区及揭晓,获得了颇正确的申报,非常感激。在诸君热心用户的反映下,Lepton从今初期就支持查看gist的简练客户端,逐步发展变成集
Tag + Search + CRUD
一身的APP。现在足充分无夸之游说,Lepton目前之多用户体验而优于基于网页客户端的GistBox。

Lepton最初收获的关怀援助她总是好几天入GitHub的daily
trending,这吗其掀起了成百上千国际开发者的关切。(这是自个儿后来才察觉的,一开始还充分怪这些国际友人从何听说Lepton

开源合作

Lepton在GitHub上落许多开发者的献,下面一并致谢:

  • wujysh
  • meilinz
  • lcgforever
  • Calinou
  • rogersachan

后续考虑

早晚,这是一个坏有趣之涉,不仅仅是积累了重重技(在付出Lepton经过遭到,我要好就用Lepton笔录了大气底gist),还在活达到有矣再次多之思考。

型开支前少全面,我有注意力都汇集到集成GitHub
API、完成核心的CRUD功能上,我所关心之是HOW。当上第四圆至第五圆,产品基本作用(Tag

  • Search +
    CRUD)逐步健全,受到关注更多,我再也多思考这个类别是什么(WHAT)。我是如果将GitHub自带的Gist网页端复制到桌面吗?还是经过Lepton由建一个snippet生态?我们应怎样选择平衡机能为?

本人的下结论是,Lepton只要变为能保留代码的印象笔记,姑且理解也“记忆代码”。它的终端目的是盖开源本身来回馈开源社区;它的直接手段是扶持程序员有效采取收集之有限智慧(读作dai
ma),在抱StackOverflow大腿之余,也能得到自己大腿。所以,我当新力量的选择上以下面“三个便民”作为衡量标准:

  1. 是不是好用户收集代码 (比如引入CodeMirror)
  2. 是不是便民用户便捷获取代码 (比如引入Local Search、copy/share
    button)
  3. 是不是便利用户专心分析代码 (比如 Immersive mode)

还要于社区的提携及自己时允许范围外展开。

最后,Lepton当下段更告知我们,打造一个GitHub上本星球项目,过程实际上远非那神秘,重点在于清晰的类对象与甘于分享的动感。

少数出乎意料的凡,有人想到了将Lepton作为同慢支持markdown的轻量级“印象笔记”来以。

致谢

  • 一律年前与了太阁程序员社区,从其中的免费讲座和类实战中学至许多!这里强力推荐一下!
  • 1MHz
    给了广大技术支持,欢迎大家呢去采风一下异的Electron作品Knotes。
  • xwartz
    的PupaFM详见的commit记录对自己读书Electron帮助特别怪,希望大家去吧让此类别点个赞。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图