Linux基础学习

2020年9月30日

常见命令

登录:ssh 用户名@服务器地址
date、cal、bc(计算器)
打完一部分命令,连按两个tab,可以直接将以这个开头的命令全部显示
tab讲究的就是一个补全
如果在第一个字段后面,就是命令补全
如果是在第二个字段后面,就是文件补全
在某些特定的命令后米娜,还会变成参数补全
CTRL+C是停止
CTRL+D是直接登出命令行

2020年10月2日
常见的命令加上–help可以查询用法
man page:直接了解一个命令的一大堆用法和参数选项
在man page页面中,可以通过输入/再加上字符串来进行文本搜索
文本编辑器,nano,常见命令 nano tx.txt

Linux的文件权限与目录配置

文件的权限由是十个字符表示,第一个字符表示文件的类型,文件类型中,比较比较重要的有d和-,d是目录,而-是文件
而后面九个字符分别表示拥有者、用户组、其他人这三个对象关于读写执行的权限~rwxrwxrwx
r、w、x的权限值分别为4、2、1,这样子直接用和就可以知道具体的权限是什么样子的

修改文件属性和权限的三种方法:chgrp、chwon、chmod

1.常规文件类型又分为纯文本文件(ASCII)、二进制文件(binary)、数据文件(data)
2.目录文件
3.链接文件,用(l)表示,和快捷方式类似
4.设备文件:区块设备文件(b)软盘和硬盘等,字符设备文件©键盘鼠标等
5.数据接口文件:(s)
6.数据输送文件:§

Linux中没有扩展名,一个文件能否执行,只和文件的类型还有权限有关,和文件名无关,当然,不保证可以执行成功

usr不是user的意思,而是UNIX Software Resource的缩写,/usr是UNIX操作系统软件资源存放的目录

/是根目录,包含了所有重要的系统数据还有很多分区数据
只要是不以/开头的路径,都是相对路径

.代表当前目录,…代表一级目录

Linux文件与目录管理

直接输入cd就是回到自己的家目录的意思,和cd ~的意思相同
cd -是回到刚刚那个目录
pwd:显示目前所在的目录
mkdir:建立空目录,一般情况下只能一层一层加,如果在mkdir后面加上-p,可以自动建立多层目录
rmdir:删除空目录,和上面一样,rmdir name就可以了,得一层一层删除,且必须保证是空目录
rm -r name:这个命令可以直接删除目录下所有文件

PATH是环境变量,里面是一堆目录的集合, 表 示 的 是 后 面 接 变 量 , 即 表示的是后面接变量,即 PATH,查看系统变量的方法如下:echo $PATH,环境变量中的目录用:隔开

ls -l可以直接用ll代替,非常之方便

2020年10月3日
cp:复制文件,cp 源文件 目标文件,可以cp后面加个-a来保证数据特性完全不变,如果复制的是目录的话,那么就要加上-r,进行递归复制
rm:删除文件,rm -f,删除并且忽略不存在的文件,rm -i,交互删除,会进行问询,rm -r递归删除,用于目录的删除,不会询问,后果很严重
mv:移动文件,mv 源文件 目标文件,mv -f,强制移动,直接覆盖,mv -i,覆盖前会询问,mv -u,如果存在,只有当源文件比较新的时候才会选择覆盖

查看文件内容

cat:直接查看一个文件的内容,加上-n,可以将行号标出来,tac,反向查看,很皮
nl:添加行号直接打印出来
more是对文本进行更高级的查看搜索什么的,可以进行翻页,less更好,还可以往前翻

数据截取:head -n 文件名,取前几行查看,而tail -n 文件名则是取后几行查看

查看非文本文件:od -t [某个代表类型的字符,决定用什么结果来输出,a、c这样的]
修改文
修改文件的时间等:touch
查看或者修改文件的默认权限:umask,直接输入就是查看,还可以填写一个四位数字。后三位就是需要减掉的权限
查看文件隐藏属性:lsattr
文件的特殊属性:SUID、SGID、SBIT,前两个是对于文件有效,最后一个是对目录有效,主要是用来代替x属性的,无非是只能让某些特定的程序执行

文件查找

查找执行文件:which(即命令文件所在的位置)
文件的查找:
whereis -文件或者目录名,在特定的文件夹中寻找文件
locate [-某字母] -关键字,通过部分关键字,寻找全称的文件所在位置,是通过数据库去寻找的,每天更新一次,手动更新命令:updatedb
find:很牛皮,功能很全,但是很慢,并且很难记,不详细写了

