前言,不论是原生APP(Android&IOS),还是大型架构级基础环境(.NET&J2EE,或LAMP阵营等),
基本都不可避免的涉及到Linux(Unix),故还是觉得有必要把自己的一些相关知识归纳下。。
PS,Linux(Unix)更偏向程序(命令),而不是操作(界面)的系统。
给我感觉就像做事风格:踏实稳重,也有点简单实在了,当然地就有点‘土’------不过我喜欢!哈哈~
首先,还是Linux系统一点情况介绍,这个有点。。。
Linux诞生的故事就不说了,其实就是用c山寨unix,也可认为Liunx衍生至unix。所以Linux与unix的基础命令几乎一模一样的,
最明显的就是,IOS(越狱后的Unix)命令几乎和Android(root后的Linux)是一个鸟语的---所以下面说道Liunx可等同unix。
不过,Liunx是开源的。当然地,和windows一样,作为操作系统必然有多任务、多用户等特点,
以及包含自己系统运行的内核(核心程序)、文件系统(ext、nfs等)、还有调用的接口(shell、命令&图形界面、应用程序等)。
与windows不同的:目录只有一个盘(根目录)、没有图形化的界面(当然也能用X-windows集成)、可移植等。
Linux有N多版本,其中以偏桌面的Ubuntu(源于Debian)与偏服务器的CentOS(源于redhat)为主。
这里也提下国内多用CentOS的几个原因(本人比较认同的):1.国内网络不行;2.基本教材、资料都是redhat的;3.发布版本稳定性。
接着,就是Linux目录结构,这是个基础,不过~其实Linux就是个小基础的东四。----下面用Ubuntu举例,看图
再者,就是Linux的常用命令,
1.文件目录:mkdir 创建目录;touch 生成文件;echo 生成待内容文件;cat/tac 现实文件内存
rm 删除文件;cp 复杂文件;mv 移动文件;find 查找文件;grep 查找字符串
wc 统计文字;pwd 当前目录;tree 显示目录树;ln 连接文件;ls、cd。。。
2.系统管理:stat 显示指定文件信息;netstat 网络状态;man 命令帮助;
who、w 在线用户;whoami 用户自身身份;ifconfig 网络端口;
hostname 显示主机名;uname 系统信息; top 系统资源使用信息(性能优化常用!);ps 瞬时进程;ping、clear、kill。。。
还有,就是有些常用操作,如VIM,软件包管理(解/压缩),用户、文件(夹)权限,SSH等,
1.VIM:编辑模式-》插入模式(输入i)-》命令模式(输入:)
几个保存命令:q直退;wq保退;q!强退;w file 保存成其他文件
2.压缩/解压文件、文件夹:
gzip(后缀gz)与bzip2(后缀bz2)
tar(可完全替换上两个) [-cxzjvf],c压缩&x解压;z用gzip压缩&j用bzip2压缩;v显示压缩文件;f压缩文档
3.软件包管理:
dpkg软件包(.deb后缀文件,等同redhat的.rpm后缀文件): sudo dpkg -i pkg_file.deb 安装;sudo dpkg -r pkg_file 卸载
APT自动处理依赖文件:sudo apt-get install pkgname 安装;sudo apt-get remove pkgename 卸载;
sudo apt-get update 获取包列表;sudo apt-get upgrade 升级更新;
4.用户、文件(夹)权限:(ls -l 显示)
su 切换用户;id 显示用户id;groups显示用户组;
chmod 更改操作权限 [u 属主 g 所属组用户 o 其他用户 a 所有用户][+ 加权限 – 减权限 =加权限同时将原有权限删除] [rwx] 文件或目录名,如 chmod g+w file。
chown&chgrp 更改属主及属组 [ -R ] 属主 [ :所属组 ] { 文件|文件夹},如:chown -R jiyilee:build /tmp/src, chgrp jiyilee test.txt。
5.SSH: 安全shell,远程连接登录用到的,其实就是个安全协议,里面用到一些加密算法,不过一般都是用就行的。常用到一些工具,如putty、WinSCP等
最后,就是个shell,也就是linux下的脚本,类似windows的bat,有些js&Python等脚本特点。
其实蛮简单的语言(基本能称得上),有变量、函数、循环、控制等,一般起码要能看懂及作小修改就行。
总结,用惯了windows就如习惯了C#的简洁和灵活一样,再看java就不顺了,再用linux就不感冒,其实习惯就好~都是个操作系统,都是个开发语言而已。。。
真正热爱技术的技术人员不应该偏执某一技术,可专注不应狭隘!所以玩.net也好,java也罢,
最好了解下Linux,了解下DBA与运维的也是很有必要的,了解大数据吧,了解Python,了解管理,了解...
当然不可能都用到,也不是要面面俱到、盲目追新,更不可能样样精!只是更好的都需要对比和借鉴,一旦需要时可以很快上手、不至于傻乎乎~
技术是纯的、可确定的(不像管理等),应*限,需点大气才是~~~