Allen Guo

Keep it sharp


  • Home

  • About

  • IT • Internet

  • Life • Dream

  • Archives

禁止.DS_store生成

发表于 2019-05-03 | 更新于 2020-04-27 | 分类于 IT

.DS_Store,英文全称 Desktop Services Store,是Mac OS中保存文件夹自定义属性的隐藏文件,目的在于存贮文件夹的自定义属性,例如文件图标位置、视图设置,或背景色等,相当于Windows下的 desktop.ini。.DS_Store 默认放在每个文件夹的下面,这给我们带来了诸多不便,例如:

  • 压缩包里每个文件夹都带有.DS_Store文件,在windows系统里面成了垃圾文件;
  • git、svn之类的版本管理工具要额外的对这种文件进行忽略处理;
  • 如果是要发布到服务器的文件夹,可能会形成文件泄露漏洞。

在 macOS High Sierra 之后,我们看到苹果对此做出了优化,即使你在finder中使用快捷键 Shift + Command (⌘) + . 来显示隐藏文件 ,finder也不再显示隐藏的.DS_Store文件,但是在终端中,我们还是可以用 ll命令看到它的身影,苹果这是要掩耳盗铃吗?
那我们有什么办法来禁止.DS_Store的生成呢?网上流传的禁止.DS_Store生成方法是使用命令:

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE

但是这个命令只有在网络共享的时候有效,也就是在本地无效。比如拖动一下图标的位置或者标记一下就会自动生成了,不是我们所理想的禁止生成,所以还是需要针对本地进行处理。

是时候出动 Asepsis 这把瑞士军刀了!

一直以来,Asepsis 都是我在mac OS 上必装工具之一,它会阻止Finder将.DS_Store文件写入文件夹。 Asepsis的工作原理是拦截所有.DS_Store文件的创建或写入,并将它们重定向到 /usr/local/.dscage。 这样 Finder 如常工作,且不会有这种无用文件污染文件系统。
不幸的是,在 OS X 10.11 El Capitan 发布之后,Apple 启用了 System Integrity Protection (SIP),它会阻止 Asepsis 的安装和正常运行。Asepsis 的作者已经放弃了对它的后续支持,因为他不希望用户为了使用这个工具而禁用系统关键安全服务。

那有什么办法呢?

事实上我们可以在保持SIP启用的情况安装 Asepsis !

1) 安装 Asepsis

首先,打开终端并运行以下命令:

1
2
touch ~/.no-asepsis-os-restriction
touch ~/.asepsis-suppress-update-errors

目的是绕过Asepsis的内置兼容性检查,因为它不能识别 El Capitan 之后的版本。

现在 你可以从官网安装最新版本的Asepsis(截至2016年2月为1.5.2)。 运行安装程序,它提示你重新启动,这时SIP会阻止工具的运行。

2) 进入恢复模式并禁用 SIP

重启电脑,按住 Command (⌘) + R 键进入 恢复模式。

看到 macOS 实用工具 屏幕后,转到屏幕顶部的 实用工具 下拉菜单,然后选择 终端 ,输入:

1
csrutil disable; reboot

等待电脑重启。

3) 安装 Asepsis

返回非恢复模式后,打开终端并运行以下命令安装Asepsis

1
asepsisctl install

如果发现警告 wrapper already existing,有可能之前已经安装过Asepsis,此时尝试运行 asepsisctl uninstall_wrapper 然后重新运行 asepsisctl install。

4) 重新启用 SIP

重启并按住 Command (⌘) + R 进入恢复模式,运行命令:

1
$ csrutil enable; reboot

5) 验证 Asepsis 是否工作

重启后运行命令:

1
$ asepsisctl diagnose

如果正常的话你会看到:Your Asepsis installation seems to be OK.

赠送命令:

1
2
3
4
# 删除系统所有.DS_Store文件  
sudo find / -name ".DS_Store" -depth -exec rm **{}** \;
# 删除当前目录以及子目录的DS_Store文件
find . -name ".DS_Store" -delete

转自: https://www.jianshu.com/p/f83e85443c50

macOS下HomeBrew国内镜像安装

发表于 2019-04-17 | 更新于 2020-04-27 | 分类于 IT , homebrew

官网安装

1
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

上面是官网 https://brew.sh/ 安装Homebrew的方法,很遗憾国内网络常常安装失败,于是有了本文。

国内镜像安装

将官网安装分解为3步:

  1. 下载安装脚本
  2. 修改安装脚本(更换镜像地址)
  3. 运行安装脚本

