您的位置:首页 > 运维架构 > Linux

Linux 命令使用笔记 (来自于鸟哥 经自己整理哈!)(连载中。。。)

2011-07-22 09:10 423 查看
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:多少子

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 (群组名) 查看群组信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: