Linux学习

第一章 文件系统目录结构

Linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。

深刻理解Linux树状文件目录是非常重要的。

记住一句经典的话:在Linux世界里,一切皆文件

 

具体的目录结构:

  • /bin[重点] (/usr/bin、/usr/local/bin)

是Binary的缩写,这个目录存放着最经常使用的命令。

  • /sbin (/usr/sbin、/usr/local/sbin)

s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

  • /home[重点]

存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

  • /root[重点]

该目录为系统管理员,也称作超级权限者的用户主目录。

  • /boot[重点]

存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

  • /proc

这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息。

  • /srv

service缩写,该目录存放一些服务启动之后需要提取的数据。

  • /sys

这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系

  • /tmp

这个目录是用来存放一些临时文件的。

  • /dev

Device的缩写,类似于windows的设备管理器,把所有的硬件用文件的形式存储

  • /media[重点]

Linux系统会自动识别一些设备,例如U盘、光驱,当识别后,Linux会把识别的设备挂载到这个目录下

  • /mnt[重点]

系统提供该目录是为了让用户临时挂载别的文件系统,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里面的内容了。d:/myshare

  • /opt

这是给主机额外安装软件所摆放的目录。如安装ORACLE数据库就可放到该目录下。默认为空。

  • /usr/local[重点]

这个另给主机额外安装软件所摆放的目录。一般是通过编译源码方式安装的程序。

  • /var[重点]

这个目录中存放着在不断扩充的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件。

  • /selinux

security-enhanced linux的缩写,一种安全子系统,它能控制程序只能访问特定文件。

 

上面有几个目录比较重要,不要误删或随意更改。

  • /etc:这是系统中的配置文件,如果更改了该目录下的某个文件可能导致系统不能运行。
  • /bin,/sbin,/usr/bin,/usr/bin:这是系统预设的执行文件的存放目录,比如ls就在/bin/ls目录下。
  • /bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。
  • /var: 如果系统上跑了很多程序,那么每个程序都会有相应的日志产生,所以这个目录下包括各种日志文件,具体在/var/log 目录下,另外mail的预设放置也是在这里。

第二章 远程登录XShell

  • Linux服务器是开发小组共享的。
  • 正式上线的项目是运行在公网的。
  • 因此程序员需要远程登录到CentOS进行项目管理或者开发。
  • 画出简单的网络拓扑示意图(帮助理解)。
  • 远程登录客户端有XShell、Xftp,我们学习使用XShell5和Xftp,其它的远程工具大同小异。

Xshell是目前最好的远程登录到Linux操作的软件,流畅的速度并且完美解决了中文乱码的问题,是目前程序员首选的软件。Xshell是一个强大的安全终端模拟软件,它支持SSH1、SSH2,以及Microsoft Windows平台的TELNET协议。Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。

特别说明:如果希望安装好XShell 就可以远程访问Linux系统的话,需要有一个前提,就是Linux启用了SSHD服务,该服务会监听22号端口

具体操作:

  1. 在Windows暗转XShell,根据安装向导步骤安装即可。
  2. 在Linux查看或开启SSHD:命令行setup->系统服务->SSHD,*号表示开启(空格键确定,TAB键改变焦点)。
  3. 在Linux用netstat -antp |grep sshd 看是否启动了22端口。
  4. 在Linux用ifconfig获取Linux IPv4地址。

用XShell新建会话:

 

确定后,输入Linux的用户名与密码,便后远程操控Linux:

第三章 远程上传下载文件XFTP

是一个基于Windows平台的功能强大的SFTP、FTP文件传输软件。使用了Xftp以后,Windows用户能安全地在UNIX/Linux和Windows PC之间传输文件。

具体操作:

安装Xftp,跟随安装向导步骤即可。

新建会话属性:

 

如果出现文件或文件夹名中文乱码,可在选项中设置UTF8编码:

第四章 vi和vim的使用

转自 https://www.runoob.com/linux/linux-vim.html

