常用命令

  • 格式:[功能:命令] -> [内部功能:命令]
  1. 注销:exit
  2. 显示目前所支持的语言:echo $LANG
  3. 显示日期与时间:date
  4. 显示日历:cal
  5. 简单好用的计算器:bc -> 退出:quit 取几位小数:scale=位数
  6. 更多在线命令手册:man+需要查询的命令 -> 查找:/+关键词
  7. 数据同步写入磁盘(关机前必备):sync
  8. 惯用的关机命令:shutdown
  9. 重启:reboot,halt,poweroff
<span class='yzk_title_123'>小白Linux学习笔记·实时更新</span>-一只小白
<span class='yzk_title_123'>小白Linux学习笔记·实时更新</span>-一只小白
  1. 切换执行等级:init
<span class='yzk_title_123'>小白Linux学习笔记·实时更新</span>-一只小白
  1. 改变文件所属用户组:chgrp + 用户组名 + 文件名 -> -R:连同目录下的所有文件、目录
  2. 改变文件所有者:chown + 账号名称 + 文件名 -> -R:连同目录下的所有文件、目录
  3. 改变文件的权限:chmod + 权限(两种方法) + 文件名

<span class='yzk_title_123'>小白Linux学习笔记·实时更新</span>-一只小白
* 数字设置权限

<span class='yzk_title_123'>小白Linux学习笔记·实时更新</span>-一只小白
* 符号设置权限

  1. 复制文件:cp + 源文件 + 目标文件
  2. 切换用户身份:su + 用户名
  3. 新建新目录:mkdir + 目录名
  4. 新建空文件:touch + 文件名
  5. 连接文件并在终端输出文件内容:cat + 文件名

常用热键

  • 格式:[热键:功能]
  1. [Tab] :命令补全、文件补齐
  2. [Ctrl + c] :终止
  3. [Ctrl + d] :输入(输出)结束,也可以代替exit

小知识

命令行基础

  • command(命令) -options(选项) parameter1(参数1) parameter2(参数2)
  1. 一行命令中第一个输入的部分绝对是“命令(command)”或“可执行文件“;
  2. 命令、选项、参数等这几个命令中间以空格来区分,不论空几格shell都视为一格
  3. 按下[Enter]后命令立即执行,[Enter]按键代表一行命令的开始启动;
  4. 命令太长的时候,可以用反斜杠(\)来转义[Enter]符号,使命令持续到下一行。

用户与用户组

Linux用户身份与用户组记录的文件

  • 在Linux系统当中,预设的情况下,所有的系统上的帐号与一般身份使用者,还有那个root的相关资讯,都是记录在/etc/passwd这个文件内的。至于个人的密码则是记录在/etc/shadow这个文件下。此外,Linux所有的群组名称都纪录在/etc/group内!这三个文件可以说是Linux系统里面帐号、密码、群组信息的集中地啰!不要随便删除这三个文件啊!

Linux文件权限概念

Linux文件属性

<span class='yzk_title_123'>小白Linux学习笔记·实时更新</span>-一只小白
  • 上图为root用户终端输入 ls -al后终端输出结果

  • 第一列代表这个文件的类型与权限(permission):

  • 这个地方最需要注意了!仔细看的话,你应该可以发现这一栏其实共有十个字元:
  • 第一个字元代表这个文件是『目录、文件或连接档等等』:
  1. 当为[ d ]则是目录,例如上表文件名为『.config』的那一行;
  2. 当为[ - ]则是文件,例如上表文件名为『initial-setup-ks.cfg』那一行;
  3. 若是[ l ]则表示为连接档(link file);
  4. 若是[ b ]则表示为装置档里面的可供储存的周边设备(可随机存取装置);
  5. 若是[ c ]则表示为装置档里面的序列端口设备,例如键盘、鼠标(一次性读取装置)。
  • 接下来的字元中,以三个为一组,且均为『rwx』的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
  1. 第一组为『文件拥有者可具备的权限』,以『initial-setup-ks.cfg』那个文件为例,该文件的拥有者可以读写,但不可执行;
  2. 第二组为『加入此群组之帐号的权限』;
  3. 第三组为『非本人且没有加入本群组之其他帐号的权限』。
  • 第列栏表示有多少文件名连接到此节点(i-node);

  • 第三列表示这个文件(或目录)的『拥有者帐号』;

  • 第四列表示这个文件的所属群组;

  • 第五列为这个文件的容量大小,预设单位为bytes;

  • 第六列为这个文件的建档日期或者是最近的修改日期;

  • 第七列为该文件名(若文件名前面多了一个“.”则表示该文件为隐藏文件);

目录与文件的权限意义