下载安装脚本文件

下载 https://raw.githubusercontent.com/Homebrew/install/master/install 另存为文件名,比如命名为:brew_install。

修改安装脚本文件

修改 brew_install, 替换成清华大学的镜像,具体如下:

找到如下代码:

1
BREW_REPO = "https://github.com/Homebrew/brew".freeze

更改为:

1
BREW_REPO = "https://mirrors.ustc.edu.cn/brew.git".freeze

再次执行安装脚本

1
ruby brew_install

如果此时脚本应该停在

1
2
3
==> Tapping homebrew/core

Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core'...

出现这个原因是因为源不通,代码来不下来,解决方法是:要么使用科学上网,要么更换国内镜像源(中科院的镜像),运行下面的命令:

1
git clone git://mirrors.ustc.edu.cn/homebrew-core.git/ /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core --depth=1

然后把homebrew-core的镜像地址也设为中科院的国内镜像,运行下面的命令:

1
2
3
4
cd "$(brew --repo)"
git remote set-url origin https://mirrors.ustc.edu.cn/brew.git
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git

检查brew是否安装成功(可选)

1
2
brew update
brew doctor

更改更多默认源

以下是将默认源替换为国内 USTC 源的方法。 如下:

替换核心软件仓库

其实前文已经提及:

1
2
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git

替换 cask 软件仓库(提供 macOS 应用和大型二进制文件)

1
2
cd "$(brew --repo)"/Library/Taps/homebrew/homebrew-cask
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-cask.git

重置为官方地址:

1
2
cd "$(brew --repo)"/Library/Taps/homebrew/homebrew-cask
git remote set-url origin https://github.com/Homebrew/homebrew-cask

替换 Bottles 源(Homebrew 预编译二进制软件包)

bash(默认 shell)用户:

1
2
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile

zsh 用户(少见):

1
2
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zshrc
source ~/.zshrc

Done

Mac OS下用Nginx/spawn-fcgi/fastcgi写C的Web应用

发表于 2019-04-03 | 更新于 2020-04-27 | 分类于 IT , C

I. 编写一个网页(在命令行运行)

1.下载安装fastcgi库

brew install fcgi

2. 写一个动态网页

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 假设代码放到/projects/cgi目录
#include <fcgi_stdio.h> //要写在行首(fcgi_stdio.h里定义的printf与c里的冲突),且用冒号(引用路径而非全局)
#include <stdio.h>
#include <stdlib.h>

int main(void) {
int count = 0;
while(FCGI_Accept() >= 0) {
printf("Content-type: text/html\r\n");
printf("\r\n");
printf("Hello Boot!<br>\r\n");
printf("Request number %d.", count++);
}
return 0;
}

编译源代码:

gcc /projects/cgi/boot.c -o /projects/cgi/boot.cgi -lfcgi

注:gcc参数-L、-i未指定,表明brew安装fcgi时已经加入到搜索目录/usr/local/lib 和 /user/local/include目录

命令行运行:

/projects/cgi/boot.cgi

屏幕输出:

1
2
3
Content-type: text/html
Hello Boot!<br>
Request number 0

II. 从浏览器访问boot.cgi

1. 安装Nginx、spawn-fcgi

brew install nginx

brew install spawn-fcgi

2. 启动spawn

spawn-fcgi -a 127.0.0.1 -p 9001 -F 1 -f /projects/cgi/boot.cgi

启动9001端口提供CGI服务。

3. 配置nginx连接spawn-fcgi,重新启动

在server节点(比如localhost)增加一个路径匹配:

