2020年6月

如何使用 cat、more、head 和 tail 命令查看 Linux 文件的内容,而不仅仅是文本文件。

Linux 提供了许多命令来查看文件的内容,包 括 catmoreheadtail,但这只是一个开始。

一方面,即使是最显而易见的命令也有很多许多用户不会去使用的选项。还有一些普普通通的命令提供了一些独特的功能。在本文中,我们将介绍查看文件内容的命令,以及如何定制这些视图以更好地满足你的需求的选项。

cat

cat 命令将文本文件的全部内容发送到终端窗口以供查看。实际上,如果你输入 cat,然后输入包含数千行内容的文件名,那么这些行将以极快的速度在你的窗口中滚动,你将无法看到除了最后一屏外的其他文本。对于 Linux 用户来说 cat 命令很熟悉,但即使是这个基本命令也提供了许多有用的选项,例如对输出中的行进行编号,这是我们许多人可能从未使用过的。更进一步,你不仅可以对行进行编号,还可以选择如何编号。

对每行进行编号就像这样:

$ cat -n msg
     1  Hello --
     2
     3  I hope you are having a wonderful day!
     4
     5
     6  That's it for ...       now
     7
     8  bye!
     9
    10  s.

你也可以只对有内容的行编号。请注意,对于此命令,仅包含空格的行不被视为“空”,而是会被编号。

$ cat -b msg
     1  Hello --

     2  I hope you are having a wonderful day!


     3  That's it for ...       now

     4  bye!

     5  s.

cat 命令允许你使用 -s 选项忽略重复的空白行,但是要完全忽略空白行你必须添加另一个命令。

$ cat -s msg
Hello --

I hope you are having a wonderful day!

That's it for ...       now

bye!

s.

要忽略所有空白行,只需如下将 cat 的输出通过管道传递给 grep 命令。 点(.)匹配包含任意字符的文本,因此它将显示任意非空的行,用于结束一行的回车换行做匹配(LCTT 译注:此处原文有误,径改)。

$ cat msg | grep .
Hello --
I hope you are having a wonderful day!
That's it for ...       now
bye!
s.

-E 选项通过在每行末尾加 $ 符提供视觉提示,来显示行尾是否还有多余的空格。

$ cat -E msg
Hello --$
$
I hope you are having a wonderful day!  $
$
$
That's it for ...       now$
$
bye!$
$
s.$

使用 -A 时,既可以在每行的末尾显示 $ 字符,并且制表符会显示为 ^I 而不是空白。

$ cat -A msg
Hello --$
$
I hope you are having a wonderful day!$
$
$
That’s it for ...^Inow$
$
bye!$
$
s.$

使用 head 和 tail 显示文件部分内容

headtail 显示文件的头部或尾部,默认为十行。 你可以使用 -3(显示 3 行)或 -11(显示 11 行)之类的字符串来指定要查看的其它行数。tail 命令与 head 的工作方式相同,但是显示文件的尾部而不是头部。

$ head -3 msg
Hello --
I hope you are having a wonderful day!
$ tail -3 msg
bye!

s.

你还可以结合使用 headtail 命令来查看文件中间的文本。你只需要选择起点和想要查看行数即可。在此例中,命令将在文件中显示第二个一百行,并在 cat 的帮助下为这些行编号。

$ cat -b mybigfile | head -200 | tail -100
   101  Invoice #2020-06-07a sent to vendor
   ...

使用 more 或者 less 浏览一屏文本

more 命令是一次浏览一屏内容的自然之选,而 less 通过使用上下键盘箭头增加了在文件中上下移动的能力,这样你就可以遍历内容,然后在文件中回退。

使用 od 查看文本的两种方法

od(八进制转储)命令能够以常规文本和一系列 ASCII 值(即该文本在文件中的实际编码方式)的形式查看文件。在下面的例子中可以看到,带编号的行显示了 ASCII 数字值,而其他行则显示了文本和不可打印的字符。

$ od -bc msg
0000000 110 145 154 154 157 040 055 055 012 012 111 040 150 157 160 145
          H   e   l   l   o       -   -  \n  \n   I       h   o   p   e
0000020 040 171 157 165 040 141 162 145 040 150 141 166 151 156 147 040
              y   o   u       a   r   e       h   a   v   i   n   g
0000040 141 040 167 157 156 144 145 162 146 165 154 040 144 141 171 041
          a       w   o   n   d   e   r   f   u   l       d   a   y   !
0000060 012 012 012 124 150 141 164 047 163 040 151 164 040 146 157 162
         \n  \n  \n   T   h   a   t   '   s       i   t       f   o   r
0000100 040 056 056 056 011 156 157 167 012 012 142 171 145 041 012 012
              .   .   .  \t   n   o   w  \n  \n   b   y   e   !  \n  \n
0000120 163 056 012
          s   .  \n

请注意,换行符显示为 \n(八进制 012),而制表符显示为 \t(八进制 011)。

od 命令特别有用的用途之一是查看非文本文件以获取可以标识文件类型的信息。在这里,我们看到 JFIF(JPEG 文件交换格式)标签,该标签让 file 之类报告文件类型的命令将它标示为 jpg 文件。这里还有很多其他有用的信息,特别是如果你对这些文件的格式感到好奇的话。

在接下来的命令中,我们查看 jpg 文件的开始部分。

