LINUX 命令讲解篇
前言
Linux命令行有命令提示符,提示你可以输入指令
在linux之中用到最多的是两种用户
#:root 超级管理员
$:普通用户
命令格式:
指令 选项(修改命令的执行特性) 参数
脚本的名字 短选项 不组合必须有空格 如果组合了不能有空格 指定命令的作用对象
多个选项可以组合 -a -b = -ab 前面的指令选对谁长选项 通常不能组合 使用
用户管理
su:切换用户switch user
Su 用户名 半切换
Su –l 用户名 完全切换
修改密码 passwd
type :显示指定命令属于哪种类型
命令类型
1.内部命令:(shell内置)内部
2.外部命令;在文件系统的某一个路径下有一个命令名称相应的可执行文件
知识串讲
一个可执行程序文件,必须有一个执行入口,二进制开头有一个特殊字符或几个字节非常独特标识,这个叫做程序的模数,模数可以标识这个二进制程序的执行格式,windos和linux执行模数是不一样的,他们理解的二进制模数不太一样,即使两者库一样,程序也未必能相互运行
程序启动时 执行程序提交给内核 内核怎么区分脚本和程序呢 就是从模数区分,内核就去找程序的模数,所以一个程序的执行入口就是标识着模数和执行格式
目录:目录也是文件,是路径映射文件
路径:从指定起始点到目的地所经过的位置
文件系统 file system:层次化文件管理机制,一个一个分类分层 便于管理
目录管理
ls:List列出指定路径所有文件
ls –l 显示长格式信息 ls -long
(1)- | (2)-rw------ | (3)2 | (4)root | (5)root | (6)1368 | (7)11 | (8)20 | (9)22:01 | (10)anacond-ks-cfg |
(1)- 文件类型
-:普通文件
d:文件目录
b:块设备文件(bolck)
c:字符设备文件
l:符号链接文件(软连接文件)
p;命令管道(pipe)
s:套接字文件(socket)
(2)-rw------
文件权限9位 每3位一组,每一组:rwx(读,写,执行)没有权限就用-表示
(3) 2 文件硬链接次数:原文件被调用次
(4)root文件的所有者(owner)
(5)root文件的所属组(group)
(6)1368 文件的大小(size)文件大小用byte来表示
时间戳(文件的被修改的时间)每个文件都有三个时间戳
1访问access:被查看
2修改modify:改变了文件的内容
3改变change:改了文件的元数据,改变了文件名就是修改了元数据,改变了
元数据:就是用来定义数据的数据。比如,有一条学生信息记录,其中包括字段姓名(name)、年龄(age)、性别(male)、班级(class)等,那么name、age、male、class就是元数据。通过它们的描述,一条关于学生信息的数据记录就产生;
这里显示的是最近一次被修改的时间
(7)月份
(8)日期
(9)时间
(10)文件名
注:文件大小都用byte看着十分累人那么
ls –lh 显示文件大小
-h 做单位转换
ls –la
-a:显示以 . 开头的隐藏文件 linux系统隐藏文件以 . 开头
.:当前目录的隐藏文件
..:上级目录的隐藏文件
-A 显示隐藏文件 不包换.和.. 作为了解就行了
ls –ld
-d:显示目录自身属性 如果我在root文件夹里我要看这个文件夹的属性那么就用上d
每个文件都有个节点号,这是计算机认识的语言 一个节点号就跟,名字一样代表一个文件
Ls –li:显示文件的索引节点号
-i:index node:索引节点
1615223204就是文件的索引节点,配合查找命令可以快速的查找到该文件,以后经常用
ls –R
-R递归((recursive))显示文件:就是层层显示文件夹的所有东西
cd(change directory)切换当前目录,只能目录与目录之间切换
cd ~用户名: 进入指定用户的家目录
cd - :在当前目录和前一次所在的目录之间来回切换
pwd(printing working direc):显示当前目录
mkdir:创建文件夹
mkdri –p:递归创建文件夹
文件管理
touch:创建空文件
stat:查看文件和文件系统的状态信息 ,这里就可以看到3个时间戳 等比如名字 大小数据块等等
rm:删除
-i:交互式提示
-f:不提示直接删除
-r:递归删除,删除目录的同时把目录中的文件都删除
Cp:复制
格式: cp 原文件 目标地点
复制只能一个文件到一个文件
多个文件到一个目录
Cp –r|:递归复制
Cp –i:交互式询问是否删除或者覆盖
Cp –p:保留文件的属主属组和时间戳 非常有用
Cp –a:归档复制常用于备份 a把pr等选项全部包含在内了非常全面
mv:移动文件,重命名
格式: mv 原文件 目标地点
Mv /mnt/123 /mtp/223
意思就是把mnt目录下的123 移动到mtp目录下 并改名为223
mv:tmp/123 223
在同一个文件里了 把123改名为223
时间管理
知识串讲
Linux内置环境变量,这样可以简化命令使用,要不然外置命令全部都以全路径操作会非常麻烦
(1)变量:变量其实就是内存,命名的内存空间。我在内存划出一部分空间然后命名,我就可以向起名的内存空间放数据,放数据的过程就变量赋值
Name=jay 在内存中找一部分空间起名叫name而空间中放的数据叫jay =就叫赋值,相当于一个抽屉 抽屉名字叫name 抽屉里的书叫jay
(2)变量生成的过程就是申请内存使用的过程
元数据就是用来定义数据的数据。比如,有一条学生信息记录,其中包括字段姓名(name)、年龄(age)、性别(male)、班级(class)等,那么name、age、male、class就是元数据。通过它们的描述,一条关于学生信息的数据记录就产生
堆栈是两种数据结构。堆栈都是一种数据项按序排列的数据结构 ,是分开说的
堆:申请内存访问的数据放在堆里
栈:本地变量和静态变量放在栈里
printenv :查看当前系统中所有的环境变量
当中会有个PATH环境变量 这个使用:分开的路径当我们执行命令的时候 PATH会按次序一个一个去找可执行命令,直到找到为止
hash :缓存中记录所用使用过命令的路径,
第一次会去环境变量下的PATH路径里去找,下次在使用命令 直接去缓存中找,而不用环境变量中一个一个找路径,
指令一种是去路径中找,一种从缓存中找。
缓存是实现系统加速的 从缓存中找数据一定会比直接找路径或者文件系统中速度快吗
缓存中保存的是hash列表 也叫哈希,哈希是个键值数据库 ,在键值库中查找的速度基本可以达到o(1)的速度
o(1):衡量一个程序执行速度的标准,从一个列表中查找一个数据的速度随着列表长度变化而发生变化的比例。无论列表有多长花费的时间是一样的 从10个数据中找 还是从10万的数据中找 花费的时间是一样的。Hash速度是o(1)的无论数据再多瞬间就可以找到,缓存中存放的有hash列表 所以缓存中找的速度比路径或者文件系统中找快的不止一倍。
rtc:硬件时间Real-Time Clock 每次开机操作系统都会读取硬件时间设置为当前时间
ntp:网络时间协议 Network Time Protocol
linux开机会通过rtc读取当前时间 一但读取成功就不会再次使用,内核会通过软件的方式模拟振荡器在系统内部维持一个时钟,所以操作系统有2个时间 一个系统时钟 一个硬件时钟 内核在cup的作用下会自动计时
date:(时间管理):显示系统时间
date –s更改系统时间:格式为 “年-月-日 ::分钟” date +
date +%Y%m%d :以YYYYmmdd格式显示时间
date +%F :显示日期
%H:小时
%M:分钟
%S:秒钟
date +%F-%H-%M-%S:显示当前的 年,月,日,小时,分钟,秒钟
hwclock:设置时间
-w:将系统时间写到硬件中 以系统为准
-s:将硬件时间写到系统中 以硬件为准
Cal:日历 (年或者月)
文本处理
echo:显示文字 把输入的文字,输出在屏幕上
echo –e “文字。。。\n文字” :把输入的文字以两行多看 \n为分割文字段落点
切记:一定要加双引号
cat:连接并显示文本内容(cat只支持查看一屏幕文本,文字太多无法翻屏显示)
Linux文本一行结束后头是$符,而windos一行结束后是$加空格
-n:显示行号
-e:显示行与行的段符
less:翻页查看文本
Enter 向下n行,需要定义。默认为1行
F 键: 向下滚动一屏
B 键: 返回上一屏
q:退出
head:查看文件的前n行(默认十行)
head –n :后面加需要显示多少行
tail:查看文件的后n行(默认十行)
tail –n :后面加需要显示多少行
tail –f :查看文件尾部不退出随时更新文件新添加的内容,用于查看日志等随时更新的文件
cut:切断文本
-d:指定字段分隔符,默认空格
-f:指定要显示的字段
案例:root:x:0:0:root:/root:/bin/passwd
Cut -d : 默认分隔符: 从有:的地方切开显示 –f 1 切开后只显示第一段
所以 cut –d : -f 1 显示出来的只有root
Sort:文本排序
-n:数值排序,按照数值的大小排序
-r:降序排序
-t:指定字段分隔符
-k:以哪个字段为关键字进行排序 分隔符隔开很多字段 哪个字段进行排序后面跟数字
-u:除去文件的中出现的重复行
Uniq: 报告或忽略文件中的重复行
-c:显示文件中行重复的次数
-d:只显示重复行
Tee:指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件
Tr:转换或删除字符
Tr “原本的文字” “想要替换的文字” < /需要替换的文本
例:tr “a-b” “A-B” < /etc/passwd
Tr转换 把passwd文本里的 小写ab转换成大写AB,
-表示到: A到B “A-Z“ A到Z所有的,
Tr –d:删除字符集中所有出现的字符
例:Tr –d:“a-c”< /etc/passwd
删除passwd文件中a到c字符集的所有字符 删除内容a b c
:输入重定向
文本统计
Wc(word count):文本统计
Wc /etc/passwd
21 27 928/etc/passwd
三个数字分别为:21行 27个单词 928个字节 只适用于文本
Wc –l:只显示行数 也可以跟管道符一起用 显示文件夹下有多少文件 例如
ll /etc|wc –l :ll显示etc下所有文件夹 用wc统计出来
Wc –w:只显示单词数
bash基本使用
命令行编辑
光标跳转:
Ctrl+a :跳转到行首
Ctrl+e :跳转到行位
Ctrl+d:删除光标所在文字
Ctrl+u:删除光标至命令行首内容
Ctrl+k:删除光标至命令行尾内容
Ctrl+箭头:快速移动一个单词
Ctrl+l:清除屏幕所有文件
history: 查看历史命令
history -d(数字):后面跟数字 指定删除某一条历史命令
history -c:清空所有历史命令
!!:执行上一条命令
命令替换:$(命令) 或者`命令` (反引号)
例如:touch /mnt/$(date +%F).log
创建一个文件夹 在mnt下 date+%F是一个命令 显示结果为当前日期时间2018-01-24 使用命令替换 $(命令)后 直接替换成命令的执行结果 所以生成的文件就是 /mnt/2018-01-24.log
Bash支持的引号有三种
1、``(反引号):命令替换
2、’’(单引号):强引用不完成变量替换
3、””(双引号):弱引用,可以实现变量替换
文件名通配
*:匹配任意长度的任意字符
?:任意单个字符
[]:匹配指定范围内的单个字符
[a-z] [0-9]
I/O重定向:改变了数据的输出来源和输入来源
> : 覆盖输出 直接覆盖掉原文件内的所有内容
>>:追加输出 保留文件原内容 在向文件里新增新内容
Set –C:进制对已存在文件使用覆盖重定向
Set +C:关闭上述功能
2>:重定向错误输出
2>>:追加输出
&> 重定向标准和错误输出至同一个文件
<:输入重定向
<<:输出追加
管道:前一个命令的输出作为后一个命令的输入
例:cat/etc/passwd |grep 123 grep是查找指令
查看cat/etc/passwd 里面的内容 把结果交给 第二个指令grep 由第二个指令去查找文件里面含有123的内容 输出到屏幕
Tee:它与重定向命令的不同之处在于达到重定向效果的同时,还能在屏观察输出
-a或--append :附加到既有文件的后面,而非覆盖它
后续会在更新