这个清单的目的是为了在实习生内训结束时,检测实习生对于接下来的开发工作需要掌握的各项基础能力。 其中,git 操作能力、 Linux Commands / Bash Scripting、 Python Programming、ROS 是所有开发类实习生都需要掌握的基础能力。前端类(Web、Android、iOS)开发需要掌握 git 操作能力、 ROS Web Tools、 以及各自前端开发需要的基础知识。
我们Linux命令的门槛要求是《The Linux Command Line》(TLCL)。可以自由下载阅读(TODO links)。
- date 命令能够显示任意天的时间,并选择格式。例如 2018-06-26 或者 20180626。
- df 命令能够按照KB、MB、GB显示磁盘容量大小。
- free 命令能够按照KB、MB、GB显示内存容量大小;能够知道
- pwd、cd 知道,会用。
- ls 知道 -a -l -t -F -r -h 每一个参数如何使用;知道如何使用通配符(glob)。
- file 会使用;
- less 会使用搜索和翻页快捷键。
- /rootfs 知道linux的常规文件系统目录。
- cp 会使用 -i -v -f -r 参数。
- mv 同 cp。
- mkdir 会使用 -p 参数。
- rm 会使用 -r -f -i -v 等信息。
- ln 理解链接的意思,理解 -s 的差别。
- wildcard 会使用这则表达式和常用的通配符展开。
- type 理解 TLCL 中的 command 的概念。
- which 会使用。
- man 会使用,会翻页,会搜索。
- alias 会创建别名来提高自己的效率。
- cat 会用;会添加行号。
- sort 重要:能够按照列进行排序,能够按照数值进行排序,能够去重,能够倒排。
- uniq 能够搭配 sort 使用。
- grep VIP 要求熟练各种参数的使用 -nirIlE 。
- wc 几个参数都会使用,结果能保存在变量中。
- head 能够输出任意行,能够跟 tail 搭配输出任意行。
- tail 能够连续查看日志文件输出。
- tee 结合管道使用;
- 管道 VIP 能够理解shell中的管道的概念。
- echo VIP 熟练使用 echo 命令。
-
- 理解命令行中不同场合出现的星号通配符的概念,如何被展开。
- 理解反引号表达的 subshell 的概念,以及如何使用。
- 会使用
$((expr op expr))
计算。 - 会使用
{a,b,c}{1,2,3}
展开。 - 会使用
env | grep
查找环境变量。 - export 会使用,能理解。
- unset 理解并使用。
- 理解并区分单引号和双引号在变量展开上的区别。
- 换行 能够理解windows和linux以及macOS中换行符的区别。
- 能够利用vim将windows换行和linux换行来回切换。
- 有能力探查文本文件的换行是否混杂,并fix。
- clear 会使用快捷键。
- history 会查看,会使用惊叹号重复调用。
- 光标快速移动 会使用 ctrl + a e p n w u 以及 alt + f b 快捷方式(这些就够了)。
- 自动补全 理解自动补全原理。
- script tools(optional)能够使用script工具录制和回放命令行工作。
- chmod VIP 理解文件系统权限模型,能够修改。
- umask 知道umask的用途和原理。
- sudo/su 会使用。
- chwon 会使用,会批量/递归的修改子目录。
- chgrp 会使用。
- passwd 会修改自己的密码。
- usermod 会修改。
- adduser 会添加用户。
- id 知道显示出来的每个字段是什么意思。
>
知道这个在命令行中的意思,会使用。&>
理解并会使用。2>&1
理解并会使用。rwxrwxrwx
理解权限模型并能通过a+x
or755
两种方式修改权限。- ps 会看全局的进程并结合grep寻找自己想要的进程
- top 会使用,理解显示的内容,知道快捷键用法。知道批量模式搭配grep使用。
- jobs/bg/fg 知道是什么概念并会使用即可(我们主要使用tmux/screen)。
- kill 会使用,知道SIGTERM和SIGKILL。
- shutdown/reboot 会使用。
- cat /proc/cpuinfo 会使用这个命令查看CPU信息。
- nano 会使用nano编辑文本文件。
- od 会使用od查看文件,搭配 -c -x 等参数,搭配head等命令使用。
- vim 会用vim打开文件和退出vim。
- vim 会进入编辑模式,修改文件内容,并保存。
- vim 能够理解 normal ex 和 insert 以及 visual 模式。
- vim 熟练使用搜索功能。
- vim 熟练使用
:s
替换命令。 - vim 知道如何跟系统剪贴板交互
"+y
- PS1 能够将自己的命令行提示符改成笑脸。
- color 能够理解和查询用
\\033[0;30m
这样的命令改变颜色。 - apt-get install 能够安装工具包。
- apt-cache search 能够搜索需要的工具包。
- dpkg -i 能够安装离线下载的deb包。
- mount 能够在指定挂载点挂载常见格式(FAT、NTFS、EXT2、ISO)的分区/镜像。
- mount -ro 能够用readonly模式挂载分区/镜像。
- umount 知道如何卸载分区/镜像。
- md5sum/sha1sum/sha512sum 能够计算和检验文件的校验和。
- /dev/sd* 能够理解 /dev 目录下都是什么东西。
- ping 能够检查网络是否联通。
- netstat 能够查看本机开了哪些端口。
- curl 能够用curl下载文件/发送HTTP请求。
- wget 能够使用wget下载文件/镜像整个站点。
- ssh 熟练登陆远程主机。
- ssh/pubkey 理解并能够使用公钥登陆远程主机。
- ifconfig/route/resolv.conf 有能力在命令行修改自己机器的IP地址和路由器、DNS服务器。
- ssh/MITM 理解MITM攻击的原理,并能够正确判别主机RSA指纹冲突是否误报。
- scp 会使用scp在两台机器间通过网络拷贝文件/目录。
- rsync 能够在两台机器间通过网络拷贝文件/目录。
- locate 能够使用locate命令寻找文件。
- find VIP 要求熟练使用find寻找各种约束条件的文件,包括文件名、大小、访问/修改时间等。
- xargs VIP 熟练xargs跟各种命令的搭配使用。
- touch 熟练使用。
- gzip/gunzip 能够命令行解压缩文件。
- bzip2/bunzip2 能够命令行解压缩文件。
- tar 能够命令行压缩文件和解压缩文件。
- grep -E VIP 要求熟练掌握grep中的正则表达式。
- cut 熟练使用。
- sed 熟练使用替换命令。
- diff/vimdiff 理解diff文件的概念和原理,能够使用diff对比两个文件的差异。
- source 理解source命令和 bash subshell 的差别。
- bash 能够编写if-then-else命令。
- bash 能够编写for循环。
- bash 能够比较两个字符串是否一直,是否是空字符串。
- bash 能够比较两个整数的大小。
- bash 能够使用
(())
计算数值表达式。 &&
/||
能够灵活使用控制操作符(前提是理解程序/命令的返回值的概念)。- bash 能够使用 read 命令读取用户输入并给出提示符/提示信息。
$*
理解并能够使用。$@
理解并能够使用。$?
理解并能够使用。${abc##a}
理解并能够使用。${abc%%b}
理解并能够使用。bash -x
能够打印bash的执行记录调试错误。|
管道符号的理解使用- 理解什么是子网掩码,并能够正确的配置IP地址和掩码。
- 理解什么是端口,并能够正确的配置代理服务。