$ od -bc arrow.jpg | head -12
0000000 377 330 377 340 000 020 112 106 111 106 000 001 001 000 000 001
        377 330 377 340  \0 020   J   F   I   F  \0 001 001  \0  \0 001
0000020 000 001 000 000 377 333 000 103 000 003 002 002 002 002 002 003
         \0 001  \0  \0 377 333  \0   C  \0 003 002 002 002 002 002 003
0000040 002 002 002 003 003 003 003 004 006 004 004 004 004 004 010 006
        002 002 002 003 003 003 003 004 006 004 004 004 004 004  \b 006
0000060 006 005 006 011 010 012 012 011 010 011 011 012 014 017 014 012
        006 005 006  \t  \b  \n  \n  \t  \b  \t  \t  \n  \f 017  \f  \n
0000100 013 016 013 011 011 015 021 015 016 017 020 020 021 020 012 014
         \v 016  \v  \t  \t  \r 021  \r 016 017 020 020 021 020  \n  \f
0000120 022 023 022 020 023 017 020 020 020 377 333 000 103 001 003 003
        022 023 022 020 023 017 020 020 020 377 333  \0   C 001 003 003

如果我们要 file 命令提供有关此图像的信息,我们可能会看到类似下面这样的信息。file 命令从文件开头的数据中提取了所有这些描述性信息:

$ file arrow.jpg
arrow.png: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 500x375, components 3

使用 jp2a 将文件视为基于文本的图像

如果你只能在命令行工作,并且想了解特定图像包含的内容,那么可以使用 jp2a(jpeg to ascii)之类的工具提供字符渲染。图像在这种格式下的识别程度取决于文件。不要有太多期待,因为你将看到的图像版本是“低分辨率”下的测试!这是一只分辨率很低的帝王企鹅。(请离远点看)

$ jp2a Emperor_Penguin.jpg
MMMMMMMMWOdkNMMMMMMMMMMMMMMMMMMM
MMMXK0kc.... ,OKMMMMMMMMMMMMMMMM
MMNK0Ol...   :Xx'dNMMMMMMMMMMMMM
MMMMMMMd;lx00Oo. ..xMMMMMMMMMMMM
MMMMMMK.OXMMMMMN,...lMMMMMMMMMMM
MMMMMMx'KXNNMMMMK....0MMMMMMMMMM
MMMMMMx:kkKNWWMMMl.. 'NMMMMMMMMM
MMMMMMddx0NNNWMMMK'...;NMMMMMMMM
MMMMMMck0NNWWWWWMMd  ..lMMMMMMMM
MMMMMM.d0KXNWWWWMMo  ...WMMMMMMM
MMMMMM.xOXNNWNMMMW. ....KMMMMMMM
MMMMMM'kKNKWXWMMMK  ..'.0MMMMMMM
MMMMMMxckXNNNNMMMX  .:..XMMMMMMM
MMMMMMW;xKNWWWMMMM. .;. NMMMMMMM
MMMMMMMok0NNWNWMMMx .l..MMMMMMMM
MMMMMMMkxOKXWXNMMMMl.:'dMMMMMMMM
MMMMMMM0dKOdKXXNMMMMNx,WMMMMMMMM
MMMMMMMWoKxldXKNNMMMMM;MMMMMMMMM
MMMMMMMMxxxxdNWNXNMMMM;MMMMMMMMM
MMMMMMMMxOcoo0XOOOOWMW,kMMMMMMMM
MMMMMMM0xK;.cO0dNX:0XXd;NMMMMMMM
MMMNkdd:,'ldXXO0xl;x0kx:;lKMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM

总结

Linux 上有很多命令可以通过各种方式查看文件的内容。其中一些选项在你需要处理文件内容时可能会非常有用。其它的只是……有趣。


via: https://www.networkworld.com/article/3561490/5-ways-to-examine-the-content-of-files-on-linux.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:geekpi 校对:wxy

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

谷歌和微软在 Chromium 上相爱相杀

微软 Edge 技术可以帮助用户在 Windows 上减少高达 27% 的内存使用,谷歌 Chrome 也开始采用了这项技术。微软对 Chromium 的贡献是巨大的,谷歌也提到了微软做出的贡献。不过两者还在彼此挖墙脚:谷歌会向 Edge 用户使用谷歌搜索、Gmail 和谷歌文档时展示广告,说他们应该切换到 Chrome。微软同样也会告诉 Outlook 用户,他们应该从 Chrome 切换到 Edge。

来源:cnBeta.COM

拍一拍:原本以为 Edge 采用 Chromium 内核是一种投降,现在看起来,事情似乎不是这样的~

微软宣布 WSL2 对 GPU 的初始支持

在微软最新发布的 Windows Insider 预览版本中,WSL2 获得了 GPU 计算支持。这意味着 Linux 二进制文件可以利用 GPU 资源,在 WSL 中进行机器学习、AI 开发或是数据科学等工作。最初的 GPU 计算功能将提供两种方案:NVIDIA CUDA 和 DirectML 。

来源:开源中国

拍一拍:一方面心喜于微软提供越来越强大的功能,另外一方面也担心这种重军投入对开源社区的碾压式优势。

Apache Spark 3.0 发布

