今年的春节,我来到了西部的这个山里的小村,我走过几乎所有的地方,想找到一点和大城市相关联的东西,最后我终于找到了一样东西:”电“, 最起码我的笔记本电脑在这里还可以工作。我花光自己所有的钱,从很远的地方弄来米,分给这些老人和孩子。我突然发现我自己变了,一个有洁癖的我居然可以容忍这里的一切,甚至还觉得自然。
夜里,走出门外,只有一个窗子是亮着的,一个古旧的桌子上放着一个超脱这里一切的先进事物:一个笔记本电脑。 我知道我会尽自己最大的能力帮助这里没有机会认识这个世界的孩子里,我会让他们尽可能的多点米饭,因为我的能力也就只能做到这些了。。。
bash 基本使用
- 创建多级目录
mkdir -p d3/{d4/{d4a,d4b},d5/{d5a,d5b}}
产生的目录结构如下:
d3:
d4 d5d3/d4: d4a d4b
d3/d4/d4a:
d3/d4/d4b:
d3/d5: d5a d5b
d3/d5/d5a:
d3/d5/d5b:
- 使用Here文档来实现多行输入的自动结束
“cat misc << EOF”
“.................”
“EOF(结束输入)”
- tr命令是经典的单字符文本处理命令
使用tr进行替换
使用tr -d选项进行删除
使用tr -s选项消除重复并只保留第一个重复
- split命令对文件进行分割
分割之后的文件要使用cat文件进行合并之后再使用
- 使用cut命令对文件进行按列的分割
demo.txt的内容如下:
01 sevenx
02 minix
03 linux
- cut -c1-2 demo.txt产生如下输出:
01
02
03
- cut同样可以使用field的使用方式,即通过指定分割符来取出相应的字段
cut -d' ' -f1 demo.txt产生的输出如下: 01
02
03
- 使用colrm删除指定文本中指定的列
colrm start, end colum < input_file
不知道为什么一定要使用文件输入重定向的表达方式来表示文件的输入,而不是直接将文件作为第三个参数传入
- 使用sort对文件的内容进行排序
(注意:可以指定选项对排序动作的细节进行指定,比如忽略大小写的影响,清除掉每一行开头的空白带来的影响)
- uniq删除重复的行,通常与sort命令结合使用,因为重复的行可能散步在不同的行,只有经过sort才能将它们放在一起显现出来
sort demo.txt | uniq > target.txt
- umask控制新建文件的默认权限
-
新建目录的权限=777 - mask (如mask为022,则目录权限为755)
-
新建文件的权限=666 - mask (如mask为022,则文件权限为644)
- useradd增加用户,其中-m选项表示创建主目录,-d选项和-m选项同时存在,用于指定想要创建的主目录,-g指定初始组,-G指定从属组
useradd -m -d /home/foo -g foo -G xx -s /bin/tcsh foo
-
我不认为web首先出现在UNIX平台上是一件自然而然的事情,虽然有很多人强行将其说成是那样的(诚然我不想举出一个特别的例子来证明自己的说法,如果你可以举出一个比较合适的例子,感谢你和我分享你的观点)
-
目录设置了sticky位之后,目录内的文件只能被其创建者删除(有些目录如/tmp这样的目录,任何人都可以向其中增加和删除文件)
-
O_APPEND位的作用是打开自动添加模式,这种模式很有用,主要用于日志文件的写入操作(注:其实你可以猜测它的工作原理,如果你猜测不到,你可以直接问我)。
-
有没有感觉到正则表达式非常的难于使用,很难将你想表达的东西用正则表达式书写出来呢?其实正则表达式还是有一些方便书写的东西存在的,重要是理解它的核心
-
记住:永远不要rebase那些push到远程仓库的更新(如果你想不明白原因可以直接问我)
-
其实是时候考虑从你现在的版本控制系统转移到像git这样的分布式版本控制系统了,也许你会问为什么,如果我的回答是:“这样做很简单”,这个答案你满意吗?我在自己的服务器搭建一个和其它几个同事共用的git仓库,从开始到完成也就20分钟左右,我相信你可以更快地完成。
-
现在我想说一条做人为事和编程相通的道理。编程时时常强调不要重复自己,也许刚开始时你不能很好的理解这是为什么。其实你可以这样去理解,你想想一个很烦人的人,不停地在和你重复的说一件事情,刚开始的时候你也许不觉得怎么样,但是到一定时候你一定会有觉得烦的时候,你的心里会不由自主的想喊:“不要再重复了,我烦了”,其实对于你的代码的理解和阅读的人也是一样,你一样要忍受别人逻辑上的重复,这是一种痛苦。所以无论是从为人处事,还是从工程开发上,你都应该做到不重复自己,因为无论是你自己去维护已经完成的事物,还是对于别人,这都是一件痛苦的事情。
-
人的双手是如何和FreeBSD的进程进行通信的呢?通过什么设备呢?
-
什么是临界区?它存在的根本原因是什么呢?
-
要以发展目光去看待身边的事物。当我们新接触一个事物的时候,总是习惯性的被它的当前状况所吸引,由于时间紧张,我们往往没有机会去思考或者再现它的发展过程,或者是在相当多的情况下,去再现它的发展过程没有太多意义。很多人强调发散思维,其实这是一个无比困难的事情,一群人之中只有极少数的人能够真正的做到。这也就是我眼中所谓的一种聪明。
-
TAB本身就是一个字符
-
对于从BSD和Solaris转向Linux的开发人员来说,应该知道Linux对于动态链接库的处理机制有其特别的地方。
-
自然界在一定程度上允许重复,但是逻辑和工业上的重复是效率的天敌,生命作为物质运动的最高级形式,在一定程度上都是在避免重复
-
看到别人的工作才知道自己没有停下的理由,构建系统的第一个可以用于生产环境的release出来了,全部的真实项目构建测试通过,性能和速度都远超现在已知的主流构建工具,从今天开始就不用再忍受makefile的编写,不用再对着cmake的语法发火,构建系统由内部一个小团队完成(12个人,其实是11个人,因为我什么实质工作也没有做,只是负责把它的工作报告打印出来,并存档),项目是由一个海上识别的人工智能项目演变而来),除和OS交互的部分,其它机器学习的部分全部由Fortran代码完成。使用时直接扫描项目目录生成“经脉”数据库,之后根据数据库完成项目编译和生成报告,目前只支持基于Ada和VHDL(还有我们自己的定制C语言)语言的项目。
-
AutoLisp中的case有着类似C89语言中的switch的特性
-
全局变量被自动初始化为0这种说法是在一种特殊的设定,这可以根据环境需要作出相应的修改,我们的Ada环境全局变量的默认初始值就不是0。