年年岁岁花相似,岁岁年年人不同。——linux课程初探
写在前面
记得大约两年以前第一次学习linux,当初的目的还仅仅是学习操作系统,后来慢慢开始写linux内核代码,慢慢学会重构与代码的维护。在娄老师课上感觉这些工具是如此亲切和熟悉,没错这些曾经被我抛弃甚至遗忘的国产“盗版” StackOverflow与github,如今已经发生了巨大的变化,我从博客园转到csdn也有两年了,也许今天我可能没有当时的执拗与倔强,所以我再次打开博客园的随笔写下这些,希望自己可以从“零”开始,以娄老师的教学路线为学习计划,虽然知识是旧的但思想永远是新的,相信一个学期走下来必定有所收获,再次感谢娄老师。
plus:附上我csdn的地址(读研以来好久没写过了)
开篇(从实习说起)
为什么要说实习呢,因为我实习的公司就是实验楼。。。当时的工作就是给一部分课程上传的教程找bug,看看能不能按照教程指引完成操作,所以上面很多内容都再熟悉不过了,linux的实验其实早就做过,当时实习的时候觉得这个平台比较小众,虽然自己很喜欢但没有什么实用性。今天来看可能我的判断不完全准确,上面的课程与分类越来越多,很多老师的制定教学平台就是实验楼,但依旧没有到达“火”的程度,我想可能是归咎于大数据与云计算的发展。为什么这样说呢,现在很多高校都有自己的虚拟化平台与云计算服务器(包括我们学校,可能很多人不知道罢了),很多的课程老师们可能不愿意发布到网上而是更喜欢班级的氛围,当然这只是我个人的推断。
中篇
实验我又认真地重做了一遍,具体实验我就不一张一张地截图了,我会将作业报告的链接附在下面(前10个作业),只针对一些问题简要说一下我的理解和认识。
命令执行顺序控制与管道
文件系统操作与磁盘管理
文件打包与解压缩
环境变量与文件查找
Linux 目录结构及文件基本操作
用户及文件权限管理
cheat命令
其实之前我查看帮助的方式比较特别,就是直接输入指令而不加任何参数,它会列出所有可能的参数,以sudo为例
如果输入cheat sudo的话会发现No cheatsheet found for sudo,可见cheat虽然方便但很多指令并没有,尤其是在第三方程序中,因此灵活使用man、--help和cheat才能将效率提升至最高。
环境变量
其实这一部分虽然常用但一直都有一点模糊,不论配置什么平台程序可能都离不开环境变量,那么什么时候应该添加系统环境变量,什么时候应该添加用户环境变量可能是很多人至今都分不清楚的(我也是其中之一),实验楼的实验并没有做具体说明(毕竟只是入门教程),但我觉得对于开发人员来说,这注定是一个不可回避的问题。
一般修改环境变量有三种方式:
1、直接用export命令(以编译器为例):
#export PATH=$PATH:/opt/au1200_rm/build_tools/bin
查看是否已经设好,可用命令export查看:
[root@shiyanlou]# export
declare -x BASH_ENV="/root/.bashrc"
declare -x G_BROKEN_FILENAMES="1"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="localhost.localdomain"
declare -x INPUTRC="/etc/inputrc"
declare -x LANG="zh_CN.GB18030"
declare -x LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*NaNd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:"
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD="/opt/au1200_rm/build_tools"
declare -x PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/opt/au1200_rm/build_tools/bin"
declare -x PWD="/opt/au1200_rm/build_tools/bin"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass"
declare -x SSH_AUTH_SOCK="/tmp/ssh-XX3LKWhz/agent.4242"
declare -x SSH_CLIENT="10.3.37.152 2236 22"
declare -x SSH_CONNECTION="10.3.37.152 2236 10.3.37.186 22"
declare -x SSH_TTY="/dev/pts/2"
declare -x TERM="linux"
declare -x USER="root"
declare -x USERNAME="root"
可以看到,环境变量已经设好,PATH里面已经有了我要加的编译器的路径。
2、修改profile文件:
#vi /etc/profile
在里面加入:
export PATH="$PATH:/opt/au1200_rm/build_tools/bin"
让环境变量立即生效需要执行如下命令:
#source /etc/profile
3、修改.bashrc文件:
# vi /root/.bashrc
在里面加入:
export PATH="$PATH:/opt/au1200_rm/build_tools/bin"
其中前两种修改的是系统环境变量,最后一种修改的是用户环境变量。
grep命令的技巧
一个优秀的软件架构师可能离不开grep命令,以我为例,我目前正使用caffe从事深度学习的开发,caffe源码较为庞大和复杂,如果不能快速定位的话会浪费大量时间。例如,在src/caffe/layer_factory.cpp(caffe基于工厂模式设计的)有一个宏调用:REGISTER_LAYER_CREATOR(Pooling,GetPoolingLayer),可能一眼看上去不知道它想做什么,那么可以在caffe的根路径运行如下命令:
grep -n -H -R "REGISTER_LAYER_CREATOR" *
结果见下图
尾篇
其实并没有写完,但由于导师项目较多,暂时就说这些吧,同时选修了娄老师的移动平台开发,更多内容请见移动平台开发提交的博客,里面对于linux上的部分操作进行了必要的补充。
年年岁岁花相似,岁岁年年人不同。——linux课程初探的更多相关文章
- 14门Linux课程,打通你Linux的任督二脉!
Linux有很多优点:安全.自主.开源--,也正是这些优点使得很多人都在学Linux. 虽说网上有大把的Linux课程资源,但是对很多小白来说网上的课程资源比较零散并不适合新手学习. 正因为此,总结了 ...
- linux课程总结
linux课程总结 --20125111 李冰清 转眼间,为期十六周的linux课程已进入尾声,回想起这十六周的课程,不断浮现在脑海里的是娄老师的笑容以及这十六周以来的点点滴滴. 第一次听到娄老师说将 ...
- Linux 基金会宣布联合 edX 提供免费 Linux 课程
edX 是一个由麻省理工学院和哈佛大学创建的大规模开放在线课堂平台.它免费给大众提供大学教育水平的在线课堂.” edX 学习平台” 就像 开源软件似的发展,它使得其它院校机构也可以提供其高级学习的 ...
- Linux课程---11、Linux中软件安装和调试
Linux课程---11.Linux中软件安装和调试 一.总结 一句话总结: 启动过程:1.安装软件,2.修改配置文件,3.启动服务 查看过程:4.查看进程,5.查看端口 关闭过程:6.关闭软件,7. ...
- Linux课程---9、安装RPM包(RPM的全称是什么)
Linux课程---9.安装RPM包(RPM的全称是什么) 一.总结 一句话总结: redhat package management 1.在Packages中查找和php相关的文件如何查找? ls ...
- Linux课程知识点总结(一)
Linux课程知识点总结(一) 一.Linux系统的简介 1.1 什么是Linux Linux是一个免费的多用户.多任务的操作系统,其运行方式.功能和Unix系统很相似,但Linux系统的稳定性.安全 ...
- Linux课程学习之我思
陈民禾,原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000,我的博客中有一部分是出自M ...
- 20135302魏静静——Linux课程期中总结
Linux期中总结 Linux课程第一周实验及总结:[http://www.cnblogs.com/20135302wei/p/5218607.html] 冯诺依曼体系结构的核心思想是存储程序计算机. ...
- 20135302魏静静——linux课程第三周实验及总结
linux课程第三周实验及总结 一.实验:跟踪分析Linux内核的启动过程 使用gdb跟踪调试内核从start_kernel到init进程启动 使用实验楼的虚拟机打开shell cd LinuxKer ...
随机推荐
- 【UVa】1343 The Rotation Game(IDA*)
题目 题目 分析 lrj代码.... 还有is_final是保留字,害的我CE了好几发. 代码 #include <cstdio> #include <algorit ...
- [linux] ping服务器脚本
#!/bin/bash IP=1.2.3.4 while true; do echo "**********************************************" ...
- 仅用CSS3创建h5预加载交错圈
<head> <meta charset="UTF-8"> <title></title> <style type=" ...
- maven引入源码
选中要添加的源码的项目右键-->debug--->debugs-configurations-->source-->java project
- winform频繁刷新导致界面闪烁解决方法
转自龙心文 原文 winform频繁刷新导致界面闪烁解决方法 一.通过对窗体和控件使用双缓冲来减少图形闪烁(当绘制图片时出现闪烁时,使用双缓冲) 对于大多数应用程序,.NET Framework 提供 ...
- 软件项目需求调研中的5W+1H定律案例分析
转:http://www.educity.cn/se/620915.html 对于软件的需求调研活动,虽然曾经写过三篇相关的需求管理文章,出发角度是从整体的需求管理过程考虑:在引入CMM(二)需求管理 ...
- 4.redis 键
转自:http://www.runoob.com/redis/redis-tutorial.html Redis 键(key) Redis 键命令用于管理 redis 的键. 语法 Redis 键命令 ...
- js判断是否ie浏览器或者浏览器版本
var Sys = {}; var ua = navigator.userAgent.toLowerCase(); var s; (s = ua.match(/rv:([\d.]+)\) like g ...
- Squid 代理服务器日志管理
简介: Squid 服务器日志增长是很快的,如果不做处理的话,可以会由于系统限制单文件大小,而导致 Squid 服务停止,太大的日志文件也不适合分析. 一.日志配置 shell > grep ' ...
- input子系统分析之三:驱动模块
内核版本:3.9.5 本节将以even handler来分析设备的注册和打开的过程,分析之前不妨回顾一下上节介绍的数据结构. 结合前两节分析可知,input子系统分为3层,最上一层是event han ...