Databricks 上周发布了 Apache Spark 3.0,并将此作为新版 Databricks Runtime 7.0 的一部分。重要变化:与 Spark 2.4 相比,TPC-DS 的性能提升了 2 倍,主要通过自适应查询执行、动态分区修剪和其他优化实现;兼容 ANSI SQL;针对 pandas API 的重大改进,包括 Python 类型提示和额外的 pandas UDF;改进 Python 错误处理,简化 PySpark 异常提醒;调用 R 语言自用户定义函数的速度可提高 40 倍;解决了 Jira 上 3400 多个 issue。详情参见发布说明

红帽和 Fedora 社区共同改进模块化,将应用到 RHEL 9

模块化 Modularity 作为传统 RPM 打包的替代方案,允许某个软件包的多个版本被分发到 Fedora。简单来说,在传统发布策略的基础上,Fedora 仍将推出标准发行版,但同时搭载一组提供流行软件替代版本的模块。RHEL 9 计划于 2023~2024 推出。

来源:开源中国

拍一拍:这是除了容器技术之外,打包技术的一大进步。

Homebrew 软件包管理器可以让你轻松地在 Mac 上安装和更新应用程序和实用程序。

在我追求“万物自动化”的过程中,我一直坚持走在用代码来管理我的 Mac 笔记本电脑的路上。与其用鼠标或触控板手动管理我的应用程序和实用程序,我更喜欢使用软件包管理软件来安装、更新和删除不需要的软件。

这对 Mac 用户来说是个挑战。Mac 的操作系统 macOS 始终落后于 Linux 的一个地方就是在包管理方面。Mac 用户没有默认的软件包管理器,而 Linux 用户则有很多选择 —— 从熟悉的 yumapt 到现代的 Flatpak。但 Mac 呢?

这就是 Homebrew 的作用。Homebrew(自酿)填补了 MacOS 事实上的软件包管理器的空白(它也是 Linux 上的又一个可选的包管理器)。它为任何熟悉命令行的人提供了令人难以置信的流畅而直接的体验,如果你是新手,它是学习命令行的好方法。

(LCTT 译注:Homebrew 系统中采用了大量针对自酿啤酒相关的比喻,大家在使用过程中会发现这些有趣的形容。)

如果你在 Mac 上还没有 Homebrew,你可以这样来安装:

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

该命令将执行 Homebrew 团队提供的安装程序脚本。如果你喜欢谨慎一点,可以 curl 下来这个文件,审核后再手动运行。

$ curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh --output homebrew_installer.sh
$ more homebrew_installer.sh # 审核该脚本,直到你觉得没问题了
$ bash homebrew_installer.sh

使用“酿造”来管理你的命令行实用程序

Homebrew 号称它“可以安装苹果(或你的 Linux 系统)默认没有安装的必需之物”。安装是通过 brew(酿造)命令进行的,它使我们能够访问成千上万的命令行实用程序,但不是更复杂的应用程序。

对于我们这些搞技术的人来说,符合“必需之物”类别的实用工具包括显示目录结构的方便的 tree 命令和我用来 管理多个 Python 版本pyenv

你可以用 search 子命令看到 Homebrew 中所有的“ 秘方 formula ”,我用 wc 命令显示有多少个“秘方”。

# -l 统计行数
$ brew search | wc -l
    5013

有 5000 多个“秘方”,这是一个不可思议的软件数量。所以,在搜索那个庞大的清单之前,最好先对自己想要的东西有个概念。值得庆幸的是,浏览起来很方便。“秘方”被编入并集中存储到核心库中,核心库按操作系统划分(Mac 在 Homebrew Core,Linux 在 Linux Core)。它们也可以通过 Homebrew API 和网站列出。

口碑是另一个寻找实用工具的好方法。考虑到这一点,如果你正在寻找灵感,这里有一些我的最爱:

  • pyenvrbenvnodenv 分别用于管理 Python、Ruby 和 Node.js 的版本
  • imagemagick 用于可脚本化的图像编辑
  • pandoc 用于可脚本化的文件转换(我经常从 .docx 切换到 .md 或 .html)
  • hub 为 GitHub 用户提供了更好的 Git 体验
  • tldr 提供了解如何使用命令行工具的例子

举个例子,看看 tldr 页面,这是一个用户友好的替代方式,可以滚动浏览应用程序的手册页。你可以通过再次运行 search 来确认它是否可用:

$ brew search tldr
==> Formulae
tldr ✔

成功了!这个对勾让你知道它是可用的。现在你可以安装它了:

$ brew install tldr
==> Downloading https://homebrew.bintray.com/bottles/tldr-1.3.0_2.catalina.bottle.tar.gz
Already downloaded: /Users/mbbroberg/Library/Caches/Homebrew/downloads/901bc14594a9283e9ab20aec942dc5a9a2befb7e96e1b0fcccb4e3257918813c--tldr-1.3.0_2.catalina.bottle.tar.gz
==> Installing tldr
==> Pouring tldr-1.3.0_2.catalina.bottle.tar.gz
?  /usr/local/Cellar/tldr/1.3.0_2: 6 files, 35.5KB

值得庆幸的是,Homebrew 预先构建了二进制文件,所以你不必在本地机器上从源代码构建。这样就节省了很多时间,并免除了 CPU 风扇的噪音。我对 Homebrew 赞赏的另一件事是,你可以在不完全了解其含义的情况下欣赏此功能。

但如果你喜欢,看看复杂的东西也是很有趣的。对 tldr 运行 info 子命令,你可以看到所有的依赖管理、源代码,甚至公共分析。