所有的 Linux 系统都会内建 vi 文本编辑器。

Vim 具有程序编辑的能力,可以看做是 Vi 的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

 

vi/vim 的使用
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)。 这三种模式的作用分别是:

 

4.1 命令模式(一般模式)

用户刚刚启动 vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

以下是常用的几个命令:

  • i   切换到输入模式,以输入字符。
  • x   删除当前光标所在处的字符。
  • :   切换到底线命令模式,以在最底一行输入命令。

若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。

命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

4.2 输入模式(编辑模式)

在命令模式下按下i就进入了输入模式。

在输入模式中,可以使用以下按键:

  • 字符按键以及Shift组合,输入字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式

4.3 底线命令模式(指令行模式)

在命令模式下按下:(英文冒号)就进入了底线命令模式。

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

在底线命令模式中,基本的命令有(已经省略了冒号):

  • q 退出程序
  • w 保存文件

按ESC键可随时退出底线命令模式。

简单的说,我们可以将这三个模式想成底下的图标来表示:

4.4 vi/vim 按键说明

除了上面简易范例的 i, Esc, :wq 之外,其实 vim 还有非常多的按键可以使用。

第一部分:一般模式可用的光标移动、复制粘贴、搜索替换等

移动光标的方法
h 或 向左箭头键(←) 光标向左移动一个字符
j 或 向下箭头键(↓) 光标向下移动一个字符
k 或 向上箭头键(↑) 光标向上移动一个字符
l 或 向右箭头键(→) 光标向右移动一个字符
如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。 如果想要进行多次移动的话,例如向下移动 30 行,可以使用 "30j" 或 "30↓" 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可!
[Ctrl] + [f] 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + [b] 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d] 屏幕『向下』移动半页
[Ctrl] + [u] 屏幕『向上』移动半页
+ 光标移动到非空格符的下一行
- 光标移动到非空格符的上一行
n<space> 那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20<space> 则光标会向后面移动 20 个字符距离。
0 或功能键[Home] 这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 或功能键[End] 移动到这一行的最后面字符处(常用)
H 光标移动到这个屏幕的最上方那一行的第一个字符
M 光标移动到这个屏幕的中央那一行的第一个字符
L 光标移动到这个屏幕的最下方那一行的第一个字符
G 移动到这个档案的最后一行(常用)
nG n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)
gg 移动到这个档案的第一行,相当于 1G 啊! (常用)
n<Enter> n 为数字。光标向下移动 n 行(常用)
搜索替换
/word 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)
?word 向光标之上寻找一个字符串名称为 word 的字符串。
n 这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!
N 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。
使用 /word 配合 n 及 N 是非常有帮助的!可以让你重复的找到一些你搜寻的关键词!
:n1,n2s/word1/word2/g n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则:
『:100,200s/vbird/VBIRD/g』。(常用)
:1,$s/word1/word2/g 或 :%s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用)
:1,$s/word1/word2/gc 或 :%s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用)
删除、复制与贴上
x, X 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)
nx n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。
dd 删除游标所在的那一整行(常用)
ndd n 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用)
d1G 删除光标所在到第一行的所有数据
dG 删除光标所在到最后一行的所有数据
d$ 删除游标所在处,到该行的最后一个字符
d0 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
yy 复制游标所在的那一行(常用)
nyy n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用)
y1G 复制游标所在行到第一行的所有数据
yG 复制游标所在行到最后一行的所有数据
y0 复制光标所在的那个字符到该行行首的所有数据
y$ 复制光标所在的那个字符到该行行尾的所有数据
p, P p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用)
J 将光标所在行与下一行的数据结合成同一行
c 重复删除多个数据,例如向下删除 10 行,[ 10cj ]
u 复原前一个动作。(常用)
[Ctrl]+r 重做上一个动作。(常用)
这个 u 与 [Ctrl]+r 是很常用的指令!一个是复原,另一个则是重做一次~ 利用这两个功能按键,你的编辑,嘿嘿!很快乐的啦!
. 不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用)

