pc 计算器scale=3 显示小数点3位
192 帮助文档man info
自带的文档与安装包位于/usr/shaer/doc
开关机
reboot,shutdown,poweroff有参数,可以定时,提示不关机等,调用的是systemctl指令实现
~root root的家目录
常用命令
文件夹也可以链接,pwd -p 显示链接后路径 -239
查看自己的环境变量直接echo $PATH
cp 可以创建软硬连接-l -s,权限变动-a -p,复制链接时的问题
转义的另一个方法 rm -- -123
mv 可以多文件夹移动 mv dir1 dir2 dirTarget
nano 编辑器
查看文件
查看内容
atime=读取数据时间 time修改内容时间 ctime 状态修改时间
ls --full-time --time=atime显示切换时间 -h可读格式 -d显示目录本身;有3个时间-258 可以切换显示内容变更,读取,状态变更时间,touch可以更新时间 -260
cat 与tac正反查看 -n显示行号 -A显示特殊字符等全部内容(^I=tap $=断行)
nl显示行号版的cat,nl 不显示空行
less 页显示 more单向页显示 -254
head 10 tail 10 正反头部显示 ,tail持续监测 -f,第10行后的内容 -n +10
od 二进制显示 -t c 用ascll显示 ,对照 -t oCc ,第一列是bytes数目
Grep -nr 内容 文件
Alias 环境中的快捷指令
查看类型与执行档
type 查看文件类型
file 文件类型
which查看path下的执行档名路径(查不到bash内建命令,如history)
搜索文件
find /
-mtime n(+nn天前不含n; n那一天;-n n天内;0天代表24小时内)-newer 找更新的文件 -272
-name -user -nouser -type
-a 与 !非 -o 或
-perm /7000 包含三个权限中的一个 有/是包含 -是不含 不加是一致
-exce ls -l {} \; {}find找到的内容 \; 转义exec所需要的结束符;
sudo updatedb;locate 从数据库搜索文件 -i忽略大小写 -r 接正则 -c光计数 -272
whereis 查找特定目录下的文件 -l查看索茶目录-271
文件权限
文件-r读取内容 w 编辑、新增(不能删除) x 执行;目录 r读文件夹内容 w修改内容(包括删除文件)x进入文件夹 -234
ext234可以chattr修改 lsattr查看隐藏属性,包括是否可删除的属性,其他文件系统不一定支持, chattr +i(无法改动)a(禁止删与该,可新增内容)-264
umask -S查看创建文件的默认权限 不加参数时 后三位是拿掉的权限数字,第一位是特殊权限,umask 0002 设置权限 拿掉其他人的写权限
权限三命令chgrp chown chmod,chown 所有者:所有组
s在所属组与所属者的权限中不同,t仅目录有效-267
set uid :/tmp中的s权限;仅对二进制程序有效,执行者需要有执行权限,仅执行过程中有拥有者的权限,-266
set gid:文件-类似set uid,执行时有所属组的权限 ;目录-有rx权限能进入目录时,在目录中会变成目录所属组,新建的文件也变成所属组
sticky bit :给目录的,仅有创建者与root有权利删除
chmod 添加 4 suid 2 sgid 1sbit ;chmod test 4777
用户
新增groupadd -G 组 useradd -G 组 用户
查看权限 Id 用户
文件系统
Ext2文件系统
包含多个block group
Block group 内包含的6个区域 -285
Data Block资料区域 可设置大小,每个文件一个block,大文件会有多个block
Inode 表格记录Inode 文件属性( ls -l出的内容)与block位置 -286
Super bolock 记录inode与 block数据 ,一个文件系统只有一个,其他组里的是备份-288
文件描述 记录每个组的开始与结束block
区块对照表 inode是否被使用
Inode 对照表 记录inode是否被使用
Ext3/4是日志型的文件系统
避免内存操作错误或者停电等原因,分出一个区块记录文件读写的开始与完成。
Superblock整体文件系统数据,包括inode与block大小 -289
查找文件时通过逐级查找inode号确定文件位置-293,inode会有12个记录与二三级记录block位置-287
异步,内存中标记dirty的会被写入磁盘
挂载,挂在目录上做文件系统入口
查看支持的文件系统 -297
例子 296 inode号一样的文件是同一个,如/ /.. /.
Vfs 调用不同的文件系统,最后返回给使用者
Xfs文件系统
三个区域
资料区 inode的分配追踪,super inode,记录剩余空间,
文件活动记录区,类似ext3/4的记录区块
实时运作区 写文件时找几个extent区写入后把inode 与block记录
格式化时可以修改参数优化
软硬链接
软链接算一个文件,类似快捷方式
硬连接指向同一个inode号的文件,目录中的. ..也是硬链接,创建一个新目录时链接+1
相关指令
blkid 查看被格式化的设备
dumpe2fs ext文件系统查看设备文件名 -290
Xfs_info xfs文件系统详情 -300
ls -i 查看文件的inode号
df -T 显示挂载的类型
du -m -k 打印文件大小-s列出总量 不加-S会统计次级目录
/dev/shm是内存虚拟出的硬盘
磁盘
文件系统操作 需要虚拟机实践317
Parted需要u盘 -346
分区完成格式化,partprobe 重新读取分区-320
常用命令
dd if=输出装置(常用/dev/zero) of=输入装置 bs=一块大小 count=几块,累砖一样
是直接读取扇区,因不区分文件系统,可用于备份
lsblk 列出存储装置与分区 -312 -ip 以ascll列出完整名
blkid 查看uuid(非root用户不行,且无报错)
Parted devices_name print ;parted /dev/硬盘设备名 print 获取分区格式 -313
分区新增
Mbr用Fdisk gpt用gdifsk
有空余空间fdisk n(新增) 输入开头与结束block位置
Mkfs.ext4进行格式化324
Swapon -s 查看交换分区,可新增-345
利用loop新增分区
Dd 创建指定大小文件, mkfs.***格式化后,blkid获得uuid,然后mount -o loop挂上,就可以不改环境新增分区,改/etc/fstap(类型是defaults,loop) 自动挂载并做测试 -340
文件系统修复与检查-326
文件系统改名改uuid -335
被检查的文件系统不能是挂载中,根目录使用-d单人模式
挂载
/etc/fstab 挂载记录6个参数 装置/名/uuid 挂载点 文件系统 系统参数dump fsck -337
参数可控制 自动检查类型,读写,执行,挂载,suid权限
自动挂载需要配置这个文件,但需要保持格式正确, 并做测试 ,unmount 设备;mount -a 查看挂载情况 -338
/etc/mtab /porc/mounts 挂载内容
/etc/filesystems 系统测试挂载文件的优先级
/proc/filesystems 系统已经挂载的
/lib/modules/$(uname -r)/kernel/fs 系统驱动
Mount UUID=”硬盘uuid” 挂载点
Mout 设备 挂载点
Mount --bind 可以文件夹挂文件夹,指定到同一个inode
Umount 多挂载点得指定想要卸载的挂载点
u盘挂载如果带有中文数据需要指定语系 -331
装置文件由主次要号码确定,mknod 文件名 类型 主码 次码 -334
Mknod /dev/sda10 b 252 10 创建块文件
Mknod /dev/pip10 p 创建管道文件
压缩
gz
Gzip -v 文件压缩 -d解压
参数1-9为速度由快到慢,压缩比由低到高 gzip -9 -c test test.gz
Zcat/zmore/zless查看被压缩的.gz文件内容
Zgrep -n “内容” 文件
Bzip2
Bzip -v -d
类似gz,有bzcat/bzgrep
XZ也一样(xz5.6.0 5.6.1版本有漏洞)
Tar
Tar -jcvf 压缩后的文件 要压的文件 f后必须是文件 J是xz j是bz2 z是gz -p保留权限 P保留绝对路径,会覆盖原备份的文件Excelude可以排除文件本,可按时间备份-364
把其他路径挪过来 36
Tar -jtvf 压缩文件 查看归档内容
Tar -jxvf 压缩文件 -C 解压目录
备份
练习-389
文件系统备份有专门的工具如xfsrestore
制作iso文件 mkiso -r -v -o 文件.iso 文件与对应刻录 -376
dd备份可以直接复制一个文件系统 -384(需实践)
Cpio 可以备份设备文件,需要先跳转到指定目录用,相对路径备份,绝对路径会覆盖对应的文件,类似tar -B -385
Cd /; find boot| cpio -vcoB > /dev/sr0 往设备上备份 cpio -idvc < /dev/sr0 取出
Vim -395
常用的还有
O 此行新增 o下行新增,R此行替换 r此字符替换
nG跳到第n列
n← 光标左跳n个字符
n回车 往下跳n列
G调到结尾 gg跳到开头
/下查找 ?上查找
:1,2s/ti1/ti2/g 替换第一行到第二行的ti1为ti2,:1,$为从头到尾,g变成gc可以确定是否替换
X前删除x后删除 5x后删除5个字
ndd 下删n行
:w新文件名 另存为
:Set nu显示行号
:! ls / 执行命令
视图模式可以多行操作v按字幕选,V按行选 ctrl v竖着选 d删 y复制 p粘
多文件开打后, :n 下一个:N上一个 :files有几个
多窗 :sp ctrl+w+↑上 ↓下选择窗口
补全 ctrl+x开启补全 再按ctrl+n 文件内容 +f当前目录文件名 +o 以vim内建关键字补全
相关配置文件 ~/.viminfo 记录操作 ~/.vimrc 配置,或用/etc/vimrc
/etc/locale.conf $LANG $LC_ALL 记录编码相关
编码问题
Linux断行为$(LF)windows为^M$(CRLF),转换可以安装dos2unix ,来使用dos2unix与nuix2dos来互相转换
语系转换
Iconv -f 原本编码 -t 新编码 指定文件 -o 新文件
Iconv --list 查看支持的编码
Locale 当前的语系环境 -a 支持的语系 -438,未设定的语系会被LANG与LC_ALL替代
简体繁体转换可以通过gb2312转utf8
File 查看
常用路径
/etc/shells 合法的shell
/etc/passwd 登录信息
~/.bash_history 这次登录前执行的命令,这次登录的命令在注销后保存
/etc/issue 登录信息-455 /etc/issue.net 远程登录信息
/etc/motd 登录后的通知,不一定存在,ubuntu自己创建给予权限后正常使用
/etc/profile loggin shell读取,设定环境变量-457
/etc/profile.d 中*.sh会被profile调用,并且会嵌套调用其他脚本-457
~/.bash_profile;.bash_login;.profile;loggin shell按顺序读取其中一个,是bash环境的个人配置文件
~/.bashrc non-loggin shell登录时的环境配置脚本,比loggin shell少1个 -460
~/man_bd.conf man的路径
~/bash_logout 注销时的脚本
bash与环境变量
Alias lb =`ls -al`起别名
Type 查看类型,与别名,可以配合which查看非内建的执行档路径
\enter 跳脱回车,因为是跳脱下一个符号所以不能有空格
Ctrl +u 前删 +k 后删, +a跳到最前 +e最后
Stty -a 查看终端快捷键配置 stty kill ^o 设定ctrl o 为 删除当前命令行上的字符462
环境变量
Env 查看当前环境的变量 LANG记录语系,RANDOM记录随机数 -432
Exprot 让变量变成环境变量,给后面呼叫的程序用
Declare环境变量转变量
Unset 取消变量,但环境变量任然能在其他程序里读到
变量可以赋值给变量,echo 出来内容一样
Bash直接执行会进入子程序,需要将变量变成环境变量才能读到
Set 所有变量 PS1命令提示符(等待输入命令时前面那堆提示位置与用户的字),可以自定义-435
Echo $$ 当前终端的pid
Echo $? 上个命令的错误标识
PS2其他符号?
Read 写入环境变量,多用于脚本交互 -p 指定提示语 -t超时时间
Declare 可以改变变量类型,指定计算公式为数字才会进行计算,也可设置为只读(但只能注销登录取消只读),-p打印变量类型,-i添加数字类型+i反而是减少
Bash线程是被限制的,uilmit -a查看限制-443,重新登录获取新bash时取消限制
${test#/*test:}删除字符串中/开头,*中间任意字符,test:结尾的字符,#删最短那个,##删最长那个,%则是从后往前开始匹配
Test=${t1-$t2}如果没定义t1就赋值t2的值,赋空也是被定义的;Test=${t1:-$t2}赋空也会被赋t2
变量测试,又懵又长-449
Alias起别名 ps=’ps -ef’ 是单引号
History能写入historyfiles 再去其他终端读出来,或者更新到.Bash_history
-c 清理 -w写入到文件 -r从文件里读取
!命令 能重复此前命令,省去打参数,可以打缺省命令
!n能执行之前第n次的命令 !!执行上次的命令,但需要主要保护此类数据
tty2这种需要登录的是Loggin shell,x window这种不用登录的是non loggin shell执行的环境配置脚本不同-459
Set 显示 -u空变量报错信息 -v打印前显示命令 -x执行前显示命令 $- 变量里是当前配置
通配符 *任意个数,?至少一个(可累加???),[abc]包含abc中的一个字符,[0-9]包含0到9任意一个,[^]不包含
{}命令区块()子shell开始与结束
012 标准输入;输出;错误输出
Find -name 名字 >t1.txt 2>t2.txt 可以分开输出正确消息与错误输出
指令传回值&& ||还可以用来通过 $?命令1是否来决定是否执行后面的命令-471
管线命令需要能接受标准输入,排序常用sort -k指定按第几段排序,-a忽略大小写-b疏略空格 -t指定分隔符
Uniq 重复的只显示一次并计数 477
Tee 同时向标准输出与指定文件输出-a叠加-478
Tr -d删除 -s替换 掉文本中的内容
Cut -d ‘:’ -f1 /etc/passwd 以:为分隔符切割后取每行第一块
Expand;Col -x tap转空格
Join整合含有相同内容的文件
Paste 同行粘贴
Split 大文件切小 split -b 300k(-l 10则是以10行为一个文件) /home/file file 切成file**格式的小文件,通过cat file** >> file 还原
Xargs 把标准输出切成参数,cat file|xargs -e’skip’ -pn 1 每次执行1次,执行前询问,遇到skip结束
减号将前一个减号给第二个减号 tar cf- /home | tar xf -C /etc -
486
正则运算
语系影响排序,排序影响正则
标识
Grep 能-An搜到内容的前n行 -An后n行
n显示行 ^[]内反选,在外是代表开头
Bash与正则的符号不同