$ brew info tldr
tldr: stable 1.3.0 (bottled), HEAD
Simplified and community-driven man pages
https://tldr.sh/
Conflicts with:
  tealdeer (because both install `tldr` binaries)
/usr/local/Cellar/tldr/1.3.0_2 (6 files, 35.5KB) *
  Poured from bottle on 2020-05-20 at 15:12:12
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/tldr.rb
==> Dependencies
Build: pkg-config ✔
Required: libzip ✔
==> Options
--HEAD
        Install HEAD version
==> Analytics
install: 2,811 (30 days), 7,875 (90 days), 27,105 (365 days)
install-on-request: 2,806 (30 days), 7,860 (90 days), 27,080 (365 days)
build-error: 0 (30 days)

最后,和其他优秀的软件包管理器一样,Homebrew 的 brew uninstall 子命令可用于快速清理和删除未使用的实用程序。

用“酒桶”管理你的应用程序

命令行实用程序是一匹孤狼,但完整的应用程序呢?Homebrew 保持了其标准命令的简单性,只通过其默认的 brew 命令行界面安装单文件应用。而应用程序不符合这种结构。它们的目录层次比较复杂,比单一的二进制要复杂得多。

幸运的是,Mac 上的 Homebrew 包含了一个名为 cask(酒桶)的子命令,用于处理更复杂的多目录结构。特别好的是,cask 使用了与标准 brew 命令类似的命令结构,所以你可以使用类似的 searchinstallinfo 子命令:

brew search --cask | wc -l
    4772

哇,有近 5000 个应用程序,在 Homebrew 的网站上浏览更方便。

我将用我新喜欢的一款应用来引导你完成 caskMeld(我在 Opensource.com 上读到的)。这是一个功能丰富的编辑器,可以帮助管理合并冲突。在它的网站上有下载的链接,我可以运行安装程序,并将其拖放到我的应用程序文件夹中。但我不想再这样做了,我用的是 Homebrew。

首先,我可以通过稍微不同的语法确认它可以使用:

$ brew search --casks meld
==> Casks
meld

然后我使用 cask 子命令来安装它:

$ brew cask install meld
==> Downloading https://github.com/yousseb/meld/releases/download/osx-19/meldmerge.dmg
==> Downloading from https://github-production-release-asset-2e65be.s3.amazonaws.com/28624006/66cb25
######################################################################## 100.0%
==> Verifying SHA-256 checksum for Cask 'meld'.
==> Installing Cask meld
==> Moving App 'Meld.app' to '/Applications/Meld.app'.
==> Linking Binary 'meld.wrapper.sh' to '/usr/local/bin/meld'.
?  meld was successfully installed!

Homebrew 不仅安装了应用程序,而且还在我当前的路径 /usr/local/bin/ 下提供了它。现在,我可以从命令行运行 meld 或从应用程序文件夹中启动应用程序。

更新一切的“酿造升级”

我一直使用软件包管理器的主要原因是,我可以不断升级我的软件,以避免已知的安全漏洞,并确保我总是有最新的功能。如果我手工安装所有的东西,我必须关注每一个工具和应用程序,以了解它是否有自动更新程序,如果没有,就得自己拉回最新的版本。

升级功能是优秀的软件包管理的闪光点。由于我没有什么特殊的版本要求,所以我只需要运行一个命令就可以顺利更新一切:

$ brew upgrade
==> Upgrading 6 outdated packages:
helm 3.2.1 -> 3.2.2
[email protected] 3.8.2_4 -> 3.8.3
ipython 7.14.0 -> 7.15.0
go 1.14.2_1 -> 1.14.3
libzip 1.6.1 -> 1.6.1_1
sqlite 3.31.1 -> 3.32.1

如果你有更复杂的需求,或者想在安装升级前关注一下升级情况,有很多功能标志可供选择。例如,-n 提供了一个 “模拟运行”,列出了可用的升级,而不会进行安装。你也可以 “” 住应用程序版本来防止它升级。

备份你的安装

当该工具允许你像其它点文件的版本控制方案一样备份你的安装环境时,命令行实用程序和应用程序的管理就跳到了一个全新的水平。Homebrew 就有这样的功能,可以在 dump 子命令下使用。它会生成一个 Brewfile,这是一个可重复使用的当前所有安装的工具的列表。要从你的安装的环境中生成一个,进入你的合适的文件夹并运行:

$ cd ~/Development/dotfiles # 这是我的点文件的文件夹
$ brew bundle dump

当我换了机器,想用 Homebrew 安装相同的应用程序时,我就会进入装有 Brewfile 的文件夹并运行。

$ brew bundle

它将在我的新机器上安装所有列出的“秘方”和“酒桶”。

用 Homebrew 进行软件包管理

Homebrew 是我常用的命令行工具和应用程序的管理器。它可以让我保持有条理和及时更新,它的设计在易用性和功能深度之间取得了美丽的平衡。Homebrew 将软件包管理的细节最小化到只需要你知道的程度,大多数用户都会从中受益。

如果你对 Linux 软件包管理器已经驾轻就熟,你可能会认为 Homebrew 太简单了,但不要误以为 Homebrew 的易用性是功能的缺乏。稍微深入一点看,就会发现很多高级选项,远远超出了我在这里向你展示的范围。将 -h 添加到任何 brew 子命令中,会显示可用来升级、删除、故障排除,甚至使用模板贡献新 “秘方” 的丰富功能。

