在上一篇文章中我们已经谈过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 删除目录及其下所有文件,主要不要不小心删除了根目录这样会导致系统损坏示例# 删除普通⽂件 [whbbite-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 [whbbite-alicloud test]$ rm file.txt [whbbite-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 # 删除⽬录⽂件 [whbbite-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 [whbbite-alicloud test]$ rm dir rm: cannot remove ‘dir’: Is a directory [whbbite-alicloud test]$ rm -r dir [whbbite-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 # 删除普通⽂件前询问 [whbbite-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 [whbbite-alicloud test]$ rm -i newFile.txt rm: remove regular empty file ‘newFile.txt’? y [whbbite-alicloud test]$ ll total 4 drwxrwxr-x 3 whb whb 4096 Jan 11 15:26 path1 [whbbite-alicloud test]$ ll total 4 drwxrwxr-x 3 whb whb 4096 Jan 11 15:26 path1 # 删除⽬录前询问 [whbbite-alicloud test]$ mkdir -p d/d/d/d [whbbite-alicloud test]$ tree d d └── d └── d └── d 3 directories, 0 files [whbbite-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 [whbbite-alicloud test]$ ll total 0 # 递归强制删除⾮空⽬录 [whbbite-alicloud test]$ tree path1/ path1/ ├── myfile.txt └── path2 └── myfile.txt 1 directory, 2 files [whbbite-alicloud test]$ rm -f path1 rm: cannot remove ‘path1’: Is a directory [whbbite-alicloud test]$ rm -rf path1 [whbbite-alicloud test]$ ll total 03.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使用,如ifconfig9 略示例[whbbite-alicloud test]$ man printf # 查看printf指令(没错printf也是⼀个指 令) [whbbite-alicloud test]$ man fork # 查看系统调⽤默认没有这个指令man就⾃动 去2号⼿册查找 [whbbite-alicloud test]$ man 2 frok # 查看系统调⽤ [whbbite-alicloud test]$ man 3 printf # 查看C库函数 [whbbite-alicloud test]$ man 7 signal # 查看变量 [whbbite-alicloud test]$ man 7 environ [whbbite-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 treeUbuntu下载指令apt install -y tree使用示例可以直接使用 tree那么就是展示当前目录结构与使用tree .是一样的)或者后面接指定路径。4.2 whoami指令使用该指令可以得到用户名在下篇文章中我们将会继续对Linux指令