学习之路——Linux.ubuntu 16.04 LTS 终端(Terminal)基础

要想使用Ubuntu对命令的使用操作是必不可少的:

首先,进入终端:Ctrl+Alt+t 进入Ubuntu终端 如图1 所示:

学习之路——Linux.ubuntu 16.04 LTS 终端(Terminal)基础_第1张图片

图 1 终端界面

我们可以输入:exit 来退出终端,也可以用exit来切换用户(例如你开始以一般用户进入终端,然后你又切换到root用户,那么你就可以输入exit 来切换到你之前的一般用户)

在命令行状态下执行命令

command [-options ] parameter1 parameter2

说明:一行命令中第一个输入的部分绝对是“命令(command)” 或“可执行文件”;按下[Enter]键是表示开始执行这一条命令的意思;如果命令行太长时可以使用反斜杠(\)来转义[Enter] 符号,使命令行连续到下一行;如果你又几个要一起执行的命令,各个命令之间可以用分号(;)分开,写好后按[Enter]来一起执行(例如:ls -a;ls -al)。注意:反斜杠后立刻接特殊字符,才能转义。

几种简单的命令(对应的部分图片在命令下面):

ls :列出主文件夹下文件  

ls -a: 列出主文件夹下的包括点(.)开头的隐藏文件

ls -l: 列出主文件夹下的包括与文件相关属性的内容信息

