【Linux系统篇(一)】Linux入门基础指令(一)

【Linux系统篇(一)】Linux入门基础指令(一)

在上一篇文章中,我们已经谈过Linux的历史以及如何使用云服务器配置Linux环境和使用Xshell来使用Linux,那么我们在本篇文章中将要开始学习Linux的一些基础指令。

目录

一、关于图形化界面

二、Linux文件以及目录结构

2.1 怎么理解文件

2.2 Linux的文件结构

2.3 Linux的目录结构

2.4 路径

三、简单的指令学习

3.1 pwd 命令

3.2 ls指令

-l 列出文件的详细信息

-a 列出目录下的所有文件

指令选项的组合使用方法

ls -a -l ==ll(重命名)

3.3 cd指令

3.4 touch指令

3.4.1 stat指令

3.5 mkdir指令

3.6 rmdir 指令 && rm 指令

3.7 man 指令

3.8 cp 指令

四、一些指令的补充

4.1 tree指令

Centos 7下载指令:

Ubuntu下载指令

4.2 whoami指令


一、关于图形化界面

在操作系统发展的早期都是不带图形化界面的,即都是黑屏终端+指令操作,随着时代的发展,操作系统拥有了两个分支:一个是面向大众,另一个是面向程序员等专业用户。前者为了方便大众的使用,于是使用带图形界面的操作系统就像是windows系统;后者就是我们现在学习的Linux系统,虽然现在的Linux系统也有很多漂亮的桌面但它的灵魂一直留存在命令行界面里,服务器上的 Linux 更是几乎只有黑底白字的终端。

由于Linux没有图形化界面,我们需要借助一些指令进行操作。其实命令的本质就是文件,直观上来看就是指令==可执行文件==我们写的程序

二、Linux文件以及目录结构

在接触下文的指令之前我们有必要先开始了解一下Linux的文件系统以及目录结构

2.1 怎么理解文件

在Linux中,几乎所有东西都是以文件形式存在的。如果我们建立一个空文件,该文件也会在磁盘中占据空间,因为文件=文件内容+属性,而我们学习文件就是对文件的内容以及属性进行操作。

我们常用后缀来标识文件的属性,像是文本文件(.txt)等常被叫做普通文件,如果不带后缀名那么就是目录即文件夹

一些前备知识:在Linux中使用 / 作为路径分隔符而win中使用 \ 作为分隔符

2.2 Linux的文件结构

Linux 的文件系统是一棵多叉树,树根就是根目录 /。所有的文件和目录都直接或间接地挂载在这个根下,所有的存储设备都是通过挂载到一个目录来作为树的一个分支。这种组织方式被称为文件系统层次结构标准,它规定了各个目录应该存放什么样的内容。

Linux系统中,磁盘上的文件和目录被组成⼀棵目录树,每个节点都是目录或文件,其中普通文件一定是目录树的叶子节点,目录可能是叶子(空目录), 也可能是父亲节点


2.3 Linux的目录结构

我们至少需要熟悉以下几个重要的子目录:

/bin:存放最基本的用户命令,比如 ls、cp、cat 等,这些是系统启动和单用户模式都要用到的。
/home:普通用户的家目录所在地。每新建一个用户,系统通常会在 /home 下创建一个与用户名同名的文件夹作为他的私人空间。
/etc:系统配置文件集中地。比如修改网络、设置开机启动服务,往往就是改这里的某个文件。
/usr:系统软件资源的存放地,大量的用户级应用程序、库文件、文档都在这里。/usr/bin 放的就是更多的用户命令。
/root:超级用户(root)的家目录。这个目录比较特殊,不放在 /home 下,因为 root 的权限太大,需要单独保管。

2.4 路径

Linux采用树状组织方式,都是为了保证快速定位查找到指定的文件,而定位文件就需要具有唯⼀性的方案来进行定位文件。树中任何一个节点,都只有一个父节点,所以,从根目录开始,定位指定文件,路径具有唯一性。

绝对路径:以根节点作为起始节点,到达目的文件的整个路径就是绝对路径

相对路径:不以根节点作为起始节点,而是从相对于当前目录的位置对目的文件进行定位

绝对路径⼀般不会随着用户的路径变化而丧失唯⼀性,⼀般在特定服务的配置⽂件中经常被使用
相对路径因为它的便捷性,⼀般在命令行中使用较多(因为在Linux中.可以代表当前目录 ..表示当前目录的前一级目录)

三、简单的指令学习

在开始之前,需要先说明一个通用的命令行格式:

命令名 [选项...] [参数...]

