在开始之前,你需要做一些准备工作,去阿里买一台服务器,服务器的具体细节其实并不是十分重要,我也不会在这里一步一步的教大家如何去买一个服务器。百度一下足够了,但是还是要贴一下这篇文章中,我所使用的服务器系统及其版本:

版本之间应该不会有太大的差异,但是最好不要选太新的版本,因为还不够稳定。好了,下面我们开始进入正题。

一、目录

作为一台电脑,我们首先要知道的就是其目录的含义及用处,在后面的学习中十分重要,这些都是最基础的概念。我们可以先来看一下,linux中都有哪些目录:

我们看到一共有这些目录,那么下面我们一一解释一下:

  1. /,即系统的根目录。注意,在linux中并没有windows中的C盘、D盘这样的分区,所以“/”就可以简单理解为windows的C盘目录。用于存放系统文件。
  2. /boot,启动目录,启动相关文件。
  3. /dev,设备文件
  4. /etc,配置文件
  5. /home,普通用户的家目录,可以操作
  6. /lib,系统库保存目录
  7. /mnt,移动设备挂载目录
  8. /media,光盘挂载目录
  9. /misc,磁带机挂载目录
  10. /root,超级用户的家目录,可以操作
  11. /tmp,临时目录,可以操作
  12. /proc,正在运行的内核信息映射,主要输出进程信息、内存资源信息和磁盘分区信息等等
  13. /sys,硬件设备的驱动程序信息
  14. /var,变量
  15. /bin,普通的基本命令,如ls、chmod等,一般的用户也都可以使用。
  16. /sbin,基本的系统命令,如shutdown、reboot,用于启动系统,修复系统,只有管理员才可以运行
  17. /usr/bin,后期安装的一些软件的运行脚本
  18. /usr/sbin,放置一些用户安装的系统管理的必备程序

以上只是简单地目录结构,还不够详细,但是目前这些足够了,更细致的内容会在后面的学习中更加深入。

二、命令的基本格式

1、命令提示符

我们先来看个图:

上面的图中实际上有四个关键信息,是这样的[当前登录用户@主机名 当前工作目录]提示符。我们再来看上图:

  1. root,即当前登录用户,
  2. @后面的一串就是主机名(我买的时候就这样啊,可以改的)。
  3. ~即当前用户的家目录,root就是/root,普通用户就是/home/用户名。(这个很简单,可以自己验证一下)
  4. 中括号后面的#就是提示符,超级用户是#,普通用户就是$。

2、命令格式

这个我就简单说下吧,很好理解。命令格式就是这样的:

命令 [选项][参数]

其中当有多个选项的时候,可以写在一起,参数呢有简化和完整写法,是等效的。

3、ls命令

ls [选项][目录或文件],即查询目录中的内容,选项有这些:

  • -a,显示所有文件,包括隐藏文件。
  • -l,显示详细信息。
  • -d,查看文件本身的属性,而非子文件。
  • -h,人性化的方式显示文件大小。
  • -i,显示inode,也就是i节点,每个节点都有ID号。

以上的命令,其实都不复杂,大家自己要去试一下。

那么这里有个需要详细说明一下的内容,就是当我们使用ls -l命令,显示的信息是什么意思,如下图所示:

我们先分解下红框里的内容:

d rwx r-x r-x .   2 root root 6 May 4 19:18 readbook
文件类型和权限 硬链接引用计数 所有者 所属组 文件大小 最后修改时间 文件名

这里面唯一要多解释一下的就是文件类型和权限,表格中的部分我都用空格分割开了,一一解释一下:

  • d,代表文件的类型,可能的值有这些,其中-和d是最常见的类型:

    • -:普通文件,
    • d:目录文件,
    • l:链接文件,
    • b:设备文件,
    • c:字符设备文件,
    • p:管道文件。
  • 后面的三部分其实都由rwx组成:
    • r:read、读、4
    • w:write、写、2
    • x:execute、执行、1
    • 其中-即代表没有对应权限。后面的数字代表着对应的权限数值。分为的三组,按照顺序分别代表着文件所有者、文件所属组、其他用户。
  • 最后的".",代表ACL权限,简单来说就是我们给指定的用户指定目录分配指定的权限,也就是 ACL 权限的分配。

三、文件处理命令

