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号端口。
具体操作:
- 在Windows暗转XShell,根据安装向导步骤安装即可。
- 在Linux查看或开启SSHD:命令行setup->系统服务->SSHD,*号表示开启(空格键确定,TAB键改变焦点)。
- 在Linux用netstat -antp |grep sshd 看是否启动了22端口。
- 在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 创建用户指定密码
- Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
- 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 运行级别
运行级别说明:
-
关机
-
单用户【找回丢失密码】
-
多用户状态没有网络服务
-
多用户状态有网络服务
-
系统未使用保留给用户
-
图形界面
-
系统重启
常用运行级别是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
- 案例:采用more查看文件/etc/profile
less
less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
- 基本语法
- less 要查看的文件
- 操作说明
操作 | 功能说明 |
---|---|
空白键 | 向下翻动一页 |
[PageDown] | 向下翻动一页 |
[PageUp] | 向上翻动一页 |
/字串 | 向下搜寻“字串”的功能:n:向下查我;N:向上查找; |
?字串 | 向上搜寻“字串”的功能:n:向上查我;N:向下查找; |
q | 离开less这个程序 |
- 应用实例
- 案例:采用less查看一个大文件文件
- less /opt/金庸-射雕英雄传txt精校版.txt
- 案例:采用less查看一个大文件文件
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中每个文件有所有者、所在组、其它组的概态。
- 所有者
- 所在组
- 其它组
- 改变用户所在的组
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