目录

Linux 基础命令

提示:面向萌新,大佬勿喷

刚入门Linux难免会觉得很麻烦,因为不知道如何使用命令去操作,这样的话在Linux系统是寸步难行的,但是学会了一些基础命令以后就能无压力的操作了,想不想学会Linux?那就让我们从简单的文件操作开始吧。

如何使用命令行

如果你的发行版自带图形界面的话,可以从图形界面的菜单中找到一个叫 “终端” 的东西,打开它,就可以使用命令了。如果你的发行版不带图形界面,那么在tty登录用户以后就可以直接使用了。

注意,这个终端不等于DOS也不等于cmd,它和windows是没有办毛钱关系的,是另一种东西。

cd命令

如果你之前用过DOS或者经常使用windows的cmd,你就会知道这个命令了,这个命令在大多数操作系统中都有。

cd命令是”change directory”的缩写,也就是改变你当前所在的目录,后面可以加相对路径,也可以加上绝对路径。

简单的理解,就是进入一个文件夹。

用法

测试目录:/a/b/c

进入某个目录:

绝对路径:指定一个完整的路径,与自己当前所在的目录无关

1
2
3
[weepingdogel@localhost ~]$ cd /a/b/c # 进入/a/b/c这个路径中的目录c
# 按下回车后
[weepingdogel@localhost c]$

相对路径:指定当前目录上级目录下的其他目录或下级中的一个目录 指定下一级(常用)

1
2
3
[weepingdogel@localhost b]$ cd ./c # 进入当前所在/a/b目录下面的目录c
# 按下回车后
[weepingdogel@localhost c]$

指定上一级

1
2
3
[weepingdogel@localhost b]$ cd ../xxx #进入当前所在目录/a/b中的/a目录下的其他目录
# 按下回车后
[weepingdogel@localhost xxx]$

退出某个目录:

有人可能不知道,进入了目录以后怎么退出来,那么这个时候就要用到cd ..命令了。

返回上一级

1
2
3
[weepingdogel@localhost c]$ cd .. # 从当前所在的目录/a/b/c返回上一级的目录/a/b
# 按下回车后
[weepingdogel@localhost b]$

返回上两级

1
2
3
[weepingdogel@localhost c]$ cd ../.. # 从当前所在的目录/a/b/c返回上两级的目录/a
# 按下回车后
[weepingdogel@localhost a]$

pwd命令

这个命令是用来辅助上面的cd命令的,它的作用是查看当前所在的绝对路径。

用法

1
2
3
[weepingdogel@localhost ~]$ pwd
# 按下回车后
/home/weepingdogel

假如当前所在目录为/a/b/c

1
2
3
[weepingdogel@localhost c]$ pwd
# 按下回车后
/a/b/c

虽然只有一个作用,但是却很重要,因为新手每天都会用到,bash或者部分zsh主题是不会显示绝对路就的,如果你不知道你当前在操作哪个目录,你就得用上pwd这个命令了。

ls命令

这个命令相当于windows中的dir,作用是显示当前目录下的所有的文件和目录。

用法

测试目录/tmp/a/b/c

直接查看

1
2
3
4
[weepingdogel@localhost c]$ ls # 查看当前目录下面的文件
# 按下回车后
223333  文本.txt  test  wiaori # 被列出的文件
[weepingdogel@localhost c]$

列表式查看,参数-l

1
2
3
4
5
6
7
8
[weepingdogel@localhost c]$ ls -l
#按下回车后
总用量 4
-rw-r--r-- 1 weepingdogel weepingdogel  0  8月  5 17:52 223333
-rw-r--r-- 1 weepingdogel weepingdogel 11  8月  5 17:38 文本.txt
drwxr-xr-x 2 weepingdogel weepingdogel 40  8月  5 17:52 test
-rw-r--r-- 1 weepingdogel weepingdogel  0  8月  5 17:52 wiaori
[weepingdogel@localhost c]$

易读列表查看,参数-lh

1
2
3
4
5
6
7
8
[weepingdogel@localhost c]$ ls -lh
# 按下回车后
总用量 4.0K
-rw-r--r-- 1 weepingdogel weepingdogel  0  8月  5 17:52 223333
-rw-r--r-- 1 weepingdogel weepingdogel 11  8月  5 17:38 文本.txt
drwxr-xr-x 2 weepingdogel weepingdogel 40  8月  5 17:52 test
-rw-r--r-- 1 weepingdogel weepingdogel  0  8月  5 17:52 wiaori
[weepingdogel@localhost c]$

