Linux使用笔记
1.改变文件拥有者chgrp 用户名 文件名
改变文件群组 chgrp 群组名 文件名
chown -R 用户名:群组名 文件名 用户名群组名一起变
2.改变文件权限 chmod 数字(01347)文件名
3. .sh批处理文件
.Z等 打包,压缩文件
4./bin执行程序的文件夹
/boot linux核心和启动相关文件的文件夹
/dev 设备文件
/etc 系统需要读取的文件的文件夹
/etc/rc.d 开关机用的脚本
/etc/rc.d/init.c 所有服务默认的启动脚本文件
/etc/xinetd.d 启动服务文件
/etc/X11 X-window有关的配置文件
/home 用户根目录
/lib 编译程序时的函数库
/lost+found 系统产生异常时放置一些遗失片段
/mnt 软驱光驱装载点
/proc 放置系统核心与执行程序所需的信息
/root 系统管理员的根目录
/sbin 放置系统常用的程序(系统管理员常用的)
/tmp 放置用户的临时文件
/usr 系统信息
/usr/include 一些套件的头文件
/usr/lib 函数库
/usr/local 软件及软件升级
/usr/share/doc 放置一些系统说明文件的地方
/usr/share/man 放置一些程序说明文件的地方
/usr/src 放置核心代码的默认目录
/usr/X11R6 X window system存放相关文件的目录
/var 所有服务的登录文件或错误信息文件
5.路径中的符号表示 . 代表当前层目录 .. 代表上层目录 ~ 代表自己的根目录 ~user 代表到user这个人的根目录
cd 变换目录 pwd 显示当前目录 mkdir 建立一个新目录 rmdir 删除一个空目录 rm -rf 目录名 删除目录下的所有东西并且不提示
6.echo 显示 打印
7.环境变量PATH echo $PATH 显示当前的PATH路径
加入路径 PATH="$PATH":/root
8.ls 显示文件名称属性 cp 复制文件或目录 rm 删除文件或目录 mv 移动文件或目录
--color=never(always/auto)颜色
cp (- d原封不动的复制 不管是不是链接文件 r目录复制 s做成链接文件 u新文件或没有目标文件才进行复制『用于备份』) 源文件 目标文件
rm (- f强制删除 i提供用户确认 r循环删除 直到没有东西为止) 文件名
mv (- u比源文件比目标文件还新的时候才执行) 可用于改名
9.cat 文件名 -n 显示时 同时显示行号 正向输出文件内容
tac 文件名 反向输出文件内容
more 文件名 一页一页显示文件内容 (在别处也可以使用 然后一页一页看 例如:ls -al | more)
less 文件名 可以前翻后翻 (/『word』 可以输入字符串进行关键字查找)
head -n 前几行数 文件名
tail -n 后几行数 文件名
nl 文件名 = cat -n
od 文件名 显示二进制文件内容
10.ln 链接文件
ln 文件名 目标文件 硬链接
ln -s 文件名 目标文件 软链接(类似于快捷方式)
11.umask (+ 数字) 不加数字为显示默认文件属性 加为修改
12.chattr [+-=] [ASacdistu] [文件名 或 目录名]
+ 增加属性 - 减少属性 = 设定属性
A 存取时间不能进行修改
S 将数据同步写入磁盘
a 只能增加,不能删除(root)
c 自动压缩和解压缩
d 当dump(备份)执行时,可使该文件有备份功能
i 无法对文件进行修改
(j 属性写入日志)
s 完全移出这个硬盘
u 与s相反 取消删除
lsattr -[aR] 查看文件attr的属性
-a 显示全部的文件 包括隐藏文件
-R 显示子目录的数据
13.which 文件名 查看可执行文件的位置(按照PATH路径查找)
whereis -[bmsu] 目录名称
-b 只找二进制文件
-m 只找在说明文件manual路径下的文件
-s 只找source源文件
-u 没有说明文档的文件
locate 目录名称 找所有带目录名称的文件
find 路径 参数
时间: -atime n 将n*24小时内被存取过的文件列出来
-ctime n 将n*24小时内被修改,新增的文件或目录列出来
-mtime n 将n*24小时内被修改过的文件列出来
-newer file 把比file还新的文件列出来
使用名称: -gid n 寻找寻租ID为n的文件
-group name 寻找群组名为name的文件
-uid n 寻找拥有者ID为n的文件
-user name 寻找文件名称为name的文件
-name file 寻找文件名为file的文件名称(可以使用通配符)
-type type 寻找文件属性为type的文件,type包含b,c,d,p,l,s
14.file 文件名 查看文集属性
15.SUID 的意思
# ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 29104 2006-12-20 04:35 /usr/bin/passwd
在原来x的位置有一个s属性,这个就是所谓的SUID当一个文件具有SUID时,同时others和群组都具有可执行权,那么当others和群组执行该程序时,others和群组将拥有该文件的owner权限
# ls -l /usr/bin/passwd /etc/shadow
-rw-r----- 1 root root 929 2007-12-14 21:56 /etc/shadow
-rwsr-xr-x 1 root root 29104 2006-12-20 04:35 /usr/bin/passwd
一般用户可以修改自己的密码,那么修改密码一定和/etc/shadow文件有关(可是一般用户对/etc/shadow文件并没有写权限),怎么回事呢? 用户是如何修改/etc/shadow这个文件的呢?
/usr/bin/passwd文件具有SUID属性,当一般用户执行/usr/bin/passwd时,将具有root权限,所以他们可以更改/etc/shadow的内容
由此可知,由于Set UID(SUID)的主要功能是在某个文件执行期间具有文件拥有者的权限,因此,s可以代替x可执行属性
由此可知SUID和SGID的问题所在,没错,就是太不安全了如果您有一个文件具有root权限,那么当开启SUID时,后果不堪设想因此,在变更一个文件使之具有SUID或SGID时,必须特别小心
16.硬盘:磁头 磁道 磁柱 扇区:512b
filesystem:
主引导扇区
块
superblock
inode
17.df -[ikm] 查看硬盘的总容量,已用容量和inode等
-i 使用inode显示结果
-k 使用KBytes显示结果
-m 使用Mbytes显示结果
du -[abckms] (目录名称)-
-a 列出所有文件和目录,默认值是列出目录的值
-b 列出的值以bytes输出
-c 最后求总total
-k 列出的值以KB输出
-m 列出的值以MB输出
-s 只列出最后求的总值
18.fdisk 设备名称 硬盘分区工具
fdisk -l 设备名称 直接列出该设备的分区表
mke2fs(make ext2 file system) 格式化
mke2fs -b (block size) -i (inode size) -b设定数据块大小(1024 2048 4086) -i设定inode值
mke2fs -c 检查磁盘错误
mke2fs -L 设定扇区的label(表头)
mke2fs -j 建立ext3这个具有日志管理系统功能的文件格式
e2label 更改表头数据
e2label 设备名称 表头名
mknod [device] [bcp] [Major] [Minor]
b 设定节点为外部设备文档
c 设定节点为接口设备 如 鼠标
p 建立FIFO管道
19.fsck -[Aar] 设备名称 检查硬盘有没有坏轨
-A 依据/etc/fstab的内容 将所有设备扫描一遍
-a 自动修复检查到问题扇区
-r 一定让用户决定是否需要修复
sync; sync 将内存中的数据回存在硬盘中
20.mkbootdisk --device /dev/fd0 'uname -r' 制作可引导软盘
fdformat 设备名称 格式化低级软盘 (与mke2fs一起用)
21.mount -[ahlV]
-a 依照/etc/fstab的内容装载所有相关的硬盘
-h 之列出mount相关的参数,并不装载任何设备
-l 列出当前已经装载的设备,文件系统名称 与装载点
-V 列出mount版本信息
mount -t type /dev/hdxx /moutpoint将后面/dev/hdxx设备以type的文件格式装载到/mountpoint这个点。(vfat msdos windows系统文件格式 ext ext2 linux主要文式 iso9660 光驱文件格式)
mount -o (rw 可擦写 suid 允许硬盘配置文件为SUID状态 exec 允许该硬盘执行二进制可执行文件 auto 允许该硬盘使用-a参数设定 nouser 禁止非root用户使用装载功能
async 允许该硬盘使用mount -a参数设定 defaults 同时有上面的属性 nosuid 不许有SUID文件属性 ro 只读属性 remount 把系统已经装载好的硬盘重新装载)
umount [-f] [device | mount_point] 卸载装载
-f 强制
22.hdparm -[cdmXTt] 设备名称 对硬盘效能测试与应用
-c 提供32位存取模式,支持的形式有 -c0:关闭32位存取模式 -c1:开启 -c3:以较为特殊的sync模式开启32位存取模式
-d 是否启动硬盘的DMA模式, 0为关闭 1为开启
-m 设定multiple sector I/O模式 通常为16
-X 设定IDE/ATA模式的项 支持设定(-X34:开启DMA mode 2 [ATA] -x66:KAIQI ultra DMA mode 2 [ATA66])
-T 测试缓存区cache的存取效能
-t 测试硬盘实际存取效能
23.Swap分区
fdisk /dev/.. 然后ID改为82 mkswap /dev/..[1-16] 格式化 用swapon /dev/..启动 用swapoff 关闭
dd指令建立swapfile文件 用mkswap把它格式化为swap文件
24.alias 设定指令的别名 例子:alias la = 'ls -al'
查询时直接alias
取消alias 用unalias
25.显示变量 echo $变量名
显示主要变量 env
显示所有变量 set echo $? 显示前一个指令是否有错误 无错误为0
export 变量 使变量动作
unset 变量 取消变量
单引号和双引号的区别 :双的里面保存特殊字符 单的变成一般字符
export 可以在子程序中使用
26.history 显示历史指令
!上一个指令 !number 第几个指令 !command 指令开头几个字母(最近一次的)
history -c 清楚历史记录 history -r 文件名 将历史指令存到指定的文件中
27.通配符
* 通配符 代表任意字符
? 通配符 代表一个字符
# 注释
\ 跳转符号 将特殊字符或通配符还原成一般字符
| 分隔两个管线命令的界定
; 连续性命令的界定(注意,与管线命令不同)
~ 用户的根目录
$ 变量前要加的变量值
& 将指令编程在背景下工作
! 非
/ 路径分隔符号
> >> 输出导向,分别为 取代 累加
' 单引号,不具有变量置换功能
" 双引号,具有变量置换功能
‘ ’两个 ‘ 中间为可以先执行的指令
() 中间为子shell的起始与结束
[] 中间为字符组合
{} 中间为命令区块组合
组合键 执行结果
Ctrl + C 终止当前命令
Ctrl + D 输入结束EOF
Ctrl + M = Enter
Ctrl + S 暂停屏幕的输出
Ctrl + Q 恢复屏幕的输出
Ctrl + U 在提示符下,整行命令删除
Ctrl + Z 暂停当前命令
连续输入命令 ; && ||
28. ./的意思是当前目录下运行文件 .为当前目录 ..为上一层目录
29. 重定向
> 标准输出 ( >> 累加输出 不删除原来的数据)(1> 正确的 2>错误的数据)
< 标准输入
30.cut -d "分隔字符" [-cf] fields
-d:后面接的是分隔字符,默认为空格符
-c:后面接的是第几个字符
-f:后面接的是第几个区块
例子:cat /etc/passed | cut -d ";" -f 1
sort [-t 分隔符] [(+起始)(-结束)] [-nru]
-t 分隔符:使用分隔符隔开不同的区块,默认是tab
+start -end:由第start区块排序到end区块
-n:使用纯数字排序(否则会以字母方式排序)
-r:反向排序
-u:相同出现的一行,只列出一个
wc [-lmw]
-l:多少行
-m:多少字符
-w:多少子
tr [-ds] SET1
-d :删除SET1这个字符串
-s :取代重复的字符
split -[bl] 输入文件 输出文件前导字符 用来分割文件
-b:以文件size来分
-l:以行数来分
31. *.Z compress程序压缩的文件
*.bz2 bzip2程序压缩的文件
*.gz gzip程序压缩的文件
*.tar tar程序打包的程序,没有经过压缩
*.tar.gz tar程序打包的文件,且经过gzip压缩
compress [-d] filename 压缩或者解压缩
-d:解压缩参数 = umcompress
bzip2:压缩解压缩 bzcat读取压缩文件内容
-d:解压缩
-z:压缩
[-d#] filename 压缩解压缩
zcat filename.gz 读取解压缩文件
-d :解压缩参数
-# :压缩等级 1最不好 9最好 6默认
tar [-zxcvfpP] filename
tar 'yyyy/mm/dd' /path -zcvf target.tar.gz(压缩文件) source(原来的文件)
-z:是否具有gzip
-x:揭开一个压缩文件
-t:查看tarfile里面的文件
-c:建立一个压缩文件
-v:压缩过程中显示文件
-f:使用文件名
-p:使用原文件的原有属性
-P:可以使用绝对路径
-N:比后面接的日期(yyyy/mm/dd)还要新的文件才会被打包
--exclude FILE:在压缩过程中,不要将FILE打包
cpio -covB > [file | device] 备份
cpio -icduv < [file | device] 还原
-o:将数据复制输出到文件或设备上
-i:将数据自文件或设备复制出到系统中
-t:查看cpio建立的文件或设备的内容
-c:以一种较新的便携格式储存
-v:让储存过程中文件名称可以显示在屏幕上
-B:让默认的Blocks可以增至5120bytes,默认是512bytes,默认是512bytes
-d:自动建立目录,由于cpio的内容可能不在同一目录内。
-u:自动用较新的文件覆盖较久的文件
32 grep 正规表示法
grep “word” filename 在文件中把有"word"一行的信息显示出来
grep "*[a-d]*" filename 输出含有a-d的行
33. bash判断执行的步骤:
1.如果取到一个Enter符号(CR),就尝试开始执行该指令
2.指令间的空白被忽略
3.一行太多可用\延伸到下一行
4.#注释
执行文件方法:
1.改属性 改成可执行文件
2.用sh执行
declare [-afirx] 定义变量
-a:定义为数组(array)
-f:定义为函数(function)
-i:定义为整数(integer)
-r:定义只读
-x:定义为通过环境输出变量
脚本 $0:myscript 脚本文件名
$1:opt1 第一个附加参数
$2......
$3......
脚本逻辑判断式与表达式
1. 关于文件与目录的逻辑卷标
-f 检测文件是否存在 (常用)
-d 检测目录是否存在 (常用)
-b 检测是否为一个block文件
-c 检测是否为一个character文件
-S 检测是否为一个socket标签文件
-L 检测是否为一个符号链接文件
-e 检测某个东西是否存在
2. 关于程序的逻辑卷标
-G 检测是否由GID所执行的程序拥有
-O 检测是否由UID所执行的程序拥有
-p检测是否为程序间传送信息的name pipe或FIFO
3. 关于文件属性的检测
-r检测是否为可读属性
-w缉拿册是否为可写入属性
-x检测是否为执行属性
-s检测是否为非空白文件
-u检测是否具有SUID属性
-g检测是否具有SGID属性
-k检测是否具有sticky bit属性
4. 两个文件之间的判断与比较 例子:test file1 -nt file2
-nt 第一个文件比第二个文件新
-ot 第一个文件比第二个文件旧
-ef 第一个文件与第二个文件为同一个文件
5. 逻辑与(and)和或(or)
&& 逻辑与
||逻辑或
6.运算符
-eq =
-ne !=
-lt <
-gt >
-le <=
-ge >=
-a and
-o or
-z 空字符串
-n 非空字符串
7.条件判断
if [条件判断1] && (||) [条件判断2];then if是起始,后面可以接若干个判断式,使用&&或||判断
elif [条件判断3] &&(||) [条件判断4];then 第二段判断,如果第一断不符合要求就传到此搜索条件,执行第二段程序
else 都不符合执行这段
fi 结束
8.case...esac
case 种类方式(string) in 开始阶段 通常使用$1这种直接输入类型
种类方式1)
程序执行段
;; 种类方式结束符号
种类方式2)
程序执行段
;;
*)
echo "Usage:{种类方式一 | 种类方式二}" 列出可以利用的参数值
exit 1
esac
种类方式: 1 直接输入:世界以“执行文件 + string” string可以写成$1
2 交互式:配合read
9.循环
for(;;)
for variable in variable1 variable2
while [ condition1 ] && { || } [ condition2 ]
until [condition1 ] && { || } [ condition2 ]
until:直到条件符合的时候才退出
34.帐号管理:
1 登入主机时 输入帐号密码后 linux会将该帐号对应的UID GID读出来从etc/passwd 没有则跳出
2 然后核对密码表 etc/shadow中 找到对应的帐号和UID 然后核对密码
(备份时两个一定要一起备份)
文件如果不是用户拥有的 拥有名则变成数字
etc/passwd文件构造
帐号名: 密码(早期): UID(0系统管理员 1~500系统预留帐号 500~65535一般用户使用): GID(etc/group)
: 说明 : 根目录(用户默认的目录 默认为 /home/yourIdName) : Shell (/bin/false 帐号无法登入)
etc/shadow文件构造
帐号名: 密码(加密后 密码前面加个* 用户无法登入) :上次改动日期(以1970年1月1日为1 且日期累加)
:密码不可变更天数 : 密码需要重新变更天数 :密码变更期限前的警告期(n天内 系统会警告用户) :帐号失效期限
:帐号取消日期(过改天就无法再用) :保留
(可用暴力计算密码程序破解。。。。《听说》)
etc/group文件构造
群组名称: 群组密码(在etc/gshadow中) : 群组ID(GID): 支持的帐号名称
3 增加用户
groupadd [-g GID] groupname 添加群组
-g GID:自行设定GID的大小
groupdel groupname 删除群组 (使用之前先将etc/passwd中GID设定为这个群组的GID的用户 删除)
useradd [-u UID] [-g GID] [-d HOME] [-mM] [-s shell] 增加用户
-u 直接给出一个UID
-g 直接给出一个GID
-d 直接将其根目录指向已存在目录
-M 不建立根目录
-s 定义其使用的shell
4 建立默认帐号 useradd username (属性设定 etc/login.defs 和 etc/default/useradd 中)
5 userdel [-r] username 删除帐号
-r:将该帐号的[home directory] 和 [/var/spool/mail/username] 一并删除 (不加只删除passwd和shadow中的内容)
6 chsh [-l] [-s shellname] 用工改变自己的shell的指令
-l:列出当前机器上能用的shell名称
-s:将当前的shell变成shellname
7 chfn 更改个人属性
35. 密码管理:
passwd [username] (单独输入是自己改 加名字是人root改)(指令存放在bin/passwd)
36. 用户身份转换:
su (输入密码 编程root)
sudo [-u username] command
-u:将身份变成username的身份
(可用visudo来修改sudo的权限 在/etc/sudoers中)
37. 用户查询:
id (用户名) 查看用户信息
groups (群组名) 查看群组信息
1.改变文件拥有者chgrp 用户名 文件名
改变文件群组 chgrp 群组名 文件名
chown -R 用户名:群组名 文件名 用户名群组名一起变
2.改变文件权限 chmod 数字(01347)文件名
3. .sh批处理文件
.Z等 打包,压缩文件
4./bin执行程序的文件夹
/boot linux核心和启动相关文件的文件夹
/dev 设备文件
/etc 系统需要读取的文件的文件夹
/etc/rc.d 开关机用的脚本
/etc/rc.d/init.c 所有服务默认的启动脚本文件
/etc/xinetd.d 启动服务文件
/etc/X11 X-window有关的配置文件
/home 用户根目录
/lib 编译程序时的函数库
/lost+found 系统产生异常时放置一些遗失片段
/mnt 软驱光驱装载点
/proc 放置系统核心与执行程序所需的信息
/root 系统管理员的根目录
/sbin 放置系统常用的程序(系统管理员常用的)
/tmp 放置用户的临时文件
/usr 系统信息
/usr/include 一些套件的头文件
/usr/lib 函数库
/usr/local 软件及软件升级
/usr/share/doc 放置一些系统说明文件的地方
/usr/share/man 放置一些程序说明文件的地方
/usr/src 放置核心代码的默认目录
/usr/X11R6 X window system存放相关文件的目录
/var 所有服务的登录文件或错误信息文件
5.路径中的符号表示 . 代表当前层目录 .. 代表上层目录 ~ 代表自己的根目录 ~user 代表到user这个人的根目录
cd 变换目录 pwd 显示当前目录 mkdir 建立一个新目录 rmdir 删除一个空目录 rm -rf 目录名 删除目录下的所有东西并且不提示
6.echo 显示 打印
7.环境变量PATH echo $PATH 显示当前的PATH路径
加入路径 PATH="$PATH":/root
8.ls 显示文件名称属性 cp 复制文件或目录 rm 删除文件或目录 mv 移动文件或目录
--color=never(always/auto)颜色
cp (- d原封不动的复制 不管是不是链接文件 r目录复制 s做成链接文件 u新文件或没有目标文件才进行复制『用于备份』) 源文件 目标文件
rm (- f强制删除 i提供用户确认 r循环删除 直到没有东西为止) 文件名
mv (- u比源文件比目标文件还新的时候才执行) 可用于改名
9.cat 文件名 -n 显示时 同时显示行号 正向输出文件内容
tac 文件名 反向输出文件内容
more 文件名 一页一页显示文件内容 (在别处也可以使用 然后一页一页看 例如:ls -al | more)
less 文件名 可以前翻后翻 (/『word』 可以输入字符串进行关键字查找)
head -n 前几行数 文件名
tail -n 后几行数 文件名
nl 文件名 = cat -n
od 文件名 显示二进制文件内容
10.ln 链接文件
ln 文件名 目标文件 硬链接
ln -s 文件名 目标文件 软链接(类似于快捷方式)
11.umask (+ 数字) 不加数字为显示默认文件属性 加为修改
12.chattr [+-=] [ASacdistu] [文件名 或 目录名]
+ 增加属性 - 减少属性 = 设定属性
A 存取时间不能进行修改
S 将数据同步写入磁盘
a 只能增加,不能删除(root)
c 自动压缩和解压缩
d 当dump(备份)执行时,可使该文件有备份功能
i 无法对文件进行修改
(j 属性写入日志)
s 完全移出这个硬盘
u 与s相反 取消删除
lsattr -[aR] 查看文件attr的属性
-a 显示全部的文件 包括隐藏文件
-R 显示子目录的数据
13.which 文件名 查看可执行文件的位置(按照PATH路径查找)
whereis -[bmsu] 目录名称
-b 只找二进制文件
-m 只找在说明文件manual路径下的文件
-s 只找source源文件
-u 没有说明文档的文件
locate 目录名称 找所有带目录名称的文件
find 路径 参数
时间: -atime n 将n*24小时内被存取过的文件列出来
-ctime n 将n*24小时内被修改,新增的文件或目录列出来
-mtime n 将n*24小时内被修改过的文件列出来
-newer file 把比file还新的文件列出来
使用名称: -gid n 寻找寻租ID为n的文件
-group name 寻找群组名为name的文件
-uid n 寻找拥有者ID为n的文件
-user name 寻找文件名称为name的文件
-name file 寻找文件名为file的文件名称(可以使用通配符)
-type type 寻找文件属性为type的文件,type包含b,c,d,p,l,s
14.file 文件名 查看文集属性
15.SUID 的意思
# ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 29104 2006-12-20 04:35 /usr/bin/passwd
在原来x的位置有一个s属性,这个就是所谓的SUID当一个文件具有SUID时,同时others和群组都具有可执行权,那么当others和群组执行该程序时,others和群组将拥有该文件的owner权限
# ls -l /usr/bin/passwd /etc/shadow
-rw-r----- 1 root root 929 2007-12-14 21:56 /etc/shadow
-rwsr-xr-x 1 root root 29104 2006-12-20 04:35 /usr/bin/passwd
一般用户可以修改自己的密码,那么修改密码一定和/etc/shadow文件有关(可是一般用户对/etc/shadow文件并没有写权限),怎么回事呢? 用户是如何修改/etc/shadow这个文件的呢?
/usr/bin/passwd文件具有SUID属性,当一般用户执行/usr/bin/passwd时,将具有root权限,所以他们可以更改/etc/shadow的内容
由此可知,由于Set UID(SUID)的主要功能是在某个文件执行期间具有文件拥有者的权限,因此,s可以代替x可执行属性
由此可知SUID和SGID的问题所在,没错,就是太不安全了如果您有一个文件具有root权限,那么当开启SUID时,后果不堪设想因此,在变更一个文件使之具有SUID或SGID时,必须特别小心
16.硬盘:磁头 磁道 磁柱 扇区:512b
filesystem:
主引导扇区
块
superblock
inode
17.df -[ikm] 查看硬盘的总容量,已用容量和inode等
-i 使用inode显示结果
-k 使用KBytes显示结果
-m 使用Mbytes显示结果
du -[abckms] (目录名称)-
-a 列出所有文件和目录,默认值是列出目录的值
-b 列出的值以bytes输出
-c 最后求总total
-k 列出的值以KB输出
-m 列出的值以MB输出
-s 只列出最后求的总值
18.fdisk 设备名称 硬盘分区工具
fdisk -l 设备名称 直接列出该设备的分区表
mke2fs(make ext2 file system) 格式化
mke2fs -b (block size) -i (inode size) -b设定数据块大小(1024 2048 4086) -i设定inode值
mke2fs -c 检查磁盘错误
mke2fs -L 设定扇区的label(表头)
mke2fs -j 建立ext3这个具有日志管理系统功能的文件格式
e2label 更改表头数据
e2label 设备名称 表头名
mknod [device] [bcp] [Major] [Minor]
b 设定节点为外部设备文档
c 设定节点为接口设备 如 鼠标
p 建立FIFO管道
19.fsck -[Aar] 设备名称 检查硬盘有没有坏轨
-A 依据/etc/fstab的内容 将所有设备扫描一遍
-a 自动修复检查到问题扇区
-r 一定让用户决定是否需要修复
sync; sync 将内存中的数据回存在硬盘中
20.mkbootdisk --device /dev/fd0 'uname -r' 制作可引导软盘
fdformat 设备名称 格式化低级软盘 (与mke2fs一起用)
21.mount -[ahlV]
-a 依照/etc/fstab的内容装载所有相关的硬盘
-h 之列出mount相关的参数,并不装载任何设备
-l 列出当前已经装载的设备,文件系统名称 与装载点
-V 列出mount版本信息
mount -t type /dev/hdxx /moutpoint将后面/dev/hdxx设备以type的文件格式装载到/mountpoint这个点。(vfat msdos windows系统文件格式 ext ext2 linux主要文式 iso9660 光驱文件格式)
mount -o (rw 可擦写 suid 允许硬盘配置文件为SUID状态 exec 允许该硬盘执行二进制可执行文件 auto 允许该硬盘使用-a参数设定 nouser 禁止非root用户使用装载功能
async 允许该硬盘使用mount -a参数设定 defaults 同时有上面的属性 nosuid 不许有SUID文件属性 ro 只读属性 remount 把系统已经装载好的硬盘重新装载)
umount [-f] [device | mount_point] 卸载装载
-f 强制
22.hdparm -[cdmXTt] 设备名称 对硬盘效能测试与应用
-c 提供32位存取模式,支持的形式有 -c0:关闭32位存取模式 -c1:开启 -c3:以较为特殊的sync模式开启32位存取模式
-d 是否启动硬盘的DMA模式, 0为关闭 1为开启
-m 设定multiple sector I/O模式 通常为16
-X 设定IDE/ATA模式的项 支持设定(-X34:开启DMA mode 2 [ATA] -x66:KAIQI ultra DMA mode 2 [ATA66])
-T 测试缓存区cache的存取效能
-t 测试硬盘实际存取效能
23.Swap分区
fdisk /dev/.. 然后ID改为82 mkswap /dev/..[1-16] 格式化 用swapon /dev/..启动 用swapoff 关闭
dd指令建立swapfile文件 用mkswap把它格式化为swap文件
24.alias 设定指令的别名 例子:alias la = 'ls -al'
查询时直接alias
取消alias 用unalias
25.显示变量 echo $变量名
显示主要变量 env
显示所有变量 set echo $? 显示前一个指令是否有错误 无错误为0
export 变量 使变量动作
unset 变量 取消变量
单引号和双引号的区别 :双的里面保存特殊字符 单的变成一般字符
export 可以在子程序中使用
26.history 显示历史指令
!上一个指令 !number 第几个指令 !command 指令开头几个字母(最近一次的)
history -c 清楚历史记录 history -r 文件名 将历史指令存到指定的文件中
27.通配符
* 通配符 代表任意字符
? 通配符 代表一个字符
# 注释
\ 跳转符号 将特殊字符或通配符还原成一般字符
| 分隔两个管线命令的界定
; 连续性命令的界定(注意,与管线命令不同)
~ 用户的根目录
$ 变量前要加的变量值
& 将指令编程在背景下工作
! 非
/ 路径分隔符号
> >> 输出导向,分别为 取代 累加
' 单引号,不具有变量置换功能
" 双引号,具有变量置换功能
‘ ’两个 ‘ 中间为可以先执行的指令
() 中间为子shell的起始与结束
[] 中间为字符组合
{} 中间为命令区块组合
组合键 执行结果
Ctrl + C 终止当前命令
Ctrl + D 输入结束EOF
Ctrl + M = Enter
Ctrl + S 暂停屏幕的输出
Ctrl + Q 恢复屏幕的输出
Ctrl + U 在提示符下,整行命令删除
Ctrl + Z 暂停当前命令
连续输入命令 ; && ||
28. ./的意思是当前目录下运行文件 .为当前目录 ..为上一层目录
29. 重定向
> 标准输出 ( >> 累加输出 不删除原来的数据)(1> 正确的 2>错误的数据)
< 标准输入
30.cut -d "分隔字符" [-cf] fields
-d:后面接的是分隔字符,默认为空格符
-c:后面接的是第几个字符
-f:后面接的是第几个区块
例子:cat /etc/passed | cut -d ";" -f 1
sort [-t 分隔符] [(+起始)(-结束)] [-nru]
-t 分隔符:使用分隔符隔开不同的区块,默认是tab
+start -end:由第start区块排序到end区块
-n:使用纯数字排序(否则会以字母方式排序)
-r:反向排序
-u:相同出现的一行,只列出一个
wc [-lmw]
-l:多少行
-m:多少字符
-w:多少子
uniq 删除重复
tee 文件名 传命令并且写入文件中tr [-ds] SET1
-d :删除SET1这个字符串
-s :取代重复的字符
split -[bl] 输入文件 输出文件前导字符 用来分割文件
-b:以文件size来分
-l:以行数来分
31. *.Z compress程序压缩的文件
*.bz2 bzip2程序压缩的文件
*.gz gzip程序压缩的文件
*.tar tar程序打包的程序,没有经过压缩
*.tar.gz tar程序打包的文件,且经过gzip压缩
compress [-d] filename 压缩或者解压缩
-d:解压缩参数 = umcompress
bzip2:压缩解压缩 bzcat读取压缩文件内容
-d:解压缩
-z:压缩
[-d#] filename 压缩解压缩
zcat filename.gz 读取解压缩文件
-d :解压缩参数
-# :压缩等级 1最不好 9最好 6默认
tar [-zxcvfpP] filename
tar 'yyyy/mm/dd' /path -zcvf target.tar.gz(压缩文件) source(原来的文件)
-z:是否具有gzip
-x:揭开一个压缩文件
-t:查看tarfile里面的文件
-c:建立一个压缩文件
-v:压缩过程中显示文件
-f:使用文件名
-p:使用原文件的原有属性
-P:可以使用绝对路径
-N:比后面接的日期(yyyy/mm/dd)还要新的文件才会被打包
--exclude FILE:在压缩过程中,不要将FILE打包
cpio -covB > [file | device] 备份
cpio -icduv < [file | device] 还原
-o:将数据复制输出到文件或设备上
-i:将数据自文件或设备复制出到系统中
-t:查看cpio建立的文件或设备的内容
-c:以一种较新的便携格式储存
-v:让储存过程中文件名称可以显示在屏幕上
-B:让默认的Blocks可以增至5120bytes,默认是512bytes,默认是512bytes
-d:自动建立目录,由于cpio的内容可能不在同一目录内。
-u:自动用较新的文件覆盖较久的文件
32 grep 正规表示法
grep “word” filename 在文件中把有"word"一行的信息显示出来
grep "*[a-d]*" filename 输出含有a-d的行
33. bash判断执行的步骤:
1.如果取到一个Enter符号(CR),就尝试开始执行该指令
2.指令间的空白被忽略
3.一行太多可用\延伸到下一行
4.#注释
执行文件方法:
1.改属性 改成可执行文件
2.用sh执行
declare [-afirx] 定义变量
-a:定义为数组(array)
-f:定义为函数(function)
-i:定义为整数(integer)
-r:定义只读
-x:定义为通过环境输出变量
脚本 $0:myscript 脚本文件名
$1:opt1 第一个附加参数
$2......
$3......
脚本逻辑判断式与表达式
1. 关于文件与目录的逻辑卷标
-f 检测文件是否存在 (常用)
-d 检测目录是否存在 (常用)
-b 检测是否为一个block文件
-c 检测是否为一个character文件
-S 检测是否为一个socket标签文件
-L 检测是否为一个符号链接文件
-e 检测某个东西是否存在
2. 关于程序的逻辑卷标
-G 检测是否由GID所执行的程序拥有
-O 检测是否由UID所执行的程序拥有
-p检测是否为程序间传送信息的name pipe或FIFO
3. 关于文件属性的检测
-r检测是否为可读属性
-w缉拿册是否为可写入属性
-x检测是否为执行属性
-s检测是否为非空白文件
-u检测是否具有SUID属性
-g检测是否具有SGID属性
-k检测是否具有sticky bit属性
4. 两个文件之间的判断与比较 例子:test file1 -nt file2
-nt 第一个文件比第二个文件新
-ot 第一个文件比第二个文件旧
-ef 第一个文件与第二个文件为同一个文件
5. 逻辑与(and)和或(or)
&& 逻辑与
||逻辑或
6.运算符
-eq =
-ne !=
-lt <
-gt >
-le <=
-ge >=
-a and
-o or
-z 空字符串
-n 非空字符串
7.条件判断
if [条件判断1] && (||) [条件判断2];then if是起始,后面可以接若干个判断式,使用&&或||判断
elif [条件判断3] &&(||) [条件判断4];then 第二段判断,如果第一断不符合要求就传到此搜索条件,执行第二段程序
else 都不符合执行这段
fi 结束
8.case...esac
case 种类方式(string) in 开始阶段 通常使用$1这种直接输入类型
种类方式1)
程序执行段
;; 种类方式结束符号
种类方式2)
程序执行段
;;
*)
echo "Usage:{种类方式一 | 种类方式二}" 列出可以利用的参数值
exit 1
esac
种类方式: 1 直接输入:世界以“执行文件 + string” string可以写成$1
2 交互式:配合read
9.循环
for(;;)
for variable in variable1 variable2
while [ condition1 ] && { || } [ condition2 ]
until [condition1 ] && { || } [ condition2 ]
until:直到条件符合的时候才退出
while:当条件符合时,继续
do 。。。。done 相当于函数体的括号34.帐号管理:
1 登入主机时 输入帐号密码后 linux会将该帐号对应的UID GID读出来从etc/passwd 没有则跳出
2 然后核对密码表 etc/shadow中 找到对应的帐号和UID 然后核对密码
(备份时两个一定要一起备份)
文件如果不是用户拥有的 拥有名则变成数字
etc/passwd文件构造
帐号名: 密码(早期): UID(0系统管理员 1~500系统预留帐号 500~65535一般用户使用): GID(etc/group)
: 说明 : 根目录(用户默认的目录 默认为 /home/yourIdName) : Shell (/bin/false 帐号无法登入)
etc/shadow文件构造
帐号名: 密码(加密后 密码前面加个* 用户无法登入) :上次改动日期(以1970年1月1日为1 且日期累加)
:密码不可变更天数 : 密码需要重新变更天数 :密码变更期限前的警告期(n天内 系统会警告用户) :帐号失效期限
:帐号取消日期(过改天就无法再用) :保留
(可用暴力计算密码程序破解。。。。《听说》)
etc/group文件构造
群组名称: 群组密码(在etc/gshadow中) : 群组ID(GID): 支持的帐号名称
3 增加用户
groupadd [-g GID] groupname 添加群组
-g GID:自行设定GID的大小
groupdel groupname 删除群组 (使用之前先将etc/passwd中GID设定为这个群组的GID的用户 删除)
useradd [-u UID] [-g GID] [-d HOME] [-mM] [-s shell] 增加用户
-u 直接给出一个UID
-g 直接给出一个GID
-d 直接将其根目录指向已存在目录
-M 不建立根目录
-s 定义其使用的shell
4 建立默认帐号 useradd username (属性设定 etc/login.defs 和 etc/default/useradd 中)
5 userdel [-r] username 删除帐号
-r:将该帐号的[home directory] 和 [/var/spool/mail/username] 一并删除 (不加只删除passwd和shadow中的内容)
6 chsh [-l] [-s shellname] 用工改变自己的shell的指令
-l:列出当前机器上能用的shell名称
-s:将当前的shell变成shellname
7 chfn 更改个人属性
35. 密码管理:
passwd [username] (单独输入是自己改 加名字是人root改)(指令存放在bin/passwd)
36. 用户身份转换:
su (输入密码 编程root)
sudo [-u username] command
-u:将身份变成username的身份
(可用visudo来修改sudo的权限 在/etc/sudoers中)
37. 用户查询:
id (用户名) 查看用户信息
groups (群组名) 查看群组信息