权限对文件的重要性

  • 文件是实际含有数据的地方,包括一般文字文件、数据库内容文件、二进位可执行文件(binary program)等等。因此,权限对于文件来说,他的意义是这样的:
  1. r(read):可读取此一文件的实际内容,如读取文字文件的文字内容等;
  2. w(write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
  3. x(eXecute):该文件具有可以被系统执行的权限。

* 可读(r)代表读取文件内容是还好了解,那么可执行(x)呢?这里你就必须要小心啦!因为在Windows底下一个文件是否具有执行的能力是是由『扩展名』来判断的,例如:.exe,.bat,.com等等,但是在Linux底下,我们的文件是否能被执行,则是是由是否具有『x』这个权限来决定的!跟文件名是没有绝对的关系的!
* 当你对一个文件具有w权限时,你具有写入/编辑/新增/修改文件的内容的权限,但并不具备有删除该文件本身的权限!对于文件的rwx来说,主要都是针对『文件的内容』而言,与文件文件名的存在与否没有关系!因为文件记录的是实际的数据!
* 注意:一个文件有可执行权限不代表这个文件就一定能被执行成功,还需要看文件内有没有可以被执行的内容!

权限对目录的重要性

  • 目录主要的内容在记录文件名清单,文件名与目录有强烈的关连!所以如果是针对目录时,那个r,w,x对目录是什么意义呢?
  1. r(read contents in directory):

* 表示具有读取目录结构清单的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据。所以你就可以利用ls这个指令将该目录的内容列表显示出来!
2. w(modify contents of directory):
* 这个可写入的权限对目录来说,是很了不起的!因为他表示你具有异动该目录结构清单的权限,也就是底下这些权限:
1. 建立新的文件与目录;
2. 删除已经存在的文件与目录(不论该文件的权限为何!)
3. 将已存在的文件或目录进行更名;
4. 搬移该目录内的文件、目录位置。
* 总之,目录的w权限就与该目录底下的文件名异动有关就对了啦!
3. x(access directory):
* 目录只是记录文件名而已,不可以被执行,目录的x代表的是使用者能否进入该目录成为工作目录!所谓的工作目录(work directory)就是你目前所在的目录啦!举例来说,当你登入Linux时,你所在的目录就是你当下的工作目录。而变换目录的指令是『cd』(change directory)!

<span class='yzk_title_123'>小白Linux学习笔记·实时更新</span>-一只小白

Linux文件种类与扩展名

文件种类

  1. [-] :普通文件
  2. [d] : 目录
  3. [l] :连接文件(类似于Windows下的快捷方式)
  4. [b] :块设备文件(例如硬盘、软盘等)
  5. [c] :字符设备文件(例如鼠标、键盘等,特征:一次性读取)
  6. [s] :套接字,数据接口文件(通常被用在网络上的数据连接)
  7. [p] :管道(FIFO,pipe),主要用于解决多个程序同时访问一个文件所造成的错误

Linux目录配置

Linux目录配置标准:FHS(Filesystem Hierarchy Standard)

  • FHS依据档案系统使用的频繁与否与是否允许使用者随意更动,而将目录定义成为四种交互作用的形态,用表格来说有点像底下这样:
<span class='yzk_title_123'>小白Linux学习笔记·实时更新</span>-一只小白
  • 可分享的:可以分享给其他系统挂载使用的目录,所以包括执行档与使用者的邮件等数据,是能够分享给网络上其他主机挂载用的目录;
  • 不可分享的:自己机器上面运作的装置档案或者是与程序有关的socket档案等,由于仅与自身机器有关,所以当然就不适合分享给其他主机了。
  • 不变的:有些数据是不会经常变动的,跟随着distribution而不变动。例如函式库、文件说明档、系统管理员所管理的主机服务设定档等等;
  • 可变动的:经常改变的数据,例如登录档、一般用户可自行收受的新闻组等。

  • 事实上,FHS针对目录树构架仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义:

  • /(root,根目录):与开机系统有关;
  • /usr(unix software resource):与软件安装/执行有关;
  • /var(variable):与系统运作过程有关。
  • 去FHS官网了解更多

绝对路径与相对路径

  • 除了需要特别注意的FHS目录配置外,在文件名部分我们也要特别注意!因为根据文件名写法的不同,也可将所谓的路径(path)定义为绝对路径(absolute)与相对路径(relative)。这两种文件名/路径的写法依据是这样的:
  1. 绝对路径:由根目录(/)开始写起的文件名或目录名称,例如 /home/dmtsai/.bashrc
  2. 相对路径:相对于目前路径的文件名写法。例如./home/dmtsai../../home/dmtsai/等等。反正开头不是/就属于相对路径的写法

* 而你必须要了解,相对路径是以『你当前所在路径的相对位置』来表示的。举例来说,你目前在/home这个目录下,如果想要进入/var/log这个目录时,可以怎么写呢?
* 绝对路径:cd /var/log(absolute)
* 相对路径:cd ../var/log(relative)
* 因为你在/home底下,所以要回到上一层(../)之后,才能继续往/var来移动的!特别注意这两个特殊的目录:
* .:代表当前的目录,也可以使用./来表示;
* ..:代表上一层目录,也可以../来代表。
* 这个...目录概念是很重要的,你常常会看到cd .../command之类的指令下达方式,就是代表上一层与目前所在目录的工作状态!

目录与路径

目录的相关操作

<span class='yzk_title_123'>小白Linux学习笔记·实时更新</span>-一只小白