第二部分:一般模式切换到编辑模式的可用的按钮说明

进入输入或取代的编辑模式
i, I 进入输入模式(Insert mode):
i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。 (常用)
a, A 进入输入模式(Insert mode):
a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用)
o, O 进入输入模式(Insert mode):
这是英文字母 o 的大小写。o 为在目前光标所在的下一行处输入新的一行; O 为在目前光标所在的上一行处输入新的一行!(常用)
r, R 进入取代模式(Replace mode):
r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)
上面这些按键中,在 vi 画面的左下角处会出现『--INSERT--』或『--REPLACE--』的字样。 由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字符时, 一定要在左下角处看到 INSERT 或 REPLACE 才能输入喔!
[Esc] 退出编辑模式,回到一般模式中(常用)

第三部分:一般模式切换到指令行模式的可用的按钮说明

指令行的储存、离开等指令
:w 将编辑的数据写入硬盘档案中(常用)
:w! 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊!
:q 离开 vi (常用)
:q! 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~
:wq 储存后离开,若为 :wq! 则为强制储存后离开 (常用)
ZZ 这是大写的 Z 喔!如果修改过,保存当前文件,然后退出!效果等同于(保存并退出)
ZQ 不保存,强制退出。效果等同于 :q!。
:w [filename] 将编辑的数据储存成另一个档案(类似另存新档)
:r [filename] 在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面
:n1,n2 w [filename] 将 n1 到 n2 的内容储存成 filename 这个档案。
:! command 暂时离开 vi 到指令行模式下执行 command 的显示结果!例如
『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!
vim 环境的变更
:set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu 与 set nu 相反,为取消行号!

特别注意,在 vi/vim 中,数字是很有意义的!数字通常代表重复做几次的意思! 也有可能是代表去到第几个什么什么的意思。

举例来说,要删除 50 行,则是用 『50dd』 对吧! 数字加在动作之前,如我要向下移动 20 行呢?那就是『20j』或者是『20↓』即可。

4.5 快捷键的使用案例

第五章 关机重启登陆注销

5.1 关机重启

  •     shutdown -h now 立该进行关机
  •     shudown -h 1 "hello,1分钟后会关机了”
  •     shutdown -r now 现在重新启动计算机
  •     halt 关机,作用和上面―样
  •     reboot 现在重新启动计算机
  •     sync 把内存的数据同步到磁盘


注意细节:
不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中

5.2 登陆注销

基本介绍:

  •     登录时尽量少用root帐号登录,因为它是系统管理员,最大的权限,避免操作失误。可以利用普通用户登录,登录后再用“su 用户名”命令来切换成系统管理员身份。
  •     在提示符下输 logout即可注销用户。

使用细节:

  •     logout 注销指令在图形运行级别无效,在运行级别3下有效。
  •     运行级别这个概念,后面给大家介绍。

第六章 用户管理

6.1 创建用户指定密码

  1. Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
  2. Linux 的用户需要至少要属于一个组。

添加用户

useradd [选项] 用户名

如:useradd xm

当创建用户成功后,会自动的创建和用户同名的家目录
也可以通过 useradd -d 指定目录 新的用户名,给新创建的用户指定家目录

修改密码

passwd 用户名

如:passwd xm

删除用户

userdel 用户

删除用户 xm,但是要保留home目录

删除用户 xh 以及用户主目录

在删除用户时,我们一般不会将home目录删除的。

查询用户

id 用户名

案例:

当用户不存在时,返回”无此用户”。

切换用户

su – 切换用户

创建一个用户zf,指定密码,然后切换到zf。

从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。

当需要返回到原来用户时,使用exit指令。

6.2 组的管理

类似于角色,系统可以对有共性的多个用户进行统一的管理。

增加组

groupadd 组名

删除组

groupdel 组名

增加用户时直接加上组