总的来说,Homebrew 可以让一个重度命令行的 Mac 用户变得很开心。此外,它是开源的,所以如果你愿意,你可以贡献代码。尝试一下它,让我知道你的想法,在下面留下评论。


via: https://opensource.com/article/20/6/homebrew-mac

作者:Matthew Broberg 选题:lujun9972 译者:wxy 校对:wxy

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

我在 Mac 上编写 WordPress 插件,这些是我的工具列表。

根据 2020 年 Stack Overflow 开发者调查报告,在 Mac 上工作的编码者(27.5%)比在 Linux 上工作的编码者(26.6%)要多一点。相比之下,使用 Windows 作为开发机器的开发者数量几乎是其两倍(45.8%)。多年来,我在不同的平台之间跳来跳去,但我发现自己经常回到 Mac 上。

事实上,我从 Mac 专用的应用程序中获得了很多生产力,尤其是用于视频制作的 Final Cut Pro X。我喜欢能够在同一台机器上运行 Windows、Linux 和 Mac 应用程序,而这只有在 Mac 上才能实现(我将在下文中详谈)。虽然 Windows 也提供了一个强大的命令行环境,但我喜欢拥有一个完全是 Linux 风格的命令行,并且 Mac 上集成良好的图形工具对其进行了完整补充。

在本文中,我将向你展示我使用的工具。许多是跨平台的,而另一些是 Mac 专用的。虽然我过去曾开发过 Mac 应用和 iOS 应用,但我现在的开发工作完全是针对 Web 的。我维护了 10 个开源的 WordPress 插件,包括一个支持了 10000 多个非营利组织的捐款插件和一个支持了 20000 多个网站的网站隐私插件。

虽然我过去用过很多编程语言(也写过自己的编程语言),但我目前的项目主要涉及 PHP 和 JavaScript,并擅长 CSS、HTML 和 SQL(及一些框架)。为了创建和维护这些代码,我使用了下面所示的各种工具。在本篇中,我将向你展示我安装的工具。在以后的文章中,我将向你展示和深入介绍有助于完成工作的云服务。

就这样,让我们开始吧。

集成开发环境:PhpStorm

关于代码编辑和开发环境的话题,引发的宗教式的争论我都数不清了。有些程序员坚持走老路,只依靠命令行和 vi、emacs 等编辑器。有些程序员喜欢轻量级的文本编辑器,有些则喜欢可扩展性更强的编辑器,比如 vi 和 emacs。其他人则喜欢更加可扩展的编辑器,比如 Atom 和 Sublime Text。还有一些编码者,包括我自己,喜欢完整的集成开发环境,比如 PhpStorm、Visual Studio Code 和 Xcode(主要是它的 Mac 和 iOS 原生开发工具)。

我选择的武器一直是 PhpStorm。我已经使用它多年了。它有一个优秀的集成调试环境,可以进行本地和远程调试。它还集成了我日常使用的各种功能,从它自带的终端窗口到文件同步,再到版本控制和逐行文件历史记录。另外,它还有丰富的插件可供选择,可以扩展和提升编码体验。

我最喜欢的一些插件包括:

  • Rainbow Brackets(彩虹括号):一个很棒的插件,它不仅能用行匹配括号,还能用颜色来匹配。它可以非常容易地看到哪些代码属于哪里。
  • String Manipulation(字符串操作):各种各样的字符串操作、大小写转换等等。
  • WordPress:语法格式化和 WordPress 式的函数格式化,以及对 WordPress 挂钩的支持。对于任何一个 WordPress 插件的编码者来说都是必备的。

本地环境:Local

在做 Web 开发时,通常最好有一个本地开发栈。Local 就是这样一个栈。它提供了 Nginx 或 Apache、MySQL、带有 Xdebug 的 PHP 安装包,以及其他一些资源,最重要的是它带有一个隧道,这样基于互联网的资源就可以访问本地环境进行编码和测试,内置了 SSL 集成,以及 MailHog —— 它可以拦截电子邮件,用于基于电子邮件的应用测试。哦,而且是免费的。

快速编辑:Sublime Text

我之前就提到过 Sublime Text,很多编码者都把它作为主要的开发环境。它几乎支持一系列传说中的插件和附加组件。当我想在 PhpStorm 固有的项目结构之外编辑项目文件时,我使用 Sublime Text 作为一个快速编辑器。它的速度快,反应灵敏,而且相当有特点。

提交文件到仓库:SmartSVN

WordPress 插件库(所有通过的插件都在这里提供给 WordPress 用户)不使用 Git 或 Github,而是使用 SVN 源码控制系统。我觉得 SVN 的命令行很烦人,所以我使用一个叫做 SmartSVN 的图形化用户界面来将我的文件发送到仓库中。它大大降低了我在发布新版本时出错的几率。

潇洒的命令行:iTerm2

虽然在我的开发工具箱中,我更喜欢使用 GUI 界面来实现大部分功能,但我并不害怕在适当的时候使用命令行。虽然只使用标准的 MacOS 终端也是可以的,但我更喜欢 iTerm2。它提供了分屏、命令补全、粘贴历史等功能。它还可以根据你的心情和项目进行配置。

节省点击的每一秒:Shortcut Bar

这款 Mac App Store 的小宝贝是一款方便的工具,可以捕捉快速项目,并从 Mac 的菜单栏访问它们。我最大的用途是为我正在开发的各种网站创建管理页面和用户页面的快捷方式。与其切换到浏览器窗口,然后调用书签,我只需进入菜单,选择我要去的地方,就会打开浏览器。