选项用来调整命令的行为,就是说一个命令通过命令选线可以实现多个不同功能,通常以-加一个字母(如-l)或者--加完整单词(如--all)的形式出现。参数则是命令要操作的对象,比如文件名、目录名等。方括号[]表示这部分可以省略。

3.1 pwd 命令

语法:pwd

功能:显示用户当前所在的目录

常用选项:

举例:

3.2 ls指令

语法:ls [选项] [目录或文件]

功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信 息。

示例:

snap目录是系统默认安装的目录,我们使用该命令得到/root 目录下的所有子目录以及文件

常用选项:

-l 列出文件的详细信息

需要注意的是,在使用指令选项之前需要敲出空格

注意,上面使用d开头的是目录,而以-开头的是普通文件

-a 列出目录下的所有文件

所有文件就包含了以. 开头的隐藏文件

我们在前面也已经提到过,任何目录都有即便是空目录都会有.以及..两个目录文件

指令选项的组合使用方法

总结:两个指令选项可以只使用一个‘-’,如果分开使用,两个指令选项之间一定要留有空格,总之要留有敲空格的习惯。

ls -a -l ==ll(重命名)

就像人有外号一样,指令也有别名,名称不同但是可以实现相同的功能

同时我们发现,使用ll,对于目录它在后面还会加上/。

ls指令还存在很多的指令选项,我们这里仅介绍了常用的,如果有想了解的请自行查阅。

3.3 cd指令

作用:利用cd指令可以让用户转换当前目录到指定目录

示例:

使用.以及..的小技巧:

. 可以代表当前目录,.. 代表上一级目录,那我们就可以使用cd ..实现返回上一级目录的操作

3.4 touch指令

语法:touch [选项]...⽂件...
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建⼀个不存在的文件。
常用选项:
-a : change only the access time(仅修改访问时间)
-c : change only the modification time(仅修改修改时间)
示例:
新建一个文件:

查看文件时间:使用stat指令

修改访问文件时间:

修改文件修改时间:

3.4.1 stat指令

我们可以看到使用stat指令我们可以看到与文件操作有关的时间:

其中Change时间我们会在后面的章节中提到。

3.5 mkdir指令

语法:mkdir [选项] dirname...
功能:在当前目录下创建一个名为 “dirname”的目录
常用选项:

-p/--parents: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录

示例:

创建一个目录:

使用-p递归建立指定路径的目录:

3.6 rmdir 指令 && rm 指令

rmdir是⼀个与mkdir相对应的命令,mkdir是建立目录,而rmdir是删除目录
语法:rmdir [-p] [dirName]
适⽤对象:具有当前目录操作权限的所有使⽤者
功能:删除空目录
常⽤选项:
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录⼀起删除。
举例:
删除空目录:

删除路径:

rm 命令可以同时删除文件或目录

语法:rm [-f-i-r-v] [dirName/dir]

适用对象:所有使用者

功能:删除文件或目录

常用选项:

-f 即使⽂件属性为只读(即写保护),亦直接删除

-i 删除前逐⼀询问确认

-r 删除目录及其下所有文件,主要不要不小心删除了根目录,这样会导致系统损坏

示例

