一、linux系统(ubuntu)中软件的安装(APT)
1、通过安装包(deb包)安装 :sudo dpkg -i xxx.deb
2、通过软件的源代码安装
a.下载源代码到本地(源码包),解压(tar)
b.进入源码包目录
sudo ./configure //检测本地的环境信息,是否能够编译
//生成一个Makefile文件(指导编译器编译源代码)
//使用make工具编译源代码
make
//安装编译好的软件(把对应的文件放到对应的目录)
sudo make install
3、APT(Advanced Packaging Tool)
增强的软件包管理工具
ubuntu系统中功能最强大的命令行软件包管理工具,用于获取,安装,编译,卸载,查询软件。APT在ubuntu下的角色,就相当于windows中的"360软件管家"
工作原理:
有一个文件,保存了软件镜像服务器的地址
/etc/apt/sources.list
修改源:
查找你ubuntu对应版本的软件源服务器的地址列表
然后再把 /etc/apt/sources.list的内容替换掉
几个常用的安装软件的命令: 下面的这几个命令需要联网
sudo apt-get update 下载更新软件包列表的信息!!!
如果只指定软件源服务器的地址,那我怎么知道,服务器上 有哪些软件呢?可以通过 apt-get update 这个命令把 服务器上面的最新的软件包列表信息下载到本地。
sudo apt-get install 要安装的软件包的名字
sudo apt-get remove 要xie载的软件包的名字
sudo apt-cache search 根据正则表达式检索软件包
sudo apt-get clean 删除缓存区所有已经下载的包文件
二、vi/vim
1、介绍:
vi/vim是linux最基本、最常用、功能最强大的命令行编辑器。 “编辑软件” 编辑器? 编辑软件,如: notepad++,记事本,source insight ,....
编辑软件分两类:
图形界面的编辑软件:
notepad++
gedit
...
命令行的编辑软件
vi/vim <------
在没有图形系统的linux(如:嵌入式linux)下面做编辑工作,只能用vi/vim.
vim是vi的一个升级版本。
2、vi有两个工作模式:
命令模式
键盘所有的输入字符都当作是一个命令去解析。
输入模式(insert) 键盘所有的输入字符都当作是文本的内容。
两种模式之间的切换
命令模式 <----> 输入模式
命令模式 ----> 输入模式 i/I : Insert i: 进入输入模式后,光标不动 I: 进入输入模式后,光标移动到行首 a/A : append a: 进入输入模式后,光标往后移动一个字符 A: 进入输入模式后,光标移动到行末 o/O: open(开路) 进入输入模式后,会新开一行 o: 在光标下面,新开一行 O: 在光标上面,新开一行 输入模式 ----> 命令模式 ESC
3、常用的vi/vim的命令(必须在“命令模式")
3.1 vi 退出命令 :q quit 不保存退出 ,适合文件内容没有修改的情况。 :q! quit 不保存退出 ,强制退出 :w write 保存文件(但不退出) "保存": 保存到当前文件 :w filename 把内容保存到 filename 指定的文件中去 "另存为" :wq write and quit 保存文件并退出 :x <=> :wq 保存并退出
3.2 vi删除与修改命令 x 删除光标所在的字符 dd delete 删除光标所在行 ndd n代表一个数字 删除光标及以下n行 dd/ndd是”剪切“:把删除的内容,剪切到 剪贴板中去。 r replace 替换光标所在的字符 r + 替换的单个字符 R Replace 替换光标及后面的多个字符,到底是 多少个字符呢?看您心情(直到您按ESC退出替换为止)
3.3 vi拷贝与粘贴命令 ndd/dd 剪切 yy 当前行的内容拷贝到剪贴板上去 nyy 拷贝光标及以下n行的内容到剪贴板上去 p print 是将剪贴板中的内容粘贴到光标所在行的前面 P print 是将剪贴板中的内容粘贴到光标所在行的后面
3.4 vi撤销命令 u/U undo 撤销命令
3.5 vi搜索命令 /要搜索的内容 如: /main,它的意识就是在当前文件中搜索字符串“main” n next 找下一个匹配的内容 N Next 指向搜索下一个匹配的内容
3.6 vi 替换命令 s substitude 替换 :{作用范围}s/{目标}/{替换内容}/{替换标志} 例子: :s/a/b/g 把当前行所有的a都替换为b 作用范围 当前行 作用范围不写就表示当前行替换 全文 % 选区 5,12 5-12行 .,+2 当前行及接下来的两行 替换标志 g global全局替换(即所有出现的目标都替换) i ignore 忽略大小写
3.7 vi显示行号 :set nu
3.8 vim的配置文件 .vimrc 隐藏文件 ~/.vimrc 放到家目录中就生效。
三、linux帮助手册
说明:linux是一个面向开发者的系统,提供了很多帮助手册,命令、函数的说明文档
man manual 手册 linux自带非常多的开发手册,而且给不同的内容分了类 1. 2. 3. ... 如果,你在linux中有一个函数或者命令不知道使用,你就可以把它的说明手册调出来查看 man 手册页(1,2,3,4....,也可以省略) 函数名/命令名 一个名字可能存在于多个手册页
查看名字在哪些手册页中存在 man -f 名字
例子: man -f open man 1 open man 2 open
打开所有关于open词条的说明 man -a open
sudo:使用超级权限(管理员权限)执行后面的命令 sudo + 命令 如果不加sudo就是以当前的用户去执行这条命令
命令自动补全:linux的命令行是“智能的”,可以自动补全 tab键 例子: typ + tab键 终端会把所有以typ开头的命令或者选项都列举出来 历史命令:终端会自动保存已经执行过的历史命令 使用方向键的上下调出 原理:保存带家目录中的一个文件 ~/.bash_history
四、基本的系统维护命令
shutdown 关机 sudo shutdown -h now 立即关机 reboot 重启 poweroff 关机 clear 清屏,把终端清理一下
切换用户: su username 切换到username用户 username省略,su root 切换到超级用户
第一次进入root用户,是没有密码的 sudo -s 切换到root权限(用户) 可以设置root密码
passwd 修改当前用户的密码 exit 退出当前用户(如果当前用户是最后一个终端用户,那么终端也会退出)
五、用户管理
有一个文件,/etc/passwd 保存了系统上每一个用户的信息 每一行都表示一个用户:
gec:x:1000:1000:Ubuntu14.04LTS,,,:/home/gec:/bin/bash
信息使用:分隔 用户名:口令(密码):用户ID(UID):组ID(GID):描述信息:用户的家目录:登录shell
UID:User ID 系统为每一个用户创建一个数字,来标识这个用户 GID:Group ID 对每一个用户分组,每一个用户都属于一个组,GID是组长的ID 用户的家目录:Home目录,系统会给每一个用户分配一个家目录,用户在家目录中,有绝对的权限,你想干什么就干什么,在这个目录之外,就不一定了。 如:gec用户 家目录:/home/gec
登录shell:壳,命令解析器.本身也是一个程序 这个程序有很多人实现了,有不同的shell 用户和操作系统核心之间的桥梁 用户--->shell--->OS <--- <--- /etc/group 用户组信息 类型于 /etc/passwd 保存了每一个用户组的信息
gec:x:1000:
组名:口令:GID(组长的UID):成员列表 命令: adduser + 要创建的用户 userdel + 要删除的用户 addgroup + 要创建的用户组 groupdel + 要删除的用户组
六、进程管理
进程:正在运行的程序,我们称之为进程。process ps:process status 进程状态 查看当前系统中进程的信息
ps -ef 查看系统中当前运行的程序的详细信息(快照)
UID PID PPID C STIME TTY TIME CMD root 1 0 0 08:47 ? 00:00:08 /sbin/init 用户 用户ID 父进程号 时间 程序名称
pstree 查看进程树
top 查看系统中进程的动态信息(任务管理器),查看cpu占用率和内存占用率。
kill 命令可以杀死进程(发信号) sudo killall 进程名 sudo kill -9 进程号
ctrl + c 本质也是产生一个信号。
七、linux文件系统相关的命令
1.文件系统的概念和原理 当你需要把一个文件的数据,存储到一个物理介质上面的时候,就需要一些组织和管理数据的方法规则,这些规则叫做文件系统的格式. 文件系统:组织和管理文件的系统 去存储文件的时候,必须按照一定的格式存储,这些规则叫做文件系统的格式. 文件系统格式:组织和管理文件的方法和规则。 EXT4 第四代扩展文件系统 EXT3 FAT NTFS .... 不同的文件系统格式对文件的管理和组织的方式不一样 但是几乎所有的文件系统,都会把文件分为两个部分: 文件属性:唯一标识文件的存在(i-node,i节点) 文件类型,文件名,作者,时间... 在实现的时候,inode: struct inode { char type;//文件的类型 char name[256];//名字 .... }; 不同的文件系统类型,inode的内容和成员布局都不一样 文件内容:用户本身的数据 一个文件可以没有内容,只要存在,就一定有文件属性。
2.linux文件系统对文件的组织方式 树状结构 / 根目录 在linux中把所有的文件(文件,目录)以一棵树的形式存储 文件名: 普通文件:由一些特定的允许的字符串组成 文件的属性:类型,时间... 文件的内容 目录文件:由一些特定的允许的字符串+‘/’组成 文件的属性 文件的内容:目录项 linux为了方便,在每一个目录下,默认提供两个子目录: ./ 当前目录 ./a.out ../ 当前目录的上一层目录 linux文件的路径名: 相对路径:不以根目录“/”开始的路径 相对当前所在的目录的路径 绝对路径:以根目录“/”开始的路径 “绝对正确,绝对存在的” 例子: 我当前在 /home/gec 目录下,有一个3.txt 访问3.txt 相对路径 3.txt 绝对路径 /home/gec/3.txt
3.文件操作相关的命令 cd change directory 改变目录,切换目录 用法: cd 要切换到的目录名 (可以是相对路径,也可以是绝对路径) cd 不加任何东西,默认切换到用户的家目录 pwd:显示当前目录的绝对路径 ls list 列举一个目录下面所有的文件名 ls [options] 目录名 -->列举指定目录名下面所有的文件 ls [options] 不加目录名,默认列举当前目录的文件 options: -a :all 所有,把指定目录下面所有的文件名都列举出来,包括隐藏文件(linux下面,以.开头的都任务是隐藏文件) -l:把文件的详细信息列举出来 如: ls -al ls -a -l ls -l总用量 1 -rwxrwxrwx 1 root root 7260 Mar 17 10:58 1 -rwxrwxrwx 1 root root 64 Mar 17 10:58 1.c chmod :change mode 改变文件权限 用法: chmod u/g/o/a +-rwx filename u:user 所有者用户 g:group 组用户权限 o:other 其他用户 a:all 所有用户 +:增加权限 -:删除权限 例子: chmod u+w file 给file文件的所有者加上一个可写的权限 chmod a+rw file 给file所有用户加上一个可读可写的权限 chmod ug+x file 给file文件的所有者和组用户加上一个可执行的权限 权限位: rwxrwxrwx 相应的位有权限:r/w/x 没有权限:- 计算机内部使用数字表示(3个二进制位表示一组) ===> r-- 100 rwx 111 rw-r--r-- 110100100 ===> chmod 644 file chmod 777 file ===> 把文件的权限设置为rwxrwxrwx 有时候我们不仅需要修改文件的权限,还需要修改一个文件的所有者 chown change owner 改变所有者 chown [-R] 新所有者:新组 filename -R:如果filename是一个目录,-R把该目录下面所有的文件以及子目录....。都修改其所有者 sudo chown root:root hello.c cp: copy 拷贝文件或者目录 cp [options] SOURCE(源文件) DEST(目标文件) 把SOURCE复制为DEST 源文件和目标文件可以是普通文件,也可以是目录 SOURCE DEST 目录1 目录2 把目录1的所有内容拷贝到目录2下面去 文件1 目录2 把文件1拷贝到目录2下面去 文件1 文件2 把文件1的所有内容拷贝到文件2中去, 文件2中原来的内容就没有了,如果文件 2不存在,则先创建 目录1 文件2 ERROR options: -r recursive 递归的, 如果SOURCE是一个目录,则必须要加-r -f force 非交互式拷贝 mv :move 移动(修改文件名) mv SOURCE(源文件) DEST(目标文件) 源文件和目标文件可以是普通文件,也可以是目录 SOURCE DEST 目录1 目录2 把目录1的所有内容移动到目录2下面去 如果目录1的路径等于目录2的路径并且目录2不存在 则是把目录1的名字修改为目录2 文件1 目录2 把文件1移动到目录2下面去 文件1 文件2 重命名 目录1 文件2 ERROR touch touch + 文件名 创建一个普通文件 mkdir mkdir + 目录名 创建一个空目录 rmdir 删除一个空目录 rm 删除文件或者目录 rm [options] DEST DEST是要删除的文件或者目录 options: -r recursive 递归的, 如果DEST是一个非空目录,则必须要加-r -f force 非交互式拷贝
八、链接文件
备注:各位读者验证的时候,请不要在你设置的linux与windows共享文件夹中验证,windows不支持链接文件
硬链接 ln target link_name 给target创建一个名字叫做link_name的硬链接 一般情况下,文件名和inode号码是一一对应的,每一个inode号码对应一个文件名,但是在linux/unix下面,允许多个文件名指向同一个inode号码,这就意味着,可以使用不同的文件名访问同样的内容,对文件内容的修改,会影响到所有文件名.删除一个文件名,不影响另一个文件名的访问,这种情况,我们称之为“硬连接” ln 源文件 链接文件 源文件和链接文件的inode号码相同,指向同一个inode,inode中有一个东西叫做“链接数”,记录着指向该inode的文件名总数,增加一个文件名指向inode,“链接数就会+1”,删除一个文件名,就会-1,当链接数为0的 时候系统就会回收这个inode,表示文件被删除。
软链接(softlink 符号链接) 相当于windows中的快捷方式 ln -s 源文件 链接文件 除了硬链接,还有一种特殊情况 ln -s B A A和B的inode节点号码虽然不一样,但是文件A和文件B的内容一样。 A的内容其实是B的路径名字,读取文件A时,自动导向到B,所有无论打开马一个文件,最终读取的内容都是B的内容,链接文件的目标文件如果不存在,则链接文件就会失效。
九、文件的压缩和归档
归档:将一组文件或者目录保存在一个文件中 压缩:将一组文件或者目录压缩成一个文件 tar [options] tarfile filelist tarfile:指定归档/压缩产生的文件的名字 filelist:你需要归档或者压缩的文件列表 解压缩的时候不需要 options: -c create 创建一个归档文件(打包) -x extract 释放一个归档文件(解包) -v 显示归档或者释放时的详细信息 -f 指定归档/压缩产生的文件的名字 -j 由tar生成归档,调用bzip2算法压缩 -z 由tar生成归档,调用gzip算法压缩 例子: 生成归档文件 tar -cvf xxx.tar 1.c 2.c 3.c .. 把1.c 2.c ...归档成一个xxx.tar的文件 释放一个归档文件 tar -xvf xxx.tar 把xxx.tar释放到当前文件夹 压缩: tar -jcvf xxx.tar.bz2 filelist 把filelist指定的文件列表使用bzip2算法压缩到文件xxx.tar.bz2中去 tar -zcvf xxx.tar.gz filelist 把filelist指定的文件列表使用gzip算法压缩到文件xxx.tar.gz中去 解压缩: tar -jxvf xxx.tar.bz2 把文件xxx.tar.bz2解压到当前文件夹 tar -zxvf xxx.tar.gz 把文件xxx.tar.gz解压到当前文件夹 tar -jxvf xxx.tar.bz2 -C dir 把文件xxx.tar.bz2解压到dir指定的文件夹中去