因为我自己的电脑之前就已经直接安装过双系统了,VMWare我之前也装过,并不困难,如果没有像用ROS这种有时候需要显卡加速的情况,装一个虚拟机就可以学习了。
这里我就不把安装的教程搬下来了,我直接对着文档开始从Ubuntu入门开始做学习笔记。
图的话我都是截的正点原子的开源文档,因为我自己的电脑现在一直是放在家远程,进Ubuntu没法远程,而且大多数文档也是在Windows,搬来搬去太烦了……
Ubuntu系统初体验
Ubuntu终端操作
以上两个都是一些最基础的,修改设置啊什么的,还有类似输入法切换,就不赘述了,没啥太大意思。这里记一下打开命令行:
可以通过鼠标右击,然后点击“打开终端”,然后就会出来一个终端,就可以敲命令行了(也可以直接Ctrl+ Shift + T快捷键打开)。
输入命令,比如输入命令“ ls”,命令 ls”是打印出当前所在目录中所有文件和文件夹,如图:
Shell操作
Shell简介
严格意义上来讲, Shell是一个应用程序,它负责接收用户输入的命令,然后根据命令做出相应的动作, Shell负责将应用层或者用户输入的命令传递给系统内核,由操作系统内核来完成相应的工作,然后将结果反馈给应用层或者用户。
通俗来说,Shell就是在命令行里面敲命令,完成你想要的工作。
Shell基本操作
Shell命令的格式如下:
command -options [argument] |
command: Shell命令名称;
options:选项,同一种命令可能有不同的选项,不同的选项其实现的功能不同;
argument Shell命令是可以带参数的,也可以不带参数运行。
例如:
“ ls”命令用来打印出当前目录下的所有文件和文件夹,而 “ls -l”同样是打印出当前目录下的所有文件和文件夹,但是此命令会列出所有文件和文件夹的详细信息,比如文件大小、拥有者、创建日期等等。最有一个**“ ls /usr”是用来打印出目录 “/usr”下的所有文件和文件夹**。
可以在打出几个字母之后,按下Tab来自动补全完整命令。
常用Shell命令
目录信息查看命令ls
ls [选项] [路径] |
ls命令主要用于显示指定目录下的内容,列出指定目录下包含的所有的文件以及子目录,它的主要参数有:
- -a 显示所有的文件以及子目录,包括以“ “.”开头的隐藏文件;
- -l 显示文件的详细信息,比如文件的形态、权限、所有者、大小等信息;
- -t 将文件按照创建时间排序列出;
- -A 和 -a一样,但是不列出“ “.””(当前目录 )和“ “…””(父目录 );
- -R 递归列出所有文件,包括子目录中的文件。
需要注意的是,Shell命令里面的参数是可以组合在一起用的,比如组合“ “-al”就是显示所有文件的详细信息,包括以“ “.”开头的隐 藏文件,如下图所示:
目录切换命令
在 Shell中切换到其它的目录,使用的命令是 cd,命令格式如下:
cd [路径 ] |
路径就是我们要进入的目录路径,比如下面所示操作:
- cd / //进入到根目录“ “/”下 Linux系统的根目录为“ “/””;
- cd /usr //进入到目录“ “/usr”里面;
- cd … //进入到上一级目录;
- cd ~ //切换到当前用户主目录。
当前路径显示命令 pwd
pwd命令用来显示当前工作目录的绝对路径,不需要任何的参数。
系统信息查看命令 uname
要查看当前系统信息,可以使用命令 uname,命令格式如下:
uname [选项 ] |
可选的选项参数如下:
- -r 列出当前系统的具体内核版本号;
- -s 列出系统内核名称;
- -o 列出系统信息。
清屏命令clear
clear命令用于清除终端上的所有内容,只留下一行提示符。
切换用户执行身份命令 sudo
Ubuntu(Linux)是一个允许多用户的操作系统,其中权限最大的就是超级用户 root,有时候我们执行一些操作的时候是需要用 root用户身份才能执行,比如安装软件。通过 sudo命令可以使我们暂时将身份切换到 root用户。当使用 sudo命令的时候是需要输入密码的,这里要注意输入密码的时候是没有任何提示的!命令格式如下:
sudo [选项 ] [命令 ] |
选项主要参数如下:
- -h 显示帮助信息;
- -l 列出当前用户可执行与不可执行的命令;
- -p 改变询问密码的提示符。
添加用户命令 adduser
此命令需要 root身份去运行。命令格式如下:
adduser [参数 ] [用户名 ] |
常用的参数如下:
- -system 添加一个系统用户;
- -home DIR DIR表示用户的主目录路径;
- -uid ID ID表示用户的 uid;
- -ingroup GRP 表示用户所属的组名。
删除用户命令 deluser
前面讲了添加用户的命令,那肯定也有删除用户的命令,删除用户使用命令“ deluser”,同样的,也要使用 “sudo”来以 root用户运行,命令参数如下:
deluser [参数 ] [用户名 ] |
主要参数有:
- -system 当用户是一个系统用户的时候才能删除;
- -remove-home 删除用户的主目录;
- -remove-all-files 删除与用户有关的所有文件;
- -backup 备份用户信息。
切换用户命令 su
“sudo”是以 root用户身份执行一个命令**,并没有更改当前的用户身份**,所有需要 root身份执行的命令都必须在前面加上“ sudo”。命令 su”可以直接将当前用户切换为 root用户,切换到 root用户以后就可以尽情的进行任何操作了!”su”命令格式如下:
su [选项 ] [用户名 ] |
常用选项参数如下:
- -c –command 执行指定的命令,执行完毕以后 恢复 原用户身份;
- -login 改变用户身份,同时改变工作目录和 PATH环境变量;
- -m 改变用户身份的时候不改变环境变量;
- -h 显示帮助信息。
例如切换到root:
先使用命令“ sudo su”切换到 root用户, su命令不写明用户名的话默认切换到 root用户。然后输入密码,密码正确的话就会切换到 root用户,可以看到切换到 root用户以后提示符的““@”符号前面的用户名变成了 root”,表示当前的用户是 root用户。并且以“#“结束。
注意!!由于 root用户权限太大,稍微不注意就可能删除掉系统文件,导致系统奔溃,因此强烈建议大家,不要以 root用户运行 Ubuntu。
当要用到 root身份执行某些命令的时候使用“ sudo”命令即可。要切换回原来的用户,使用命令“ sudo su 用户名”即可。
显示文件内容命令 cat
查看文件内容是最常见的操作了,在 windows下可以直接使用记事本查看一个文本文件内容, linux下也有类似记事本的软件,叫做 gedit,找到一个文本文件,双击打开,默认使用的就是 gedit。
Shell下就是命令“ cat”,命令格式如下:
cat [选项 ] [文件 ] |
- -n 由 1开始对所有输出的行进行编号;
- -b 和 -n类似,但是不对空白行编号;
- -s 当遇到连续两个行以上空白行的话就合并为一个行空白行。
显示和配置网络属性命令 ifconfig
ifconfig是一个跟网络属性配置和显示密切相关的命令,通过此命令我们可以查看当前网络属性,也可以通过此命令配置网络属性,比如设置网络 IP地址等等,此命令格式如下:
ifconfig interface options | address |
主要参数如下:
- interface 网络接口名称,比如 eth0等;
- up 开启网络设备;
- down 关闭网络设备;
- add IP地址,设置网络 IP地址;
- netmask add 子网掩码。
有两个网卡: ens33和 lo ens33是我的电脑实际使用的网卡, lo是回测网卡。可以看出网卡 ens33的 IP地址为 192.168.31.235,我们使用命令 ifconfig”将网卡 ens33的IP地址改为 192.168.31.20,操作如图所示:
系统帮助命令 man
Ubuntu提供了一个命令来帮助用户完成查询命令的功能(类似参考手册),那就是“ man”命令,通过 man”命令可以查看其它命令的语法格式、主要功能、主要参数说明等,格式如下:
man [命令名 ] |
系统重启命令 reboot
使用 Shell命令“ reboot”来重启系统,直接输入命令 reboot”然后点击回车键即可。
系统关闭命令 poweroff
使用命令 poweroff”就可以关闭系统,在终端中输入命令“ poweroff”然后按下回车键即可关闭 Ubuntu系统。
软件安装命令 install
Ubuntu下很多软件是需要先自行下载源码,下载源码以后自行编译,编译完成以后使用命令“intsall”来安装。命令“ install“格式如下:
install [选项 ]... [-T] 源文件 目标文件 或: install [选项 ]... 源文件 ... 目录 或: install [选项 ]... -t 目录 源文件 ... 或: install [选项 ]... -d 目录 ... |
“install”命令是将文件 (通常是编译后的文件 )复制到目的位置,在前三种形式中,将源文件复制到目标文件或将多个源文件复制到一个已存在的目录中同时设置其所有权和权限模式。在第四种形式会创建指定的目录。命令“ install”通常和命令 apt-get”组合在一起使用的。(比如我之前装C++的OpenCV以及ROS都是apt-get install)。
个人经验
这里的记录主要就是想更熟悉一些基础的Ubuntu命令,其实用到的话都可以直接搜,但是系统学习嘛,就仔仔细细记笔记过一遍。
APT下载工具
APT下载工具可以实现软件自动下载、配置、安装二进制或者源码的功能。 APT下载工具和我们前面讲解的“ install”命令结合在一起构成了 Ubuntu下最常用的下载和安装软件方法。它解决了 Linux平台下安装软件的一个缺陷,即软件之间相互依赖。
APT采用的 C/S模式,也就是客户端 /服务器模式,我们的 PC机作为客户端,当需要下载软件的时候就向服务器请求,因此我们需要知道服务器的地址,也叫做安装源或者更新源。点击 Ubuntu主界面左上角的“活动”,然后在搜索栏搜索“软件和更新”,如图所示:
工具的安装源,因为我们是在中国,所以需要选择中国的服务器,否则的话可能会导致下载失败!(也就是需要更新源!)
更新本地数据库
如果想查看本地哪些软件可以更新的话可以使用如下命令:
sudo apt-get update |
这个命令会访问源地址,并且获取软件列表并保存在本电脑上,过程如图:
检查依赖关系
有时候本地某些软件可能存在依赖关系,所谓依赖关系就是 A软件依赖于 B软件。通过如下命令可以查看依赖关系,如果存在依赖关系的话 APT会提出解决方案:
sudo apt-get check |
上述命令的执行结果如下图所示:
软件安装
安装软件,使用如下命令:
sudo apt-get install package-name |
可以看出上述命令是由“ apt-get”和 install”组合在一起的 “package-name”就是要安装的软件名字,“ apt-get”负责下载软件 install”负责安装软件。例如安装串口工具“ minicom”,我们就可以使用如下命令:
sudo apt-get install minicom |
安装完成以后我们直接在终端输入如下命令打开 minicom这个串口软件:
minicom -s |
打开以后的 minicom软件如图所示:
软件更新
更新软件的话使用命令:
sudo apt-get upgrade package-name |
卸载软件
如果要卸载某个软件的话使用如下命令:
sudo apt-get remove package-name |
其中 package-name是要卸载的软件。
个人经验
最重要的是要记住,所有的软件相关操作都一定要“sudo”先提升权限,然后apt-get,具体的都可以直接csdn或者知乎找到相关的教程。
Ubuntu下文本编辑
Gedit编辑器
进行文本编辑是最常用的操作, Windows下我们会使用记事本来完成,或者其它一些优秀的文本编辑器,比如 Ubuntu下有一个自带的文本编辑器,那就是 Gedit。 Gedit是一个窗口式的编辑器,很方便可以打开一些文本。
我的使用经验是都通过gedit,打开操作文件,或者就cd进去然后自己双击(一般系统文件都得gedit,因为双击是没有权限的,一定要sudo提升权限才能gedit)
VI/VIM编辑器
如果要在终端模式下进行文本编辑或者修改文件就可以使用 VI/VIM编辑器, Ubuntu自带了VI编辑器,但是并不方便。VIM编辑器是 VI编辑器升级版本, VI/VIM编辑器都是一种基于指令式的编辑器,不需要鼠标,也没有菜单,仅仅使用键盘来完成所有的编辑工作。
我们需要先安装 VIM编辑器,命令如下:
sudo apt-get install vim |
安装完成以后就可以使用 VIM编辑器了, VIM编辑器有3种工作模式:输入模式、指令模式和底行模式,通过切换不同的模式可以完成不同的功能。打开终端,输入命令:
vim test.txt |
会创建一个test的txt文件。VIM默认是以只读模式打开的文档,因此我们要切换到输入模式,切换到输入模式的命令如下:
- i :在当前光标所在字符的前面,转为输入模式;
- I 在当前光标所在行的行首转换为输入模式;
- a :在当前光标所在字符的后面,转为输入模式;
- A :在光标所在行的行尾,转换为输入模式;
- o :在当前光标所在行的下方,新建一行,并转为输入模式;
- O :在当前光标所在行的上方,新建一行,并转为输入模式;
- s :删除光标所在字符;
- r :替换光标处字符。
最常用的就是 “a”,按下键盘上的“ a”键,这时候终端左下角会提示“插入”字样,表示我们进入到了输入模式,如图:
可以如下图一样,插入文本:
保存文本不能用Ctrl+S,因为在Ubuntu中默认是暂停终端!(可通过Ctrl+Q来重新打开终端。)
保存文本需要从 VIM现在的输入模式切换到指令模式,方式就是按下键盘的 ESC键 ,按下 ESC键以后终端坐下角的“插入”字样就会消失,此时你就不能在输入任何文本了,如果想再次输入文本的话就按下“ a”键重新进入到输入模式。指令模式顾名思义就是输入指令的模式,这些指令是控制文本的指令,我们将这些指令进行分类,如下所示:
-
移动光标指令:
-
h(或左方向键 ) :光标左移一个字符;
-
l(或右方向键 ) :光标右移一个字符;
-
j(或下方向键 ) :光标下移一行;
-
k(或上方向键 ) :光标上移一行;
-
nG :光标移动到第 n行首;
-
n+ :光标下移 n行;
-
n- :光标上移 n行;
-
-
屏幕翻滚指令:
- Ctrl+F:屏幕向下翻一页,相当于下一页;
- Ctrl+B:屏幕向上翻一页,相当于上一页;
-
复制、删除和粘贴指令:
- cc :删除整行,并且修改整行内容;
- dd :删除该行,不提供修改功能;
- ndd :删除当前行向下 n行;
- x :删除光标所在的字符;
- X :删除光标前面的一个字符;
- nyy :复制当前行及其下面 n行;
- p :粘贴最近复制的内容。
保存文档的命令是在底行模式中,我们要先进入到指令模式,进入底行模式的方式是先进入指令模式下,然后在指令模式下输入“:”进入底行模式,如图:
当进入底行模式以后会在终端的左下角就会出现符号“:”,我们可以在“:”后面输入命令,常用的命令如下:
- x :保存当前文档并且退出;
- q :退出;
- w :保存文档;
- q! :退出 VI/VIM,不保存文档。
如需退出并保存文本的话需要在“:”底行模式下输入“wq”,如图所示:
退出以后我们可以使用命令“ cat”来查看刚刚新建的 test.txt文档的内容。
之前展示的是在指令模式下输入“:”的方法,还可以在指令模式下输入“ “/”进入底行模式,输入 “/”以后还可以在文本中搜索指定的内容,结果如下图所示:
个人经验
一般用gedit就够了,写代码的话,无论是VMWare还是双系统,都可以直接VSCode解决一切,配好对应的环境就可以了!(Python的话可以直接anaconda,就是注意安装顺序,我用ROS的时候就是现装了anaconda再装的ROS还是什么就出问题了,最后卸载anaconda重新装的!如果是C++就麻烦一点,不过如果Windows也配过MinGW的g++或者gcc,在Ubuntu里就是gdb而已,具体配置也是跟着教程就好了)。
Linux文件系统
在 Linux下一切皆为文件!!!
Linux文件系统简介以及类型
操作系统就是处理各种数据的,这些数据在硬盘上就是二进制,人类肯定不能直接看懂这些二进制数据,要有一个翻译器,将这些二进制的数据还原为人类能看懂的文件形式,这个工作就是由文件系统来完成的,文件系统的目的就是 实现数据的查询和存储,由于使用场合、使用环境的不同, Linux有多种文件系统,不同的文件系统支持不同的体系。文件系统是管理数据的,而可以存储数据的物理设备有硬盘、U盘、 SD卡、 NAND FLASH、 NOR FLASH、网络存储设备等。不同的存储设备其物理结构不同,不同的物理结构就需要不同的文件系统去管理,比如管理 NAND FLASH的话使用 YAFFS文件系统,管理硬盘、 SD卡的话就是 ext文件系统等等。
Linux下与Windows一样,也支持磁盘分割, Linux下常用的磁盘分割工具为: fdisk。当然,在磁盘分割之前,还需要先进行格式化处理。在 Linux下创建一个分区并且格式化好以后我们要将其**“挂载”到一个目录下才能访问这个分区**。 Windows的文件系统挂载过程是其内部完成的,用户是看不到的, Linux下我们使用 mount命令来挂载磁盘。挂载磁盘的时候是需要确定挂载点的,也就是你的这个磁盘要挂载到哪个目录下。
在 Windows下有 FAT、 NTFS和 exFAT这样的文件系统;而Linux下的文件系统主要有 ext2、 ext3、 ext4等文件系统。 Linux还支持其他的 UNIX文件系统,比如 XFS、 JFS、 UFS等,也支持 Windows的 FAT文件系统和网络文件系统 NFS等。
- ext2文件系统:
ext2是 Linux早期的文件系统,但是随着技术的发展 ext2文件系统已经不推荐使用了, ext2是一个非日志文件系统 ,大多数的 Linux发行版都不支持 ext2文件系统了;(非重点) - ext3文件系统:
ext3是在 ext2的基础上发展起来的文件系统,完全兼容 ext2文件系统, ext3是一个日志文件系统, ext3支持大文件, ext3文件系统的特点有如下:- 高可靠性:使用 ext3文件系统的话,即使系统非正常关机、发生死机等情况,恢复 ext3文件系统也只需要数十秒;
- 数据完整性: ext3提高了文件系统的完整性,避免意外死机或者关机对文件系统的伤害;
- 文件系统速度: ext3的日志功能对磁盘驱动器读写头进行了优化,文件系统速度相对与 ext2来说没有降低;
- 数据转换:从 ext2转换到 ext3非常容易,只需要两条指令就可以完成转换。
- ext4文件系统:
ext4文件系统是在ext3上发展起来的, ext4相比与 ext3提供了更佳的性能和可靠性,并且功能更丰富, ext4向下兼容 ext3和ext2,因此可以 将 ext2和 ext3挂载为 ext4。
可通过以下命令来查看文件系统的类型:
df -T -h |
可以看到,红框就是安装系统的磁盘分区,他的类型就是ext4,挂载点在"/",也就是根目录。
Linux文件系统结构
Linux只有一个根目录,根目录就是““/”。但是Ubuntu中默认打开的不是根目录,而是用户根目录,因为Linux是多用户操作系统,每个用户都有一个用户根目录。同时,打开终端后默认进入的也是用户根目录。
根目录下,有以下重要文件夹:
- /bin:存储一些二进制可执行命令文件 ,/usr/bin也存放了一些基于用户的命令文件;
- /sbin:存储了很多系统命令,/usr/sbin也存储了许多系统命令;
- /root:超级用户 root的根目录文件;
- /home:普通用户默认目录,在该目录下,每个用户都有一个以本用户名命名的文件夹;
- /boot:存放 Ubuntu系统内核和系统启动文件;
- /mnt:通常包括系统引导后被挂载的文件系统的挂载点;
- /dev:存放设备文件,Linux驱动主要是跟这个文件夹打交道的;
- /etc:保存系统管理所需的配置文件和目录;
- /lib:保存系统程序运行所需的库文件,/usr/lib下存放了一些用于普通用户的库文件;
- /lost+found:一般为空,当系统非正常关机以后,此文件夹会保存一些零散文件;
- /var:存储一些不断变化的文件,比如日志文件;
- /usr:包括与系统用户直接有关的文件和目录,比如应用程序和所需的库文件;
- /media:存放 Ubuntu系统自动挂载的设备文件;
- /proc:虚拟目录,不实际存储在磁盘上,通常用来保存系统信息和进程信息;
- /tmp:存储系统和用户的临时文件,该文件夹对所有的用户都提供读写权限;
- /opt:可选文件和程序的存放目录;
- /sys:系统设备和文件层次结构,并向用户程序提供详细的内核数据信息。
文件操作命令
创建新文件——touch
touch不仅仅可以用用来创建文本文档,其它类型的文档也可以创建,命令格式如下:
touch [参数 ] [文件名 ] |
使用 touch创建文件的时候,如果 [文件名 ]的文件不存在,那就直接创建一个以 [文件名 ]命名的文件,如果 [文件名 ]文件存在的话就仅仅修改一下此文件的最后修改日期,常用的命令如下:
- -a:只更改存取时间;
- -c:不建立任何文件;
- -d<日期>: 使用指定的日期,而并非现在日期;
- -t<时间>:使用指定的时间,而并非现在时间。
文件夹创建——mkdir
命令格式如下:
mkdir [参数 ] [文件夹名目录名 ] |
主要参数:
- -p:如所要创建的目录其上 层目录目前还未创建,那么会一起创建上层目录。
文件及目录删除——rm
要删除一个文件或者文件夹可以使用命令“ rm”,此命令可以完成删除一个文件或者多个文件及文件夹,它可以实现递归删除。对于链接文件(相当于快捷方式),只删除链接,原文件保持不变。命令格式如下:
rm [参数 ] [目的文件或文件夹目录名 ] |
命令主要参数如下:
- -d:直接把要删除的目录的硬连接数据删成0,删除该目录;
- -f:强制删除文件和文件夹 (目录 );
- -i:删除文件或者文件夹 (目录 )之前先询问用户;
- -r:递归删除,指定文件夹 (目录 )下的所有文件和子文件夹全部删除掉;
- -v:显示删除过程。
直接使用命令“ rm”是无法删除文件夹 (目录)的,需要加上参数“-rf”,也就是强制递归删除文件夹 (目录)。
文件夹(目录)删除——rmdir
Linux提供了直接删除文件夹 (目录)的命令 rmdir,它可以不加任何参数的删除掉指定的文件夹 (目录),命令格式如下:
rmdir [参数 ] [文件夹 (目录 )] |
命令主要参数如下:
- -p 删除指定的文件夹 (目录)以后,若上层文件夹 (目录 )为空文件夹 (目录 )的话就将其一起删除。
文件复制——cp
Linux下的复制命令为“ cp”,命令格式如下:
cp [参数 ] [源地址 ] [目的地址 ] |
- -a:此参数和同时指定 “-dpR”参数相同;
- -d:在复制有符号连接的文件时,保留原始的连接;
- -f:强行复制文件,不管要复制的文件是否已经存在于目标目录;
- -I:覆盖现有文件之前询问用户;
- -p:保留源文件或者目录的属性;
- -r或 -R:递归处理,将指定目录下的文件及子目录一并处理。
文件移动——mv
命令格式如下:
mv [参数 ] [源地址 ] [目的地址 ] |
- -b:如果要覆盖文件的话覆盖前先进行备份;
- -f:若目标文件或目录与现在文件重复,直接覆盖;
- -I:在覆盖之前询问用户。
文件压缩和解压缩
图形化
这个与Windows类似,没啥学的必要。
命令行
命令行下进行压缩和解压缩常用的命令有三个:zip、unzip和 tar。
zip命令是针对 .zip文件的,用于将一个或者多个文件压缩成一个 .zip结尾的文件,命令格式如下:
zip [参数 ] [压缩文件名 .zip] [被压缩的文件 ] |
主要参数函数如下:
- -b<工作目录>: 指定暂时存放文件的目录;
- -d:从 zip 文件中删除一个文件;
- -F:尝试修复已经损毁的压缩文件;
- -g:将文件压缩入现有的压缩文件中,不需要新建压缩文件;
- -h:帮助;
- -j:只保存文件的名,不保存目录;
- -m:压缩完成以后删除源文件;
- -n<字尾符号>:不压缩特定扩展名的文件;
- -q:不显示压缩命令执行过程;
- -r:递归压缩,将指定目录下的所有文件和子目录一起压缩;
- -v:显示指令执行过程;
- -num:压缩率,为 1~9的数值。
unzip命令用于对 .zip格式的压缩包进行解压,命令格式如下:
unzip [参数 ] [压缩文件名 .zip] |
主要参数如下:
- -l:显示压缩文件内所包含的文件;
- -t:检查压缩文件是否损坏,但不解压;
- -v:显示命令显示的执行过程;
- -Z:只显示压缩文件的注解;
- -C:压缩文件中的文件名称区分大小写;
- -j:不处理压缩文件中的原有目录路径;
- -L:将压缩文件中的全部文件名改为小写;
- -n:解压缩时不要覆盖原有文件;
- -P<密码>:解压密码;
- -q:静默执行,不显示任何信息 ;
- -x<文件列表>:指定不要处理 .zip中的哪些文件;
- -d<目录>:把压缩文件解到指定目录下。
命令tar,可以用来压缩和解压缩Linux下最常用的 .bz2和 .gz这两种压缩格式;其对压缩和解压缩,只要使用不同的参数即可,命令格式如下:
tar [参数 ] [压缩文件名 ] [被压缩文件名 ] |
常用参数如下:
- -c:创建新的压缩文件;
- -C<目的目录>:切换到指定的目录;
- -f<备份文件>:指定压缩文件;
- -j:用 tar生成压缩文件,然后用 bzip2进行压缩;
- -k:解开备份文件时,不覆盖已有的文件;
- -m:还原文件时,不变更文件的更改时间;
- -r:新增文件到已存在的备份文件的结尾部分;
- -t:列出备份文件内容;
- -v:显示指令执行过程;
- -w:遭遇问题时先询问用户;
- -x:从备份文件中释放文件,也就是解压缩文件;
- -z:用 tar生成压缩文件,用 gzip压缩;
- -Z:用 tar生成压缩文件,用 compress压缩。
文件查询和搜索
find
命令用于在目录结构中查找文件,其命令格式如下:
find [路径 ] [参数 ] [关键字 ] |
路径是要查找的目录路径,如果不写的话表示在当前目录下查找,关键字是文件名的一部分,主要参数如下:
- -name<文件名>:按照文件名称查找,查找与 filename匹配的文件,可使用通配符;
- -depth:从指定目录下的最深层的子目录开始查找;
- -gid<群组识别码>:查找符合指定的群组识别码的文件或目录;
- -group<群组名称>:查找符合指定的群组名称的文件或目录;
- -size<文件大小>:查找符合指定文件大小的文件;
- -type<文件类型>:查找符合指定文件类型的文件;
- -user<拥有者名称>:查找符合指定的拥有者名称的文件或目录。
grep
grep命令用于查找包含指定关键字的文件,如果发现某个文件的内容包含所指定的关键字, grep命令就会把包含指定关键字的这一行标记出来, grep命令格式如下:
grep [参数 ] 关键字 文件列表 |
grep命令一次只能查一个关键字,主要参数如下:
- -b:在显示符合关键字的那一列前,标记处该列第 1个字符的位编号;
- -c:计算符合关键字的列数;
- -d<进行动作>:当指定要查找的是目录而非文件时,必须使用此参数!否则 grep指令将回报信息并停止搜索;
- -i:忽略字符大小写。
文件类型
这些字符表示的文件类型如下:
- -:普通文件,一些应用程序创建的,比如文档、图片、音乐等等;
- d:目录文件;
- c:字符设备文件 Linux驱动里面的字符设备驱动,比如串口设备,音频设备等;
- b:块设备文件,存储设备驱 动,比如硬盘, U盘等;
- l:符号连接文件,相当于 Windows下的快捷方式;
- s:套接字文件;
- p:管道文件,主要指 FIFO文件。
Linux用户权限管理
Ubuntu用户系统
Ubuntu是一个多用户操作系统,装系统的时候创建的用户其权限比后面创建的用户大一点,但是没有 root用户权限大,Ubuntu下用户类型分为以下 3类:
-
初次创建的用户,此用户可以完成比普通用户更多的功能;
-
root用户,系统管理员,权限最高;
-
普通用户,安装完操作系统以后被创建的用户。
以上三种用户,每个用户都有一个 ID号,称为 UID,操作系统通过 UID来识别是哪个用户,用户相关信息可以在文件 /etc/passwd中查看 到,如图:
每个用户名后面都有两个数字,第一个数字是用户的 ID,另一个是用户的 GID,也就是用户组 ID。 Ubuntu里面每个用户都属于一个用户组里面,用户组就是一组有相同属性的用户集合。
权限管理
对于一个文件通常有三种权限:读 ®、写 (w)和执行 (x),使用命令 “ls -l”可以查看某个目录下所有文件的权限信息。
后面的都是用户的一些信息,前面的内容是本节关注的,表示文件权限与用户和用户组之间的关系,第一位表示文件类型,剩下的9位以 3位为一组,分别表示文件拥有者的权限,文件拥有者所在用户组的权限以及其它用户权限。
对于文件,可读权限表示可以打开查看文件内容,可写权限表示可以对文件进行修改,可执行权限就是可以运行此文件 (如果是软件的话)。对于文件夹,拥有可读权限才可以使用命令 ls查看文件夹中的内容,拥有可执行权限才能进入到文件夹内部。
文件的权限也可以使用二进制数表示,三种权限就可以使用3位二进制数来表示,一种权限对应一个二进制位,如果该位为1就表示具备此权限,如果该位为0就表示没不具备此权限,如下图所示:
将三种权限r、 w和 x进行不同的组合,即可得到不同的二进制数和八进制数, 3位权限可以组出 8种不同的权限组,如下图所示:
也可以使用 a、 u、 g和 o表示文件的归属关系,用 =、 +和 -表示文件权限的变化,如下图所示:
权限管理命令
可以使用 Shell来操作文件的权限管理,主要用到“ chmod”和 chown”这两个命令。
修改权限——chmod
命令“ chmod”用于修改文件或者文件夹的权限,权限可以使用前面讲的数字表示也可以使用字母表示,命令格式如下:
chmod [参数 ] [文件名 /目录名 ] |
主要参数如下:
- -c:效果类似 “-v”参数,但仅回显更改的部分;
- -f:不显示错误信息;
- -R:递归处理,指定目录下所有文件及其子文件目录一起处理;
- -v:显示指令的执行过程。
可以通过数字来修改权限,如下图所示:
文件归属者修改——chown
命令 chown用来修改某个文件或者目录的归属者用户或者用户组,命令格式如下:
chown [参数 ] [用户名 .<组名 >] [文件名 /目录 ] |
其中 [用户名 .<组名 >]表示要将文件或者目录改为哪一个用户或者用户组,用户名和组名用“.”隔开,其中用户名和组名中的任何一个都可以省略,命令主要参数如下:
- -c:效果同 -v类似,但仅回报更改的部分;
- -f:不显示错误信息;
- -h:只对符号连接的文件做修改,不改动其它任何相关的文件;
- -R:递归处理,将指定的目录下的所有文件和子目录一起处理;
- -v:显示处理过程。
Linux磁盘管理
Linux磁盘管理基本概念
Linux的磁盘管理体系和 Windows有很大的区别,在 Windows下经常会遇到“分区”这个概念,在Linux中一般不叫“分区”而叫“挂载点”。 “挂载点”就是将一个硬盘的一部分做成文件夹的形式,这个文件夹的名字就是“挂载点”。
文件 /etc/fstab详细的记录了 Ubuntu中硬盘分区的情况,如图所示:
有一行“ “/ was on /dev/sda1 during installation”,意思是根目录 “/”是在“/dev/sda1”上的,其中“/”是挂载点 ,“/dev/sda1”就是我们装 Ubuntu系统的硬盘。由于我们的系统是安装在虚拟机中的,因此图 没有出现实际的硬盘。可以通过如下命令查看当前系统中的磁盘:
ls /dev/sd* |
上述命令就是打印出所有以”/dev/sd“开头的设备文件。
磁盘管理命令
磁盘分区——fdisk
要对某个磁盘进行分区,可以使用命令 fdisk,命令格如下:
fdisk [参数 ] |
- -b<分区大小>指定每个分区的大小;
- -l:列出指定设备的分区表;
- -s<分区编号>:将指定的分区大小输出到标准的输出上,单位为块;
- -u:搭配 “-l”参数,会用分区数目取代柱面数目,来表示每个分区的起始地址。
千万不要对自己装 Ubuntu系统进行分区!!!
对U盘进行分类,可以使用如下命令:
sudo fdisk /dev/sdb |
结果如图所示:
输入“m”就会有如下界面:
格式化命令——mkfs
使用命令 fdisk创建好一个分区以后,我们需要对其格式化,也就是在这个分区上创建一个文件系统, Linux下的格式化命令为 mkfs,命令格式如下:
mkfs [参数 ] [-t 文件系统类型 ] [分区名称 ] |
主要参数如下:
- fs:指定建立文件系统时的参数;
- -V:显示版本信息和简要的使用方法;
- -v:显示版本信息和详细的使用方法。
挂载分区命令——mount
需要将 /dev/sdb1这个分区挂载到一个文件夹中,然后通过这个文件访问 U盘,磁盘挂载命令为 mount,命令格式如下:
mount [参数 ] -t [类型 ] [设备名称 ] [目的文件夹 ] |
命令主要参数有:
- -V:显示程序版本;
- -h:显示辅助信息;
- -v:显示执行过程详细 信息;
- -o ro:只读模式挂载;
- -o rw:读写模式挂载;
- -s-r:等于 -o ro;
- -w:等于 -o rw。
卸载命令——umount
不在需要访问已经挂载的 U盘,可以通过 umount将其从卸载点卸除,命令格式如下:
umount [参数 ] -t [文件系统类型 ] [设备名称 ] |
- -a :卸载 /etc/mtab中的所有文件系统;
- -h :显示帮助;
- -n :卸载时不要将信息存入到 /etc/mtab文件中;
- -r :如果无法成功卸载,则尝试以只读的方式重新挂载;
- -t<文件系 统类型 > :仅卸载选项中指定的文件系统;
m”就会有如下界面:
[外链图片转存中…(img-Roj7xCwL-1694519540797)]
格式化命令——mkfs
使用命令 fdisk创建好一个分区以后,我们需要对其格式化,也就是在这个分区上创建一个文件系统, Linux下的格式化命令为 mkfs,命令格式如下:
mkfs [参数 ] [-t 文件系统类型 ] [分区名称 ] |
主要参数如下:
- fs:指定建立文件系统时的参数;
- -V:显示版本信息和简要的使用方法;
- -v:显示版本信息和详细的使用方法。
挂载分区命令——mount
需要将 /dev/sdb1这个分区挂载到一个文件夹中,然后通过这个文件访问 U盘,磁盘挂载命令为 mount,命令格式如下:
mount [参数 ] -t [类型 ] [设备名称 ] [目的文件夹 ] |
命令主要参数有:
- -V:显示程序版本;
- -h:显示辅助信息;
- -v:显示执行过程详细 信息;
- -o ro:只读模式挂载;
- -o rw:读写模式挂载;
- -s-r:等于 -o ro;
- -w:等于 -o rw。
卸载命令——umount
不在需要访问已经挂载的 U盘,可以通过 umount将其从卸载点卸除,命令格式如下:
umount [参数 ] -t [文件系统类型 ] [设备名称 ] |
- -a :卸载 /etc/mtab中的所有文件系统;
- -h :显示帮助;
- -n :卸载时不要将信息存入到 /etc/mtab文件中;
- -r :如果无法成功卸载,则尝试以只读的方式重新挂载;
- -t<文件系 统类型 > :仅卸载选项中指定的文件系统;
- -v :显示执行过程。