# 删除普通⽂件 [whb@bite-alicloud test]$ ll total 8 drwxrwxr-x 2 whb whb 4096 Jan 11 14:22 dir -rw-rw-r-- 1 whb whb 0 Jan 11 14:22 file.txt -rw-rw-r-- 1 whb whb 0 Jan 11 15:09 newFile.txt drwxrwxr-x 3 whb whb 4096 Jan 11 15:26 path1 [whb@bite-alicloud test]$ rm file.txt [whb@bite-alicloud test]$ ll total 8 drwxrwxr-x 2 whb whb 4096 Jan 11 14:22 dir -rw-rw-r-- 1 whb whb 0 Jan 11 15:09 newFile.txt drwxrwxr-x 3 whb whb 4096 Jan 11 15:26 path1 # 删除⽬录⽂件 [whb@bite-alicloud test]$ ll total 8 drwxrwxr-x 2 whb whb 4096 Jan 11 14:22 dir -rw-rw-r-- 1 whb whb 0 Jan 11 15:09 newFile.txt drwxrwxr-x 3 whb whb 4096 Jan 11 15:26 path1 [whb@bite-alicloud test]$ rm dir rm: cannot remove ‘dir’: Is a directory [whb@bite-alicloud test]$ rm -r dir [whb@bite-alicloud test]$ ll total 4 -rw-rw-r-- 1 whb whb 0 Jan 11 15:09 newFile.txt drwxrwxr-x 3 whb whb 4096 Jan 11 15:26 path1 # 删除普通⽂件前询问 [whb@bite-alicloud test]$ ll total 4 -rw-rw-r-- 1 whb whb 0 Jan 11 15:09 newFile.txt drwxrwxr-x 3 whb whb 4096 Jan 11 15:26 path1 [whb@bite-alicloud test]$ rm -i newFile.txt rm: remove regular empty file ‘newFile.txt’? y [whb@bite-alicloud test]$ ll total 4 drwxrwxr-x 3 whb whb 4096 Jan 11 15:26 path1 [whb@bite-alicloud test]$ ll total 4 drwxrwxr-x 3 whb whb 4096 Jan 11 15:26 path1 # 删除⽬录前询问 [whb@bite-alicloud test]$ mkdir -p d/d/d/d [whb@bite-alicloud test]$ tree d d └── d └── d └── d 3 directories, 0 files [whb@bite-alicloud test]$ rm -ri d rm: descend into directory ‘d’? y rm: descend into directory ‘d/d’? y rm: descend into directory ‘d/d/d’? y rm: remove directory ‘d/d/d/d’? y rm: remove directory ‘d/d/d’? y rm: remove directory ‘d/d’? y rm: remove directory ‘d’? y [whb@bite-alicloud test]$ ll total 0 # 递归强制删除⾮空⽬录 [whb@bite-alicloud test]$ tree path1/ path1/ ├── myfile.txt └── path2 └── myfile.txt 1 directory, 2 files [whb@bite-alicloud test]$ rm -f path1 rm: cannot remove ‘path1’: Is a directory [whb@bite-alicloud test]$ rm -rf path1 [whb@bite-alicloud test]$ ll total 0

3.7 man 指令

Linux的命令有很多参数,我们不可能全记住,可以通过查看联机手册获取帮助

语法:man [选项]命令

常用选项

-k 根据关键字搜索联机帮助

num 只在第num章节查找

-a 将所有章节的都显示出来,比如 man printf 它缺省从第⼀章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕

解释⼀下:man手册分为9章(不同系统可能会有差别)

1 是普通的命令

2 是系统调⽤,如open,write之类的(通过这个,至少可以很方便的查到调⽤这个函数,需要加什么 头文件)

3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件

4 略

5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义

6 是给游戏留的,由各个游戏自己i定义

7 是附件还有⼀些变量,比如像environ这种全局变量在这⾥就有说明

8 是系统管理用的命令,这些命令只能由root使用,如ifconfig

9 略

示例:

[whb@bite-alicloud test]$ man printf # 查看printf指令(没错,printf也是⼀个指 令) [whb@bite-alicloud test]$ man fork # 查看系统调⽤,默认没有这个指令,man就⾃动 去2号⼿册查找 [whb@bite-alicloud test]$ man 2 frok # 查看系统调⽤ [whb@bite-alicloud test]$ man 3 printf # 查看C库函数 [whb@bite-alicloud test]$ man 7 signal # 查看变量 [whb@bite-alicloud test]$ man 7 environ [whb@bite-alicloud test]$ man man # 查看man⼿册⾃⼰

3.8 cp 指令

语法:cp [选项]源⽂件或⽬录 ⽬标文件或⽬录

功能: 复制文件或⽬录

说明:

cp指令用于复制文件或⽬录,如同时指定两个以上的文件或目录,且最后的目的地是⼀个已经存在的⽬录,则它会把前⾯指定的所有⽂件或⽬录复制到此⽬录中

cp 拷贝普通文件时,注意同一目录中不能存在同名文件 使用cp可以指定将该文件拷贝到对应目录中,如果没有写出拷贝后的文件名那么就会生成与该文件相同的名字

拷贝目录不能向上面一样操作 还需要使用 -r 即 cp -r 目录名1 目录名2,如果名录2里面已经存在目录,那么就会把整个目录1拷贝到目录2中

常用选项

-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在

-i 或 --interactive 覆盖文件之前先询问用户

-r 递归处理,将指定目录下的文件与子目录⼀并处理。若源文件或目录的形态,不属于目录或符号链接,则⼀律视为普通文件处理

四、一些指令的补充

4.1 tree指令

我们在上面的实例中用到的大量的tree指令,可以知道tree指令可以让目录结构以树的形式展示

有些版本的系统可能没有安装,下面是各版本的安装代码:

Centos 7下载指令:
yum install -y tree

Ubuntu下载指令
apt install -y tree

使用示例:

可以直接使用 tree,那么就是展示当前目录结构(与使用tree .是一样的)或者后面接指定路径。

4.2 whoami指令

使用该指令可以得到用户名

在下篇文章中,我们将会继续对Linux指令