本篇文章主要分为Linux基础操作与Linux常用指令两大板块 方便快速学习上手Linux
主要的内容是以文本的方式展示 具体还需读者实践练习
(1)Linux基础操作
1.Linux的快捷操作
- tab键的补全
- 自动补全、可以补全命令、补全参数
- 方向键调用历史命令
- 可以对之前输入过命令进行再次调用
2.ubuntu终端的工作路径
thegun@thegun-virtual-machine:~$
- 当前用户名@当前系统名:当前的工作路径$
- @:分割符
- thegun-virtual-machine:当前系统名
- : :分割符
- ~:当前工作路径
- $:分割符
3.Linux路径
- ~:家目录,表示当前用户的目录,在此目录下,当前用户是非常高的权限
- /:根目录,Linux的一切文件/文件夹的起点,所有目录都是从根目录开始的
- ./:当前目录,表示当前的工作目录
- ../:上级目录,表示相对于当前目录而言上一级目录
注意:可以通过#和$来区分此时是超级用户还是普通用户,$表示普通用户,#表示超级用户
4.vi/vim编辑器
vi/vim是linux中最基本的、最常用的、功能最强大的文本编辑器
vim是vi进阶版。
vi/vim的两种模式
- 编辑模式:
键盘上输入的所有的字符都作为文件的内容使用
- 命令模式:
键盘上输入的字符作为命令使用
注意:编辑器已启动默认就是命令模式。
命令模式切换至编辑模式
- i :insert进入编辑模式之后,光标不移动
- I :Inset进入编辑模式之后,光标移动至行首
- o :open向下开路,在光标的所在行的下一行,新开一行。
- O :Open向上开路,在光标的所在行的上一行,新开一行。
- a :append追加,进入编辑模式,光标会移动到后一个字符追加
- A :Append追加,进入编辑模式,光标会移动到行尾追加
编辑模式切换至命令模式
- esc
命令模式的命令
- 退出 / 保存
- :q : quit 退出 只有在没有进行修改的情况下,才能正常退出(如果有修改文件内容,退出的 时候进行询问/提示)
- :q! :强制退出,不保存
- :wq :write quit 保存并退出
- :w :write 写入/保存
- :x : 保存并退出
- 删除 / 修改
- x : 删除光标所在位置的字符
- dd :delete 删除光标所在行
- ndd : number delete 。n在这里是一个数字,表示删除包括光标所在行及往下n行的内容。 并且把删除的内容保存在剪切板
- p : print 将剪切板中的内容粘贴到当前行的后面
- P : Print 将剪切板中的内容粘贴到当前行的前面
- yy:复制当前行,把当前行的内容拷贝到剪切板中
- r : replace 替换光标所在的那一个字符,按下r在找要替换的字符
- R :替换光标及之后的多个字符,(按下esc退出替换模式)
- u : undo 撤销操作
- 搜索
- 命令: /需要搜索的内容
- n :next 找到下一个匹配的内容
- N :找到上一个匹配的内容
- 替换
- s : substitute 替换
:{作用范围}s/{目标}/{替换内容}/{替换标志}
作用范围:
作用范围如果不指定,默认在当前行进行查找 目标
如果是在全文范围内容寻找 %
如果是在指定访问内容寻找 选择区域
2,5 表示从第2行开始到第5行范围去寻找 目标
.,+2 表示从当前行开始到接下来的两行的范围内容寻找 目标
替换标志
g : global 全局替换 即所有行都替换
i : ignore 忽略大小写
将当前行中的第一个 目标 ,替换成 替换内容 。如果当前行存在多个 目标 则只会替换其 中一个
- 显示行号
: set nu
注意:在没有文件名情况下
- 在保存的时候: :w 文件名.扩展名 保存创建
- 使用vi/vim的时候可以指定打开的文件
5.文件系统相关的命令
文件系统是用来管理文件的一套组织方法和软件系统。
1.文件
- 文件属性:inode是唯一标识符,用来标识一个文件存不存在的东西。
inode:文件名、文件大小、文件类型....
- 文件内容:
inode:索引节点、文件的字节数大小、拥有者、读写权限、时间信息、链接数.....
文件存储硬盘上,操作系统把硬盘分为两个区域:
- 一个是数据区:存储文件的数据内容
- 一个是节点区:存储文件inode信息
表面上,用户通过文件名打开文件。实际上系统通过inode节点信息,找到该文件数据存储的硬盘区 域,读出数据。
2.链接
是指,指向该inode节点的文件名。(可以粗略把文件名inode理解为指针,文件数据认为是空间)
软连接(符号链接)
- 文件A和文件B inode节点虽然不一样,但是文件A的内容就是文件B的路径
- 读取文件A的时候,系统会自动将访问者导向文件B
- 因此,无论打开文件A还是打开文件B,最终读取到的内容都是文件B的内容
- 这种时候/情况,文件A称为文件B的 软链接 (soft Link)
- 意味着文件A指向了文件B,删除文件A是不会对文件B有影响的,但是如果删除文件B就会对文件A 产生影响,文件A无法打开
- 语法:
ln -s 源文件 软连接文件名
硬链接
- 一般情况下,文件名和inode节点是一一对应的关系,也就是每一个inode节点对应一个文件名
- 但是linux系统允许多个文件名指向同一个inode节点,意味着可以用不同的文件名访问相同的内容
- 对于这个文件内容的进行修改,会影响其他文件名访问那个文件内容,但是删除一个文件名,不影 响其他文件名的使用的。这个链接称为 硬链接 (hard link)
- 语法:
ln 源文件 硬连接文件名
为源文件创建一个硬链接 指向inode 目标文件指向源文件的inode
注意:不要再共享目录下使用,因为window没有链接文件
3.常用的文件系统
ext3、ext4、FAT32、NTFS...
4.Linux文件
树状 结构
linux系统下的文件组织方式是以/根目录开始
- 绝对路径:
所有以/根目录开始路径,称为 绝对路径 (完整路径)(起点是固定的 /根目录)
- 相对路径:
不以 / 根目录出发的路径,称为 相对路径 (不完整的路径)(起点并不是固定的/根目录)
(2)Linux常用命令
终端缩放字体: 放大: ctrl + shift + + 缩小: ctrl + -
切换路径
cd:change directory 切换路径
第一种用法: cd 目标路径 切换到目标路径
- 示例: cd /mnt/hgfs 切换当前工作路径至 /mnt/hgfs 路径
第二种用法: cd - 切换到上一次去到的路径
- 示例:当前处于家目录 ~
- 然后执行: cd /mnt/hgfs 切换到了共享目录
- cd - 回到家目录 ~
第三种用法: cd 直接使用的时候,切换到家目录
- 示例: cd 直接切换到家目录
列举目录/文件
ls:list 列举目录/文件
第一种用法: ls 列举当前工作路径下的文件夹和文件
- 示例:当前处于家目录 ~
- ls 会将家目录下的文件夹和文件给列举处理
第二种用法: ls [参数] 指定列举的一些参数
- 示例:当前处于家目录 ~
- ls -a 列举当前工作路径下的所有文件夹和文件(包含隐藏文件)
- ls -l 列举当前工作路径下的文件夹和文件的属性信息
第三种用法: ls [参数] [目标] 按照指定参数去列举目标
- 示例:当前处于家目录 ~
- ls /mnt/hgfs 列举指定目录 /mnt/hgfs 下的文件夹和文件
- ls -l /mnt/hgfs 列举指定目录 /mnt/hgfs 下的文件夹和文件属性
- ls -a /mnt/hgfs 列举指定目录 /mnt/hgfs 所有的文件夹和文件
复制
cp:copy 复制
第一种用法: cp 需要拷贝的文件 目标地(目标文件)
- 示例:当前处于家目录 ~
- cp 1.txt class 将 1.txt 拷贝到 class 文件夹下(前提class文件夹要存在)
- cp 1.txt 2.txt 将 1.txt 拷贝到 2.txt 文件夹下(并重命名)
第二种用法: cp [参数] 需要拷贝的文件夹 目的地(目标文件夹)
- 示例:当前处于家目录 ~
- cp class class2 -r 将 class 拷贝到当前文件夹下(并重命名)
- -r 递归
- cp class class2 -r 将 class 拷贝到当前文件夹下(并重命名)
注意:不要将文件夹拷贝到文件里面去。
移动/重命名
mv:move 移动
第一种用法: mv 需要移动的文件夹/文件 目的地
- 示例:当前处于家目录 ~
- mv 1.cpp class/ 将当前目录下的 1.cpp 文件移动到 class 目录下
第二种用法: mv 需要移动的文件夹/文件 新的名字
- 示例:当前处于家目录 ~
- mv 1.cpp 1.txt 将当前目录下的 1.cpp 文件重命名为 1.txt
注意:在重命名的时候,如果是跨目录操作,那么新名字的前面也需要带路径
创建普通文件
touch:创建一个普通的文件
用法: touch 文件名.扩展名 创建一个普通文件
示例: touch 2.cpp 在当前目录下创建一个名为 2 且扩展名为 .cpp 的文件
注意:可以跨目录操作,在创建的时候可以在文件名前面加路径,那么就会在指定的路径下去创建。
注意:创建的时候要记得一定一定一定要带扩展名
常见文件夹
mkdir:make directory 创建一个文件夹
第一种用法: mkdir 文件夹的名字
- 示例: mkdir demo 在当前目录下创建一个名为 demo 的文件夹
- 示例: mkdir /demo 在根目录下创建一个名为 demo 的文件夹
第二种用法: mkdir 文件夹1/文件夹2/文件夹n 创建嵌套的文件夹
- 示例: mkdir -p demo1/demo2/demo3 依次创建文件夹
- -p parent 从父目录开始依次创建
删除
rm:remove 移除
第一种用法: rm 文件的完整名字
示例: rm 1.cpp 移除当前目录下的 1.cpp 文件
第二种用法: rm -r 文件夹的完整名字
示例: rm -r demo 移除当前目录下的 demo 文件夹
-r 递归
显示当前目录的完整路径
pwd:print work directory 打印当前工作路径的完整路径
用法: pwd 打印当前工作路径的完整路径
示例:当前处于家目录 ~
pwd 终端会显示 /home/thegun
修改文件的权限
chmod:change mode 修改权限
认识权限: rwxrwxrwx
- rwx :表示了三种权限
r :读权限
w :写权限
x :可执行权限
各种组合:
- linux 里面的权限是有三组
分别为:
第一种用法: chmod +/-权限值 文件名 为文件增加/删减某项权限
- 示例: chmod +x a.out 为 a.out 增加权限
- 示例: chmod o-x a.out 为 a.out 其它用户删减可执行权限
第二种用法: chmod 八进制权限值 文件名
- 示例: chmod 777 a.out 为 a.out 所有赋予全部权限
- 八进制权限值:每一位数据表示一个用户类型: 777 ---> rwxrwxrwx
注意:以上的命令在家目录操作,不要再共享目录( /mnt/hgfs )下去操作,因为共享目录是 windows 文 件系统,有的指令是无法生效的
判断文件类型
file:判断一个文件的类型
在 linux 下文件的扩展名不等同文件类型。
用法: file 文件名 判断该文件是什么类型
示例: file 1.cpp 终端输出: 1.cpp: C source, ASCII text
常见文件类型:
文件的压缩和归档
压缩:将一组文件或者目录压缩成一个文件
归档:将一组文件或者目录保存在一个文件
常见压缩算法:rar、zip、gzip、7z、bz、iso...
tar 进行文件的压缩和归档
用法: tar [参数列表] 压缩完成的文件的名字 需要压缩的文件列表
压缩
- tar -zcvf xxx.tar.gz 需要压缩的文件列表
- tar :使用tar 进行压缩
- -zcvf :使用 gzip 进行压缩文件并指定文件名字,且显示压缩过程信息
- xxx.tar.gz :压缩之后的文件名, tar 表示由 tar 进行压缩, gz 表示是 gzip 算法压缩
解压缩
- tar -xvf xxx.tar.gz
- tar :使用tar 进行压缩
- -xvf :释放一个压缩文件并指定文件名字,且显示解压缩过程信息
- xxx.tar.gz :需要解压缩的文件
帮助手册
man:manul 帮助手册
linux 会为每一条内置命令,系统函数、标准库函数、写一个帮助手册。不同文件,会有不同分类
用法: man 需要查询的命令/函数
- 有的时候发现出来的帮助手册不是我们想要的。命令/函数重名了
- man -f 需要查询的命令/函数 列出同名的命令/函数出来
- (1) 同名的命令/函数
- (2) 同名的命令/函数
- ...
- man 页数 同名的命令/函数
- 在手册界面下按q退出
注意:帮助手册会默认调用第一个手册
临时切换超级管理员权限
sudo:super do 使用超级管理员权限执行操作
有些指令操作普通用户没有权限,所以要借用超级管理员权限去执行
用法: sudo 需要用到超级管理员权限的指令操作
sudo apt-get install g++
切换用户
su 切换用户
第一种用法: su 用户名
示例: su thegun 切换到 thegun 用户
第二种用法: sudo su 切换超级管理员
示例: sudo su 切换到超级管理员用户
其他命令
- 关机命令
- sudo shutdown now 立即关机
- sudo shutdown n : n:number 表示一个数字 分钟,定时关机
- sudo shutdown -c : cancel 取消定时关机
- 重启命令
- sudo reboot
- 设置密码
- passwd 用户名 为一个用户设置密码
- 清屏
- clear 清屏终端
- ctrl+l 清屏终端
- 查看文件内容
- cat 文件名 查看该文件的内容,在终端显示
- cat -n 文件名 查看该文件的内容,在终端显示 并显示行号
- 查找软件
- which 软件名