按时间排序的易读列表查看,参数-lh –sort=time

1
2
3
4
5
6
7
8
[weepingdogel@localhost c]$ ls -lh --sort=time
# 按下回车后
总用量 4.0K
drwxr-xr-x 2 weepingdogel weepingdogel 40  8月  5 17:52 test
-rw-r--r-- 1 weepingdogel weepingdogel  0  8月  5 17:52 wiaori
-rw-r--r-- 1 weepingdogel weepingdogel  0  8月  5 17:52 223333
-rw-r--r-- 1 weepingdogel weepingdogel 11  8月  5 17:38 文本.txt
[weepingdogel@localhost c]$

按文件大小排序的易读列表查看,参数-lh –sort=size

1
2
3
4
5
6
7
8
[weepingdogel@localhost c]$ ls -lh --sort=size
# 按下回车后
总用量 4.0K
drwxr-xr-x 2 weepingdogel weepingdogel 40  8月  5 17:52 test
-rw-r--r-- 1 weepingdogel weepingdogel 11  8月  5 17:38 文本.txt
-rw-r--r-- 1 weepingdogel weepingdogel  0  8月  5 17:52 223333
-rw-r--r-- 1 weepingdogel weepingdogel  0  8月  5 17:52 wiaori
[weepingdogel@localhost c]$

更多用法等你自己去摸索了

文件复制与移动

mv命令

这个命令是英文单词move的缩写。

它的作用主要是移动某些文件到指定的位置,你可以指定绝对路径,但是如果离得比较近的话就可以使用相对路径。

用法

绝对路径用法:

比如我们把 “目录c” 下面的 “文本.txt” 移动到/tmp/a/下面

1
2
3
[weepingdogel@localhost c]$ mv /tmp/a/b/c/文本.txt /tmp/a/
# 按下回车后,文件就被移动了
[weepingdogel@localhost c]$

接下来我们切换到/tmp/a/下面看看吧

1
2
3
4
[weepingdogel@localhost c]$ cd /tmp/a
[weepingdogel@localhost a]$ ls
文本.txt  b
[weepingdogel@localhost a]$

此时我们就看到了那个 “文本.txt” 被移动到了/tmp/a/下面了。

相对路径用法:

那么我们用另一种方法把这个文件移回去吧,首先我们还在这个/tmp/a/下面,那么命令如下

1
2
3
[weepingdogel@localhost a]$ mv ./文本.txt ./b/c/
# 按下回车后,文件就被移动了
[weepingdogel@localhost a]$

接下来我们回到/tmp/a/b/c/下面看看吧。

1
2
3
4
[weepingdogel@localhost a]$ cd ./b/c
[weepingdogel@localhost c]$ ls
223333  文本.txt  test  wiaori
[weepingdogel@localhost c]$

看到了没有,它又回来了。

cp命令

哈哈,这个命令也不是那个cp的意思,它是 “copy” 的缩写,复制的意思。

顾名思义,它的作用就是把一个文件复制到另一个地方。它同样有指定绝对路径和相对路径的两种用法。来尝试一下?

用法

绝对路径:

我们来试试把/tmp/a/b/c/文本.txt这个文件复制到/tmp/a/下面

1
2
3
4
5
6
7
8
[weepingdogel@localhost c]$ cp /tmp/a/b/c/文本.txt /tmp/a/
# 按下回车后,文件就被复制了
[weepingdogel@localhost c]$ cd ../.. # 我们来看看它是否被复制成功
[weepingdogel@localhost a]$ ls -lh # 使用ls命令看一下,可见他是被复制成功的,创建日期与上面不一样。
总用量 4.0K
-rw-r--r-- 1 weepingdogel weepingdogel 11  8月  5 18:36 文本.txt
drwxr-xr-x 3 weepingdogel weepingdogel 60  8月  5 17:37 b
[weepingdogel@localhost a]$

注意:此命令如果不使用高级用法是无法复制创建时间和所有者的

相对路径:

