Note

Linux从入门到入坟_01

2022年08月04日 Thursday · 10 min read

学习之前,最好你电脑上有安装任意一个Linux操作系统。

除了Arch Linux和 Debian以外,市面上的Linux基本上都是图形化安装界面,很容易安装。

或可以在虚拟机中安装,参考教程:

在Vmware16 Pro中安装Linux

Linux系统分支:

我们可以在用终端处输入以下命令来查看系统分支:

tree /

其中,这种命令叫做bash命令来自于英文词组“Bourne shell”的缩写,其功能是命令终端解释器。

bash是绝大多数Linux系统默认的命令终端解释器,能够处理用户所输入的命令,以及执行指定的Shell脚本文件。

  • 提示:Windows下自带的Power shell也可以执行部分Linux命令

终端的打开

在图形化Linux界面,在任意目录下右击鼠标,都可以在弹出的选项卡里面选择打开终端。

或着ctrl+alt+t快捷键打开,Linux系统不同,快捷键也不相同!

重要快捷键

学习命令行之前,先要掌握几个十分有用、必需掌握的小技巧:

[Tab]

使用Tab键来进行命令补全Tab键一般是在字母Q旁边,这个技巧给你带来的最大的好处就是当你忘记某个命令的全称时可以只输入它的开头的一部分,然后按下Tab键就可以得到提示或者帮助完成:

1

当然不止补全命令补全目录补全命令参数都是没问题的:

1
[Ctrl+c]

在Linux命令行中执行了死循环或无意输入了一个不知道的命令,又或者错误地使用了一个命令,导致在终端里出现了你无法预料的情况。

  • 例如,屏幕上只有光标在闪烁却无法继续输入命令,或者不停地输出一大堆你不想要的结果。
  • 使用Ctrl+c键来强行终止当前程序(你可以放心它并不会使终端退出)。

历史输入命令

使用键盘上的方向上键 恢复你之前输入过的命令。

使用通配符

通配符是一种特殊语句,主要有星号(*)和问号(?),用来对字符串进行模糊匹配(比如文件名、参数名)。

# 进入home目录
cd ~
# 显示当前目录下的txt文件
ls *.txt
# 显示当前目录下名字是一个字的txt文件
ls ?.txt
# 显示当前目录下名字是两个字的txt文件
ls ??.txt

Shell 常用通配符:

字符 意义
* 匹配 0 或多个字符
? 匹配任意一个字符
[list] 匹配 list 中的任意单一字符
[^list] 匹配 除 list 中的任意单一字符以外的字符
[c1-c2] 匹配 c1-c2 中的任意单一字符 如:[0-9][a-z]
{string1,string2,...} 匹配 string1 或 string2 (或更多)其一字符串
{c1..c2} 匹配 c1-c2 中全部字符 如{1..10}

在命令行中获取帮助

在 Linux 环境中,如果你遇到困难,可以使用**man命令,它是Manual pages的缩写或者help**命令。

比如你想查看 cd 这个命令本身的使用方式,你可以输入:

man cd

通常情况下,man 手册里面的内容都是英文的,所以翻译软件可以说是必备的

man 手册的内容很多,涉及了 Linux 使用过程中的方方面面。为了便于查找,man 手册被进行了分册(分区段)处理,在 Research UNIX、BSD、OS X 和 Linux 中,手册通常被分为 8 个区段,安排如下:

区段 说明
1 一般命令
2 系统调用
3 库函数,涵盖了 C 标准函数库
4 特殊文件(通常是/dev 中的设备)和驱动程序
5 文件格式和约定
6 游戏和屏保
7 杂项
8 系统管理命令和守护进程

要查看相应区段的内容,就在 man 后面加上相应区段的数字即可,如:

man 1 ls

会显示第一区段中的ls命令 man 页面。

ls --help
# 也是可以获取此命令的一般用法

在 Linux 系统里, root 账户拥有整个系统至高无上的权限,比如新建和添加用户。

root 权限,系统权限的一种,与 SYSTEM 权限可以理解成一个概念,但高于 Administrator 权限,root 是 Linux 和 UNIX 系统中的超级管理员用户帐户,该帐户拥有整个系统至高无上的权力,所有对象他都可以操作,所以很多黑客在入侵系统的时候,都要把权限提升到 root 权限,这个操作等同于在 Windows 下就是将新建的非法帐户添加到 Administrators 用户组。更比如安卓操作系统中(安卓系统是基于 Linux 内核)获得 root 权限之后就意味着已经获得了手机的最高权限,这时候你可以对手机中的任何文件(包括系统文件)执行所有增、删、改、查的操作。

sudo su