Linux磁盘与文件系统管理

Linux的标准文件系统的是ext文件系统
文件系统特性:
数据区块,实际文件的内容
超级区块:记录文件系统的整体信息,各种各样的
inode:单纯记录文件的属性和区块号,存放于超级区块中
一个inode记录区块号码的区域,分为12个直接、1个间接、1个双间接、1个三间接记录区
superblock,超级区块:一个文件系统仅有一个超级区块,其他的超级区块是用作备份,进行超级区块的恢复
文件系统描述说明、区块对照表、inode对照表这些了解一下就好
dumpe2fs:查询ext系列超级区块信息的命令
超级区块、区块对照表、inode对照表被称为元数据

为了防止数据记录及其本身数据存放区的不一致情况,出现了日志记录区块,专门记录写入或者修改文件的步骤,ext3、4都是日志式文件系统,可以向下兼容ext2

Linux文件系统会将常用的文件放置在内存的缓冲区中,来加速文件的读写操作

每个文件系统都有独立的inode、区块、超级区块等信息,但是这个文件系统要能够链接到目录树才可以被我们使用,将文件系统与目录树结合的操作我们称为挂载,挂载点一定是目录,该目录是进入文件系统的入口

我吐了,学了半天ext,结果从centos 7开始,默认的文件系统已经变成了xfs文件系统,原因是ext太蠢了,没有用到动态配置的方法,当磁盘容量变大时,显得非常的缓慢

Linux通过VFS的内核功能去读取文件系统

xfs文件系统
数据区:也包括inode、数据区块、超级区块等数据,但是和ext不同的是,inode是系统需要才进行动态配置产生,并且有多种不同容量的区块进行选择
文件系统活动登陆区::类似于日志区
实时运行区:文件要被建立时,先在这个区域内进行暂时保存,分配完毕后再写入数据区内

文件系统的简单操作

df:列出文件系统的整体磁盘使用量
du:查看文件系统的磁盘使用量(当前所在目录所占的磁盘空间)

硬链接:在某条目录下面,新增文件名链接到某一个inode号码的关联记录
限制在于无法跨文件系统,并且不能链接目录

符号链接:建立一个独立的文件,这个文件会让数据的读取指向它链接的那个文件的文件名,可以和Windows中的快捷方式直接划等号,这个链接适用面比较广

ln [-sf] 源文件 目标文件
不加任何参数就是硬链接,加上-s就是符号链接,加上-f就是直接覆盖掉

磁盘的分区、格式化、检验与挂载和文件压缩、打包、文件系统备份、光盘写入刻录

2020年10月5日
这些我决定先不学了,弄来弄去这些我都用不到,磁盘和文件系统的东西先挖个坑,以后我Linux学习有成了再来填(主要是太难了我去),就很nice!起飞🛫!

vim程序编辑器

所有的Unix-like系统都会内置vi文本编辑器
vim具有程序编辑的能力,vim是vi的高级版本

vi有三种模式,一般命令模式、编辑模式、命令行模式
1.一般命令模式是默认模式,只能进行复制粘贴删除,无法进行编辑
2.只有按下ioar四个字母任意一个的大小写时,进入编辑模式,按下esc可返回一般命令模式
3.按下:/?三个中任意一个按钮,进入命令行模式,查找数据、读取保存、保存批量替换字符、退出vi等都在这个模式中进行,按下:wq可以保存并退出

centos中,vi默认已经被vim替换了,除非是使用/bin/vi才能使用到vi
vi的很多命令都在书上,很多,得到用的时候才能全部记住

vim会通过缓存文件来进行文件恢复
vim的额外功能,可视区块,可以通过v和V来进行反白选择,再加上CTRL+v、y、d、p来进行操作
可以通过:files来进行多文件编辑,:n和:N来进行下、上一个文件的操作

ctrl+x默认,+n、+f、+o分别是文件内容、目录内文件名、扩展名相关的关键词进行补充
中文编码、语系编码转换等稍微有点麻烦,用处不大,要用的时候再看,知道有这回事就行

认识和学习BASH

应用程序是在最外层的,用户通过应用程序来指挥内核完成硬件任务,这些应用程序就像鸡蛋外壳一样,所以也被称为壳程序(shell)

可以在/etc/shells文件夹中查看shell种类
bash是Linux默认的shell