这似乎是一个小功能,但当每天在 IDE 和浏览器之间切换数千次时,这些节省下来的鼠标动作确实不少。因为快捷栏允许分组,所以我还将本地和远程服务器测试位置的链接进行了分组。

Mac 上的 Windows 和 Linux:Parallels Desktop

因为我是做 Web 开发的,我必须在基于 Windows 的浏览器上检查我的代码,这意味着我需要启动 Windows 10 来测试新的 Edge、Chrome、Firefox 和 —— 请原谅我,还有 IE11。是的,还有用 IE11 的用户。

我在本文的介绍中提到了 Parallels Desktop。我发现在同一台机器上运行 Windows、Mac 和 Linux 的能力在某些情况下是非常有用的。也就是说,我一直在楼上办公室的 Mac 上运行 Windows,它是我的速度和容量最大的一台机器。那台机器也是我用于视频制作的机器。

我的主要开发机器其实是在楼下,就在沙发旁边。这要追溯到我的狗狗还小的时候,我在办公室工作的时候,它经常会觉得孤独和害怕。现在,我在工作时,它趴在我的腿上是相当愉快的,我已经建立了一个完整的工作站,可以让我坐在客厅里,与键盘和狗共享我的膝盖。

那台机器是一台 2013 年的 i7 iMac,内存 32GB。它是开发的理想之选,但它的速度实在不够快,无法满足多个 4K 视频流的需求。也不足以快到真正成功地托管 Windows 桌面。这让我想到了……

连接到远程机器:屏幕共享和微软远程桌面

尽管我的开发机器在楼下,而我的视频制作机器在楼上,但无论我在哪里,我都可以在其中任何一台机器上工作。我只需使用 MacOS 内置的“屏幕共享”应用来连接到远程机器。

当我想从楼下的开发机器连接到 Windows 时,我使用“微软远程访问”。这是从 Mac OS 应用商店免费下载的,它提供了一个进入我的 Windows 10 机器的完整的远程界面。请注意,如果你打算使用“微软远程访问”,你需要运行 Windows 10 Pro。Windows Home 不支持远程访问。

哦,如果你想知道为什么这套环境似乎没有一个用于移动环境中,在咖啡店编程的组件,这很简单:如今的大流行病。一旦明确我所有的编码工作都将在家里完成,我就把我的开发工作整合到一台容量不错的固定机器上,并针对机器之间的千兆以太网进行了优化。如果我们还生活在之前的“旧常态”中,我就会有一个更以云为中心的实现。我很怀念咖啡店。

管理 MySQL 数据的整洁界面:Sequel Pro

我的代码要做大量的 SQL 操作。因此,我需要能够查看已经存储到数据库中的内容。对我来说,最简单、最快速的方法不是 PhpMyAdmin,而是一个叫 Sequel Pro 的 Mac 本地应用(很奇妙,它的图标上把煎饼和数据存储混为一体)。

我最常用的方式是打开一个数据库表,搜索 “value contains” 或 “option\_name contains”,然后查找结果。它的速度很快,并且允许我在开发过程中对数据进行操作。我应该指出,PhpStorm 也有一个数据库浏览器,但我发现 Sequel Pro 对我来说更有效率。

一个不太复杂的 SFTP 客户端:Forklift

我花了很长时间才改掉了通过命令行和 SSH 隧道使用 SFTP 的习惯。而 Forklift 是一个很好的替代品。它保留了一个网站和登录信息的列表,支持加密,并提供了一个传统的拖放界面来批量移动文件。

强大的应用自动化:Keyboard Maestro

与 Final Cut Pro X 一样,Keyboard Maestro 是让我继续使用 Mac 的专用软件工具之一。我在 2011 年首次购买了 Keyboard Maestro,此后我一直使用它来制作各种专业脚本。

它是一个非常强大的跨应用脚本工具,也非常容易使用。我经常写一些特殊用途的脚本来运行一个原本需要很长时间的任务。我的一些脚本是非常强大的,可以跨多个应用程序。其他的脚本,比如截图中的 Stripe 填充测试,只做一件事,一遍又一遍。

我们来谈谈这个问题。在为我的捐赠插件开发 Stripe 支付网关时,我必须发起测试支付,大概有上千次。在我编码、测试和调试的过程中,我不得不用相同的测试数据填写相同的信用卡字段,一遍又一遍。Keyboard Maestro 中的一个简单的脚本为我完成了所有这些工作。我不需要为每一次测试手工填写数据,而是让 Keyboard Maestro 帮我完成。

特定用途的快速搜索:Alfred

Alfred 是我的生产力家族的新成员。它会弹出一个命令栏,有点像 Spotlight,但增加了功能。你可以创建工作流来完成相对复杂的任务,但到目前为止,我的主要用处是四个自定义搜索。当我按下 Alt-Space 时,就会弹出 Alfred 的输入栏。

如果我键入 “codex”,它就会把后面的任何内容作为搜索字符串来在 WordPress 开发者文档站 codex 上搜索。输入 “plugin”,会搜索 WordPress 插件库。输入 “zdme”,会搜索 ZDNet 中我写过的带有要搜索的字符串的文章。我经常使用这个方法在文章中放置链接。现在,这些可能看起来很简单,你可以设置 Chrome 浏览器来进行自定义搜索,但同样,与快捷栏一样,这可以节省鼠标移动和按键。如果我需要查看 WordPress 函数的定义,只需轻点一下按键,就能得到它,而不需要动用鼠标。