useradd -g 用户组 用户名

修改用户的组

usermod -g 用户组 用户名

6.3 用户和组的配置文件

/etc/passwd文件

  •         用户(user)的配置文件,记录用户的各种信息。
  •         每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell

 /etc/shadow文件

  • 口令的配置文件。
  • 每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

 

 /etc/group文件

  • 组(group)的配置文件,记录Linux包含的组的信息。
  • 每行含义:组名:口令:组标识号:组内用户列表

第七章 实用指令

7.1 运行级别

运行级别说明:

  1. 关机

  2. 单用户【找回丢失密码】

  3. 多用户状态没有网络服务

  4. 多用户状态有网络服务

  5. 系统未使用保留给用户

  6. 图形界面

  7. 系统重启

常用运行级别是3和5,要修改默认的运行级别可改文件

/etc/inittab

id:5:initdefault:

也可以使用切换到指定运行级别的指令:init [012356]

案例一

通过imit来切换不同的运行级别,比如动5->3,然后关机

  •     init 3
  •     init 5
  •     init 0


案例二

如何找回 root 密码

思路:进入到 单用户模式,然后修改 root 密码。因为进入单用户模式,root 不需要密码就可以登录。

操作步骤:开机->在引导时输入 回车键-> 看到一个界面输入 e -> 看到一个新的界面,选中第二行(编辑内核)在输入 e-> 在这行最后输入 1 ,再输入 回车键->再次输入 b ,这时就会进入到单用户模式。

这时,我们就进入到单用户模式,使用 passwd 指令来修改 root 密码。

7.2 帮助指令

当我们对某个指令不熟悉时,我们可以使用 Linux 提供的帮助指令来了解这个指令的使用方法。

  • man 命令名,如man cd
  • help 命令名,如help cd
  • 虽然上面两个都可以来获取指令帮助,但是需要英语功底,如果英语不太好的,我还是推荐大家直接百度靠谱。

7.3 pwd ls cd

pwd

print working directory
显示当前工作目录的绝对路径。

pwd

ls

查看目录

ls [选项] [目录或是文件]

常用选项:

    -a:显示当前目录所有的文件和目录,包括隐藏的。
    -l:以列表的方式显示信息

cd

change directory
基本语法

cd[参数] (功能描述。切换到指定目录)

常用参数

  • 绝对路径和相对路径
  • cd ~或者cd :回到自己的家目录
  • cd …:回到当前目录的上一级目录

应用实例

  •         案例1:使用绝对路径切换到root目录
cd /root
  •         案例2:使用相对路径到/root目录

            这里我们需要知道该用户目录在哪个目录下,才能写出这个指令,假设在d当前工作目录为/usr/lib

cd …/…/root
  •         案例3:表示回到当前目录的上一级目录
cd …
  •         案例4:回到家目录
cd ~

7.4 mkdir rmdir目录

mkdir

mkdir指令用于创建目录

基本语法

mkdir [选项] 要创建的目录

常用选项
        -p:创建多级目录
应用实例
        案例1:创建一个目录/home/dog

mkdir /home/dog

        案例2:创建多级目录/home/animal/tiger

mkdir -p /home/animal/tiger

rmdir

rmdir指令删除空目录

基本语法

rmdir [选项] 要册除的空目录

应用实例
        案例1:删除一个目录/home/dog使用细节
    rmdir删除的是空目录,如果目录下有内容时无法删除的。
        提示,如果需要删除非空目录,需要使用rm -rf 要删除的目录

  • -r recursive
  •  -f force
  •  系统自杀 rm -rf /

7.5 touch cp rm mv cat more less

touch

touch指令创建空文件

基本语法      

touch 文件名称s(可创建多个空文件)

应用实例
        案例1:创建一个空文件hello.txt

  touch hello.txt

cp

cp指令拷贝文件到指定目录

基本语法

cp [选项] (source) (dest)

常用选项