alias:别名的设置,比如alias lm = ‘ls -al’
unalias:消除别名,后面直接加别名就可以了
type:查看每个命令是否为bash的内置命令,也可以用来查找完整命令
/:可以将enter进行转义,进入下一行,而不是执行

可以使用echo来进行变量的查询,比如echo $varible、echo P A T H 变 量 设 置 时 , 从 左 往 右 , 单 双 引 号 一 定 要 成 对 , n a m e = V B b i r d 在 P A T H 变 量 中 累 加 目 录 , P A T H = PATH 变量设置时,从左往右,单双引号一定要成对,name=VBbird 在PATH变量中累加目录,PATH= PATH,name=VBbirdPATHPATH=PATH:/home/dmtsai/bin
env:查看目前shell环境下的所有环境变量与其内容
RANDOM:取出0-32767中的任意一个数值
set:查看所有变量和函数库中的函数
PS1:提示字符,\d、\H、\h等等一大堆,但是基本都是英文单词的首字母

可以通过输入bash进入子进程,要回去只能将子进程结束掉
子进程会继承父进程的环境变量,但不会继承父进程的自定义变量
export 变量名称,将自定义变量变成环境变量,可以在共享自己的变量设置给后来调用的文件或其他进程,如果不加变量名称,则可以显示出所有的环境变量的名称

可以通过locale来查询本系统暂时支持的语系,加个-a可以看所有可以支持的语系

2020年10月7日
read:读取来自键盘的输入变量,-t接秒数,-p接提示的字符串
declare、typeset:声明变量的类型,-a,数组类型;-i,整型;-x:将后面的变量变成环境变量;-r:将后面的变量变成readonly类型,不可更改内容
(补充:比如指定为-i之后,计算式就会被计算出来,不然不会,因为变量类型默认为字符串类型,并且bash中数值运算最多到达整数运算)

ulimit:与文件系统及程序的限制关系

echo $path#*local/bin:,#就是符合代替文字的最短的那一个,而##就是符合代替文字最长的那一个,是从左往右,而%和%%就是从右往左,其他的没区别
echo/旧字符串//新字符串:第一个符合的字符串被替换
echo//旧字符串/新字符串:全部的旧字符串被替换

echo $username-null,变量测试结果的内容替换,如果username没有被设置,则返回null,如果已经被设置,则会返回变量的值,如果想在username为空时也返回null,则在-之前加个:就可以实现,空字符串和没有设置是一样的

history:查看历史命令,n:数字,查看最近n条命令;-c:将目前shell中的所有history命令全部消除;-a:将新增的history命令新增到histfiles中,若没有,则默认写入~/:.bash_history;-r:将histfiles的内容读到目前这个shell的history命令中;-w:将目前的history记录内容写到histfiles中

组合按键的意义:CTRL+
C:终止当前的命令
D:输入结束
M:就是回车
S:暂停屏幕的输出
Q:恢复屏幕的输出
U:在提示字符按下,将整列命令删除
Z:暂停当前的命令

通配符和特殊符号:
*:代表0-无穷个任意字符
?:一定有一个字符
[]:代表有[]中的一个,类似于MySQL中的in
[-]:在编码顺序内的所有字符,比如[0-9]这样
[^]:反向选择,只要不是其中的就行,类似与MySQL中的not in

数据流重定向

.>、>>都是数据输出的重定向,一个替换,一个累加的区别
并且还有区别>和>>前面1和2分别代表这正确和错误的数据,1表示正确,2表示错误
全部写入的话用2>&1和&>都可以
.<就是将原本需要有键盘输入的数据,改由文件内容来替换,<后面接的文件内容直接被<前面的文件所替换
<<代表着结束的输入字符的意思,比如cat 文件名 <<“eof”,接下来是一直输入,但是当输入到eof的时候直接结束,连CTRL+D都不需要
&& ||,两边分别接一个命令,一个是前者成功了才执行后者,第二个是前者失败了才执行后者

管道命令(pipe)

管道命令使用的是 | 这个界定符号,管道命令和连续执行命令是不一样的
管道命令的特点:1.管道命令只能处理标准的输出,错误则会忽略;2.后者命令之只能接受前者的数据成为标准输入才可以继续处理

cut:cut -c 12-20,截取12到20间的字符
grep:grep ‘root’,将有root的一行数据取出来

排序命令:
sort,加上 -字母 之后就可以按照编码来进行排序
uniq:去除重复的
wc:计算出整体输出信息的总行数

双重定向:tee
可以将一份到文件内的同样数据继续发送,同时将其保存下来,当作中间缓存记录之用