1
2
3
4
5
6
7
location ~ ^.*\.cgi$ {
root /project/cgi/;
fastcgi_pass 127.0.0.1:9001; #让其监听9001端口,与spawn-cgi监听端口一致
fastcgi_index index.cgi;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

注:经测试发现,配置中fastcgi_index、fastcgi_param、root都是不必要的; 关键就在fastcgi_pass配置。但是网上看别人资料从未有提起。

4. 访问该网页

浏览器输入:http://localhost/boot.cgi 返回页面显示:

1
2
Hello Boot!
Request number 0.

反复访问这个URL,Request number的值会加1,大家可以自己思考下这是为什么。

用Hexo + Github搭建个人博客

发表于 2019-03-01 | 更新于 2020-04-27 | 分类于 IT , hexo
  • Hexo是一个博客框架,基于Node.js,用Markdown创作博客内容,Hexo将其翻译成布局精美的静态HTML。
  • GitHub Pages,创建好的博客文章(网页)可以发布到 GitHub Pages。
  • Git 一个分布式代码版本控制工具

用Github写博客

github.com上创建账号

在github.com上创建一个账号,比如叫:lixiaobai.

github.com上创建仓库

创建一个代码仓库,名字必须为:<你的账户名>.github.io 用来存放博客文章。以上面的账户为例,你的仓库名就应该为:lixiaobai.github.io,然后通过浏览器访问 https://lixiaobai.github.io 就可以访问自己的博客了。

最开始,你的访问可能空空如也。向该代码仓库里增加 hello.md,内容为:

1
# Welcome Li Xiaobai.

浏览器访问 https://lixiaobai.github.io/hello.html ,看看效果怎么样。

思考一下博客工作的过程:你写了一篇Markdown文件hello.md,但是却通过hello.html访问了它的内容,怎么做到的呢?其实也不难理解,GitHub Pages实际上做了自动翻译工作,预先将hello.md翻译成了hello.html。

用Hexo写精美的博客

GitHub Pages官方采用了Jekyll博客框架,编译的HTML可以使用各种漂亮的主题,不过功能还不够强大,所以我选择Hexot替代Jekyll。

本文并不打算介绍Hexo的安装和配置,如果你懂Node.js和Markdown,官网 https://hexo.io 的文档已经足够清楚;如果你不懂Node.js,说给你,你也用不了。

用Hexo写完博客,使用hexo g -d命令将其发布GitHub Pages。它实际分成了两步:

  • 把博客内容翻译了 html 文件;
  • 用git把html发布到名字为 lixiaobai.github.io 的 GitHub 仓库的 master 分支(这一步需要做对应的设置)

博客管理最佳实践

源文件和编译文件

  • 你应该为 lixiaobai.github.io 仓库创建一个分支,如 blog,将博客源文件保存到该分支;
  • 总是在 blog 分支编写博客,然后通过hexo d -g 发布到 master 分支。

更好的主题

hexo 默认主题不合我意,还是:Next 漂亮。 再漂亮的主题也可能需要个性定制。因此将 https://github.com/theme-next/hexo-theme-next fork到自己的账户里,lixiaobai fork出来名字应为: https://github.com/lixiaobai/hexo-theme-next , 便于后续更改保存。

建议使用 git submoudle 管理 Next 主题,进入hexo工程目录运行:

1
git submodule add https://github.com/lixiaobai/hexo-theme-next.git themes/next

下次在其他地方clone项目要使用 git submodule update –init –recursive 更新, 更多关于submodule看这里

穆罕默德•郭昭宇 趣事集锦

发表于 2019-02-05 | 更新于 2020-04-27 | 分类于 Life , 三旺

穆罕默德•郭昭宇,诨名:郭小驴,生于一七年春,体重八斤一两,爱好:吃奶奶(nāi nāi)…

六一儿童节上午郭昭宇和他妈坐在车后排,我坐副驾驶,他妈问:暑假你是去东北奶奶家还是在上海和爸爸在家,郭昭宇说:看海豚…反复问,反复回答看海豚。
我说:”好好,看海豚,明天就去看海豚“。 郭昭宇手舞足蹈可高兴了。
他妈问我:明天你真带他去看海豚啊。 我说:看个屁啊,我要上课。
郭昭宇带着哭腔用抬手指着我说:怕爸爸,怕爸爸,我怕他…
2019-06-01

郭昭宇半夜喊妈妈吃奶声嘶力竭:妈妈… 不理他继续喊:妈妈吃奶… 再不理他继续喊:陶静…
2019-05-23

吃奶时,我对着他耳朵说:丢不丢人?郭昭宇总会把嘴拔出奶头,正经地回答我:不丢银(人)
2019-05-20

两岁时去医院体检,被扎了手指验血,这可不得了了,妈妈只要再带他到任何一个检查室,他就大声喊:“我要离开这里!”,无奈量了身高体重,撤。
2019-05-17

郭昭宇就喜欢玩电蚊拍,那天把他电到了,哇哇哭。以后我每次拿拍打蚊子就喊他来摸,他一边跑一边说:不摸 不摸…
2019-05-08

和小朋友在一起玩,一个小姐姐突然对郭昭宇喊了一嗓子,他怔了一下,然后面无表情地说:吓死宝宝了.
2019-05-02

被郭昭宇约法了三不准 —— 下班到家只要见我玩手机,就说:爸爸玩手机也不行、看电视也不行、说话也不行。我说那跟宝宝说话行不行,他说:行
2019-03-08

淋着小雨下班回到家,一开门郭昭宇就送上了小雨伞:“爸爸雨伞”,我感动地接过来,琢磨这孩子路还走不稳呢,就这么知道疼人,小子继续说:“出去溜溜…”
2018-12-01

程序员入行之素养(八):半圆帮你免费测试

发表于 2019-01-30 | 更新于 2020-04-27 | 分类于 IT , 预备课

聊一聊

“电梯门开了,远远看到一个干练的身影…”,若是第一次遇见,这必是一次极好的相识。整洁的外表表达的是一种信任。我们并不太关心你现在的能力,我们竭力通过你的外表和语言洞察你的潜力!

坐下来喝杯咖啡,天马行空娓娓道来:

  • 你对未来有多迷茫?
  • 你对成功有多渴望?
  • 你到底想成为怎样的人?
  • 你觉得我们能帮助点什么…

冰心说:有了爱,就有了一切。我们说:有了梦想和希望,成功就可以期许了。

硬技能

  • 打字速度检验,让我们看到你的机智;
  • 写一篇Markdown文档,让我们看到你的诚恳;
  • 命令行操作文件和目录的测验;
  • 一些相关的计算机知识小测试。

通过上面的考核,就恭喜你获得了半圆学社入学资格。此时,一切才刚刚开始,接下来的日子紧张又激动人心,你将和半圆TEAM一起挑战所有困难,在这里你能找回信心和勇气、友谊和坚韧,发现全新的自我。

奔跑吧,程序员!

程序员入行之素养(七):塑造网络个人品牌

发表于 2019-01-30 | 更新于 2020-04-27 | 分类于 IT , 预备课

笔者根据个人二十年从业经验,总结了在开始编程之前,应系统性地准备一系列工作,形成了“程序员入行必备之素养”系列。谨此,献给有志于从事软件开发职业的浩浩青年。

打造个人品牌就是在树立个人影响力,有了影响力就有了商业价值。品牌塑造是一个长期的过程,从触网的第一天就应该开始着手个人品牌的建设。

一个永久的邮箱 Impress

“我的名字叫 lixiaobai,我有一个个人网站 http://great.com" ,那么你的邮箱最好叫 lixiaobai@great.com 。该邮箱具有令人印象深刻的品牌形象。不过,拥有一个自己的个人网站并不容易,起初你可以使用国内 163.com 、qq.com 的邮箱服务,大厂品质,服务稳定。如果你总能科学上网,gmail.com 服务仍然是最好的选择。

邮箱用户名最好和自己的名字或笔名有关。比如:李小白的gmail邮箱最好取名: lixiaobai@gmail.com ,不过这么好记的名字应该早就占用了,那么可以考虑给自己起个英文名、诨名啥的,假如叫 小白一郎 ,去注册 xiaobaiyilang@gmail.com 试试看,也许gmail真为你留着它呢。

手机里应总是安装邮箱客户端软件,我们前文建议Airmail、YoMail绑定外部邮箱。正式的函件多采用邮件传递,安装这些客户端工具可确保及时收到重要邮件提醒。

GitHub账号 Contribution

GitHub 是全世界最大的同性交友社区。这不算个玩笑:)