嘿嘿,我们尝试给/tmp/a/的每一级目录都复制一份吧。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
[weepingdogel@localhost a]$ cp ./文本.txt ./b/ # 先复制到目录b
[weepingdogel@localhost a]$ cp ./文本.txt ./b/c/ # 复制到目录c
[weepingdogel@localhost a]$ cp ./文本.txt ../ # 复制到/tmp/下面
[weepingdogel@localhost a]$ cd .. # 回到/tmp下面
[weepingdogel@localhost tmp]$ ls -lh # 查看是否复制成功,可见第一个就是该文件
总用量 4.0K
-rw-r--r-- 1 weepingdogel weepingdogel 11  8月  5 18:48  文本.txt
drwxr-xr-x 3 weepingdogel weepingdogel 80  8月  5 18:36  a
# 接下来一级一级往下看
[weepingdogel@localhost tmp]$ ls -lh ./a
总用量 4.0K
-rw-r--r-- 1 weepingdogel weepingdogel 11  8月  5 18:36 文本.txt
drwxr-xr-x 3 weepingdogel weepingdogel 80  8月  5 18:45 b
[weepingdogel@localhost tmp]$ ls -lh ./a/b
-rw-r--r-- 1 weepingdogel weepingdogel  11  8月  5 18:45 文本.txt
drwxr-xr-x 3 weepingdogel weepingdogel 120  8月  5 18:25 c
[weepingdogel@localhost tmp]$ ls -lh ./a/b/c
总用量 4.0K
-rw-r--r-- 1 weepingdogel weepingdogel  0  8月  5 17:52 223333
-rw-r--r-- 1 weepingdogel weepingdogel 11  8月  5 18:47 文本.txt
drwxr-xr-x 2 weepingdogel weepingdogel 40  8月  5 17:52 test
-rw-r--r-- 1 weepingdogel weepingdogel  0  8月  5 17:52 wiaori

可见,复制是成功的。

注意:如果要复制目录,请在指定目录前加上参数-r,否则将无法复制

mkdir命令

这个命令是 “make directory” 的缩写,意为创建一个目录它一般情况下有两种用法

  1. 一般创建,直接在已存在的绝对路径或相对路径创建一个目录
  2. 递归创建,创建一连串目录,在创建之前有一级或以上的目录未被创建

同样也是可以指定绝对路径和相对路径的,接下来我就只写出相对路径的示例了,因为方便。

来尝试一下?

用法

一般创建

假设目录/tmp/a/b/c

我们要创建一个目录d

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[weepingdogel@localhost c]$ mkdir ./d # 在/tmp/a/b/c/下面创建一个目录d
# 按下回车之后,目录就创建了,我们可以用ls来检查一下
[weepingdogel@localhost c]$ ls -lh
总用量 4.0K
-rw-r--r-- 1 weepingdogel weepingdogel  0  8月  5 17:52 223333
-rw-r--r-- 1 weepingdogel weepingdogel 11  8月  5 18:47 文本.txt
drwxr-xr-x 2 weepingdogel weepingdogel 40  8月  5 19:07 d
drwxr-xr-x 2 weepingdogel weepingdogel 40  8月  5 17:52 test
-rw-r--r-- 1 weepingdogel weepingdogel  0  8月  5 17:52 wiaori
[weepingdogel@localhost c]$

可见,目录被成功创建了。

递归创建

假设目录/tmp/a/b/c

我们要在当前目录下创建一串目录,比如./go/for/it,此时我们就要加个参数-p

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[weepingdogel@localhost c]$ mkdir -p ./go/fot/it
# 按下回车之后,一串目录就被创建了,接下来我们会一级一级的查看
[weepingdogel@localhost c]$ ls -lh 
总用量 4.0K
-rw-r--r-- 1 weepingdogel weepingdogel  0  8月  5 17:52 223333
-rw-r--r-- 1 weepingdogel weepingdogel 11  8月  5 18:47 文本.txt
drwxr-xr-x 2 weepingdogel weepingdogel 40  8月  5 19:07 d
drwxr-xr-x 3 weepingdogel weepingdogel 60  8月  5 19:14 go
drwxr-xr-x 2 weepingdogel weepingdogel 40  8月  5 17:52 test
-rw-r--r-- 1 weepingdogel weepingdogel  0  8月  5 17:52 wiaori
# 可见我们看见了目录go
[weepingdogel@localhost c]$ cd ./go # 我们试着进入这个目录,可见我们成功进入了目录
[weepingdogel@localhost go]$ ls -lh #继续查看下一级
总用量 0
drwxr-xr-x 3 weepingdogel weepingdogel 60  8月  5 19:14 for
[weepingdogel@localhost go]$ cd ./for #进入目录for
[weepingdogel@localhost for]$ ls -lh # 继续查看下一级
总用量 0
drwxr-xr-x 2 weepingdogel weepingdogel 40  8月  5 19:14 it
[weepingdogel@localhost for]$ cd ./it #接下来我们进入这个目录it,由于it里面是空的,所以就不用ls查看了
[weepingdogel@localhost it]$ pwd #使用pwd查看当前位置
/tmp/a/b/c/go/for/it
[weepingdogel@localhost it]$

