大道五十,天衍四十九,人遁其一!
# Linux 基础知识
# what is 命令
所谓的命令就是在环境变量下的一堆可执行文件,所谓的 ls
, cd
, pwd
, which
等命令其实就是系统自带的可执行文件
其实我们所写的源文件在便也后也是可执行文件,但是问什么只能在当前路径执行呢?
这里就涉及到了一个比较熟悉而又陌生的名词: 环境变量.
什么是环境变量呢?所谓的环境变量就是可执行文件所在的文件夹路径的集合
例如 linux 中在命令行中输入 echo $PATH
就可以输出 Linux 可执行文件的路径集合
如图:$PATH
是中断使用的路径变量,使用 :
来分隔,表示 Shell 将会在这些路径下寻找命令程序,在其中我们 可以看到 /bin
目录.
即 $PATH
内置了这些路径环境变量,而命令的本质大都是在文件系统中的一些应用程序.
# 常用命令
# cd
# 命令格式:
cd [path] |
# 功能
上面的 path
为目录名称。路径可以是 相对路径 或者 绝对路径;也可以不填写,默认返回到用户目录
相对路径为,当前终端打开的位置
如图:
# 例子
cd /home/user/Desktop # 进入桌面 | |
cd Desktop # 效果和上面一致 | |
cd # 返回当前用户目录 |
效果如下:
# 特殊命令表示
~
: 表示当前为用户的home
目录.
: 表示当前目录..
: 当前目录的上一级目录/
: 表示根目录-
: 非目录,返回上次所在目录
# mkdir
# 命令格式
mkdir [-p] 目录名 |
# 功能
目录名:要创建的目录路径.-p
: 可缺省,使用时表示,当路径名不存在时,创建当前目录包含上级的目录
# 例子
mkdir Desktop/Test | |
ls Desktop | |
mkdir Desktop/Test_A/CC/DD | |
ls Desktop | |
cd Desktop/Test_A/CC/DD |
# touch
# 命令格式
touch fileName |
# 功能
touch
命令可以创建不存在的文件,或者 touch
通过参数修改目录或文件的日期时间
例如
touch main.c |
# ls
# 命令格式
ls [option] [Folder] |
# 功能
ls
是 list
的缩写,用于显示指定目录下的内容 (文件及其子文件), 内容包括文件大小,修改日期等详细参数Folder
: 目录,缺省时默认显示当前目录下内容option
: 可缺省,使用会改变,显示方式,显示内容,具体参数如下
- -a: 显示文件及其目录 (ls 内定将文件名或目录名以
.
开头的文件视为隐藏,不会列出) - -l: 列出除文件名,文件形态,权限,拥有者,文件大小等详细参数
- -t: 按顺序显示文件
- -A: 与
-a
相同,但是不会列出.
(当前目录) 和..
(父目录) - -R: 若目录下有文件,则一起显示,即诋毁显示
# 例子
ls | |
ls -a | |
ls -A | |
ls -l -t | |
ls -l -R -t # 可多个参数累加 |
# 补充说明
ls -l
各个字段有着各自的含义
- 第一字段:文件属性
文件属性以共 10 字符,第一个字符表示文件类型,-
表示普通文件;d
表示目录.
后面的 9 个字符 3 个为一组,分别表示:文件拥有者的权限,文件所属拥有的权限,其他用户的权限。r
表示读,w
表示写,x
表示执行 - 第二字段:链接占用的节点 / 子目录个数
主要取决该文件的类型。如果是文件的话,则表示该文件所具有的硬连接数。某个文件的第二字段如果等于 1 的话,代表没有其他指向该文件的硬连接. - 第三、四字段:拥有者和文件所在组
Linux 为多用户系统,每个文件都有自己的拥有者。一般来说只有文件的拥有者才有 第一字段后九个字符所赋予的操作权。当然作为上帝用户的 root 拥有修改所有文件的权限 - 第五字段:文件所占用的空间 (字节)
- 第六字段:最近访问 (修改) 时间
- 第七字段:文件 / 文件夹名称
Linux 的链接方式
在 Linux 中链接的方式分为两种,分别是硬链接和软链接 (符号链接).
软连接,类似于 Windows 操作系统的快捷方式.
硬链接,则是将文件复制一份,同时连带自动更新.
当我们修改了硬链接文件的内容,源文件也会被修改。当为某个文件创建硬链接时,第二字段的值便会加 1.
可以使用 ln 命令创建软链接和硬链接
# cat
# 命令格式
cat fileName |
# 功能
cat 命令是 concatenate 的简写,译为串联。即它可以把两个内容串联起来,我们通常使用它在终端下输出文
件的内容进行查看
# 例子
cat main.c |
# echo
# 命令格式
echo "string" | |
echo string | |
echo $variable |
# 功能
在终端中输出一段文字,或打印终端变量。在输出 字符串的时候 echo "string"
和 echo string
效果一致
# 例子
echo "嘿嘿嘿" # 输出字符串 | |
echo 嘿嘿嘿 # 输出字符串 | |
echo $PATH # 输出环境变量 | |
echo "$PATH" # 输出环境变量 |
# 重定向输出
echo
命令输出的结果无一例外都是在终端显示,在一些时候我们还是需要将输出结果保存在文件中方便我们对问题进行分析.
如果在 Windows 上写过 BAT 脚本,那么就会很自然的想到重定向出到文件的控制符 >
和 >>
, >
会把输出的消息覆盖, >>
会追加到源文件的末尾
格式如下
echo cc > log.txt | |
echo DD >> log.txt | |
echo CCCC > log.txt |
如图:
# rmdir
# 命令格式
rmdir [-p] 文件名 |
# 功能
rmdir
命令是 remove directory 的简写,它的功能是删除空的目录.-p
: 可缺省。如果使用,可以用来递归删除目录,即当删除当前目录时,其删除后父目录也为空则会连同父目录一起删除,可递归
# 例子
rmdir Test_A | |
rmdir -p Test_A/CC/DD/ |
# rm
# 命令格式
rm [-option] file, file2, file3, ... / FolderName |
# 功能
rm
命令是 remove 的简写,它的功能是删除一个或多个文件或目录.
被 rm
命令删除的文件不会被放入回收站,直接永久删除。所谓的删库跑路这个梗中的命令就职这个.-option
:
-i
: 删除文件或文件夹前逐一确认-r
: 将删除目录及其子目录或文件一并删除-f
: 忽略不存在的文件,直接删除,不进行询问
# 例子
rm 1.c | |
rm -i 2.c | |
rm -rf CC |
测试时一定要小心,不要误删
# man
# 命令格式
man [要查询的内容] |
# 功能
用于查询之类用法。我们可以记不住任何指令的参数,但是不能不熟悉这个 man
man man
可以查看 man
自己的使用方法
可以查询到的内容就在框内
# 软件包管理
# deb
包、 dpkg
和 apt
在 Debian 和 Ubuntu 等 Linux 发行版本中,通常使用 deb
形式的软件包.
若下载了 deb 软件包,可使用如下命令进行安装,其中 xxxx.deb 为要安装的软件包的名字
sudo dpkg -i xxxx.deb |
命令中的 dpkg
(Debian Packager) 是 Debian 专门开发的包管理工具,它可以用来安装、更新和移除软件,安装时它需要使用 deb
类型的软件包.
dpkg
是一个底层的包管理工具,主要用于对已下载到本地和已经安装的软件包进行管理.
在它之上的 apt
(Advanced Package Tool) 包管理工具,其功能则更加丰富和方便使用,使用 apt
能够自动从互联网的软件仓
库中搜索、安装、升级、卸载软件,它会咨询软件仓库,并能安装软件时的模块及依赖问题.
sudo apt-get install 软件名
简单来说, deb
是软件包, dpkg
是安装工具, apt
是自动安装工具.
# apt 工具的使用
Ubuntu 的管理工具包为 apt
工具, apt
工具包含如下内容:
- apt-get 工具:负责软件包的安装,卸载,更新
- apt-cache 工具:查询软件包相关信息
- apt-config 工具:用于适配所有 apt 工具的使用
# 安装软件
sudo apt-get install 软件包名
# 卸载软件
sudo apt-get remove 软件包名
# 直接使用 apt
前面说过 apt
有很多功能,但是我们很少使用,所以官方推出了 apt
命令.
使用 apt
集众家之所长,而且在安装和卸载 软件时会有进度条显示
命令 | 作用 |
---|---|
apt install | 安装指定的软件包 |
apt remove | 卸载指定的软件包 |
apt update | 更新源列表 |
apt search | 根据关键字搜索对应的软件包 |
apt show | 显示软件包的相关信息 |
apt list | 根据名称列出所有软件包 |
# 编辑器
# gedit
gedit
是在 Ubuntu 系统下的地位就如同 Windows 系统下的记事本软件,它的功能不算强大,但因为是系统自
带的,说不上什么时候我们就会图方便使用它用来轻度编辑和记录一些内容,这要比 Vi
或者 Vim
上手更为容易
# vscode
这个时 微软公司推出 轻量级编辑器,堪称微软最大的良心之作,居家旅程必备神器.
# vim
这是 在 linux 最久远的编辑器,可以放弃鼠标来实现各种快速编码.
在这里就不详细列举相关命令了,感兴趣的可以点击这里自行查看传送门
大道五十,天衍四十九,人遁其一!