【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指令
查看文件时间:使用stat指令
修改访问文件时间:
修改文件修改时间:
3.4.1 stat指令
我们可以看到使用stat指令我们可以看到与文件操作有关的时间:
其中Change时间我们会在后面的章节中提到。
3.5 mkdir指令
-p/--parents: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录
示例:
创建一个目录:
使用-p递归建立指定路径的目录:
3.6 rmdir 指令 && rm 指令
删除路径:
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 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使用,如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 treeUbuntu下载指令
apt install -y tree使用示例:
可以直接使用 tree,那么就是展示当前目录结构(与使用tree .是一样的)或者后面接指定路径。
4.2 whoami指令
使用该指令可以得到用户名
在下篇文章中,我们将会继续对Linux指令