GitHub 是一个面向开源及私有软件项目的托管平台,也是世界上最大的代码托管网站,里面有海量的开源软件代码和知识分享,GitHub 甚至可以写博客,并面向全世界阅读者。GitHub的开源贡献是程序员极有影响力的信任备书。不要再问更多为什么,先去GitHub注册一个账号备着吧。

个人网站 Share

个人网站主要用来官方地展示自己的网络形象,但不限于此(比如记录网络日记、读书笔记)。它通常包含一个人的自我介绍、工作生活经历等,更重要的是要时时更新个人动态、信息分享等,以维持个人的网络品牌热度。

对于程序员,专业知识的分享不但能帮助自己总结日常所学,更能有效地树立个人品牌。很多人为此专门建立了自己的博客,把专业经验积累毫无保留地公开发表。

GitHub Pages 是我首推的个人网站(包括博客)书写地,和GitHub代码融为一体。;如果你喜欢用国内的服务,简书 值得一用。不论是GitHub Pages还是简书,他们都支持极简格式的Markdown,几乎成了当代博客系统的标配。为了网站更美观,推荐使用Hexo博客框架来创建内容。

GitHub Pages 制作的个人网站将自动以 <GitHub用户名>.github.io 为域名,但是,品牌标识性更强的网站通常应具备一个独立的域名。感兴趣的朋友现在就去 阿里云 申请一个吧。GitHub Pages 还能支持你的域名指向它,并且提供HTTPS服务。