-r:递归复制整个文件夹

    应用实例
        案例1:将/home/aaa.txt拷贝到/home/bbb目录下(当前工作目录为/home)

cp aaa.txt /home/bbb

        案例2:递归复制整个文件夹,举例

cp -r src/ target/

注意一定要注意你当前的工作目录位置,然后准确地定位源目录和目标目录。
   

使用细节
        强制覆盖不提示的方法: \cp

            \cp -r src/ target/

    技术小技巧
        可以通过上下箭头的键,调出原来使用过的指令。

rm

rm指令移除文件或目录

基本语法

rm [选项] (要删除的文件或目录)

    常用选项

  •  -r:递归删除整个文件夹
  •  -f:强制刚除不提示

    应用实例
        案例1:将/home/aaa.txt删除(当前工作目录为/home)

rm aaa.txt

        案例2:递归删除整个文件夹/home/bbb(当前工作目录为/home)

rm -rf bbb/

    使用细节
        强制删除不提示的方法。带上-f参数即可

mv

mv 移动文件 与 目录或重命名
基本语法

mv (oldNameFile) (newNameFile):(功能描述:重命名)
mv (/temp/movefile) (/targetFolder):(功能描述:移动文件)

应用实例
        案例1:将/home/aaa.txt文件重新命名为pig.txt(当前工作目录为/home)

mv aaa.txt pig.txt

        案例2:将/home/pig.txt文件移动到root目录下(当前工作目录为/home)
            mv pig.txt /root

cat

cat查看文件内容,是以只读的方式

基本语法

cat [选项] 要查看的文件

常用选项

-n:显示行号

应用实例
        案例1: /ect/profile文件内容,并显示行号

cat -n /ect/profile

使用细节
        cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令| more

cat -n /ect/profile | more

more

more指令是一个基于vi编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。

more指令中内置了若干快捷键,详见操作说明:

 

操作功能说明
空白键 向下翻一页
Enter 向下翻一行
q 离开more
Ctrl+F 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行号
:f 输出文件名和当前的行号
  • 基本语法
    • more 要查看的文件操作说明
  • 应用实例
    • 案例:采用more查看文件/etc/profile
      • more /etc/profile

less

less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率

  • 基本语法
    • less 要查看的文件
  • 操作说明
操作功能说明
空白键 向下翻动一页
[PageDown] 向下翻动一页
[PageUp] 向上翻动一页
/字串 向下搜寻“字串”的功能:n:向下查我;N:向上查找;
?字串 向上搜寻“字串”的功能:n:向上查我;N:向下查找;
q 离开less这个程序
  • 应用实例
    • 案例:采用less查看一个大文件文件
      • less /opt/金庸-射雕英雄传txt精校版.txt

7.6  >重定向 和 >>追加

>输出重定向 和 >>追加

    基本语法

  •         ls -l > 文件 (功能描述:列表的内容写入文件a.txt中(覆盖写))
  •         Is -al >> 文件 (功能描述:列表的内容追加到文件aa.txt的末尾)
  •         cat 文件1 > 文件2 (功能描述:将文件1的内容覆盖到文件2)
  •         echo “内容”>>文件


    应用实例
        案例1:将/home目录下的文件列表写入到/home/info.txt中

ls -l /home/ > /home/info.txt

        案例2:将当前日历信息.追加到/home/mycal文件中[提示cal]

cal >> /home/mycal

7.6 echo head tail

echo

echo 输出内容到控制台。

    基本语法

echo [选项] [输出内容]

    应用实例
        案例:使用echo指令输出环境变量,输出当前的环境路径。

echo $PATH

        案例:使用echo指令输出hello,world!

echo ”hello,world!“

head

head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容

    基本语法

head 文件路径(功能描述:查看文件头10行内容)
head -n 5 文件路径(功能描述:查看文件头5行内容,5可以是任意行数)

    应用实例
        案例:查看/etc/profile的前面5行代码

head -n 5 /etc/profile

