ubuntu系统

Ubuntu的常用操作命令

1、目录信息查看命令ls
ls -a 显示目录所有文件及文件夹,包括隐藏文件,比如以.开头的
2、目录切换命令cd
3、当前路径显示命令pwd
4、系统信息查看命令uname
5、清理屏幕命令clear
6、显示文件内容命令cat
7、切换用户身份命令sudo
8、文件拷贝命令cp
9、切换用户命令su
10、移动文件命令mv
11、创建文件夹命令mkdir
12、创建文件命令touch
13、删除命令rm
14、目录删除命令rmdir
15、显示网络配置信息命令ifconfig
16、重启命令reboot
17、关机命令poweroff
18、系统帮助命令man
19、数据同步写入磁盘命令sync
20、查找文件命令find
21、查找内容命令grep
22、文件夹大小查看命令du
23、磁盘空间检查命令df
24、使用gedit打开某个文件命令gedit
25、当前的系统进程查看命令ps
26、进程实时运行状态查看命令top
27、文件类型查看命令file

Ubuntu安装软件

通过APP Store安装

使用工具安装软件,需要sudo,也就是root权限。

使用APT工具安装

使用apt包管理工具,apt可以自动下载,配置,安装。

deb软件包安装

使用dpkg命令安装deb软件包,命令如下:

sudo dpkg -i xxxx.deb

在windows下,我们安装的是.exe文件,在Ubuntu就有一个.deb。

自己下载程序源码编译安装

Make
Make install

其他安装方法

QT扩展名是.run

文件系统结构

根目录 /

Linux下“/”就是根目录!所有的目录都是由根目录衍生出来的。

文件系统结构

/bin 存放二进制可执行文件,这些命令在单用户模式下也能够使用。可以被root和一般的账号使用。
/boot Ubuntu内核和启动文件,比如vmlinuz-xxx。gurb引导装载程序。
/dev 设备驱动文件
/etc 存放一些系统配置文件,比如用户账号和密码文件,各种服务的起始地址。
/home 系统默认的用户主文件夹,一般创建用户账户的时候,默认的用户主文件夹都会放到此目录下。
/lib 存放库文件
/media 此目录下放置可插拔设备,比如SD卡,或者U盘就是挂载到这个目录中。
/mnt 用户可使用的挂载点,如果要挂载一些额外的设备,那么就可以挂载到此处。
/opt 可选的文件和程序存放目录,给第三方软件放置的目录。
/root root用户目录,也就是系统管理员目录。
/sbin 和/bin类似,也是存放一些二进制可执行文件。sbin下面的一般是系统开机过程中所需要的命令。
/srv 服务相关目录。比如网络服务。
/sys 记录内核信息,虚拟文件系统。
/tmp 临时目录
/var 存放一些变化的文件,比如日志文件
/usr usr不是user的缩写,而是UNIX Software Resource的缩写,存放于系统用户有关的文件,会占用很大的存储空间!
/proc 虚拟文件系统,数据放置到内存中,存放系统运行信息

绝对路径和相对路径

绝对路径:从根目录“/”算起的路径。
相对路径:相对于目前路径的文件名写法,比如./home/zzk。不是以“/”开头的就行。
.代表当前路径,也可以 用./表示
..代表上一层目录,也可以用../表示

磁盘管理

磁盘文件

/dev/sd*文件,此类文件是磁盘设备文件,并不能直接访问磁盘,必须要将磁盘挂载到某一个目录下才可以访问。
/dev/sdb和/dev/sdb1是U盘的设备文件。
/dev/sdb表示U盘,/dev/sdb1表示U盘的第一个分区。
磁盘和目录的容量查询命令
df:列出文件系统的整体磁盘使用量。主要查看个文件系统的使用量,
du:评估文件系统的磁盘使用量,主要查看单个文件的大小。

磁盘挂载与卸载,分区和格式化

磁盘的挂载和卸载

mountumount命令

磁盘分区

fdisk命令

磁盘格式化

磁盘分区创建好以后就可以格式化磁盘,使用命令mkfs。如:

mkfs -t vfat /dev/sdx

压缩与解压缩

Linux下常用的压缩格式

Linux下常用的压缩扩展名有:.tar、.tar.bz2、.tar.gz。

Windows下7ZIP软件的安装

因为Linux下很多文件是.bz2,.gz结尾的压缩文件,因此需要在windows下安装7ZIP软件。

gzip压缩工具

.gzip工具负责压缩和解压缩.gz格式的压缩包。

gzip xxx			#压缩
gzip -d xxx.gz	#解压缩

gzip对文件夹进行压缩

gzip -r xxx		#对文件夹进行压缩
gzip -rd xxx.gz	#对文件夹进行解压缩

gzip虽然可以对文件夹进行压缩,但是并不能提供打包的服务,只是对文件夹中的所有文件进行了单独的压缩。

bzip2压缩工具

和gzip类似,只是bzip2工具负责压缩和解压缩.bz2格式的压缩包。

bzip2 -z xxx			#压缩
bzip2 -d xxx.gz	        #解压缩