如果要在国内主机上运行网站,政策要求必须为域名申请备案,如果你备案通过,不妨一鼓作气:购买云服务主机、安装软件环境、自己搭建个人网站或博客系统(如WordPress等)。独立的主机,让你可以随心所欲定制自己网站的风格。唯一的问题是:当你发现为了随心所欲做出个性化的网站,要学习Linux、学习Html… 想想,这何尝不是入行件开发的一个蹊径呢?

专业社区 Communication

学习需要交流,既然跨入计算机行业,以下这些业内的知名网站不可不浸淫:

  • v2ex
  • 掘金
  • 开源中国
  • SegmentFault
  • InfoQ
  • 36Kr

注册这些平台的账号,多在上面发表自己的见解,多与同行交流,虚心求教、真诚帮助他人。秉持积极开放的心态,乐于分享,日积月累,个人技能提高了、你的个人品牌价值同时也得到了厚重的沉淀。

程序员入行之素养(六):拯救程序员的英语

发表于 2019-01-30 | 更新于 2020-04-27 | 分类于 IT , 预备课

笔者根据个人二十年从业经验,总结了在开始编程之前,应系统性地准备一系列工作,形成了“程序员入行必备之素养”系列。谨此,献给有志于从事软件开发职业的浩浩青年。

英语要求

英语是国际指定的官方语言(作为母语),也是世界上使用最广泛的语言。计算机科学起源于西方,理论和工程因此主要采用英语描述。反之,如果中国软件想走出过门,最终也要翻译成英语推而广之。

程序员日常用到的基础软件技术更是难见国产,如果想获得技术的第一手资料(必须要读第一手资料),英语——你必须懂!

为了能更顺畅地学习计算机技术,一般应具备如下英语技能:

  • 技术文档的英语阅读能力
  • 英语提问和简单邮件写作的能力
  • 熟记计算机行业术语和缩略语

怎样学习

如果你的英语水平达到CET-4或同等级别以上,这将是一个很好的开端。如果你的英语都还给了体育老师了,也不要灰心,以下介绍几种学习方法,不妨一试:

工具的使用

有道词典 当你阅读时遇到了单词障碍,可以直接去 https://dict.youdao.com 在线翻译,有道词典也有Mac版下载,提供了划词翻译功能,当你阅读网页的时候,选中不认识的单词,停留片刻,就会弹窗显示翻译,如图:

对于陌生词汇,不但要理解释义,而且要能正确发音。一说起发音,不少人就本能反应恐惧,我的建议是:基础实在薄弱,不必那么遵循发音标注(音标),跟着软件发音学舌,”形似”即可。

词汇积累需要一个过程,每遇到新的词汇,就将其加入生词本是个好习惯,直到新词变旧词(记忆形成烙印)再移除。 有道词典有单词本功能,不过我更推荐扇贝单词,用户体验那叫个谁用谁知道。扇贝单词还有个单词书功能,预分类了不少行业词汇,专攻计算机行业词汇时不用自己再搜集了。

上述这些工具都有手机版,有道词典甚至提供了OCR功能,出国旅游时去餐馆点菜,扫一扫英文菜单,就能直接翻译成中文,人人需要安装一个。

资料来源

听说现在很流行Python,不妨去Python官网尝试阅读下入门指南,看看真实英文资料的高频词和句法难度。

有一本《程序员的英语》,笔者认为写的很实诚,值得一读,或许能从中找到学习的灵感:

附录也列出了常用的计算机缩略语(最高频的已做加粗标注),大家可以迅速浏览以获得一些行业名词的基本印象。

小技巧

日常学习中,常用到英文版工具软件如Sublime Text,不要养成汉化的习惯,应该习惯软件的英文菜单,每开始使用一个新的软件,就把软件菜单中所有不认识的单词罗列出来,加到工具软件(有道、扇贝、金山词霸等)的生词本,常常回顾(释义和发音)。

最后

英语作为一门大学专业,学习的方法和工具展开起来一本书也讲不完。最重要的是:你要自己反复摸索,尝试多种方法,直到找到适合自己的英语学习方法。最后,预祝通过入行软行行业,顺便拯救了你的英语。

附录 缩略语