tail

tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的后10行内容。

    基本语法

  • tail 文件路径(功能描述:查看文件后10行内容)
  • tail -n 5 文件路径(功能描述:查看文件后5行内容,5可以是任意行数)
  • tail -f 文件路径(功能描述:实时追踪该文档的所有更新)

    应用实例
        案例1:查看/etc/profile最后5行的代码

tail -n 5 /etc/profile

        案例2:实时监控mydate.txt,看看到文件有变化时,是否看到,实时的追加日期

tail -f mydate.txt

7.7 ln history

ln

软链接也叫符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径

基本语法

ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)(如果软链接名时目录路径,cd 软链接名 就能跳到目录)

应用实例
        案例1:在/home目录下创建一个软连接linkToRoot,连接到/root目录

ln -s /root linkToRoot

        案例2:删除软连接linkToRoot

rm -rf linkToRoot(如果删除linkToRoot/,请三思)

    细节说明
        当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录。

history

查看已轻执行过历史命令,也可以执行历史指令

基本语法

history(功能描述,查看已经执行过历史命令)

    应用实例
        案例1:显示所有的历史命令

history

        案例2:显示最近使用过的10个指令。

history 10

        案例3:执行历史编号为5的指令

!5

7.8 date cal

date

date指令-显示当前日期

    基本语法

  • date(功能描述:显示当前时间)
  • date +%Y(功能描述:显示当前年份)
  • date +%m(功能描述:显示当前月份)
  • date +%d(功能描述:显示当前是哪一天)
  • date "+%Y-%m-%d %H:%M:%S”(功能描述:显示年月日时分秒)

    应用实例
        案例1:显示当前时间信息

date

        案例2:显示当前时间年月日

date “+%Y-%m-%d”
date “+%Y %m %d”

        案例3:显示当前时间年月日时分秒

date “+%Y-%m-%d %H:%M:%S”

date指令-设置日期

    基本语法

date -s 字符串时间

    应用实例
        案例1:设置系统当前时间,比如设置成2020-11-11 11:22:22

date -s “2020-11-11 11:22:22”

cal

查看日历指令

    基本语法

cal [选项] (功能描述:不加选项,显示本月日历)

    应用实例
        案例1:显示当前日历

cal

        案例2:显示2020年日历

cal 2020

7.9 find locate grep 管道符

find

find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。

基本语法

find [搜索范围] [选项]

选项说明

选项 功能
-name <查询方式> 按照指定的文件名查找模式查找文件
-user <用户名>   查找属于指定用户名所有文件
-size <文件大小>(+n大于-n小于n等于(n为数目))  按照指定的文件大小查找文件


应用实例

        案例1:按文件名:根据名称查找/home目录下的hello.txt文件

find /home -name hello.txt

        案例2:按拥有者:查找/opt目录下,用户名称为nobody的文件

find /opt -user nobody

       案例3:查找整个linux系统下大于、等于、小于20m的文件

find / -size +20M
find / -size 20M
find / -size -20M

        案例4:按文件名:根据名称查找/目录下的以txt结尾的文件

find / -name *.txt

locate

locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。

基本语法

locate 搜索文件

特别说明
        由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。
应用实例
        案例1:请使用locate指令快速定位hello.txt文件所在目录

updatedb -> locate hello.txt

grep与管道符

grep过滤查找,管道符“|“,表示将前一个命令的处理结果输出传递给后面的命令处理。

基本语法

grep [选项] 查找内容源文件


常用选项

选项    功能
-n 显示匹配行及行号。
-i 忽略字母大小写


应用实例
        案例1:请在hello.txt文件中,查找"yes”所在行,并且显示行号

cat hello.txt | grep -n yes

7.9 压缩和解压类指令

gzip/gunzip指令

gzip用于压缩文件,gunzip用于解压的
基本语法

gzip (文件)(功能描述:压缩文件,只能将文件压缩为*.gz文件)
gunzip (文件.gz)(功能描述:解压缩文件命令)