可以使当前用户暂时获得root权限

  • 在root情况下,你的任何操作都可能带来风险,比如,当你没有root权限时候你执行rm -rf /*虽然也会删除一些系统文件,但是只会删除一点,系统是任然可以正常运行的,如果你获得root权限,再执行该命令,则系统文件将会全部删除,系统将会无法运行,所有资料丢失,这就是常听到的,删库

使用较长格式(详细信息)列出文件:

ls -l


显示除了 .(当前目录)和 ..(上一级目录)之外的所有文件,包括隐藏文件(Linux 下以 . 开头的文件为隐藏文件)。

ls -a

当然,我们也可以同时使用 -a-l 几个参数:

ls -al

在Linux中,最最重要的就是命令,这就包含了 2 个过程,输入和输出

  • 输入:输入当然就是打开终端,然后按键盘输入,然后按回车,输入格式一般就是这类的
#创建一个名为 file 的文件,touch是一个命令
touch file

#进入一个目录,cd是一个命令
cd /etc/

#查看当前所在目录
pwd
  • 输出:输出会返回你想要的结果,比如你要看什么文件,就会返回文件的内容。
  • 如果只是执行,执行失败会告诉你哪里错了,如果执行成功那么会没有输出,因为Linux的哲学就是:没有结果就是最好的结果。

使用 cd 命令可以切换目录,在 Linux 里面使用 . 表示当前目录,.. 表示上一级目录(. 开头的文件都是隐藏文件,所以这两个目录必然也是隐藏的,你可以使用 ls -a 命令查看隐藏文件),- 表示上一次所在目录,~ 通常表示当前用户的 home 目录。使用 pwd 命令可以获取当前所在路径(绝对路径)。

进入上一级目录:

cd ..

进入你的 home 目录:

cd ~
# 或者 cd /home/<你的用户名>

使用 pwd 获取当前路径:

pwd

绝对路径

关于绝对路径,简单地说就是以根" / "目录为起点的完整路径,以你所要到的目录为终点,表现形式如: /usr/local/bin,表示根目录下的 usr 目录中的 local 目录中的 bin 目录。

相对路径

相对路径,也就是相对于你当前的目录的路径,相对路径是以当前目录 . 为起点,以你所要到的目录为终点,

  • 表现形式如: usr/local/bin (这里假设你当前目录为根目录)。你可能会看到,表示相对路径实际并没有加上表示当前目录的那个 . ,而是直接以目录名开头,因为这个 usr 目录为 / 目录下的子目录,是可以省略这个 . 的(以后会讲到一个类似不能省略的情况);
  • 如果是当前目录的上一级目录,则需要使用 .. ,比如你当前目录为 /home/shiyanlou 目录下,根目录就应该表示为 ../../ ,表示上一级目录( home 目录)的上一级目录( / 目录)。

下面我们以Linux的 home 目录为起点,分别以绝对路径和相对路径的方式进入 /usr/local/bin 目录:

# 绝对路径
cd /usr/local/bin
# 相对路径
cd ../../usr/local/bin
  • 进入一个目录,可以使用绝对路径也可以使用相对路径,那我们应该在什么时候选择正确的方式进入某个目录呢。

  • 完全就是凭直觉嘛,你觉得怎样方便就使用哪一个,而不用特意只使用某一种。

  • 比如假设我当前在 /usr/local/bin 目录,我想进入上一级的 local 目录你说是使用 cd .. 方便还是 cd /usr/local 方便?而如果要进入的是 usr 目录,那么 cd /usr ,就比 cd ../.. 方便一点了。

提示:在进行目录切换的过程中请多使用 Tab 键自动补全,可避免输入错误,连续按两次 Tab 可以显示全部候选结果。

新建空白文件

使用 touch 命令创建空白文件, touch 命令,主要作用是来更改已有文件的时间戳的(比如,最近访问时间,最近修改时间),但其在不加任何参数的情况下,只指定一个文件名,则可以创建一个指定文件名的空白文件(不会覆盖已有同名文件)。

创建名为 test 的空白文件:

touch test

新建目录(文件夹)

使用 mkdir(make directories)命令可以创建一个空目录(文件夹),也可同时指定创建目录的权限属性。

创建名为“ mydir ”的空目录:

mkdir mydir

使用 -p 参数,同时创建一个多级目录(这在安装软件、配置安装路径时非常有用):

mkdir -p father/son/grandson

这里使用的路径是相对路径,代表在当前目录下生成,当然我们直接以绝对路径的方式表示也是可以的。

还有一点需要注意的是,若当前目录已经创建了一个 test 文件(非文件夹),再使用 mkdir test 新建同名的文件夹,系统会报错文件已存在。


这符合 Linux 一切皆文件的理念。