tar打包工具

tar工具参数:
-f,使用归档文件或 ARCHIVE 设备
-c:创建新归档,创建压缩文件
-x:从图档中解出文件,解压缩
-j:使用bzip2压缩格式。
-z:使用gzip压缩格式
-v:打印出命令执行过程。
tar工具提供打包服务,就是将多个文件打包,比如

tar -vcf test.tar test	#将test打包成test.tar
tar -vxf test.tar		#解包

上面的tar命令只提供了打包和解包的功能,tar在提供打包和解包的同时使用gzip/bzip2进行压缩,实现类似windwos下winRAR软件的命令。

对tar.bz2进行压缩和解压缩

tar -vxjf xxx.tar.bz2	#解压缩
tar -vcjf xxx.tar.bz2 xxx #压缩

对.tar.gz进行压缩和解压缩

tar -vxzf	xxx.tar.gz		#解压缩
tar -vczf xxx.tar.gz xxx 	#压缩 

.rar格式

需要先安装rar:sudo apt-get install rar

rar x xxx.rar		#解压缩
rar a xxx.rar xxx	#压缩

.zip格式

zip格式压缩使用“zip“命令:

zip -rv xxx.zip xxx

zip格式解压缩使用“unzip”命令:

unzip -v xxx.zip

用户和用户组

用户

Linux是一个多用户操作系统,不同的用户拥有不同的权限。可以查看和操作不同的文件。 Ubuntu有三种用户:

  • 初次创建的用户。
  • root用户。
  • 普通用户。
初次创建的用户权限比普通用户多,但是没有root用户多,初次创建的用户可以创建普通用户。 Linux用户记录在/etc/passwd这个文件内。 Linux用户密码记录在/etc/shadow这个文件内。 每个用户都有一个ID,叫做UID。 ## 用户组 为了方便管理,将用户进行分组。这样就可以设置非本组人员不能访问某些文件。每个用户可以属于多个不同的组。

用户:家里有你、弟弟、妹妹个人,每个人都有自己的房间,你们三个人都是用户,你们都不能随便的乱翻别人的房间。
用户组:你们三个都是一个家庭的,也就是属于同一个用户组,你们三个可以共用厨房,书房等空间。

因此:

用户和用户组的存在就是为了控制文件的访问权限的。
每个用户组都有一个ID,叫做GID。
用户组信息存储在/etc/group文件中。

创建用户和用户组

图形化界面创建

要使用图形化界面创建用户和用户组的话就需要安装gnome-system-tools这个工具:

sudo apt-get install gnome-system-tools

命令创建用户和用户组

添加用户:adduser命令,adduser 用户名
用户查询:finger命令,finger 用户名
修改用户密码:passwd命令,passwd 用户名
删除用户:deluser命令,deluser 用户名

添加用户组:addgroup命令,addgroup 用户组名
显示组内用户名:groups命令,groups 用户组名
删除用户组:delgroup命令,delgroup用户组名

权限管理

权限介绍

文件权限是指不同的用户或用户组对某个文件拥有的权限,文件的权限分为三种:
r:读
w:写
x:可执行。
ls -l
-rw-rw-r— 就是文件权限,第一位表示文件类型,剩下的每三位表示一组权限。分别对应拥有者权限、拥有者所在组权限、其他用户权限。
可以使用二进制表示文件权限。
r=4
w=2
x=1

文件权限修改

1、修改文件权限命令

chmod命令

2、修改文件所属用户

chown命令

链接文件

Linux连接文件

​ Linux有两种连接文件:符号连接(软连接)和硬链接,符号链接类似Windows下的快捷方式。硬链接通过文件系统的inode连接来产生新文件名,而不是产生新文件。
​ inode:记录文件属性,一个文件一个inode。inode相当于文件ID,查找文件的时候要先找到inode,然后才能读出文件的内容。

ln命令

ln命令用于创建连接文件:
ln [选项] 源文件 目标文件
-s 创建符号链接(软连接)
-f 强制创建连接文件,如果目标存在,那么先删除掉目标文件,然后再建立连接文件。

硬连接

    硬链接是多个文件都指向同一个inode,硬链接知识点:
  1. 具有相同inode的多个文件互为硬链接文件,创建硬链接相当于文件实体多了入口。
  2. 对于硬链接文件,只有删除了源文件以及对应的所有硬连接文件,文件实体才会被删除。
  3. 根据硬链接文件的特点,我们可以通过给文件创建硬连接的方式来防止文件误删除。
  4. 不论修改源文件还是连接文件,另一个文件的数据都会被改变。
  5. 硬连接不能跨文件系统。
  6. 硬连接不能连接到目录。
因为以上这些限制,硬链接其实不常用。 ## 符号连接(软连接)
    符号连接类似Windows下的快捷方式,符号链接也叫做软连接,软连接要用的多。符号连接相当于创建了一个独立的文件,这个文件会让数据读取指向它连接的哪个文件的文件名。软连接的特点:
  1. 可以连接到目录。
  2. 可以跨文件系统。
  3. 删除源文件以后,软连接文件也就“打不开了”。
  4. 符号连接文件通过->来指示具体的连接文件。
  5. 符号连接要使用绝对路径,否则连接出问题。