应用实例
        案例1:gzip压缩,将/home下的hello.txt文件进行压缩

gzip hello.txt

        案例2:gunzip压缩,将/home下的hello.txt.gz文件进行解压缩

gunzip hello.txt.gz

细节说明
        当我们使用gzip对文件进行压缩后,不会保留原来的文件。

zip/unzip指令

zip用于压缩文件, unzip用于解压的,这个在项目打包发布中很有用的。

基本语法

zip [选项] XXX.zip 将要压缩的内容(功能描述:压缩文件和目录的命令)[打包后的文件名] [打包的目录路径] 
unzip [选项] XXX.zip (功能描述:解压缩文件)

zip常用选项

  •  -r:递归压缩,即压缩目录unzip的常用选项
  •  -d <目录>:指定解压后文件的存放目录

应用实例
        案例1:将/home下的所有文件进行压缩成mypackage.zip

zip -r mypackage.zip /home/

        案例2:将mypackge.zip解压到/opt/tmp目录下

upzip -d /opt/tmp/ mypackage.zip

tar指令

tar指令是打包指令,最后打包后的文件是.tar.gz的文件。

基本语法

tar [选项] XXX.tar.gz 打包的内容(功能描述,打包目录,压缩后的文件格式.tar.gz)。

选项说明

选项    功能
-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 通过gzip支持压缩或解压缩
-x  解包.tar文件


应用实例
        案例1:压缩多个文件,将/home/a1.txt和/home/a2.txt压缩成a.tar.gz

tar -zcvf a.tar.gz a1.txt a2.txt

        案例2:将/home的文件夹压缩成myhome.tar.gz

tar -zcvf myhome.tar.gz /home/

        案例3:将a.tar.gz解压到当前目录

tar -zxvf a.tar.gz

        案例4:将myhome.tar.gz解压到/opt/自录下

tar -zxvf myhome.tar.gz -C /opt/

    细节说明
        指定解压到的那个目录,事先要存在才能成功,否则会抛错。

第八章 组管理

在Linux中的每个用户必须属于一个组,不能独立于组外。在Linux中每个文件有所有者、所在组、其它组的概态。

  1.     所有者
  2.     所在组
  3.     其它组
  4.     改变用户所在的组

8.1 用户家目录的概念

/home/

目录下有各个创建的用户对于的家目录,当用户登录时,会自动的进入到自己的家目录。

/home/xm
/home/xh
/home/zwj

8.2 文件/目录所有者

一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。

查看文件的所有者

指令:

ls -ahl

应用实例:创建一个组police,再创建一个用户tom,将tom放入police组,然后使用tom来创建一个文件ok.txt,看看情况如何。

groupadd police
useradd -g police tom
passwd tom 修改密码
touch ok.txt
ls -ahl

修改文件所有者

指令:

chown 用户名 文件名

应用案例:使用root创建一个文件apple.txt ,然后将其所有者修改成tom。

chown tom apple.txt

组的创建

基本指令

groupadd 组名

应用实例:
        创建一个组monster

groupadd monster

        创建一个用户fox ,并放入到monster组中

useradd -g monster fox
id fox

查看文件/目录所在组

基本指令

ls -ahl

修改文件所在的组

基本指令

chgrp 组名 文件名

应用实例:使用root用户创建文件 orange.txt,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到police组。

touch orange.txt
chgrp police orange.txt

其它组

除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组。

改变用户所在组

在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某个用户所在的组。

    改变用户所在组

usermod -g 组名 用户名
usermod -d 目录名 用户名:改变该用户登陆的初始目录。

    应用实例
        创建一个土匪组(bandit)将tom这个用户从原来所在的police组,修改到 bandit(土匪)组。

id tom:查看tom组信息
groupadd bandit
chmod -g bandit tom

 



posted @ 2018-10-27 11:42  王陸  阅读(907)  评论(0编辑  收藏  举报