一 :当前主流操作系统及其特点
linux基础
1.1 :操作基础及其概念
Windosws与Linux的关系:
当前主流的操作系统(2015)windows、linux、android、ios 、symbian、unix(与c语言伴生)
操作系统的特点:
Windows:傻瓜式(让所有人都会用电脑) ,好学习、工资低。
Linux:(linux认为每一个用户都是专业人士)操作麻烦、学习比较难、免费的、开源的、linux性能好、可移植性好、好的设计理念。
Android:移动操作系统,android基于linux(可操作性强)
Ios:操作系统很优秀,很有创造性,走钢丝的形式,
嵌入式操作系统中用的最多的:linux+wince(微软的嵌入式产品)
当前:消费电子(要求界面美观)android;工业(安防、航空、工业、自动化控制等)使用Linux(可裁剪性强 、稳定)
当前:( 2015)想做嵌入式开发,在操作系统要瞄准两个操作系统:Android,linux
1.2 :多机开发:双系统与虚拟机
开发嵌入式程序,需要linux。但是因为:Windows中有许多很好用的软件,如:notepad+,source insight(写程序的软件,专门用来写代码),所以也需要windows。
用Windows的同时又用linux,写代码在Windows,开发 编译在Linux中运行
即需要Windows,又需要linux。
第一种:双系统(非常不方便)
第二种:虚拟机:方便,损失性能,与真机有微小的差异
第三种:两台电脑:不方便
现实中:
个人开发者:虚拟机
大公司:服务器+客户端(两台电脑的形式)
1.3 :搭建开发环境
涉及到两个方面:虚拟机软件+linux系统
虚拟机软件:就是一个在一个单纯在windows中运行的软件,跟word、360没有本质区别。现在的主流的虚拟机软件有VMware和virtualbox
虚拟机软件在Windows系统中运行,运行后它会模拟出来一个电脑,所以叫虚拟机。然后我们可以在该虚拟机中安装别的操作系统。
当前,可以使用事先安装好的aston-ubuntu,密码是root。
1.4 :隐藏与非隐藏文件
Windows中:文件隐藏与不隐藏通过设置文件属性实现的。可以点击文件,右键属性,选择勾选隐藏选项来设置文件为隐藏文件。
在Windows中查看隐藏文件方法:菜单栏-工具-文件夹选项-查看-显示所有文件和文件夹。
Linux中:linux中隐藏文件特点是文件名以.开头,跟文件属性无关。在linux中查看隐藏文件用ls-a命令(普通显示ls)
1.5 :相对路径与绝对路径
路径:路径是用来标识一个文件在操作系统的文件系统中存储位置的。
举例:
- \winshare\eaum.c 全路径 pathname
D:\winshare 路径 path
enum.c 文件名 name
绝对路径:路径是从绝对位置开始的。譬如Windows中从某一盘符开始(c:\) Linux中从根目录/开始。
相对路径:指明路径的时候,是从当前所在的位置开始的。
linux内核、发行版:
1:linux本身指的是一个操作系统内核,只有内核是无法直接使用的。我们需要的,可以直接使用的操作系统是一个包含了内核和一批有用的应用程序的一个集合体,这个就叫inux的发行版ubuntu、redhat就是linux的不同发行版。
1.6 :GUI(图形用户界面) 和cmdline命令行)
GUI :(图形用户界面) 和cmdline (命令行)
cmdline : command line,命令行。
人机交互: 人和机器(计算机)进行交互,常用的有命令行和GUI
windows下既有GUI,又有命令行。linux中也是既有GUI,又有命令行。
但是,在linux中常用命令行,在windows中常用GUI,这是为什么? 原因在于,一般用时候身份不一样,在用linux的时候一般是专业的软件开发人员才会用,所以一般会使用命令行。然而在windws下一般都是用来娱乐和生活的。
结论:专业来软件设计的会用到命令行,用来娱乐生活一般GUI就能够满足
1.7 : 关于vi和vim编辑器
(1)什么是编辑器?编辑器是一款软件,它的主要作用就是用来编辑。譬如用来编写文件或者代码
(2)windows下常用的编辑器:自带的notepad 、notepad++等
(3)linux中常用的编辑器,自带的最古老的vi、比较好用的vim、gedit。
注:vi和vim的关系:vim是vi的升级版,推荐使用vim。
(4) vi 基础的使用 (但是由于版本原因vi连接到vim所以使用vi其实表面上看来是用vi其实内是在用vim)
4.1 使用vi打开(创建)一个文件:
vi pathname(如果文件存在那么打开它,如果不存在那么就新创建这个名字的文件并且打开它)
1.8 :vi的两种模式:
1 命令模式:当vi打开时默认为命令模式,要转入输入模式需要输入a或i按键才可以进入。在命令模式下输入的所有东西都被vi当作命令来对待。
在命令模式下不能随便输入,此时应该输入相应的命令,让vi来做相应的事情。
2 输入模式:输入模式用来向文件输入内容。可以从命令模式中按a或i进入输入模式,就可以随意按键盘进行输入,输入完成后要先退回到命令模式(因为保存也是一种命令)。在输入模式下按esc键退回到命令模式
屏幕左下角无显示是是命令模式,有显示 --INSERT是是输入模式
在命令模式下如何保存?
:wq 保存并且退出
:w 只保存不退出
:q 不保存退出
:q! 不保存强制退出
:wq! 保存并强制退出
1.9 :vi的高级应用
(1) 查找 :
在命令模式下 /xxx 就可以找到xxx
(2)快速切换行 :
在命令模式下输入 : 行号 就可以跳到输入的行号(譬如:1000 就切换到1000行)
(3) 设置显示行号 :
在命令模式下输入 :set nu 就可以显示行号
(4) 设置不显示行号
在命令模式下输入 :set nonu 就不显示行号
(5) 设置永久显示行号 (需要修改vi配置文件)
打开vi配置文件~/.vimrc,在其中输入set nu即可
vi ~/.vimrc 进入配置文件 输入set nu 保存退出即可
1.10 linux命令行中一些符号的含义
. 代表当前目录
.. 代表上层目录 当前目录的父目录
- 代表前一个楼层 我刚才从哪个目录过来的
~ 当前用户的宿主目录
/ 代表根目录
$ 普通用户的命令行提示符
# root用户的命令行提示符
* 万能匹配符
宿主目录: 所谓宿主目录,就是操作系统为当前用户所设计的用来存放文件、工作的默认目录 。如windows中“我的文档目录” 就是windows设置的宿主目录
在linux中每个用户都有自己的宿主目录,这个用户对普通用户来说,在/home/username/,而对于root用户来说在/root
1.11 :vi高级应用:行删除、行复制、行粘贴
(1) 行删除:进入命令模式,光标移动到要删除的行,然后输入dd
删除多行? 进入命令模式,光标移动到要删除的多行的起始行,输入xdd (x是几就会删除多少行)
(2) 行复制 :命令模式下,xyy (x是几就复制几行)
(3) 行粘贴 :命令模式下,p
复制要把光标放在要复制的第一行
粘贴会粘贴到光标所在的下一行
1.12 : linux特权管理 :普通用户和特权用户 su命令切换用户
windows中有普通用户和特权用户 ,特权用户是Administrator administrator ,普通用户可以有多个。
特权用户是系统的管理员,对系统内所有文件具有操作权限。每个普通用户只能处理自己的文件 ,不能访问其他用户的文件,更不能随意处理操作系统的文件。
linux中也有普通用户和特权用户的区别。特权用户就是root,普通用户权限受到限制,普通用户不能cd /root/,不能apt -get listall 来装软件。
可以使用su 用户名来在不同用户间切换。
譬如从普通用户切换到root: 可以su root,然后输入root的密码即可转入root用户。
从root切换到普通用户: 则su 普通用户名即可。
1.13 : rwx与linux中权限表示
属主为u 属主所在的组用户为g 其他用户为o
ls -l显示详细信息 :
drwxr-xr-x 十个字符,第一个表示文件类型(属性)。剩下的九个分成三组,表示文件权限
如果是字母表示有权限,如果是-表示没有权限
前三个表示此文件的属主对文件的权限
中间三个表示此文件属主所在的组的用户对文件的权限
最后三个表示其他用户对文件的权限
rwx怎么解析? r代表可读 w代表可写 x代表可执行
rwx : 可读,可写,可执行
r-x : 可读,不可写,可执行
r-- : 可读,不可写,不可执行
--- : 不可读,不可写,不可执行
权限还有另一种表示方式,用数字来表示,编码规则如下:
r 可读 4
w 可写 2
x 可执行 1
- 无权限 0
有了这个编码规则,则 drwxr-xr-x 编码后为 755
1.14 : ununtu中使用sudo暂时获取root权限
这是ubuntu中的一个特点,不用切换用户就可以暂时获取root用户权限,而不必进行用户切换
譬如在普通用户下要在线安装vim :
sudo apt-get install vim 然后输入用户密码就可以暂时获取用户特权并且进行在线安装vim
二 : linux 常用命令
1 : ls (list,列表)
作用:使用列表把当前文件夹下所有文件显示出来
ls -a 显示所有文件,包括隐藏文件
ls -l 以详细信息显示
ls -al 以详细的方式显示所有文件(ls -la 、 ls -l -a 、 ls -a -l都可以)
2 : cd (change directory,更改目录)
作用:用来切换目录
涉及到相对路径
cd . 当前目录
cd .. 上一层目录
cd ../../ 上上一层目录
cd ../../../../ ...... 直到根目录停止
3 : pwd (printf work directory ,打印工作目录)
作用:打印出当前的绝对路径
4 : mkdir (make directory,创建文件夹)
mkdir 文件夹名
作用:创建空文件夹
mkdir -p 已经存在文件夹名/新文件夹名 (级联 创建文件夹)
5 : mv (move ,移动)
作用:在目录间移动文件,重命名文件
mv 源文件pathname 目的文件pathname
简单示例如下:
/hme/tu/shi_li/ab 是一个绝对路径
而我们当前是处在 /hme/tu/shi_li/ab 这个路径中的 ab 这个文件夹下
通过ls查看可以看到有一个ab.txt的文件 那么现在要把ab.txt这个文件放到shi_li 这个文件夹(目录)中
要到shi_li 这个目录下首先得回到shi_li 目录这个路径 因为ab是shi_li这个文件夹的子文件夹shi_li里面有ab,而ab里面没有shi_li。所以先cd ..返回上层目录,然后再
mv ab/ab.txt ./ab.txt (其实./后面的ab.txt的名字是可以重命名的但是这里为了直观显示不更改名字) 回车后通过ls 查询 看到shi_li 本来是只有ab abc 两个子文件夹 通过刚刚的命令把ab.txt移动到了shi_li 这
为了验证是把ab.txt移动过来 通过 cd ab 到ab目录下 然后ls查看可以看到确实之前ab里的ab.txt不见了,证明确实是通过mv 移动到了shi_li这个目录下
然后可以再把ab.txt 这个文件放到shi_li的子文件夹abc中
首先先退回到shi_li目录中 cd ..
然后mv ab.txt ./abc ab.txt 是文件名 而abcab.txt放入的目标文件夹 回车
通过ls查看shi_li目录下ab.txt不见了,cd abc 进入abc子文件夹
la查询,确实看到了ab.txt
注:其实这里有个错误,其实我们再把ab这个目录中的ab.txt给移动到shi_li中时,不需要先cd ..返回上一层只需要 mv ab.txt ../ab.txt (因为上面我们说过cd ..是返回上层而这里../ab.txt 的意思是我们把这个文件移动到上一层目录中去名字是ab.txt)
6 : touch (创建文件)
touch pataname
7 : cp (cope .复制)
作用:复制文件或文件夹
cp 源文件pathname 目标文件pathname
cp -r 用来复制文件夹
cp -f 强制复制
实际操作时,一般都是cp -f 复制文件,cp -rf复制文件夹
8 : rm (remove ,去除,删除)
作用:用来删除文件、文件夹
rm 文件pathname
rm -f 文件pathname 强制删除文件
rm -r文件夹pathname
rm -rf 文件夹pathname 强制删除文件夹
注:当打开文件进行编辑时,是把文件的内容复制一份到内存中,也就是说没有
接下来对文件进行编译操作的不是硬盘里面的而是复制到内存的那一份,然后编辑完后选择保存(将内存里的这份覆盖硬盘里的那份)或者不保存(内存这份不用直接丢弃)。在打开文件进行编辑时,如果在另外一个窗口删初打开的那个文件时不会报错并且会删除文件(但是删除的仅仅只是硬盘里的)使用ls查看当前文件夹的文件发现文件确实已经不存在,但是如果前一个打开文件编辑的窗口的文件(内存的那一份)进行保存的话,那么这份正在编辑的文件(内存的那份)就会重新出现在当前目录下面,用ls命令查看的话是可以查看的到的(重新保存出现在了硬盘里)。
9 : cat 查看文件内容
作用:直接在命令行下查看文件内容
cat 文件名
10 :rmdir 删除空文件夹
作用:删除空文件夹 (文件夹内有子文件夹就不能删除文件夹)
rmdir 文件夹pathname
rmdir 和 rm -r的区别 mkdir只能删除空文件夹,而rm -r可以删除空文件夹和非空文件夹
11 : ln (link,连接文件)
基础:windows中的快捷方式,实际上快捷方式和它指向的文件是两个独立的文件,两个文件都占硬盘空间,只不过访问快捷方式时,其效果等同于访问指向的文件
linux中有两种连接文件:
一种叫软连接(符号连接),等同于windows中快捷方式(但是本质上和它还是有区别只是效果一样)
一种叫硬连接
创建软连接文件:
ln -s 源文件名软连接文件名
举例: ln -s a.c linker.c linker.c 就是a.c的符号连接文件
软连接是一个单独的文件,但是里面是它连接文件的索引,软连接删除源文件后,软连接文件还在但是已经没有用了,因为它索引的那个文件已经不在了,无法访问,如果用户访问命令行会放回错误。
硬连接:
ln 源文件名 连接文件名
硬连接实际上和源文件在硬盘中是同一个东西,效果类似于硬盘上的一个文件,在文件系统上,在我们看来有好多个文件一样。每次删除一个文件时,只要还要其他的硬连接存在,那么这个文件就不会被真正删除。只有等所有的连接文件都删除掉了,这个文件才会真正的从硬盘上删除。
12 man 查询信息
作用:查询man手册,获得帮助信息
man 1 ls (表示查看linux命令)
man 2 xxx (表示查看linux API)
man 2 xxx (表示查看c库函数)
13 apt-get 在线安装卸载软件
作用:在ubuntu中用来在线安装、卸载软件的程序
apt-get install vim 在线安装vim编辑器
apt -get remove vim 在线卸载vim编辑器
注:安装和卸载都是在线的,那么就是说用户的ubuntu要能上网才能使用apt-get
说明:apt-get安装软件的原理必要性
linux操作系统的发行版,内核版本,定制性,造成了linux中软件的不兼容性。在linux中安装软件是一件困难的事情,装了软件能不能用是不一定的ubuntu解决了这个问题,ununtu就适合某个发行版的所有软件做了一个列表,然后用户通过apt-get install的方式安装软件,就会实时的连接到ubuntu服务器,服务器会根据你的ubuntu版本,给你下载适合版本的软件来安装。这样确保了软件的兼容性。
三 : linux高阶命令
1 : find 查找文件地址
作用:在linux文件系统中,查找一个文件放在哪里了
find 路径 -name "文件名"
譬如:在/home/tu/a/ab 路径下有个ab.c的文件,但是由于时间太久忘记了具体路径在哪只记得文件名
那么就可以用find ./a/ -name "ab.c" 来查询文件的路径来找到文件
2 : grep 在文本文件中查找词
作用:在文本文件中查找某个符号(单词)
举例:grep -nr “ab” * 在当前目录下所有文件下查找“ab”并且显示哪个文件哪行 “ab” 要查找的符号
注: -n 表示查找结果中显示行号 -r表示递归查找
3 : which 和 whereis 查找应用程序的路径
作用:查找一个应用程序(二进制文件)在哪里
举例: which ls 或 whereis ls
区别:
which只显示二进制文件的路径
whereis显示二进制文件的路径,和其源码和man手册的位置
4 : uname 查看系统信息
作用:在命令行下显示系统信息
uname 显示当前系统为linux
uname -a 显示详细信息
uname -r 显示内核版本
uname -n 网络节点名
5 : shutdown -h now 立即关机
作用:在命令行输入后回车会立即关机
6 : init 0 关机
作用: 关机
7 : shutdown -r now 重启
8 : reboot 重启
9 : tree 显示文件和目录
作用:以树形结构从当前目录开始显示目录和文件
10 : mount 挂载磁盘到文件系统
作用:用来挂载磁盘到文件系统中
举例:mount -t nfs -o nolock 192.168.1.141:/root/rootfs /mnt
192.168.1.141:/root/rootfs 服务器目录
/mnt 当前本地目录
将服务器目录挂载到当前本地目录,cd访问 当前本地目录服务器目录里有什么,本地目录也有
11 : umount 卸载挂载的磁盘
作用:用来卸载挂载到磁盘的文件系统
举例: umount /mnt 卸载
12 : df -h 显示已挂载的分区列表
13 : du -f 列出文件或者文件夹的大小
作用:列出文件有多大,列出的方式是以人好看懂的方式,不像ls -l都是以字节为单位。
举例 :du -f 文件pathname
14 : useradd 添加用户
举例:useradd 用户名
作用 :添加一个用户,譬如useradd user1,就是添加一个名为user1的用户
15 : userdel 删除用户
举例:userdel 用户名
作用 : 删除一个用户,譬如userdel user1,就是删除一个名为user1的用户
16 : passwd 给用户设置密码
举例: passwd 用户名
作用 : 给用户设置密码
17 : chmod 更改文件权限
属主为u 属主所在的组用户为g 其他用户为o
第一种:
举例 : 譬如 drwxr-xr-x 文件编码权限为755,但是要更改文件权限为rwxr--r--
则修改命令为 chmod 744 文件名
第二种 :
举例 :
属主所在的组权限添加可写权限:chmod u+w 文件名
其他用户添加可读权限 : chmod o+r 文件名
属主添加可执行权限 : chmod u+x 文件名
属主去除可执行权限 : chmod u-x 文件名
总结 : 修改权限其实都是类似的 都是 chmod u+x 文件名(u是属主、也可以是g属主所在组的用户,还可以是o其他用户,不光可以添加也可以去除,将+ 变成 - 即可),主要是要搞清楚要修改的是哪个用户对此文件的权限,是属主就用u,属主在的组就用g,其他用户就用o。如果是删除就是-而不是+。最后加上要修改文件的文件名即可。
18 : chown (修改文件属主)
chown 用户名 文件名
19 : chgrp (修改文件所在的组)
chgrp 组名 文件名
20 : 文件打包压缩与解压缩
tar -czvf dir.tar.gz dir/ 将dir目录打包成dir.tar.gz
tar -cjvf dir.tar.bz2 dir/ 将目录敌人打包成dir.tar.bz2
tar -zxvf dir.tar.gz 解压缩dir.tar.gz
tar -jxvf dir.tar.bz2 解压缩dir.tar.bz2
21 : 网络配置命令
ifconfig eth0 192.168.1.13 设置1P地址
ifconfig eth0 up 启动网卡
ifconfig eth0 down 禁用网卡
ifup eth0 启动网卡
ifdown eth0 禁用网卡
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 同时设置IP和子网掩码
22 : 格式化文件系统
mkfs /dex/hd1
mkfs -t yfat 32 -F /dey/hd1 创建一个FAT32文件系统
四: 补充基础知识:
1:ls -l 显示的详细信息中:
-rw-r--r--
drwxr-xr-x
lrwxrwxrwx
一共十个字符,第一个字符表示文件类型,后面九个字符表示文件权限。
文件类型:
- 表示普通文件。 普通文件指文本文件和二进制文件。 如:a.c、a.txt、a.out都是普通文件
d 表示文件夹(目录) d是directory的缩写
l 表示符号连接文件(硬连接是普通文件) 后面会用->打印出它指向的文件
s 表示socket文件
p 表示管道文件 pipe