可见这一串目录也创建成功了。

rm命令

注意:此命令如果使用不当十分危险

这个命令是 “remove” 的缩写,意为删除,作用上和windows中的del命令差不多,但是用法和参数却有所不同,而且诶这个命令如果使用不当是十分危险的,因为在Linux中,就算是正在被使用的文件也可以被删除,并不会有windows那种保姆级别的”拒绝访问”。

用法

假设目录/tmp/a/b/c

删除文件

我们来尝试删除一下文本.txt

1
2
3
4
5
[weepingdogel@localhost c]$ rm ./文本.txt
# 按下回车之后这个文件就被删除了
[weepingdogel@localhost c]$ ls
223333  d  go  test  wiaori
[weepingdogel@localhost c]$

删除目录

如果你要删除一个目录,比如go,就需要加一个参数-r

1
2
3
4
5
6
7
8
9
[weepingdogel@localhost c]$ rm -r ./go
# 按下回车之后,这个目录就被删除了
[weepingdogel@localhost c]$ ls -lh #查看一下就可以看到,go也不见了
总用量 0
-rw-r--r-- 1 weepingdogel weepingdogel  0  8月  5 17:52 223333
drwxr-xr-x 2 weepingdogel weepingdogel 40  8月  5 19:07 d
drwxr-xr-x 2 weepingdogel weepingdogel 40  8月  5 17:52 test
-rw-r--r-- 1 weepingdogel weepingdogel  0  8月  5 17:52 wiaori
[weepingdogel@localhost c]$

强制删除|危险|

如果你需要强制删除一个文件,则需要调用root权限,并且使用-rf参数。

注意,千万不要用这个命令去删除 /目录,否则你的系统将会自杀

比如我们要删除223333这个文件

1
2
3
4
5
6
7
8
9
[weepingdogel@localhost c]$ sudo rm -rf ./223333
# 按下回车后会要你输入一次密码,输入密码后按回车,这个文件就删除了,Linux的安全保护机制使密码不会显示在屏幕上
[sudo] weepingdogel 的密码:
[weepingdogel@localhost c]$ ls -lh # 查看一下文件的情况,可见这个文件不见了
总用量 0
drwxr-xr-x 2 weepingdogel weepingdogel 40  8月  5 19:07 d
drwxr-xr-x 2 weepingdogel weepingdogel 40  8月  5 17:52 test
-rw-r--r-- 1 weepingdogel weepingdogel  0  8月  5 17:52 wiaori
[weepingdogel@localhost c]$

包管理器

注意:不同发行版之间可能有差异

一般情况下,新手使用的deb系发行版的包管理器是apt

那么这些就是apt常用的用法了

1
[weepingdogel@localhost ~]$ sudo apt update # 更新软件源
1
[weepingdogel@localhost c]$ sudo apt install <包名> # 安装一个软件、软件包
1
[weepingdogel@localhost c]$ sudo apt search <软件名称> # 搜索软件
1
[weepingdogel@localhost c]$ sudo apt upgrade # 升级你已安装的软件,通常消耗时间比较长
1
[weepingdogel@localhost c]$ sudo apt remove <包名> # 卸载软件
1
[weepingdogel@localhost c]$ sudo apt autoremove # 自动处理依赖

如果要安装本地包,则需要使用本地包管理器dpkg,用法如下

1
[weepingdogel@localhost c]$ sudo dpkg -i <包名> # 安装本地包

结语

本期博客中的内容并不是很详细,我已经尽力写得让大多数人能看懂,也许还有少数人无法理解内容,没关系,你可以在下面的评论区提问。

那么,欢迎评论。