缩略语 全称 中文释义
API Application Programming Interface 应用编程接口
ANSI American National Standard Institute 美国国家标准组织
Ajax Asynchronous Javascript And XML 异步Javascript和XML
ASCII American Standard Code for Information Interchange 美国信息交换标准码
CAD Computer Aided Design 电脑辅助设计
CD Compact Disc 激光唱片
CGI Common Gateway Interface 通用网关接口
CPU Central Processing Unit 中央处理器
CSV Comma Separated Value 逗号分隔的值,一种数据格式
CSS Cascading Style Sheets 级联样式表
DB Database 数据库
DHCP Dynamic Host Configuration Protocol 动态主机配置协议
DNS Domain Name Server 域名服务器
DRAM Dynamic Random Access Memory 动态随机存取存储器
DPI Dots Per Inch 点每英寸
DVD Digital Video Disk 光碟,影碟
E-Mail Electronic Mail 电子邮件
FDDI Fiber Distributed Data Interface 光纤分布数据接口
FTP File Transfer Protocol 文件传输协议
GB Gigabyte 千兆字节
gb Gigabit 吉比特, 千兆比特
GIF Graphic Interchange format 图象交换格式
GUI Graphic User Interface 图形用户界面
HA High Availability 高可靠性能
HEX Hexadecimal 十六进制
HTTP Hyper Text Transport Protocol 超级文本传送协议
IC Integrated Circuit 集成电路
ICP Internet Content Provider 因特网内容服务提供商
ISV Independent Software Vendor 独立软件开发商
IEEE Institute of Electrical and Electronics Engineers 电机工程师协会
IETF Internet Engineering Task Force 因特网工程任务组
IP Internet Protocol 互联网协议、网际协议
IPv6 Internet protocol version 6 因特网协议版本6
ISO International Organization for Standardization 国际标准化组织
ISP Internet service provider 因特网服务提供商
IT Information Technology 信息技术
JPEG Joint Photographic Experts Group 联合图象专家组;一种数字影像压缩标准
JSON JavaScript Object Notation JS 对象表示法, 一种数据格式
KB Kilobyte 千字节
kb Kilobit 千位,千比特
LAN Local Area Network 局域网
LDAP Lightweight Directory Access Protocol 轻量级目录访问协议
MAC Media Access Control 媒体访问控制
MB Megabyte 兆字节
mb Megabit 兆位,兆比特
MAN Metropolitan Area Network 城域网
MPEG Moving Pictures Experts Group) 运动图象专家组
OA Office Automation 办公自动化
OCT Octal 八进制
OS Operating System 操作系统
P2P Point To Point 点到点
RGB Red Green Blue 红绿蓝
RPC Remote Procedure Call 远程过程调用
SDK Software Development Kit 软件开发包
SSD Solid State Disk 固态盘
SSH Secure Shell 安全外壳
SSL Secure Sockets Layer 安全套接层
TB Terabyte 太字节
tb Terabit 太位
TCP Transmission Control Protocol 传输控制协议
UDP User Datagram Protocol 用户数据包协议
UML Unified Modeling Language 统一建模语言
URL Uniform Resource Locators 统一资源定位
VoIP Voice over IP 在IP上传送语音
VPN Virtual Private Network 虚拟专用网络
WAN Wide Area Network 广域网
WLAN wireless local area network 无线局域网
WWW World Wide Web 万维网
XML eXtensible Markup Language 可扩展标记语言
XSL eXtensible Style Language 可扩展样式语言

程序员入行之素养(五):一生万物、万物归一(Windows命令行)

发表于 2019-01-28 | 更新于 2020-04-27 | 分类于 IT , 预备课

Windows系统是操作系统中的异类,它使用英文字符(A~Z)将磁盘换分为多个逻辑区域,可以根据喜好像下面这样,把磁盘分为3个逻辑盘,命名分别为C、D、E:

前文的文件和目录分散到了C、D、E三个(逻辑)盘里。

可以想象Windows系统有一个虚拟的根(/)目录:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[/]
|_ [C:\]
| |_ [文科]
| | |_ [历史教育]
| | |_ 全球通史.docx
| | |_ 中国古代简史.pdf
| | |_ 中国近代史1840-1949.txt
| | |_ 中国史纲要.html
|_ [D:\]
| |_ [教育理念]
| |_ 半圆文化.txt
|_ [E:\]
|_ [计算机专业]
|_ 编译原理.pdf
|_ 核心Java卷I.pdf
|_ C语言程序设计.pdf