Vim编辑器

vim编辑器

Linux系统都会自带vi编辑器,但是vi编辑器太难用了!所以建议大家安装vim编辑器,安装命令:

sudo apt-get install vim

vim编辑器三种工作模式

vi xxx 使用vi编辑器打开文件。

一般模式(指令模式):默认模式,用vi打开一个软件以后自动进入到此模式。
编辑模式:一般模式中无法编辑文件,要编辑文件就要进入编辑模式,按下“i、I、a、A、o、O、s、r”等就会进入到编辑模式。一般按下“a”进入编辑模式。按下ESC键可退出编辑模式。
命令行模式(底行模式):先进入到一般模式,然后输入:、/、?这三个中的任意一个就可以进入到命令行模式。
/xxx,表示在文件中查找xxx

保存退出

当文件编辑好以后,输入:wq来保存退出。:q退出,:q!不保存退出,:w保存。

其他操作方式

按下键盘上的上下左右键来控制光标。
一般模式下:
1、dd,删除光标所在行,ndd,删除光标所在行及其下n行。
2、u,撤销,恢复上一步。
3、. ,重复前一个操作。
4、yy,复制光标所在行
5,nyy,复制光标所在向下n行,比如10yy就是复制光标下10行。
6,p和P,p为复制到光标下一行,P复制到光标上一行。

Makefile

当源码文件比较多的时候就不适合通过直接输入gcc命令来编译,这时候就需要一个自动化的编译工具.
make:一般说GNU Make,是一个软件,用于将源代码文件编译为可执行的二进制文件,make工>具主要用于完成自动化编译。make工具编译的时候需要Makefile文件提供编译文件。
Makefile:make工具所使用的文件,Makefile指明了编译规则。

Makefile内容过多,只做简单介绍。

Shell

我们已经能够熟练的在终端中输入命令来完成一些常用的操作,但是我们都是一条一条输入命令。这样会很麻烦,那么有没有一种方式可以将很多条命令放到一个文件里面,然后直接运行这个文件即可?肯定有,这个就是shell脚本!
shell脚本类似windows的批处理文件,shell脚本就是将连续执行的命令写成一个文件。
shell脚本提供数组、循环、条件判断的等功能。shell脚本一般是Linux运维或者系统管理员要掌握的,作为嵌入式开发人员,只需要掌握shell脚本最基础的部分即可。

shell脚本写法

shell脚本是个纯文本文件,命令从上而下,一行一行的开始执行。shell脚本扩展名为.sh。
shell脚本第一行一定要为:
#!/bin/bash
表示使用bash。

shell脚本的语法

交互式脚本

使用read进行与终端输入数据的读取

shell的数值计算

shell仅支持整形,数值计算使用$((表达式))。

test命令

test命令用于查看文件是否存在、权限等信息,可以进行数值,字符,文件三方面的测试。

&&和||命令:
cmd1 && cmd2 当cmd1执行完并且正确,那么cmd2开始执行,如果cmd1执行完毕错误,那么cmd2不执行。
cmd1 || cmd2 当cmd1执行完毕并正确,那么cmd2不执行,反之cmd2执行。

中括号[]判断符

[ ] 中只有==或 !=判断符

默认变量

$0~$n,表示shell脚本的参数,包括shell脚本命令本身,shlle脚本命令本身为$0
$#:#表示最后一个参数的标号。
$@:表$1、$2、$3……

shell脚本逻辑编写

shell脚本条件判断

shell脚本支持条件判断,虽然可以通过&&和||来实现简单的条件判断,但是稍微复杂一点的场景就不适合了。shell脚本提供了if then条件判断语句,

if语句

写法

if  条件判断 ; then
	#判断成立要做的事情
fi
还有if then else 语句,写法
if  条件判断 ; then
	#条件判断成立要做的事情
else
	#条件判断不成立要做的事情。
fi
if  条件判断 ; then
	#条件判断成立要做的事情
elif [条件判断]; then
	#条件判断成立要做的事情
else
	#条件判断不成立要做的事情。
fi

case语句

case $变量 in
“第1个变量内容”)
	程序段
	;;	#表示该程序块 结束!!
“第2个变量内容”)
	程序段;;
“第n个变量内容”)
	程序段
	;;
esac
````

### shell脚本函数
shell脚本也支持函数,函数写法如下:
```bash
function fname () {
	#函数代码段
}

shell循环

shell脚本支持循环

while

while do done,表示当条件成立的时候就一直循环,直到条件不成立。

while [条件] 	#括号内的状态是判断式
do			#循环开始
	#循环代码段
done

还有另外一种until do done,表示条件不成立的时候循环,条件成立以后就不循环了,写法如下:

until [条件]
do
	#循环代码段
done

for

使用for循环可以知道有循环次数,写法

for var in con1 con2 con3……
do
	#循环代码段
done

for循环数值处理,写法:

for((初始值; 限制值; 执行步长))
do
	#循环代码段
done