Linux基础命令

一、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指定的文件夹中去
  • 22
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值