Windows系统也自带命令行工具,在运行窗口输入 cmd,即可进入命令行操作窗口。

现在想访问D盘的 半圆文化.txt 文件,操作命令是:

1
type D:\教育理念\半圆文化.txt↩

如果要进入D盘的 教育理念 目录,操作命令是:

1
2
D:\↩
cd 教育理念↩

注:Windows下的 目录分隔符是 \ 不是 /。

附:下面是Windows和Mac常用命令的对比:

Mac命令 Windows命令 释义
ls dir 查看目录和文件信息
find find 查找名字为指定特征的文件或目录
tree tree 显示目标目录的结构(需要单独安装才能使用)
cat type 查看文件内容
mv move 移动文件或目录到目标位置
mv rename 改变文件名
cp copy 复制文件到目标位置
cp -r xcopy 复制目录到目标位置
mkdir md 创建目录
echo echo 输出文本到屏幕或目标文件
touch / 创建一个空文件
rm -d rmdir 删除目录
rm delete 删除文件
pwd pwd 查看当前或指定目录的绝对位置
cd cd 进入指定目录
chmod attrib 改变文件或目录的属性(读、写、运行)
export set 设置系统变量
sh 识别.cmd或.bat结尾
的文件为脚本文件
运行脚本文件
Bash语法 Windows语法 脚本语言语法

程序员入行之素养(五):一生万物、万物归一(命令行补充知识)

发表于 2019-01-22 | 更新于 2020-04-27 | 分类于 IT , 预备课

下面这些补充的命令行知识不可或缺,只有掌握了,操作手法才能如行云流水。

Home目录

只要当前正在操作Mac系统,你一定处于某个用户角色。一般在安装Mac系统时会分配给你一个用户名(和密码),并为其创建了一个目录名 /Users/\ ( \ 替换为为具体的用户名),该目录被称为Home(家)目录。

Mac系统有一个默认的超级用户root,但是通常不使用。

★ pwd命令

pwd 查看用户当前所在的目录,简称当前目录。

当首次打开终端的窗口,你就一定处在硬盘的某个目录下,默认处于Home目录,简单输入pwd:

1
pwd

我的Mac系统返回输出结果:

/Users/banyuan

如果系统分配给你的用户名是 lixiaobai,那么返回的结果应该是:

/User/lixiaobai

切换目录

★ cd命令

cd [目录名] 进入指定的目录