字符转换命令:
tr:用来删除一段信息中的文字,或者进行文字信息的替换,分别是-d和-s
col:将tab按键替换成空格键,还有很多用法,但是主要就用这么一种
join:处理两个文件之间的数据,在两个相同数据的一行,重复的数据只显示一次
paste:相比于join,就是直接将两个文件放在一起,中间用tab分隔
expand:将tab全部转换为空格
unexpand:将空格按键全部转换为tab按键

划分命令:
split:将一个大文件划分为很多个小文件

参数代换
xargs:可以接 -字母 ,就是对于命令产生的参数进行处理,有很多中处理功能,需要用的时候再查吧

stdin:标准输入
stdout:标准输出

在管道命令中,- 也经常用来替代stdin和stdout,特别是经常用来替代前一条命令的stdout

正则表达式与文件格式化处理

正则表达式是一种表示法,用作字符串的处理
正则表达式还分为基础正则表达式和扩展正则表达式,扩展正则表达式除了字符串的处理之外,还可以用作群组的字符串处理

正则表达式的特殊符号,比较多,去除其中几个说一下
alnum:代表英文大小写字符以及数字
algit:代表任意数字0-9
alpha、upper、lower这三个很简单,字母、大写字母、小写字母

grep的高级选项
grep -A -B,后面再加数字,除了该行,再加上一些其他行,分别是前面几行和后面几行的意思

2020年10月9日
正则表达式和一般在命令行中输入命令的通配符并不相同,不要搞混了

正则表达式中的RE字符:

^word:待查找的字符串在行首
word$:待查找的字符串在行尾
.:一定有一个任意字符
\:转义符,将特殊符号的特殊意义去除
*:重复零个到无穷个的前一个RE字符
[list]:字符集合的RE字符,里面列出想要选取的字符
[n1-n2]:字符集合的RE字符,里面列出想要选取的字符范围
[^list]:字符集合的RE字符,里面列出不要的字符串或者范围
{n,m}:连续n到m个的前一个RE字符

sed工具:一个管道命令,分析标准输入,并且还可将数据进行替换、删除、新增、选取特定行等功能,分别四-c、-d、-a、-n等。甚至于还可以直接修改文件内容,使用-i,非常危险!!!

还有扩展正则表达式,了解一下就行,不写下来了

文件的格式化与相关处理

printf ‘打印格式’ 实际内容,是一种格式化打印,和C语言的输出格式化有相通之处
\a:警告声音输出
\b:退格键
\f:清楚屏幕
\n:输出新的一行
\r:亦即回车按键
\t:水平的tab按键
\v:垂直的tab按键
\xNN:NN为两位数字,可以转换数字成为字符

awk:好用的数据处理工具
awk ‘条件类型1{操作1} 条件类型2{操作2} …’ filename
awk的内置变量:NF:每一行拥有的字段总数,NR:目前awk所处理的是第几行的数据,FS:目前的分隔字符,默认是空格键

文件对比工具:
diff:以行为单位对比两个文件之间的差异,还可以进行替换和删除等等,可以将两个文件内的数据弄来弄去,功能较多。
cmp:利用字节单位去比对两个文件,包括二进制文件,返回的信息是两个文件的不同之处
patch:和diff密不可分,diff制作出来的对比我呢见通常扩展名为.patch,而以patch为扩展名的文件可以类比为 补丁,patch命令可以使用
patch file来更新旧版数据

文件打印设置:pr,可以加页码、页脚、标题等等一大堆,记也记不住,了解就好

学习shell脚本

shell脚本是了解Linux来龙去脉的必要知识,等学完Linux使用者管理之后,我就来把这部分看完

Linux账号管理与ACL权限管理

用户的账号都在/etc/passwd当中存储
每个登陆的用户都会拥有两个ID,一个是UID,用户ID,还有一个是GID,用户组ID
UID和账号是相互对应的
用户密码放在/etc/shadow中保存,被分隔开,并且放了很多的密码限制参数在其中,存放的是经过编码的密码
一般用户密码忘记可以通过root身份简单解决,而root密码忘记可以通过各种可行的方法启动进入Linux然后再去修改,比如重新启动进入单人维护模式

对于一个用户下面新建立的文件,他是属于有效用户组的
groups:有效与支持用户组的观察,当前的用户所在的用户组,第一个用户组即为有效用户组
newgrp:将本身的有效用户组切换到某个支持的用户组
/etc/gshadow:主要功能是建立用户组管理员

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值