那么你猜猜如果查看列出主文件夹下的所有隐藏文件与相关的文件属性呢?没错就是:ls -al(可以把一些单独的命令结合在一起使用的命令哦害羞

基础命令操作:

date:输出当前系统时间

我们可以使用 date +%Y/%m/%d 来显示年/月/日,也可以使用 date +%H:%M 来显示 时:分  等等

cal:显示日历命令

学习之路——Linux.ubuntu 16.04 LTS 终端(Terminal)基础_第2张图片

也可以用 cal [ [ moth ] year ] 来显示哪一年哪一月的日历,月份亦可以输入英文表示,但是如果输入的月份为13呢?例如:cal 13 2009 终端会提示:cal :illegal month value:use 1-12,这样看来Linux还挺人性化的嘛。。

bc:简单好用的计算器

运算符可以是:+ - * / ^ %等等。

下面例子中1/2 没做特殊处理时仅输出整数的,如果要用输出全部的小数,就必须执行scale=number,那个number就是小数点后的位数。

学习之路——Linux.ubuntu 16.04 LTS 终端(Terminal)基础_第3张图片

退出bc的软件环境需要输入:quit

重要的热键:

[ Tab ] 命令补全,文件补全的功能,例如命令行输入ca再按两次[ Tab ]键,会出现命令可能的信息

[ Tab ]接在一串命令的第一个命令的后面,则为“,命令补全”;接在一串命令的第二个命令以后时,则为“文件补全”

[ Ctrl ]-c 让程序停下来

[ Ctrl ]-d 可以替代exit 的输入

Linux系统在线求助 man page与info page

首先,由于Linux系统中命令很多(2000多个甚至更多,具体的数量可以输入两个[ Tab ][ Tab ]键来查看),要把所有命令都记下来是非常不容易的,用户可以通过在线文件来了解命令的用法。man(manual) page

例如不知道date 的用法,我们可以输入:man date来查看,按 q 键离开man环境。

学习之路——Linux.ubuntu 16.04 LTS 终端(Terminal)基础_第4张图片

可以点击空格翻页,也可以用[Page Up][Page Down]来翻页。如果你知道某些关键字,也可以输入“/word”来主动查找man date中的关键字,例如:/date

/string 向下查找string字符串,也就是一行一行的显示出来

?string 向上查找

N反向查找

n与?或/同向查找

q 结束man page

(一定要自己做一下,加深印象)

从上面的图片中我们注意到第一行的DATE(1)中的1 代表什么呢?

 

代号 代表内容
1 用户在shell环境中可以操作的命令或可执行文件
2 系统内核可调用的函数与工具等
3 一些常用的函数(function)与函数库(library),大部分为C 的库函数(libc)
4 设备文件的说明,通常在/dev下的文件
5 配置文件或者是某些文件的格式
6 游戏(games)
7 惯例与协议等,例如Linux文件系统,网络协议,ASC|| code 等说明
8 系统管理员可用的管理命令
9 跟kernel有关的文件

man page 的数据通常是放在/usr/share/man这个目录里

超简单文本编辑器:nano

输入nano main.c 键入文本编辑器。

学习之路——Linux.ubuntu 16.04 LTS 终端(Terminal)基础_第5张图片

数据同步写入磁盘:sync

在Linux系统中,为了加快数据的读取,在默认情况下,某些已经加载到内存中的数据不对直接写入硬盘,而是暂存到内存当中,不过造成了由于不正常关机(数据还没有写入到硬盘中)数据更新不正常,而输入sync后会将内存中尚未更新的数据写入硬盘中。

惯用关机命令:shutdown

shutdown 可以自由的选择关机模式,包括关机,重启,或进入单用户模式;也可以设置关机时间,可以设置成立刻关机,或某个特定时间关机,也可以自定义关机消息(在关机之前,可以将自己设置的消息传送给用户);可以发出警告消息。可以选择是否要用fsck检查文件系统。

shutdown、reboot、halt等都需要在root状态时才能使用

重启、关机:reboot、halt、poweroff

这三个命令可以进行重启与关机任务,它们调用的库函数都差不多。

切换执行等级:init

Linux 共有七种执行等级,现在知道一下四种就可以了:

run level 0:关机

run level 3:纯命令模式

run level 5:含有图形界面的模式

run level 6:重启

Linux 文件权限概念

种文件权限和属性是学习Linux的一个相当重要的关卡

Linux文件属性:

用上面说过的:ls -al命令来查看文件的权限和属性

学习之路——Linux.ubuntu 16.04 LTS 终端(Terminal)基础_第6张图片

图片显示了文件的属性和权限,第一列的共10个字符,第1个字符表示该文件的类型:

[d] :表示这个文件是目录,例如第一行的隐藏文件(. ) 。

[-]:表示这个文件是文件,例如第三行的add.c。

[l]:表示这个文件是连接文件(linkfile)。

[b]:表示这个文件是设备文件里面的可供存储的接口设备。

[c]:表示这个文件是设备文件里的串行端口设备,例如键盘、鼠标。

第2~4字符表示文件所有者的权限(读、写、执行)

 

第5~7字符表示文件所属用户组的权限(读、写、执行)

 

第8~10字符表示文件对于其他人员的权限(读、写、执行)

第二列表示有多少文件名连接到此节点上(后面会详细讨论)

第三列表示文件所有者的账号

第四列表示文件所属用户组名

第五列表示文件的大小,默认单位是B

最后一列表示文件名

第五列与最后一列中间表示文件的创建日期,或最新修改时间,如果要显示详细的时间可以输入:ls -l --full-time 来完成

上面已知道对于不用的用户处理文件权限都是不相同的,原因就是可以对系统进行保护,数据共享功能。

那么如何改变文件的属性与权限呢?(注意:改变文件的权限需要切换到root用户,或者你本身由权限)

我们要知道以下几个常用的命令:

chgrp(改变所属用户组):chgrp [ -R ] dirname/filename ... (-R进行递归的持续更改,也及连同子目录下的所有文件、目录都更新成为这个用户组之意。注意:要被更改的组名必须要在/etc/group 文件内存中哦!)(下面的绿色的点,是我自己弄的,只是为了方便命令的查看)

 

chown(改变文件所有者):chown [ -R ]账号名称 文件或目录 或者写成 chown [ -R ]账号名称:组名 文件或目录 (-R:进行递归的持续更改,而且,用户必须是、etc/passwd这个文件中有记录的用户名称才可以呢!)。举个例子吧,如果要让你把 add文件的所有者从root改成april11258我们应该怎么做呢?委屈

我们输入:ls -l add.c 看一下add.c原来的用户所有者权限,发现是root,然后通过chown命令改变成april11258,检查一遍看看成功没有呢?发现确实是成功了,是不是还挺简单的呢??第二种写法是在改变所有者的同时将组名也更改了,可以自己练习一下。

 

 

chmod(改变文件权限):chmod [ -R ] xyz 文件或目录,xyz就是用户做对应的数字权限(- R 递归的持续更改,与上述作用相同)。

改变权限的方法有两种分别是数字类型和符号类型,那么什么又是数字类型和符号类型呢???

所谓数字类型,也就是将权限类型理解成为数字的样子,Linux中将三种权限对应的数字分别是: r : 4 , w : 2 , x : 1。对于下面这个add.c这个文件来说,用户所有这个的权限时rw- 那么加起来的分数就是 4+2=6,同理对于用户组的权限也是5,而其他用户的权限就是4.

如果要改变用户的权限呢?例如把文件所有者,用户组,其他角色的权限都改成rwx呢?输入一下:chmod 777 add.c 命令,你会发现该文件的权限确实是改了,如下图所示:

学习之路——Linux.ubuntu 16.04 LTS 终端(Terminal)基础_第7张图片

所谓符号类型,也就是用 u 表示所有者,g表示用户组,o 表示其他人员,a 表示所有的身份;+代表加入权限,-表示除去权限,=表示设定;r表示读权限,w表示写权限,x表示执行权限(这么多的符号表示是不是有点晕呢?大哭不瞒你说我是晕了,下面给出一个表格吧!方便理解)

 

chmod  u
g
o
a
+
-
=
r
w
x
文件或目录

我们练习一个,将所有者的权限改为rw-,用户组和其他人员的权限改为r - x,操作过程如下图:

对于添加权限和除去权限自己做做看,一定要多练习呀,要不然一边记一边忘呀快哭了

现在我们都已经会应用 chgrp,chown,chmod 这三种命令了,权限在目录或文件中为什么这么重要呢?很好理解,如果在一个没有权限的系统里,每个用户都可以对任何文件进行修改,那么系统真的会一团糟,系统挂掉也不是不可能!所以权限很重要,读、写、执行。也不是我们想象的那么简单,这里有很多值得思考的地方,我们会分别解释说明。

文件权限说明:

我们之前总说的读写执行到底是什么呢?

对于文件来说,都知道文件就是存储数据的地方

R: 很好理解,也就是读取该文件内容嘛!;

W:这里要注意了,对文件具有写权限也就是可以对这个文件进行编辑,新增,修改啦等等,但是注意哦!并不能对文件进行删除(R和W权限有些关系,因为不能读咋编辑呢?编辑啥呢???疑问);

X:可以被系统执行(与Windows系统不同Linux系统并不存在.exe .bat 等后缀名来表示执行与否)。

目录权限说明:

R:表示可以用ls 显示该目录的内容;

W:表示可以在该目录新建文件或目录,删除已经存在文件或目录,将已经存在的文件或目录更名,移动该目录内的文件或目录。(可见这个权限对于目录灰常重要呀!)

X:表示是否能够(cd )进入该目录,能不能进入这个目录只与该权限有关系。

下面我们举几个例子:

1.有这样的目录:,对于april11258(该用户没有加入用户组users)来说该用户是否可以进入该文件夹或者查看该文件夹下的内容呢?

由图片可知,april11258用户有对该目录只有读的权限,由于没有x权限所以不能进入该目录,但是可以查看该目录的内容,而且由于没有x权限,所以会有一堆的问号。执行图片如下:

学习之路——Linux.ubuntu 16.04 LTS 终端(Terminal)基础_第8张图片

2.一个用户对于目录dir1来说只有x 权限,那么他可以进行入该目录,但不能查看该目录中的内容,也就是不能使用ls了。

Linux中的文件结构:

要知道linux中的任何装置都是文件,连数据沟通的接口也有专属的文件在负责。。。。所有文件都是由根目录(/)开始的,我们常常称为目录树。Linux系统中有自己规定的目录准则,也就是每个目录叫什么名字啦~目录中包括的功能啦(这也是为了规范系统呀!)~也就是我们自己在安装Linux系统是为什么会出现那么讨厌的分区了,都有人家高大上的含义,只是我们不懂罢了惊恐。下面的内容都是规定的先有个了解就好了!

Linux 通过一个标准(FSH)定义了

(1)四个交互形态:

不可变的(static):有些数据是不会经常变动的,跟随distibution而不变动。

可变动的(variable):经常改变的数据,一般指登录文件等等。

可分享的(shareable):可以分享给其他系统挂载使用的目录,包括执行文件与用户的邮件数据,是能够分享给网络上其他主机挂载用的目录。(啥又是“挂载”呢?挂载就是别人可以通过一些操作来访问你的目录,就像是访问自己的东西一样,所以挂载在网络共享上使用的非常普遍。Linux 中有一个命令叫:mount 就是挂载命令,大家可以上网百度呀)

不可分享的(unshareable):一般指与自身机器有关的文件,当然没必要分享了。

(2)三层目录放的数据

三层目录都是哪三层呢???疑问

1. /(root ,根目录):与开机系统有关(可见根目录灰常重要呀!所以为了防止根目录被破坏,尽量不要将软件放到根目录下,保证根目录越小越好);

2./usr(unix software resource):与软件安装执行有关;

3./var(variable):与系统运作过程有关。

现在映入你眼帘的就是高深莫测的Linux目录树,不要怕到底都是意思,下面就把它依次说道明白!生气

 

学习之路——Linux.ubuntu 16.04 LTS 终端(Terminal)基础_第9张图片

现在咱们说说这三层目录下面的数据都包含那些呢!

首先介绍FHS要求的必须存在的目录有哪些:

(1)/bin:这个目录下面放置的是在单人维护模式下能操作的指令,可以被root和一般的用户所使用包括咱们之前说过的:date,cat,chown,chmod 等等常用的指令。

(2)/boot:该目录主要放置开机时会使用的文件,包括Linux核心文件以及开机所需要的配置文件等等,Linux kernel常使用的文档名称是vmlinuz。

(3)/dev:在Linux系统上,任何装置和接口设备都是以文件的形态存于这个目录当中。只要透过存取这个目录底下的文件就等于存取某个装置,比较重要的主要包括:/dev/null,/dev/zero,/dev/tty,/dev/loop*,/dev/sd*等等。

(4)/etc:就是放置主要的配置文件,一般可以被用户查阅,但只能root可以修改。

(5)/lib:开机会使用的库。

(6)/media:放置可移除的装置啦!包括软盘,硬盘,DVD等。

(7)/mnt:用来暂时挂载用。

(8)/run:放置开机后所产生的各项信息。

(9)/sbin:放在/sbin下面的为开机所使用,包括了开机,修复,还原系统所需要的命令。

(10)/srv:是一些网络服务启动后所需要的数据目録。

(11)/temp:让一般用户或者正在执行的程序暂时放置文件的地方。

其次介绍FHS要求的建议存在的目录有哪些:

(1)/home:系统默认用户家目录。

(2)/lib:用来存放与/lib不同格式的二进制库。

(3)/root:系统管理员家目录。

(4)/lost+found:将一些遗失的片段放置到这个目录。(使用标准的ext2/ext3/ext4文件系统才会产生的目录)。

(5)/proc:这个目录本身是一个虚拟文件系统,放置的数据都是在内存中的,所以不占用任何硬盘空间。

(6)/sys:与/proc相似,但主要是记录核心与系统硬件信息较相关的信息。

 

/usr:所有文件系统默认的软件都会放置于/usr下,/usr 下一般的次目录建议有:

(1)/usr/bin/:所有的一般用户使用的指令都放于/usr/bin下,使用连接档的方式将/bin连接于此,也就是/usr/bin与/bin是一模一样了。

(2)/usr/lib/:基本上与/lib功能相同,将/lib链接于此。

(3)/usr/local/:系统管理员在本机上自行安装自己下载的软件建议安装到次目录。

(4)/usr/sbin/:非系统正常运作 所需要的指令。最常见的就是某些网络服务器软件的服务指令,目前/sbin链接于此。

(5)/usr/share/:主要放置只读架构的数据文件,当然也有共享文件。

 

/var 目录主要针对常态性变动的文件包括快取(cache),登录档(log file)

(1)/var/cache/:应用程序本身运作过程中会产生一些暂存文档。

(2)/var/lib/:程序本身执行过程中需要使用的数据文件放置的目录。

(3)/var/lock/:给装置上锁(lock),以确保该装置只会给单一的软件使用,目前挪到/run/lock中。

(4)/var/log/:登录文件放置的目录。

(5)/var/mail/:放置电子邮件信箱的目录。

(6)/var/spool/:放置一些队列数据。

现在知道Linux各个文件的数据内容和作用了吗???内容很多,我们先有个概念就好,以方便在后面的学习中如果进入某个目录进行相关操作不是那么难理解。(ps:反正我一次是记不住这么多呀~~~~难过难过,不过我会努力记住哒奋斗,一起加油吧~~~~)

 

下面呢咱们来讨论一下绝对路径和相对路径啦!

相信大家都知道,小儿科有木有??但是这也是经常会使用到的。(ps:pwd 命令是显示当前的目录,pwd -P:不显示连接档的文件的路径而是现实正确的文件路径 )

绝对路径:从根目録向下扒的就是绝对路径,例如进入当前用户april11258的home目录怎么进呢?

输入:cd  /home/april11258

这就是绝对路径嘛。。。

相对路径:既不是从根目録向下扒呗!(废话有木有?敲打)。例如我从当前的目录要进入上一层目录?(ps:  . 表示当前目录; . . 表示上一层目录)

输入:cd  ../

说了这么多,只是为了继续畅通无阻的学习命令呀!!!

 

建立新目录mkdir [ -mp] 目录名称 :

目录的建立可以说非常基本呀,-m:直接设定目录权限;-p 帮助你递归的建立目录(如果上层目录不存在,也可以帮你建立好!)

例如你现在在你的主目录里面,你想建立一个放文件的目录Documents,来方便我们使用。

我们就可以这样写:mkdir Documets 

是不是很简单呢?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

附:

查看你安装Linux系统的核心版本(uname -r)和操作系统有多少位(uname -m)

如何进入root?

在终端输入:sudo su

输入root密码(自己设一个就行):

也可以输入:sudo -s 来进入root模式

转载于:https://my.oschina.net/u/3285696/blog/1790309

你可能感兴趣的:(学习之路——Linux.ubuntu 16.04 LTS 终端(Terminal)基础)