▷ 进入 */samples/os/* 目录
输入命令:

1
2
cd /samples/os
pwd

返回输出结果:

/samples/os

从而证明用户当前处于 /samples/os 目录

▷ 进入Home目录
如果此时要回到Home目录,运行如下命令即可:

cd /Users/banyuan

不过可以用 ~ 代指Home目录,所以键入下面的命令同样可以回到Home目录:

1
cd ~

甚至直接输入不带任何参数的cd命令也是一样的。

相对和绝对目录

假设现在已经切换到了 /samples/os 目录 ,想进一步查看子目录 unix 的内容,用过去学过的方法可以输入:

1
ls /samples/os/unix

现在有一个简短的命令:

1
ls unix

将得到同样的结果。这是因为ls后面的目录或者文件名如果不以 / 符号开头,它将自动认为是从当前目录向下搜索,我们称这种不以 / 开头的条目为相对目录或相对路径。作为对比,之前我们书写的全路径叫绝对目录或绝对路径。理解相对路径至关重要,学会它会大大简化命令行的操作。

▷ .和..目录

.(一个点)代指当前目录:ls unix 也可写作 ls ./unix ;
..(两个点)代指上级父目录:假设当前在 ls /samples/os 目录(用pwd命令确定当前所在目录),想查看上级目录的 basic 子目录下有什么文件,可以输入下面的命令:

1
ls ../basic

另外,如果执行带-a参数的ls命令:

1
ls -la

将返回出结果

1
2
3
4
5
6
drwxr-xr-x   7 AllenGuo  staff    224  4  3 22:58 .
drwxr-xr-x 13 AllenGuo staff 416 4 3 23:35 ..
-rw-r--r--@ 1 AllenGuo staff 28113 4 3 18:20 linux-guide.jpg
-rw-r--r--@ 1 AllenGuo staff 17183 4 3 18:22 linux-intro.docx
-rw-r--r--@ 1 AllenGuo staff 1469 4 3 18:25 mac os.html
drwxr-xr-x 4 AllenGuo staff 128 4 3 23:01 unix

除了 历史教育,.和..也显示出来了,即表示逻辑上存在 . 和 .. 目录(如果你实验时候看到其他以.开头的条目,它们是隐藏文件或目录,以后会用到)。

小实验:大家尝试一下 cd . 和 cd .. 再执行 pwd命令,看看自己身在何处?

★ clear命令

clear 清除屏幕文字,使光标回到屏幕顶部

进行了大量的命令行操作后,屏幕上的文字乱得一团糟,输入clear后,是不是感觉世界瞬间清静了?不过有个更好的清屏快捷键操作: ⌘ + K ,两者有什么区别,可以自己去体会。

批处理

有些命令如mkdir创建目录、echo创建一个文本文件,如果成功不返回任何输出结果。如果想进一步操作成功与否,最好再执行以下ls、cat命令进一步去验证。我们可以把这一系列操作写到一个文本文件里,使这个文件运行完成上述所有任务。

  1. 创建文本文件 batch.sh (文件名任意,但建议遵循惯例,用.sh作为扩展名)

    1
    2
    3
    4
    echo 'mkdir -p /samples/movie/action'>/samples/batch.sh
    echo 'echo "Friendship is everything.">/samples/movie/action/godfather.txt'>>/samples/batch.sh
    echo 'ls -l /samples/movie/action'>>/samples/batch.sh
    echo 'cat /samples/movie/action/godfather.txt'>>/samples/batch.sh
  2. 用sh命令运行batch.sh文件

    1
    sh /samples/batch.sh

返回输出结果:

1
2
3
total 8
-rw-r--r-- 1 AllenGuo staff 26 4 4 00:06 godfather.txt
Friendship is everything.

说明mkdir、ls、echo等几个命令执行成功。我们称这样的文本文件为Shell脚本文件(Shell Scripts)。Shell脚本不但可以运行命令,还可以指定逻辑分支、循环,是一门完整的编程语言。我们常常可以使用Shell脚本批处理预定的一系列操作任务,应用十分广泛,值得学习。

★ chmod命令

chmod 改变文件或目录的属性(可读、写、运行等)

可以赋予脚本文件batch.sh可运行属性,使用chmod命令:

1
chmod +x /samples/batch.sh

这样能像运行普通命令一样去运行batch.sh:

1
/sample/batch.sh

它将返回前面同样的输出结果。

如果 /samples/os 目录下有数个 .sh 脚本文件都要一起设置为可执行(x)属性,那么运行chmod 命令:

1
chmod -R +x /samples/os

不仅仅.sh,该命令也把 /samples/os/ 目录下所有文件设置为可执行(x)属性,即便有些文件不具备执行能力。使用-R参数(R是递归的意思)进行递归处理所有子目录。

★ export命令

export 设置系统搜索可执行命令的路径(目录)

有个问题,为什么不是直接键入 batch.sh,而是要输入 batch.sh的全路径才能正确执行脚本?为此要再次谈及路径(Path),Mac通过export命令指定一个叫PATH的条目的值,其值为一组路径(目录),目录之间用 : 分隔。如果 batch.sh 所在的目录在这个路径列表里,就可以直接输入 batch.sh 运行之,否则就不能。

先键入 export ,返回结果有一行(每个人的执行export返回结果可能有所不同):

1
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

这组目录有:

1
2
3
4
5
6
/usr/local/sbin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

显然,/samples不在这个列表里,执行命令:

1
export PATH=$PATH:/samples

这个命令的含义就是:在原有路径($PATH代指)的基础上再添加一个目录/samples。执行完 export PATH=$PATH:/samples 命令后,你可以在再次执行 export 命令,看看PATH是否变化了。

好了,现在试试直接输入 batch.sh,看看输出结果是否正确?

附:常用命令行

命令名 释义
ls 查看目录和文件信息
find 查找名字为指定特征的文件或目录
tree 显示目标目录的结构(需要单独安装才能使用)
cat 查看文件内容
mv 移动文件或目录到目标位置
cp 复制文件或目录到目标位置
mkdir 创建目录
echo 输出文本到屏幕或目标文件
touch 创建一个空文件
rm 删除文件或目录
pwd 查看当前或指定目录的绝对位置
cd 进入指定目录
chmod 改变文件或目录的属性(读、写、运行)
export 设置系统变量
sh 运行脚本文件
vi/vim 一个文本编辑软件
123

Guoguolong

30 日志
7 分类
17 标签
GitHub E-Mail
© 2020 Guoguolong
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Gemini v7.1.1