我们先罗列一下常用命令及其含义:

  1. mkdir [目录名],创建目录,

    • -p,允许创建目录及其子目录,比如mkdir -p a/b/c。
  2. cd  [目录名],切换目录。相对路径是根据当前所在目录而言。绝对路径是从根目录开始。TAB可以补全命令或目录。
    • ~,家目录。
    • . ,当前目录
    • .. ,上级目录
  3. pwd,显示当前目录
  4. rmdir  [目录名],删除目录
  5. rm  [文件或目录名],删除文件或者目录。
    • -r,递归删除目录
    • -f,强制删除
    • -rf,递归强制删除所有目录。慎用!
  6. cp  [源文件或目录名] [目标文件或目录名],复制。
    • -r,复制目录,默认是复制文件
    • -p,连带文件属性复制
    • -d,若源文件是链接文件,则复制链接属性
    • -i,可重命名文件,会在复制的时候提示,如果存在同名文件,是否覆盖
    • -a,相当于-rpd。
  7. mv [源文件或目录名] [目标文件或目录名],移动文件或者改名。
  8. ln [源文件] [目标文件],链接命令,生成链接文件。可以理解成windows桌面上的快捷方式。
    • 硬链接,拥有相同的i节点和存储block块,可以看做是同一个文件,可以通过i节点访问,不能跨分区,不能针对目录使用,一般不使用。
    • 软连接,-s即创建软连接,类似windows的快捷方式,软连接拥有自己的i节点和block块,但是数据块中只保存源文件的文件名和i节点号,并没有实际的文件数据。软连接的文件权限都是777,修改任意一个文件,另一个都会改变,删除源文件,软连接不可以使用,软连接源文件必须写绝对路径。

以上,我们已经了解了一些基本的文件处理命令,那么下面,我们基于此来看一些例子:

ok,我们先执行cd /,来到根目录

然后,我们执行mkdir a/b/c

哦吼,他报错了,当然它肯定会报错的,我们回忆一下,好像缺了点什么

是的,我们缺了一个“-p”的选项,好了,目录创建完了,我们进去看看吧。执行cd a

一如我们所料,那...我想把b文件删了,该怎么办呢?哦对了,rmdir命令。我们来试一下

可惜,又报错了,好像又缺了点什么,它说文件夹不是空的,哦对了,刚才我们创建了一个递归的目录,所以b下面还有c,所以以此可以知道rmdir不能删除非空文件夹,那在怎么办呢?

根据上面学习的内容试了下-r和-f,好像都不行,哎?给了提示,试一下--help。哦,好像用-p可以:

终于可以了。

除此以外,还有另外一种方法,rm -r也可以。

但是这样好像有点麻烦,它会一级一级的让你去确认,有没有更舒服一点的方法呢,那我们把删除掉的b/c复原一下(复原过程省略)。于是我们的目录又变成这样了:

我们使用rm -rf

这里尤其强调一下,如果在实际工作中,你有root权限,请一定要小心使用这个命令,如上图所示,删除了所有的东西又不会有任何提示。

好了,我们上面是删除的目录,那我删除个文件试试:

删除文件会有提示。

以上,我们经历了简单地创建文件夹、进入文件夹、删除文件夹及文件等内容。下面我们继续。

首先我们先想一个问题,假设我不是root用户,我刚进入服务器,或者我经历了大量的操作,忘记了当前目录在哪。怎么办呢?

pwd命令可以告诉你所处的位置。

那,我们现在来试试复制一个文件夹或文件:

我们进入到a目录,把之前存在的b目录删掉,然后创建两个文件夹b1和b2,所以我们的目录现在是这样的:

然后呢,我们进入b1,创建个文件,名字叫c1.js好了。

最后呢,我们把c1.js复制到b2中去:

这样就完成了复制。

如果我想复制的时候改名的话,可以试一下-i选项。

ok,我们完成了复制,那我想把c1.js从b1目录移动到b2目录怎么办呢?我们使用时光机,回到b1文件夹中有c1.js而b2中没有的那个时刻,然后移动c1.js到b2目录

很简单,这样我们就完成了移动。

最后,我们来看下链接怎么使用。我们先到b2里。然后执行命令

这样,我们就创建了一个硬链接。然后,我们再来创建个软连接:

那,这也看不出来软和硬到底有啥区别啊,那我们这样:

可以看到一点区别了吧,具体的内容跟我上面说过的一样哦,如果不理解,可以回过头去看一下之前的内容。

今天就到此为止了,我们总结一下目前学过的内容:

1、我们简单学习了linux系统的基本目录结构。以及/和~都是什么。

2、还学习了命令的基本格式。

3、然后,我们还学习了一些常用的增删改查的命令,以及软硬链接的区别。

4、最后我们一起对学习过的命令进行了实际的操作

好了,今天我们就先到这里,下集继续。

《前端运维》一、Linux基础--基础命令(1)的更多相关文章

  1. 运维 07 Linux系统基础优化及常用命令

    Linux系统基础优化及常用命令   Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令 ...

  2. linux学习9 运维基本功-Linux常用基础命令实战应用

    一.文件系统知识回顾 1.Linux文件系统: a.文件名称严格区分字符大小写 b.文件可以使用除/以外任意字符 c.文件名长度不能超过255个字符 d.以.开头的文件为隐藏文件: . :当前目录 . ...

  3. 运维之linux基础知识(一)

    运维之linux基础知识(一) 1.GUI:Graphic User Interface 图形用户界面 2.CLI:Command line Interface 命令行界面 3 dll:Dynamic ...

  4. 运维之Linux基础(二)

    运维之Linux基础(二) 1. file 命令基期用法 2. 文件系统 Linux的文件系统结构是树状结构,所有的文件都在/root跟目录下 /boot:系统启动相关的文件, 如:内核.initrd ...

  5. 运维之Linux基础知识(三)

    运维之Linux基础知识(三) 1. 查看文本 cat tac more less head tail 1.1 cat 连接并显示文件 cat -n:在显示的时候,将每一行编号 -E:显示结束符$ - ...

  6. 提高Linux运维效率的30个命令行常用快捷键

    提高Linux运维效率的30个命令行常用快捷键 表4-1  30个常用快捷键 快捷键 功能说明 最有用快捷键 tab 命令或路径等的补全键,Linux最有用快捷键* 移动光标快捷键 Ctrl+a 光标 ...

  7. Linux运维常用的几个命令介绍【转】

    Linux运维常用的几个命令介绍 1. 查看系统内核版本​ [root@funsion geekxa]# cat /etc/issue CentOS release 6.5 (Final) Kerne ...

  8. 【Linux 运维】Linux 目录

    目录 [Linux 运维]Centos7初始化网络配置 [Linux 运维]linux系统修改主机名 [Linux 运维]linux系统关机.重启.注销命令 [Linux 运维]linux系统查看版本 ...

  9. 运维程序】简单的命令控制器(支持定时命令执行、重复定时任务命令和进程管理,开发这个小程序主要是为了方便管理服务进程)【个人github项目】

    一.前言: command-controller 一个运维程序,简单的命令控制器(支持定时命令执行和重复定时命令,开发这个程序主要是为了方便管理服务进程) 本来是要用python做的,但是之前做ffm ...

  10. 【运维程序】简单的命令控制器(支持定时命令执行、重复定时任务命令和进程管理,开发这个小程序主要是为了方便管理服务进程)【个人github项目】

    一.前言: command-controller 一个运维程序,简单的命令控制器(支持定时命令执行和重复定时命令,开发这个程序主要是为了方便管理服务进程) 本来是要用python做的,但是之前做ffm ...

随机推荐

  1. Android实现三角形气泡效果方式汇总

    在开发过程中,我们可能会经常遇到这样的需求样式: 这张图是截取京东消息通知的弹出框,我们可以看到右上方有个三角形的气泡效果,这只是其中一种,三角形的方向还可以是上.下.左.右. 通过截图可以发现,气泡 ...

  2. python基础学习之函数基础和部分内置函数

    在函数调用的时候,必备参数必须要传入 函数定义: def  函数名: 代码块pass return  返回值 函数名命名规则: 字母.数字和下划线组成,和变量命名规则一致 pass在这里表示什么都没有 ...

  3. 仿MSDN的帮助系统

    作为软件开发人员,软件做好后,接下来就是编写文档.我自己也是做软件的,经常有用户询问软件的安装与使用, 我一直很喜欢微软的MSDN帮助系统,简介.大气,使用方便. 网上也找了很久,感觉一直没有合适的, ...

  4. Java中的Set集合

    Set接口简介 Set接口和List接口一样,同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,它是比Collecti ...

  5. Hdfs block数据块大小的设置规则

    1.概述 hadoop集群中文件的存储都是以块的形式存储在hdfs中. 2.默认值 从2.7.3版本开始block size的默认大小为128M,之前版本的默认值是64M. 3.如何修改block块的 ...

  6. JVM之对象回收

    finalize /** *此代码演示了两点: *1.对象可以在被GC时自我拯救. *2.这种自救的机会只有一次,因为一个对象的finalize()方法最多只会被系统自动调用一次 */ public ...

  7. 如何优雅地学习计算机编程-C++1

    如何优雅的学习计算机编程--C++ 0.导入 如何优雅地学习计算机编程.我们得首先了解编程是什么?打个比方--写信. 大家都知道写信所用的语言双方都懂,这样的信才做到了信息交流,人和计算机也是如此人和 ...

  8. MongoDB 那些事(一文以蔽之)

    前言 身边一直都有小伙伴在问:MongoDB到底是什么?它有到底什么特性?有什么与众不同?在什么情况下使用MongoDB最合适?以什么样的姿势是最好的?难道就一定要用吗?....说实话,这些问题都问到 ...

  9. Echarts概述

    1. Echarts概述 ECharts是百度开源的纯 Javascript 图表库,目前开源可以与highcharts相匹敌的一个图表库.支持折线图(区域图).柱状图(条状图).散点图(气泡图).K ...

  10. [Fundamental of Power Electronics]-PART II-9. 控制器设计-9.5 控制器的设计

    9.5 控制器设计 现在让我们来考虑如何设计控制器系统,来满足有关抑制扰动,瞬态响应以及稳定性的规范或者说设计目标.典型的直流控制器设计可以用以下规范定义: 1.负载电流变化对输出电压调节的影响.当负 ...