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

                                                           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 (群组名) 查看群组信息
   

猜你喜欢

转载自blog.csdn.net/q648253885/article/details/6624758