私房菜复习

/etc/rc.d/... 这个里面是系统的运行级别

init 0-6 切换运行级别

sunlevel 查看运行级别

linux目录遵守FHS标准

查看系统版本 cat /etc/issue cat /etc/redhat-release

chattr +a 目录 赋予目录a权限,只能添加不能删除。 +i 不能修改

lsattr mulu 查看赋予目录的隐藏权限

chomd u+s ,对系统当中的可执行命令进行控制,不管谁来执行都以程序拥有者的身份来获取权限
chmod g+s ,作用于可执行的命令也可以做用于目录,不管谁来执行都以拥有组的身份来执行
chmod o+t ,只能做用于目录,任何人在这个目录下创建目录或文件。只能由root和创建人删除其他人没有权限

locate 查找文件 最新的问件不能找到 因为mlocate.db这个库一天更新一次 。 如果想立即更新库文件使用updatedb这个命令

find 查找文件的命令。 (size。user。 group , name ,perm权限,等等) 格式为 find 路径 -类型 值 例如.find / -size 4M 表示在根下面差找文件大小为4M的文件

ls -i 文件名 可以查看文件的inode
filefrag -v 文件名 可以查看文件具体存放在那些inode里面

VFS虚拟文件系统。 我们在写程序的时候没有考虑程序到底适合在那个文件系统上运行就是因为有VFS虚拟文件系统帮我们自己去处理

df 查看已经挂载的分区信息 -T 可以查看文件系统类型

du 查看目录的大小, -s 只查看目录的大小不显示目录内文件的大小

fidsk 磁盘名 对磁盘分区 d删除 n创建 p显示分区表 q不保存退出 t修改分区类型 w保存退出

partprobe 更新磁盘分区表

格式化分区mkfs -t ext4 -b 4096 磁盘分区名 -t指定文件系统类型. -b 指定每个快的大小

MBR大小为512字节 其中引导程序为446字节 64字节为分区表(标记一个分区会小号16字节) 最后两个字节为结束符

挂载磁盘分区使用 mount 磁盘分区名 挂载点
mount -o remount ,ro /mnt 表示重新在mnt上挂载, 并且是只读 (-o加选项 ,remount 重新挂载,ro 只读 ,rw可读可写,noexec 没有可执行权限 )

卸载 umount
如果在卸载分区的时候提示不能卸载 可以使用fuser -mv 加挂载点来查看到底是那些进程在使用
检测磁盘 fsck

打包。 备份

vim
yy复制 p黏帖 dd删除或者剪切 r替换 x删除光标所在位置的字符 ctrl+v 选择块复制
vim还可以同时打开多个文件来操作。 在底行模式输入files可以看到有几个文件被打开,n进入下一个文件。N上一个文件,first第一个文件, last最后一个文件
对于大文件分屏操作 ,在底行模式下输入sp ,分屏文件用ctrl+w+方向上下键来回切换 或者ctrl+w+w来回切换

查看某个命令是否是系统内置命令使用type加命令

变量里面不能以数字开头 等号两遍不能有空格,如果值里面有空格要用引号引起来
取消变量 unset 变量名
xx=11 称为本地变量 export xx=11 称为环境变量 $1 位置变量 $10应写为${10}
echo $$ 可以打印出shell的ID
set 显示所有变量 env 或者export显示所有的环境变量
locale 查看系统所支持的编码

r=${path#*sbin}
echo $r 他表示删除变量path里面第一个包含sbin以前的内容(前向后)
r=${path##*sbin}
echo $r 他表示删除变量path里面最后一个包含sbin以前的内容(前向后)
r=${path%sbin*}
echo $r 他表示删除变量path里面最后一个包含sbin以后的内容 (后向前)
r=${path%%sbin*}
echo $r 他表示删除变量path里面第一个包含sbin以后的内容 (后向前)

r=${xx-“aaaaa”}
echo $r 表示先判断有没有xx这个变量。如果有这个变量那么就把xx的值赋予变量r 。如果xx这个变量不存在那么就把aaaaa这个值赋予变量r
r=${xx:-“aaaaa”}
echo $r 表示先判断有没有xx这个变量。如果有这个变量且为空那么就把aaaaa赋予变量r 。

type -a 命令 可以查看命令的执行顺序

cut -d分隔符 -f 所截取的部分
sort -t 分隔符 -k 所排序的部分

split -b 10k 文件名 (-d大小分割 -l 按行切割)

xargs 结合find结合使用

sed ‘1,2d’ xx 删除1 2行
sed -i ‘1,2d’ xx 删除1 2行并修改原文件
sed ‘s/root/ROOT/g’ xx 替换小写root为大写root
sed -e ‘s/root/ROOT/g’ -e ‘s/bint/BIN/g’ xx -同时多个在一起替换
sed ‘/root/i加入的内容’ xx 找到包含root的行并在root所在行的上面加入内容(i在上一行插入,a在下一行插入,c直接替换本行)
还可以吧上面的用法写到一个文件里。 用sed -f 文件名 xx。 来实现上面的操作

awk按行读取。 行$0 -F指定分隔符
awk -F: ‘{print $1}’ xx 以冒号为分割打印出第一段
awk -F: ‘{print NR, $0, NF}’ xx 打印出所有内容 并显示行号和字段 (NR行号。$0每一行本身,NF以分隔符隔开可以分几个字段)

diff xx yy 对比两个文件有什么不同

let bb=1+8或者bb=$((1+8))
echo $bb
9 (let可以直接做数值运算)

[-f /etc/passwd ] 利用echo $0的返回值判断文件是否存在 (-f判断文件是否存在,-r是否可读,-w是否可写。-x是否可执行,)

在脚本里面写入set -x 可以帮助我们排错

 if 逻辑判断。在shell中if判断的基本语法为:
1)不带else
if 判断语句; then
command
fi
.................................................
带有else
if 判断语句 ; then
command
else
command
fi
.........................................................
3)带有elif
if 判断语句一 ; then
command
elif 判断语句二; then
command
else
command
fi

------------------------------------------------------------
case 变量 in
value1)
command
;;
value2)
command
;;
value3)
command
;;
*)
command
;;
esac
...................................................................................
while 条件; do

command
done
...................................................................
for 变量名 in 循环的条件; do
command
done

posted on 2017-10-15 10:33  学习linux的菜鸟  阅读(307)  评论(0编辑  收藏  举报

导航