你觉得怎么样?

那么,你看到了,这些是我的主要开发工具,可以帮助我完成工作。那你呢?你是编程人员吗?如果是的话,什么软件工具能帮助你提高工作效率?请在下面的评论中告诉我们。


via: https://www.zdnet.com/article/one-developers-favorite-mac-coding-tools-for-php-and-web-development/

作者:David Gewirtz 译者:wxy 校对:wxy

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

假冒特斯拉 CEO 的比特币虚荣地址骗取了用户 200 万美元

虽然比特币赠品骗局已经存在了两年多,但新招数帮助骗子净赚了大量利润。新的伎俩涉及使用比特币虚荣地址,以使骗局在可疑用户眼中更具可信度。虚荣地址是指在地址本身中加入一个自定义词的比特币地址--比如 “1MuskPsV7BnuvMuHGWmmXUyXKjxp3vLZX6”或“1ELonMUsKZzpVr5Xok8abiXhhqGbdrnK5C”。BitcoinAbuse 上追踪到了 67 个被诈骗用户举报的虚荣地址。总数达到了 214 个比特币,已经超过 200 万美元。

来源:ZDNet

拍一拍:我也有个极好的虚荣比特币地址 1inuxcnbtc.....,就是没人给我打 BTC。

谷歌前广告主管正在打造一款无广告的搜索引擎

Sridhar Ramaswamy于2013年成为谷歌广告和商务高级副总裁。他领导着这个价值1150亿美元的分支机构达五年之久。但因受够了谷歌的暴利和客户与广告商之间的利益冲突,Ramaswamy选择离开谷歌并创建了自己的搜索引擎,搜索结果由必应提供并使用苹果地图来提供导航。

来源:cnBeta.COM

拍一拍:放下屠刀立地成佛。?

量子计算机领域内第一种高级编程语言 Silq 诞生

苏黎世联邦理工学院的计算机科学教授 Martin Vechev 与他的团队设计出了量子计算机领域内第一种高级编程语言 Silq,它能够像传统计算机语言一样简单、安全又可靠。Vechev 教授表示,“与现有编程语言相比,量子编程语言 Silq 能够使程序员更好地利用量子计算机的潜力,因为这些代码更加紧凑、速度更快、更实用,并且更易于理解。”

来源:开源中国

拍一拍:不知道何时量子计算机才能真正发挥作用,目前的进步虽然可喜,但是仍然不足以产生实际的用途。

GitHub 发布代码检查工具 Super Linter

开发者可以使用 Python、JavaScript、Go、XML、YAML 和更多编程语言的流行的代码检查工具来检查他们的代码库。GitHub 工程师 Lucas Gravley 将 Super linter 描述为“一个统治其它 Linter 的 Linter”。新的 Super Linter 工具建立在 GitHub 的 Actions 工具上,用于自动化某些开发工作流程,目的是防止破损的代码被上传到主分支。GitHub 将其描述为“用 bash 编写的各种 linter 工具的简单组合,以帮助验证你的源代码”。

来源:ZDNet

安装 Python,启动 IDE,然后你就可以在 Windows 系统下进行编程了。

你是否想学习编程呢?可以从 Python 开始,它因为简洁的语法和面向对象的特性而非常受欢迎,是最常见的编程语言之一。而且 Python 是一门解释型语言,这意味着你无需知道如何把 Python 代码编译为机器语言 —— Python 会帮你做到这一点,从而使你能够在编写代码的同时立即进行测试。

但是你也不能仅仅因为 Python 学习起来简单而低估了它强大的潜能,无论是在电影工作室、视频游戏工作室,还是在金融机构、IT 机构、制造业,都有 Python 的身影,甚至很多业余爱好者、艺术家、教师和许多其他人都使用 Python。

另一方面,Python 也是一门严肃的编程语言,学习它需要付出和实践。还有,你什么都不需要马上做,就几乎可以在任何计算机平台上安装并尝试使用 Python ,因此,如果你使用的是 Windows 操作系统,那本文正适合你。

如果你使用的是开源的 Linux 操作系统,那你可以 在 Linux 上安装尝试使用 Python

如何获取 Python

你可以从 Python 官方网站 上去下载 Python。在 Python 官方网站下载页,可以将鼠标悬停在 “Downloads” 按钮上,待菜单展开后,再将鼠标悬停在 “Windows” 选项,最后点击按钮就可以下载最新版的 Python 了。

 title=

或者你也可以直接点击 “Downloads” 按钮,然后在下载页中选择特定的版本去下载。

安装 Python

下载好安装包后,直接打开就可以启动安装程序了。

安装时,选择默认的安装路径比较好,最重要的是要将 Python 添加到搜索路径中,否则 Python 应用程序不知道它该从哪里找到 Python 必须的运行时环境;默认认安装时并没有选中这一项,需要手动勾选安装窗口的 “Add Python 3.7 to Path” ,然后点击继续。

 title=

由于 Windows 需要经过你的批准才会允许安装非微软官方发行的应用程序,因此你必须要在弹出 “User Account Control”(UAC) 系统提示窗口的时候 点击 “Yes” 来继续完成安装。

 title=

这时候你就需要耐心等待,系统会自动将 Python 软件包分发到合适的位置,等待过后,也就意味着你已经成功的安装了 Python ,你就可以愉快的与 Python 玩耍了!

安装一个 IDE

虽然说你仅需要一个文本编辑器,就可以开始编写 Python 代码了,但是我依然建议你使用 IDE(集成开发环境)来进行开发,这样开发起来就会变得方便很多。IDE 会将文本编辑器和一些好用的 Python 功能集成到一起,使用起来非常友好。你可以考虑选择 IDLE 3 或者 NINJA-IDE 来作为你的 IDE。

IDLE 3

Python 自带一款 IDE,名字叫 IDLE。虽然你可以使用任何文本编辑器编写 Python 代码,但 IDE 通常会提供 Notepad++ 之类的纯文本编辑器所没有的代码高亮、语法检测等功能,甚至在 IDE 里可以直接通过鼠标点击 “Run” 按钮就能快速运行 Python 代码。

想要启动 IDLE ,可以点击 Windows 的 “开始” (或者 “Windows”)按钮,然后输入 python 来进行搜索。这时候可能会搜索到多个选项,选择 IDLE 启动就好了。

 title=

如果在 “开始” 菜单中没有搜到,你也可以在 “开始” 菜单输入 cmd (或同时按下键盘 win + R 键) 来启动 Windows 命令提示符,然后输入下面命令来启动 IDLE :

C:\Windows\py.exe

如果还是无法启动的话,可是试着重新安装 Python ,安装时记得务必要在安装向导中选中 “Add Python to PATH”。详细说明,可以参考 Python 官方文档

Ninja-IDE

如果你已经有一些编程经验,而且你觉得 IDLE 对你来说有些简陋的话,你也可以试试 Ninja-IDE。 Ninja-IDE 是一款非常出色的 Python IDE,它具有代码高亮功能,并且它会自动帮你检测诸如拼写错误、引号或括号缺失以及其他语法错误。而且它还可以显示行号(调试的时候会非常有用)、缩进标记甚至可以直接通过点击 “Run” 按钮来运行你的代码。

 title=

如果要安装 Ninja-IDE ,你可以访问 Ninja-IDE 的官网 下载 Windows 安装程序 。步骤跟安装 Python 大同小异:下载安装包、允许 Windows 安装非微软官方的应用程序,然后等待完成安装即可。

Ninja-IDE 安装完成后,双击 Windows 桌面或开始菜单下的 Ninja-IDE 就可以启动了。

告诉 Python 怎么做

关键字能让 Python 知道你想要做什么。在 IDLE 或者 Ninja-IDE ,打开 “文件” 菜单,创建一个新文件。

在 Ninja-IDE 中,不要创建一个新项目,而是单独创建一个新文件就可以了。

在你用 IDLE 或者 Ninja-IDE 新建的文件中,输入以下代码:

print("Hello world.")
  • 如果你使用的是 IDLE ,请点击 “运行” 菜单,选择 “运行模块” 选项来运行你的程序。
  • 如果你使用的是 Ninja ,请单击左侧按钮栏中的 “运行文件” 按钮。

 title=

任何时间当你想要执行代码,IDE 都会提示你先保存当前正在处理的文件,然后再继续。

print 关键字会告诉 Python 打印出你在括号和引号中输入的所有文本。

但是别高兴地太早,Python 的核心库也就只能访问 printhelp 之类的基本关键字、函数等。

如果想要使用更多的关键字和函数,你就需要使用 import 关键字去加载它们。好了,先在你的 IDLE 或者 Ninja 中新建一个文件,命名为 pen.py

警告:不要把你新建的文件命名为 turtle.py ,因为 turtle.py 是包含了你要控制的 turtle 程序的文件名称,使用 turtle.py 作为文件名会让 Python 感到困惑,因为它以为你想要引入你自己的文件。

在你新建的文件中输入一下代码,并运行:

import turtle

Turtle 是一个用起来非常有意思的模块. 把这段代码添加到你的文件内:

turtle.begin_fill()
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.end_fill()

来看看你可以使用 turtle 模块来绘制出哪些图案。

想要清空 turtle 绘制的区域的话,你可以使用 turtle.clear() 函数。那你知道 turtle.color("blue") 是用来做什么的吗?

我们来试一下更复杂点的程序:

import turtle as t
import time

t.color("blue")
t.begin_fill()

counter = 0

while counter < 4:
    t.forward(100)
    t.left(90)
    counter = counter+1

t.end_fill()
time.sleep(2)

给你个挑战,试试修改代码,让它得到下图所示的结果:

 title=

当你完成这段代码后,你就可以继续学习更多有意思的模块了。这个 入门级骰子游戏 就是个不错的开始。

保持 Pythonic

Python 是一门非常有趣的语言,它的模块几乎能实现所有你想要实现的功能。正如你所看到的,Python 入门很容易,只要你对自己有耐心,很快就会发现自己在理解和编写 Python 时能像写汉字一样流畅。你可以多阅读关于 Python 的文章,试着自己编写一些小片段,然后看看 Python 会执行出什么结果。如果想要把 Python 真正融合到你实际工作中,你可以试试 Linux ,Linux 具有在本地可编写脚本的功能,而其他系统却没有。

祝你好运,记得保持 Pythonic。


via: https://opensource.com/article/19/8/how-install-python-windows

作者:Seth Kenlon 选题:lujun9972 译者:LiuWenlong 校对:wxy

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