linux命令集

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux命令集相关的知识,希望对你有一定的参考价值。

 

线上查询及帮助

[[email protected] ~]# man help (help command内建命令帮助)
NAME
       bash,  :,  .,  [,  alias,  bg, bind, break, builtin, caller, cd, command, compgen, complete, compopt, continue,
       declare, dirs, disown, echo, enable, eval, exec, exit, export, false, fc, fg,  getopts,  hash,  help,  history,
       jobs,  kill,  let, local, logout, mapfile, popd, printf, pushd, pwd, read, readonly, return, set, shift, shopt,
       source, suspend, test, times, trap, true, type, typeset, ulimit, umask, unalias, unset, wait  -  bash  built-in
       commands, see bash(1)

 

后台进程管理
&  ctrl + z  jobs  fg  bg  nohup

&           这个用在一个命令的最后,可以把这个命令放到后台执行
#ctrl+z       将一个正在前台执行的命令放到后台,并且暂停
#jobs        查看当前有多少在后台运行的命令
#fg(foreground)    将后台中的命令调至前台继续运行,如果后台有多个命令,可以用fg %job号将选中的命令调出,%job号是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
#bg(background)    将一个在后台暂停的命令,变成继续执行,如果后台有多个命令,可以用bg %job号将选中的命令调出,%job号是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
#nohup        该命令可以在你退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。该命令的一般形式为: nohup conmmand &

 

进程管理

#ps  report a snapshot of the current processes.    
# ps -ef | head -3
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 Apr22 ?        00:00:00 /sbin/init
root          2      0  0 Apr22 ?        00:00:00 [kthreadd]
# ps aux | head -3
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1  19356  1544 ?        Ss   Apr22   0:00 /sbin/init
root          2  0.0  0.0      0     0 ?        S    Apr22   0:00 [kthreadd]
 
                                           
#pstree        display a tree of processes        
# pstree 2615
httpd---8*[httpd]


#top        #nice        #renice        #kill        #killall    #pkill

 

重定向

  0 标准输入        stdin  代码为0,使用<或<<,数据流向从右到左
  1 标准输出        stdout 代码为1,使用>或>>,数据流向从右到左
  2 标准错误输出     stderr 代码为2,使用2>或2>>
  /dev/null 黑洞,下面的方法相同
      1>/dev/null 2>/dev/null
      >dev/null 2>&1   (使用此种居多)
      &>/dev/null
command  > filename    把标准输出重定向到一个文件中
command >> filename    追加
command 1> filename    把标准输出重定向到一个文件中
command > filename 2>&1  把标准输入和错误输出一起重定向到一个文件中
command > >filename 2>&1  追加
command 2 >filename      把标准错误输出重定向到一个文件中
command 2 >>filename     追加
command <filename1>filename2   以filename1作为标准输入,以filename2作为标准输出
command<filename      以filename作为标准输入
command<<EOF       从标准输入读入,直到遇到EOF结束标志
command<&m          把文件描述符m作为标准输入
command>&m          把标准输出重定向到文件描述符m中
command<&-           关闭标准输入
command >/dev/null

 

文件与目录操作处理

                                                                
#ls    查看目录列表                                                                      
  -l  长格式显示
  -i  显示每个文件的inode号
  -ld  长格式显示目录的属性
  -F  append indicator (one of */=>@|) to entries 对不同的类型加标识符
  -p  给目录加斜线
  -lrt  最后一个是最新文件   t 时间排序  r  倒着排
  --colour=auto  给不同颜色加颜色
  -a  显示隐藏文件 -A同a,不显示 .及..
  -S  根据文件大小排序
  -t  以文件修改时间排序
  --time-style=long-iso  长时间格式


#cd    路径切换                                                                           
       cd -  切换至上一次所在目录


#cp   [-aifpru] 源 目标
    默认alias成cp -i,有重名时提示是否覆盖。#/bin/cp和#\cp直接使用cp命令
    -r   递归,用于复制目录
    -p   保持属性
    -a   相当于pdr
    -a, --archive    等于-dR --preserve=all
        --backup[=CONTROL    为每个已存在的目标文件创建备份
    -b  类似--backup 但不接受参数
       --copy-contents        在递归处理是复制特殊文件内容
    -d                等于--no-dereference --preserve=links
    -f, --force        如果目标文件无法打开则将其移除并重试(当 -n 选项存在时则不需再选此项)
    -i, --interactive 覆盖前询问(使前面的 -n 选项失效)
    -H          跟随源文件中的命令行符号链接
    -l, --link      链接文件而不复制
    -L, --dereference   总是跟随符号链接
    -n, --no-clobber   不要覆盖已存在的文件(使前面的 -i 选项失效)
    -P, --no-dereference   不跟随源文件中的符号链接
    -p                等于--preserve=模式,所有权,时间戳
        --preserve[=属性列表   保持指定的属性(默认:模式,所有权,时间戳),如果
                   可能保持附加属性:环境、链接、xattr 等
    -R, -r, --recursive  复制目录及目录内的所有项目

#find   -type   f文件、d目录  l连接、p管道、 c字符设备、b快文件、s socket文件   
  -a=and   -o=or  !=-not
  -maxdepth     #find /home/  -maxdepth 1
  -perm         # find ./ -perm 644
  -name         # find /home/ -name "*user*" 查找home目录下包含user的文件和目录
  -size         #find /boot -size +2M
  -newer file1 !file2  new于file1,旧于file2
  -atime(acess time)  文件访问时间
  -ctime(change time) 文件的索引节点(即属性)发生改变。ls -lc filename
  -mtime (modify time) 文件文本内容发生变化。ls -lu filename
  注意:#stat filename查看文件属性信息。#ls -l filename  列出文件的修改时间
    find /目录  -type f或d -exec rm -f {} \;  ==》“{”表示查找出的内容,“\”固定语法
    find /目录  -type f或d | xargs rm -f  
    find /目录  -type f ! -name "filename" | xargs rm -f  保留一个文件


#mkdir   创建目录                                                                         
    -p        递归创建目录
    -m 777    创建目录权限为777
    -v,       每次创建新目录都显示信息

#mv  move (rename) files                                                                    
  -b :若需覆盖文件,则覆盖前先行备份。
  -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;危险
  -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
  -u :若目标文件已经存在,且 source 比较新,才会更新(update)

#pwd                                                                           

#rename  rename from to file...                                                                           
    批量改文件名 stu_102999_1.finished.jpg取掉finished [# for i in `seq 10`;do touch stu_102999_$i.finished.jpg;done创建实验数据
    方法a、脚本实现
        for f  in `ls  *finished*.jpg‘
        do
        mv  $f  `echo $f | sed ‘s#finished##g‘
        done
        ==># for f in `ls *finished*`;do mv $f `echo $f |sed s#finished##g`;done
    方法b、
        ls *.jpg | awk -F "-finished" ‘{print "mv " $0,$1$2} |bash    逗号等于空格
        ls *.jpg | awk -F "-finished" ‘{print "mv " $0 " " $1$2} |bash
    方法c
        # find ./ -type f -name "*.finished*" | sed -r ‘s#(.*).finished(.*)# mv & \1\2#g‘ | bash
    方法d
        rename ".finished" "" *.jpg    即把需要去除的内容置为空

#rm                                                                        
    生产环境,尽量不用,一定要的话先备份,或者移动到一个临时目录,或者使用find 删除)
  -f  force无提示
  -r  递归删除目录
    rmdir 删除空目录

#rmdir  remove empty directories                                                 

#touch    创建文件,若文件存在,更新时间戳                                           
    touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间
  -a  或--time=atime或--time=access或--time=use  只更改存取时间。
  -c  或--no-create  不建立任何文档。
  -d  使用指定的日期时间,而非现在的时间。
  -f  此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
  -m  或--time=mtime或--time=modify  只更改变动时间。
  -r  把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
  -t  使用指定的日期时间,而非现在的时间。




#tree 结构化显示目录文件,通过yum install tree安装                                        
  -L 层数
  -d 显示目录

#dirname                                                                     
  #dirname /usr/bin/sort     ==> "/usr/bin"
  #dirname stdio.h           ==> "."

#basename                                                                      
  #basename /usr/bin/sort         ==> "sort"
  #basename include/stdio.h .h    ==> "stdio"

#chattr    设置特殊属性   #lsattr                                                       
  chattr +i filename    文件不可变,不可删除
  chattr +a filename    设置文件只能添加内容

#file    determine file type                                                        

#md5sum   compute and check MD5 message digest                                                                  

#ln                                                                            
    硬链接#ln       源文件   目标文件
    软连接#ln  -s   源文件   目标文件


查看文件和处理                                                                   
cat   tac   more   less   head   tail    cut   split   paste   sort   uniq   wc   iconv   dos2unix
file    grep  awk  sed  tee  scp
#cat   查看文件内容  -n显示行号   #tac 逆反                                                            
    #cat >> filename <<EOF
    #cat filename1 >>filename2  
    #cat filename1 filename2 >filename3
    -v, --show-nonprinting DOS字符显示
              use ^ and M- notation, except for LFD and TAB
#unix2dos    UNIX to DOS text file format converter

#tee      read from standard input and write to standard output and files标准输入并创建拷贝副本                                                             
    tee - read from standard input and write to standard output and files标准输入并创建拷贝副本
    tee [OPTION]... [FILE]...
        -a 追加
    # uname -a | tee -a uanme.txt  显示并追加到文件
#more    #less   #head    #tail                                                                                                  tail -15 filename
    head -30 file name |tail -11    取20到30行
    tail -f filename            跟踪文件尾部输出


#split   用于将大文件分割成多个小文件                                              
    #split -10 filename split      文件被分割成 splita  splitb... splitj

#paste                                                                         

#wc                                                                           
    -c 统计字节数
    -l 统计行数
    -m 统计字符数,这个标志不能与 -c 标志一起使用。
    -w 统计字数,一个字被定义为由空白、跳格或换行字符分隔的字符串。
    -L 打印最长行的长度
    # echo http://post.etiantian.org/2.html | wc
      1       1      33  (行数  单词数  文件名)
#iconv   字符编码转换                                                            
    -l列出当前支持的字符便面
#scp                                                                        
    -P     指定端口
    -p     Preserves modification times, access times, and modes from the original file.
    -r     Recursively copy entire directories.
#tar                                                                          
    tar -cf archive.tar foo bar                                                                
     -c 建立压缩文件
     -x 解开压缩文件
     -t 查看压缩文件
     -z gzip压缩
     -f  file
     --exclude=file  排除文件
     -X   exclude from listfile
#unzip    #gzip (扩展名为".gz")#zip


 

信息显示命令

uname   hostname   dmesg   uptime   file   stat   du   df   free   date   cal
#uname                                                                       
    -r内核  -m 位  -n主机名  -a所有  
#
hostname 查看主机名
#dmesg 查看内核打印的错误信息 dmesg是一种程序,用于检测和控制内核环缓冲。程序用来助用户了解系统的启动信息。 Linux命令dmesg用来显示开机信息,kernel会将开机信息存储在ring buffer中。可利用dmesg来查看。可以从中获得诸如系统架构、cpu、挂载的硬件,RAM等多个运行级别的大量的系统信息。当计算机启动时,系统内核(操作系统的核心部分)将会被加载到内存中。在加载的过程中会显示很多的信息,在这些信息中我们可以看到内核检测硬件设备。开机信息亦保存在
/var/log目录中,名称为dmesg的文件里。 dmesg | grep sd 过滤硬盘设备 dmesg | grep -i usb | head -15 dmesg | grep -i dma | head -15 dmesg | grep -i tty | head -15 dmesg | grep -i memory | head -15 dmesg -c #清ring buffer,不会清‘/var/log/dmesg’文件中的日志,连接新的设备都会产生dmesg日志输出。   -h:以人类可读的方式显示   -a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小   -s:显示目录占用的磁盘空间大小,不要显示其下子目录和文件占用的磁盘空间大小   -c:显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和   -l :统计硬链接占用磁盘空间的大小   -L:统计符号链接所指向的文件占用的磁盘空间大小 #df -h:以人类可读的方式显示 -i:显示inode信息 -T:显示出文件系统类型 --sync:先执行sync后统计使用信息 #date #date +%H:%M:%S 06:17:33 # date +%F 2017-02-19 # date +%Y/%m/%d 2017/02/19 # date +%F -d "+2day" 2017-02-21 # date +%F -d "-2day" 2017-02-17 #cal displays a calendar

 

 

搜索文件命令

which   find   whereis   locate
#which  查找命令所在路径                                                      
    搜索全局变量PATH的路径(小窍门:在某目录建立文件并加可执行,并且export PATH临时加入路径,就可以which了)
    # which cp
        alias cp=cp -i
            /bin/cp
#whereis  locate the binary, source, and manual page files for a command                        
    [[email protected] home]# whereis cp
        cp: /bin/cp /usr/share/man/man1/cp.1.gz /usr/share/man/man1p/cp.1p.gz
    [[email protected] home]# whereis -b cp  -b  Search only for binaries.
#locate(设置列gid)  查找命令所在路径或信息从/var/lib/mlocate/mlocate.db中查找,updatedb更新

用户管理命令

useradd     usermod   userdel  groupadd  passwd  chage  id   su
 sudo  visudo
#visudo 即编辑sudo配置文件(/etc/sudoers)  -c检查语法                              
#sudo   sudo授权后,执行命令时需要命令前带sudo
#useradd     (#usermod改变属性)    #userdel   -r 删除用户连家目录                    
    -c 建立时可以对账号进行描述 已有的用usermod -c
    -d  指定家目录
    -e  账号过期时间
    -f  几日后停权
    -g  指定组(不再创建自身组)
    -G  定义为多个组,逗号分开
    -m 指定家目录
    -M 不创建家目录
    -s  指定shell 
    -u 指定uid
#groupadd  #groupdel  #passwd                                                  
#chage                                                                      
    -l username  查看用户账号密码过期信息
    -E 更改账户过期时间
#id                                                                           
    # useradd gtms -G root
    # id gtms
        uid=500(gtms) gid=500(gtms) groups=500(gtms),0(root)
#su      

查看用户登录信息的命令              
whoami   who   w  last   lastlog  users  finger
#whoami     显示当前用户 print effective userid        
 root
#who        显示当前登录的所有用户show who is logged on       
 root     pts/0        2017-02-04 21:09 (192.168.0.102)
 root     pts/1        2017-02-04 23:17 (192.168.0.102)
#w    Show who is logged on and what they are doing.      
 23:25:01 up  2:16,  2 users,  load average: 0.00, 0.00, 0.00
 USER     TTY      FROM              [email protected]   IDLE   JCPU   PCPU WHAT
 root     pts/0    192.168.0.102    21:09    2:06   0.33s  0.00s man users
 root     pts/1    192.168.0.102    23:17    0.00s  0.00s  0.00s w
#last     显示最近登录用户show listing of last logged in users     
 gtms     pts/2        192.168.0.102    Sat Feb  4 23:27   still logged in  
 root     pts/1        192.168.0.102    Sat Feb  4 23:17   still logged in  
 root     pts/0        192.168.0.102    Sat Feb  4 21:09   still logged in  
 reboot   system boot  2.6.32-573.el6.x Sat Feb  4 21:08 - 23:28  (02:19)   
 root     pts/1        192.168.0.102    Sat Feb  4 04:36 - down   (02:46)
#lastlog - reports the most recent login of all users or of a given user
 lastlog | tail -3    显示所有用户最近一次登录情况
 sshd                                       **Never logged in**
 tcpdump                                    **Never logged in**
 gtms             pts/2    192.168.0.102    Sat Feb  4 23:27:01 +0800 2017
#users     查看当前登录的用户列表,仅显示用户名                                     
 gtms root root 
#finger    查看用户信息- user information lookup program (需要yun install)   
 #finger gtms
 Login: gtms                             Name:
 Directory: /home/gtms                   Shell: /bin/bash
 On since Sat Feb  4 23:27 (CST) on pts/2 from 192.168.0.102
    8 minutes 41 seconds idle
 No mail.
 No Plan.

基础网络操作命令

基础网络操作命令                                                                
telnet    ssh      wget     ping   route   ifconfig  ifup    ifdown  netstat
#telnet        #ssh                                                            
#wget                                                                       
    --spider URL        爬虫,检查网站是不是好的,不下载
     --tries          指定重试的次数
     -q
    -T,–timeout=SECONDS     设置超时时间
    -r,–recursive             下载整个网站、目录(小心使用) 
    –http-user=USER        设置HTTP用户
    –http-passwd=PASS        设置HTTP密码
    –proxy-user=USER        设置代理用户
    –proxy-passwd=PASS        设置代理密码
#ping                                                                           
    -c    指定次数
    -i    指定间隔
    -R    显示路由过程
    -I    指定网络接口

#route                                                                       
    route add default gw {IP-ADDRESS} {INTERFACE-NAME}    设定默认路由
    route add -net {NETWORK-ADDRESS} netmask {NETMASK} dev {INTERFACE-NAME}指定网络的路由规则
    http://oldboy.blog.51cto.com/2561410/1119453    http://oldboy.blog.51cto.com/2561410/974194
#ifconfig    #ifup    #ifdown     #ip addr                                    
    ip addr { add | del } IPADDR dev STRING
    #ip addr add 192.168.0.26/24 dev eth0 加的用ip add查看(重启失效)
    #ip addr del 192.168.0.26/24 dev eth0 
    #ifconfig eth0 add 192.168.0.22 (最多好像只能一个,但是加的看的到) (重启失效)
    #ifconfig eth0:0 del 192.168.0.22

#netstat                                                                     
    -a (all)显示所有选项,默认不显示LISTEN相关
    -t (tcp)仅显示tcp相关选项
    -u (udp)仅显示udp相关选项
    -n 拒绝显示别名,能显示数字的全部转化成数字。
    -l 仅列出有在 Listen (监听) 的服務状态
    -p 显示建立相关链接的程序名
    -r 显示路由信息,路由表
    -e 显示扩展信息,例如uid等
    -s 按各个协议进行统计
    -c 每隔一个固定时间,执行该netstat命令。


深入网络操作命令
nmap   lsof   route  mail   mutt   nslookup   dig   host   tracerroute fuser
#nmap                                                                       
    nmap [Scan Type(s)] [Options] {target specification}
    nmap 192.168.0.1-100        扫描地址段
    --exclude ip            排除ip
    -p                     扫描指定端口
    -sV                    扫描时显示打开的服务版本号

#lsof      文件系统挂载点                                                    
    lsof /boot       
    COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    bash    1787 root  cwd    DIR    8,1     1024   12 /boot/grub
    vi      1815 root  cwd    DIR    8,1     1024   12 /boot/grub
    vi      1815 root    4u   REG    8,1    12288   39 /boot/grub/.grub.conf.swp
    lsof -p 30297        显示那些文件被pid为30297的进程打开
    lsof -n|awk {print $2}|sort|uniq -c|sort -nr| more 查看各个进程打开文件句柄的数目,若进程打开文件    句柄的数目超过系统限制,则相应进程不能正常服务
    lsof命令后直接接文件名,可以查到该文件被哪些进程打开:
    lsof -i:port 查看端口

    [[email protected] home]# umount /dev/cdrom
            umount: /tmp: device is busy.
                (In some cases useful info about processes that use
                 the device is found by lsof(8) or fuser(1))
    [[email protected] home]# fuser /dev/cdrom
    [[email protected] home]# fuser /tmp
    [[email protected] home]# lsof /tmp
    COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    bash    1649 root  cwd    DIR   11,0   528384 1984 /tmp/Packages
#fuser    identify processes using files or sockets                                    


#mail       #mutt强大的mail客户端                                               
    -s     邮件标题
    mail -s test [email protected] 编辑完内容后Ctrl-D结束
    echo “mail content”|mail -s test [email protected]
    mail -s test [email protected]< file
    yum install  -y sharutils带附件
    uuencode /home/log.txt log.txt | mail -s logstat [email protected]

#nslookup   query Internet name servers interactively                                    
#dig          DNS lookup utility                                                    
            查询域名的A记录 CNAME,MX记录信息
#host       将域名解析为ip                                                             
#tracerroute    print the route packets trace to network host                                   

 

有关磁盘与文件系统的命令

mount  umount  df  du  fsck  dd  dumpe2fs  dump  fdisk  parted   mkfs  partprobe 
e2fsck     sync   resize2fs  blkid
#mount        查看内核追踪到的已挂载的所有设备:cat /proc/mounts #umount                                                                     
命令使用格式:mount [-fnrsvw] [-t vfstype] [-o options] device dir
    device:指明要挂载的设备;
        (1) 设备文件:例如/dev/sda5
        (2) 卷标:-L LABEL, 例如 -L MYDATA
        (3) UUID, -U UUID:例如 -U 0c50523c-43f1-45e7-85c0-a126711d406e
        (4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs
    常用命令选项:
            -t vsftype:指定要挂载的设备上的文件系统类型;
           -r: readonly,只读挂载;
            -w: read and write, 读写挂载;
            -n: 不更新/etc/mtab; 
            -a:自动挂载所有支持自动挂载的设备;定义在/etc/fstab,且挂载选项中有“自动挂载”功能
            -L LABEL: 以卷标指定挂载设备;
           -U UUID: 以UUID指定要挂载的设备;
            -B, --bind: 绑定目录到另一个目录上;
    -o options:(挂载文件系统的选项,逗号分隔,defaults:rw, suid, dev, exec, auto, nouser, and async)
          async:异步模式;
          sync:同步模式;
          atime/noatime:包含目录和文件;
          diratime/nodiratime:目录的访问时间戳
          auto/noauto:是否支持自动挂载
          exec/noexec:是否支持将文件系统上应用程序运行为进程
          dev/nodev:是否支持在此文件系统上使用设备文件;
          suid/nosuid:是否支持在此文件系统上使用特殊权限
         remount:重新挂载
          ro:只读
          rw:读写
          user/nouser:是否允许普通用户挂载此设备
          acl:启用此文件系统上的acl功能
#fsck check and repair a Linux file system                                     
        不要检查好的磁盘,切记卸载状态检查
    -a:自动修复文件系统,不询问任何问题; 
    -A:依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统; 
    -C : 显示完整的检查进度
    -N:不执行指令,仅列出实际执行会进行的动作; 
    -P:当搭配"-A"参数使用时,则会同时检查所有的文件系统; 
    -r:采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式; 
    -R:当搭配"-A"参数使用时,则会略过/目录的文件系统不予检查; 
    -s:依序执行检查作业,而非同时执行; 
    -t<文件系统类型>:指定要检查的文件系统类型;
    -T:执行fsck指令时,不显示标题信息; 
    -V:显示指令执行过程。
#e2fsck  check a Linux ext2/ext3/ext4 file system    ,umount状态,根目录则需要单用户模式        
    -a: 检查 partition,如发现问题会自动修复。
    -b: 设定 superblock 位置。 www.2cto.com  
    -B size: 指定 size 作为区块大小。
    -c: 检查 partition 是否有坏轨。
    -C file: 将检查结果储存到 file-d: 输出 e2fsck debug 结果。
    -f: e2fsck 预设只会对错误的档案系统检查,加上 -f 是强制检查。
    -F: 在检查前将硬盘的 buffer cache 清空,避免发生错误。
    -l list: 记录了坏轨区块加入 list 中。
    -d : 打印 e2fsck 的 debug 结果。
    -f : 强制检查。
    -n: 以 (read-only) 开启档案系统
    -p: 关闭互动模式,如有问题自动修复,等同 -a。
    -v: 显示详细报告。
    -y: 启用使用者互动模式。
#dd    convert and copy a file                                                                             
    /dev/zero,是一个输入设备,你可你用它来初始化文件。该设备无穷尽地提供0,可以使用任何你需    要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。
    /dev/null——它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息    以标准输出显示或写入文件,那么可以将消息重定向到位桶。外
    dd if=/dev/zero of=tmp.5G bs=1G count=5  从/dev/zero每次读取1G数据,读5次,写入tmp.5G     if=FILE           指定输入文件,若不指定则从标注输入读取。
    of=FILE           指定输出文件,若不指定则输出到标准输出
    bs=BYTES        每次读写的字节数,可以使用单位K、M、G等等。另外输入输出可以分别用ibs、obs                指定,若使用bs,则表示是ibs和obs都是用该参数
        ibs=bytes 一次读入bytes个字节,即指定一个块大小为bytes个字节。
        obs=bytes 一次输出bytes个字节,即指定一个块大小为bytes个字节。
    count=BLOCKS : 读取的block数,block的大小由ibs指定(只针对输入参数)
整盘备份
dd if=/dev/hdb of=/dev/hdd      /dev/hdb整盘备份到/dev/hdd
dd if=/dev/hdb of=/root/image    将/dev/hdb全盘备份到image文件dd if=/dev/hdb | gzip > /root/image.gz
dd if=/root/image of=/dev/hdb    恢复。gzip -dc /root/image.gz | dd of=/dev/hdb
MBR备份
dd if=/dev/hda of=/root/image count=1 bs=512  备份磁盘开始的512个字节大小的MBR信息到指定文件
count=1指仅拷贝一个块;bs=512指块大小为512个字节。
dd if=/root/image of=/dev/had    将备份的MBR信息写到磁盘开始部分
备份软盘
dd if=/dev/fd0 of=disk.img count=1 bs=1440k (即块大小为1.44M)
拷贝内存内容到硬盘
dd if=/dev/mem of=/root/mem.bin bs=1024 (指定块大小为1k)
拷贝光盘,并保存为cd.iso文件
dd if=/dev/cdrom(hdc) of=/root/cd.iso
增加swap分区文件大小
第一步:创建一个大小为256M的文件:dd if=/dev/zero of=/swapfile bs=1024 count=262144
第二步:把这个文件变成swap文件:mkswap /swapfile
第三步:启用这个swap文件:swapon /swapfile
编辑/etc/fstab文件,使在每次开机时自动加载swap文件:/swapfile swap swap default 0 0
销毁磁盘数据,
利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。
dd if=/dev/urandom of=/dev/hda1
测试硬盘的读写速度
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
通过以上两个命令输出的命令执行时间,可以计算出硬盘的读、写速度。
确定硬盘的最佳块大小:
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
通过比较以上命令输出中所显示的命令执行时间,即可确定系统最佳的块大小。
修复硬盘:
dd if=/dev/sda of=/dev/sda 或dd if=/dev/hda of=/dev/hda
当硬盘较长时间(一年以上)放置不使用后,磁盘上会产生magnetic flux point,当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数 据起死回生。并且这个过程是安全、高效的。

利用netcat远程备份
dd if=/dev/hda bs=16065b | netcat < targethost-IP > 1234
在源主机上执行此命令备份/dev/hda
netcat -l -p 1234 | dd of=/dev/hdc bs=16065b
在目的主机上执行此命令来接收数据并写入/dev/hdc
netcat -l -p 1234 | bzip2 > partition.img
netcat -l -p 1234 | gzip > partition.img
以上两条指令是目的主机指令的变化分别采用bzip2、gzip对数据进行压缩,并将备份文件保存在当前目录。
将一个很大的视频文件中的第i个字节的值改成0x41(也就是大写字母A的ASCII值)
echo A | dd of=bigfile seek=$i bs=1 count=1 conv=notrunc
#dumpe2fs   dump ext2/3/4  filesystem information                                    
    -h    只显示超级快信息
#dump    ext2/3/4 filesystem backup                                                
#disk    artition table manipulator for Linux                                         
    -l 查看磁盘及分区
#parted                                                                        
6块600g raid5   损失一块盘共3T,raid界面做部分做虚拟磁盘 200G分区装系统。其他parted分区
GPT分区:
GPT,全局唯一标识分区表(GUID Partition Table),GUID,与MBR最大4个分区表项的限制相比,GPT对分区数量没有限制,但Windows最大仅支持128个GPT分区。GPT可管理硬盘大小达到了18EB(1EB=1024PB=1,048,576TB),不过NTFS格式最大仅支持256TB。(大于16T 使用XFS   e2fsprogs)
[[email protected] ~]# rpm-qf `which parted`
parted-3.1-20.el7.x86_64
查看parted命令的帮助信息:
[[email protected] ~]#parted --help或
[[email protected] ~]#parted
GNU Parted 3.1
Using /dev/sda
Welcome to GNU Parted!Type help to view a list of commands.
(parted) help            
(parted) quit                      #退出
#开始通过parted工具来对磁盘进行操作
[[email protected] ~]#parted -l
[[email protected] ~]#parted /dev/sdb  
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted!Type help to view a list of commands.
(parted) p                               #查看磁盘分区状态
Error: /dev/sdb:unrecognised disk label                    
(parted) mklabel                       #指定创建分区表类型为GPT
New disk label type? gpt    
(parted) mkpart                  #创建分区                                              
Partition name?  []? mydisk1                                              
File system type?  [ext2]?       #指定分区文件系统类型,默认就可以,因为后期对分区进行格式化的时候,同样可以指定                                              
Start? 1                                  #指定分区起始位置                                                          
End? 100M                        #指定分区结束位置                                                    
(parted) p                        #查看磁盘分区状态
Number  Start  End     Size    File system Name     Flags
1      1049kB  99.6MB  98.6MB             mydisk1
(parted) mkpart 
Partition name?  []? 2                                                    
File system type?  [ext2]?                                               
Start? 100M                                                               
End? 200M                                                                 
(parted) p                                                               
Model: VMware, VMwareVirtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size(logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start  End     Size    File system Name     Flags
 1     1049kB  99.6MB  98.6MB               mydisk1
 2     99.6MB  200MB   101MB                2
(parted) quit                                                             
Information: You mayneed to update /etc/fstab.

parted快速分区
parted /dev/sdb mklabel gpt yes
parted /dev/sdb mkpart primary ext4 1 1000 ignore
parted /dev/sdb mkpart primary ext4 1001 2000 ignore
parted /dev/sdb   查看
#mkfs     build a Linux file system                                                
    -t<文件系统类型>    指定要建立何种文件系统;
    -c:                在制做档案系统前,检查该partition是否有坏轨。
#partprobe    inform the OS of partition table changes                            
#sync   flush file system buffers                                                
#resize2fs   ext2/ext3/ext4 file system resizer                                    
#blkid     显示磁盘分区与UUID对应信息及文件系统类型                                


关机和查看系统信息的命令                                                        
#shutdown  #halt   #init


系统安全相关                                                                    
chmod  chown    chgrp   chage  passwd   su  sudo  umask  chattr  lsattr
#chmod  change file mode bits                                                        
    chmod u+x,g=x,o-x file name
    -R  递归
#chown    change file owner and group                                                    
    -R  递归
    chown root /u
    chown root:staff /u
    chown -hR root /u
#chgrp     change group ownership                                                    
    -R  递归
    chgrp staff /u
    chgrp -hR staff /u

#umask                                                                        
    当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是    umask干的事情。umask设置了用户创建文件的默认权限,它与chmod的效果刚好相反,umask设置    的是权限“补码”,而chmod设置的是文件权限码。一般可在/etc/profile、/etc/bashrc、    $[HOME]/.bash_profile、$[HOME]/.profile或$[HOME]/.bashrc中设置umask值。
文件默认权限=666减umask
目录默认权限=777减umask
umask: umask [-p] [-S] [mode]
    Display or set file mode mask.
[[email protected] ~]# umask -p
umask 0022
[[email protected] ~]# umask -S
u=rwx,g=rx,o=rx

 

 

 

其他                                                                            
echo   print   rpm   yum   watch   alias   unslias  date   clear   
#history (配置文件需要source)/etc/profile   ~/.bash_history                            
    默认1000 相对来说越少越安全
    history -c清空历史记录
    history -d 数字,清除那一行
    export HISTSIZE=10  临时控制当前历史记录回滚数
    export HISTFILESIE=10 临时控制历史记录文件的命令数量变量cat ~/.bash_history

#eject    eject removable media                                                    
#time   time a simple command or give resource usage
#nc    arbitrary 随意的TCP and UDP connections and listens
常见使用
1、远程拷贝文件
 [[email protected] tmp]# nc -lp 1234 > install.log   将接收到的文件名字定为install.log
 [[email protected] ~]# nc -w 1 192.168.228.222 1234 < install.log  将install.log发送给hatest2
2、克隆硬盘或分区
操作与上面的拷贝是雷同的,只需要由dd获得硬盘或分区的数据,然后传输即可。
克隆硬盘或分区的操作,不应在已经mount的的系统上进行。所以,需要使用安装光盘引导后,进入拯救模式(或使用Knoppix工具光盘)启动系统后,在server2上进行类似的监听动作:
# nc -l -p 1234 | dd of=/dev/sda
server1上执行传输,即可完成从server1克隆sda硬盘到server2的任务:
# dd if=/dev/sda | nc 192.168.228.222 1234
※ 完成上述工作的前提,是需要落实光盘的拯救模式支持服务器上的网卡,并正确配置IP。
3、端口扫描
# nc -v -w 1 192.168.228.222 -z 1-1000
hatest2 [192.168.228.222] 22 (ssh) open
4、保存Web页面
# while true; do nc -l -p 80 -q 1 < somepage.html; done
5、模拟HTTP Headers(类似curl -I,但是没有用)
[[email protected] ~]# nc www.linuxfly.org 80
6、聊天(Ctrl+D正常退出)
nc还可以作为简单的字符下聊天工具使用,同样的,server2上需要启动监听:
[[email protected] tmp]# nc -lp 1234
server1上传输:
[[email protected] ~]# nc 192.168.228.222 1234
7、传输目录
从server1拷贝nginx-0.6.34目录内容到server2上。需要先在server2上,用nc激活监听,server2上运行:
引用[[email protected] tmp]# nc -l 1234 |tar xzvf -
server1上运行:
引用[[email protected] ~]# ll -d nginx-0.6.34
drwxr-xr-x 8 1000 1000 4096 12-23 17:25 nginx-0.6.34
[[email protected] ~]# tar czvf - nginx-0.6.34|nc 192.168.228.222 1234
8、参数简介
这仅是一个1.10版本的简单说明,详细的参数使用还是需要看man:
引用想要连接到某处: nc [-options] hostname port[s] [ports] ...
绑定端口等待连接: nc -l -p port [-options] [hostname] [port]
参数:
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, ...
-h 帮助信息
-i secs 延时的间隔
-l 监听模式,用于入站连接
-n 指定数字的IP地址,不能用hostname
-o file 记录16进制的传输
-p port 本地端口号
-r 任意指定本地及远程端口
-s addr 本地源地址
-u UDP模式
-v 详细输出——用两个-v可得到更详细的内容
-w secs timeout的时间
-z 将输入输出关掉——用于扫描时,其中端口号可以指定一个或者用lo-hi式的指定范围。 
91.84版本参数简介1. nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]
2.    [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_protocol] [-x
3.    proxy_address[:port]] [hostname] [port[s]]
 
1. -4 强制使用ipv4
2. -6 强制使用ipv6
3. -D 允许socket通信返回debug信息
4.       -d 不允许从标准输入中读取
5. -h 显示nc帮助文档
6. -i interval 
7.    指定每行之间内容延时发送和接受,也可以使多个端口之间的连接延时
8. -k 当一个连接结束时,强制nc监听另一个连接。必须和-l一起使用
9. -l 用于监听传入的数据链接,不能与-p -z -s一起使用。-w 参数的超时也会被忽略
10. -n 不执行任何地址,主机名,端口或DNS查询
11. -p 指定nc使用的源端口,受权限限制且不能余-l一起使用
12. -r 指定nc使用的源端口和目的端口,不能使用系统原来就指定的那些端口
13. -S 允许在RFC 2385的TCP MD5签名选项
14. -s source_ip_address 
15.    指定用于发包的接口的IP地址,不能和-l一起使用
16. -T ToS
17.    指定链接的IP服务类型(TOS)
18. -C 自动换行
19. -t 使nc能够与telnet交互
20. -U 使用UNIX域socket
21. -u 使用udp代替默认的tcp选项
22. -v 输出详细报告
23. -w timeout
24.     一个链接一段时间无操作,则自动断开,默认无超时
25. -X proxy_version
26.     指定nc使用代理时所采用的协议,可选的有socksv4,socks5以及https。默认socks5
27. -x proxy_address[:port]
28.     指定nc使用的代理地址和端口。默认设置:1080(SOCKS),3128(HTTPS)
29. -z 只监听不发送任何包

三、版本差异
不用系统上提供的nc版本会有说不同,其提供的参数使用方法也略有差异。
例如,红旗Asianux 3.0 SP1拯救光盘上的版本是供使用的参数仅有一部分:
引用# nc -h
BusyBox v1.2.0 (2008.04.14-01:35+0000) multi-call binary

Usage: nc [OPTIONS] [IP] [port]

Netcat opens a pipe to IP:port

Options:
         -l               listen mode, for inbound connects
         -p PORT         local port number
         -i SECS         delay interval for lines sent
         -e PROG         program to exec after connect (dangerous!)
         -w SECS         timeout for connects and final net reads


而在Asianux 3.0 SP1系统中提供的nc版本则是1.84的,按上面的参数用法写会执行不了:
引用[[email protected] ~]# rpm -q nc
nc-1.84-10
[[email protected] ~]# nc -lp 1234
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]
           [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version]
           [-x proxy_address[:port]] [hostname] [port[s]]

讲查看man文档,可见在这个版本中,-l是不能与-s、-p、-z一起使用的,-w参数也会被忽略,所以,正确的用法是:
[[email protected] tmp]# nc -l 1234
四、用在脚本中
nc每次启动监听后,都会在客户端连接完成并退出的同时,服务端一同退出。所以,如果需要不断的使用nc进行数据传输,需要在脚本中使用循环。利用nc实现更多的功能,可参考其rpm提供的参考脚本:
引用# rpm -qd nc
/usr/share/doc/nc-1.10/Changelog
/usr/share/doc/nc-1.10/README
/usr/share/doc/nc-1.10/scripts/README
/usr/share/doc/nc-1.10/scripts/alta
/usr/share/doc/nc-1.10/scripts/bsh
/usr/share/doc/nc-1.10/scripts/dist.sh
/usr/share/doc/nc-1.10/scripts/irc
/usr/share/doc/nc-1.10/scripts/iscan
/usr/share/doc/nc-1.10/scripts/ncp
/usr/share/doc/nc-1.10/scripts/probe
/usr/share/doc/nc-1.10/scripts/web
/usr/share/doc/nc-1.10/scripts/webrelay
/usr/share/doc/nc-1.10/scripts/websearch
/usr/share/man/man1/nc.1.gz
#xargs     build and execute command lines from standard input                        
    管道是实现“将前面的标准输出作为后面的标准输入”
    xargs是实现“将标准输入作为命令的参数”
    代码:(效果不同)
    echo "--help"|cat
    echo "--help"|xargs cat
#exec    Replace the shell with the given command.                                    
    很强大,但是一般配合find用的多些
    find ./ -name "*.tmp" -exec rm -rf "{}" \;
    exec [-cl] [-a name] [command [arguments ...]] [redirection ...]
    相等于清空现有环境,重新起一个新的shell
      -a name   pass NAME as the zeroth argument to COMMAND
      -c         execute COMMAND with an empty environment
      -l         place a dash in the zeroth argument to COMM
    注意,对文件描述符进行的操作时,才不会覆盖当前shell
    #!/bin/bash  #exec与文件描述符结合使用
    exec 3<&0 0<name.txt
    read line1
    read line2
    exec 0<&3
    echo $line1
    echo $ine2

set 用来显示本地变量,set 显示当前shell的变量,包括当前用户的变量
env 用来显示环境变量,env 显示当前用户的变量
export 用来显示和设置环境变量,export 显示当前导出成用户变量的shell变量
#export    用于创建传给shell的变量Set export attribute for shell variables.            
    --  选项结束
    -f  表明在“名-值”对中的名字是函数名
    -n 全局转局部,不再传给shell
    -p 显示全部全局变量列表
#unset unset设置或重设各种变量Set or unset values of shell options and positional parameters.
    [[email protected] ~]# set        查看当前变量
    [[email protected] ~]#readonly    显示或设置只读变量
    [[email protected] ~] #readonly variable-name        设置只读变量
    unset 取消变量定义
    -f     删除自定义的只读变量
#type                                                                        
    type命令用来显示指定命令的类型。一个命令的类型可以是如下几种:
        alias 别名
        keyword 关键字,Shell保留字
        function 函数,Shell函数
        builtin 内建命令,Shell内建命令
        file 文件,磁盘文件,外部命令
        unfound 没有找到
    常用参数
    type -a可以显示所有可能的类型,比如有些命令如pwd是shell内建命令,也可以是外部命令。
    type -p只返回外部命令的信息,相当于which命令。
    type -f只返回shell函数的信息。
    type -t 只返回指定类型的信息。
    [[email protected] home]# type useradd
    useradd is /usr/sbin/useradd
    [[email protected] home]# type -a cp
    cp is aliased to `cp -i    cp is /bin/cp
#bc        An arbitrary precision calculator language                                  
    bc        进入交互模式
    bc -q        如果需要bc不输出提示信息,可以加上-q参数
    bc -l        如果要使用强大的数学库,比如计算三角函数,需要加上-l参数
#echo    打印输出内容                                                              
    #echo {a..z}    #echo  aaa{1..10}  #mkdir aaa{001..100}
    -n 不换行(两个echo 用分号分开执行时)
     -e  (转义)
     # echo -e "gtms\tgtms"    \n回车  \b 退格
       gtms    gtms
#printf     format and print data                                                    
#rpm  linux rpm软件安装卸载工具,最大问题,依赖性不好解决                              
    常用命令组合:
        -ivh:安装显示安装进度--install--verbose--hash
        -Uvh:升级软件包--Update;
        -qpl: 列出RPM软件包内的文件信息[Query Package list];
        -qpi:列出RPM软件包的描述信息[Query Package install package(s)];
        -qf:查找指定文件属于哪个RPM软件包[Query File];
        -Va:校验所有的 RPM软件包,查找丢失的文件[View Lost];
        e:删除包
#yum     linux的包管理器,原理是下载包,然后调用rpm包,如需依赖包,一并下载安装         
         yum update -y更新补丁,未投入前可使用(可能会升次版本)
         yum grouplist         
         yum groupinstall包组
         yum search 关键字
         yum remove (不要用,依赖的包也会被干掉)
#watch   execute a program periodically, showing output fullscreen                    
    -n    指定间隔,默认2s
    -d    高亮显示变化的区域。而-d=cumulative会把变动过的地方(不管最近的那次有无变动)都高亮显示
    -t    会关闭watch命令在顶部的时间间隔,命令,当前时间的输出。    
    使用实例:
    watch -n 1 -d netstat -ant    每隔一秒高亮显示网络链接数的变化情况
    watch -n 1 -d pstree|grep http    每隔一秒高亮显示http链接数的变化情况
    watch netstat -an | grep :21 | \ grep<模拟攻击客户机IP>| wc -l实时看模拟攻击客户机建起来的连接数
    watch -d ls -l|grep scf     监测当前目录中 scf 的文件的变化
    watch -n 10 cat /proc/loadavg    10秒一次输出系统的平均负载
#alias   别名  #unalias                                                        
    所有用户生效:/etc/bashrc或 /etc/profile 生效#source /etc/profiles。用户自定义~/.bashrc
    # alias显示当前设置的别名
    alias cp=cp -i
    alias l.=ls -d .* --color=auto
    alias ll=ls -l --color=auto
    alias ls=ls --color=auto
    alias mv=mv -i
    alias rm=rm -i
    alias which=alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde
    [[email protected] ~]#alias test="echo this is a test."   设置别名
    [[email protected] ~]#unalias test                  取消别名
    [[email protected] ~]#alias rm="echo ‘rm cannot be used,please use mv‘" 
#read        从键盘或文件的某一行中读入信息,并将其赋值给一个变量                    
    read variable1 variable2 如果给出多个变量名,会按顺序赋值,分隔符为空格
        #!/bin/bash
        echo -n "First Name:"
        read firstname
        echo -n "Last Name:"        
        read lastname
        echo -e "Your First Name is :$firstname\n"
        echo -e "Your Last Name is :$lastname\n"
#vi      =编辑工具                                                            
    光标移动
    crtl +f        向下翻屏
    crtl+b        向上翻屏
    n<空格键>     向后移动n个字符
    0或home键    移动到行首
    G        移动到末行
    nG        移动到n行,配合set nu
    n 回车    向下移动n行
    查找与替换
    /word    向下查找关键字   n继续查找
    ?/word   向上查找关键字   N继续查找
    :2,4s/word1/word2/g     在2到4行全局替换关键字
    :1,$s/word1/word2/gc    全文替换并依次手工确认
    删除、复制、粘贴
    x 向后删除一个字符   X向前
    nx向后删除n个字符
    dd删除光标所在行   ndd删除后n行
    yy复制光标所在行   nyy复制后n行
    p   在光标下一行粘贴复制的内容
    u   撤销一个操作


#seq                                                                         
    seq -s指定序列分隔符
    seq -w 在列前添加0 使得宽度相同
    [[email protected] ~]# seq -s "@" 5
    1@2@3@4@5
    [[email protected] home]# seq 1 3 11       3为步长
    1
    4
    7
    10
    [[email protected] home]# seq  2 5
    2
    3
    4
    5
#eval                                                                        
    1.eval命令将会首先扫描命令行进行所有的替换,然后再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复杂变量。
    2.eval也可以用于回显简单变量,不一定时复杂变量。
    NAME=ZONE
    eval echo $NAME等价于echo $NAME
    3.两次扫描
    test.txt内容:hello shell world!
    myfile="cat test.txt"
    (1)echo $myfile        #result:cat test.txt
    (2)eval echo $myfile    #result:hello shell world!
    从(2)可以知道第一次扫描进行了变量替换,第二次扫描执行了该字符串中所包含的命令
    4.获得最后一个参数
    echo "Last argument is $(eval echo \$$#)"
    echo "Last argument is $(eval echo $#)"



 (yum install tree nmap sysstat lrzsz dos2unix(这些是包名) -y) 
     yum update可能 linux版本也会更新,线上的尽量不做,除非有已知安全漏洞
! 
    !+字母调出   最近一次以此字母开头的命令
    !!使用最近一次操作的命令
    !+n 调出历史的第n条命令 
{} 输出数字或字符序列
getenforce 检查selinux状态 setenforce 设置selinux状态 1启用 0警告 不启用   
runlevel  显示当前运行模式
init     切换运行级别,后面接相应级别数字
iptables
diff   vimdiff 文件比较
ntpupdate
ulimit -n查看文件描述符数量
ulimit -a 查看当前shell资源限制


declare (同typeset)
declare: declare [-aAfFilrtux] [-p] [name[=value] ...]
    Set variable values and attributes.
    
    Declare variables and give them attributes.  If no NAMEs are given,
    display the attributes and values of all variables.
    
    Options:
      -f        restrict action or display to function names and definitions只显示函数名及定义
      -F        restrict display to function names only (plus line number and只显示函数名称
        source file when debugging)
      -p        display the attributes and value of each NAME 显示名称及值
    
    Options which set attributes:
      -a        to make NAMEs indexed arrays (if supported)
      -A        to make NAMEs associative arrays (if supported)
      -i        to make NAMEs have the `integer attribute 创建整数属性变量
      -l        to convert NAMEs to lower case on assignment
      -r        to make NAMEs readonly  创建只读变量
      -t        to make NAMEs have the `trace attribute
      -u        to convert NAMEs to upper case on assignment
      -x        to make NAMEs export   创建转出变量
    Using `+ instead of `- turns off the given attribute.使用加减取反
    
shift 用于移动变量位置$3的值传给$2




getopts
#!/bin/bash
All=false
HELP=false
FILE=false
VERBOSE=false
while getopts ahfvc: OPTION
do
        case $OPTION in
        a)
        ALL=true
        echo "ALL is $ALL"
        ;;
        h)
        HELP=true
        echo "HELP is $HELP"
        ;;
        f)
        FILE=true
        echo "FILE is $FILE"
        ;;
        v)
        VERBOSE=true
        echo "VERBOSE is $VERBOSE"
        ;;
        c)
        c=$OPTION
        echo "c value is $c"
        ;;
        *)
        echo "`basename $0` -[a h f c] -[c value] file"
        ;;
        esac
done


#ldd

 

 

 

 

 

 

 

 

 

 lsmod

lsmod
[[email protected] ~]# rpm -qf /sbin/lsmod
module-init-tools-3.9-25.el6.x86_64

[[email protected] ~]# rpm -ql module-init-tools | grep sbin
/sbin/depmod
/sbin/insmod
/sbin/insmod.static
/sbin/lsmod            program to show the status of modules in the Linux Kernel
/sbin/modinfo
/sbin/modprobe
/sbin/rmmod
/sbin/weak-modules

lsmod        program to show the status of modules in the Linux Kernel
modprobe    program to add and remove modules from the Linux Kernel
        -r 移除模块
depmod        program to generate modules.dep and map files
modinfo        program to show information about a Linux Kernel module

如下需要清楚模块关系及路径等
insmod         (全路径)simple program to insert a module into the Linux Kernel(/lib/modules/2.6.32-573.el6.x86_64/kernel/)
rmmod        (全路径)

[[email protected] ~]# lsmod | grep vfat
[[email protected] ~]# modprobe vfat    
[[email protected] ~]# lsmod | grep vfat
vfat                   10584  0 
fat                    54992  1 vfat
[[email protected] ~]# modprobe -r vfat     
[[email protected] ~]# lsmod | grep vfat



如下需要清楚模块关系及路径等
insmod         (全路径)simple program to insert a module into the Linux Kernel(/lib/modules/2.6.32-573.el6.x86_64/kernel/)
rmmod        (全路径)

vfat依赖fat模块,需要先加载
[[email protected] ~]# insmod /lib/modules/2.6.32-573.el6.x86_64/kernel/fs/fat/
fat.ko    msdos.ko  vfat.ko   
[[email protected] ~]# insmod /lib/modules/2.6.32-573.el6.x86_64/kernel/fs/fat/vfat.ko 
insmod: error inserting /lib/modules/2.6.32-573.el6.x86_64/kernel/fs/fat/vfat.ko: -1 Unknown symbol in module
[[email protected] ~]# insmod /lib/modules/2.6.32-573.el6.x86_64/kernel/fs/fat/fat.ko 
[[email protected] ~]# lsmod | grep fat
fat                    54992  0 
[[email protected] ~]# insmod /lib/modules/2.6.32-573.el6.x86_64/kernel/fs/fat/vfat.ko 
[[email protected] ~]# lsmod | grep fat
vfat                   10584  0 
fat                    54992  1 vfat

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

http://man.linuxde.net/










































































































































































































































































以上是关于linux命令集的主要内容,如果未能解决你的问题,请参考以下文章

markdown [Docker] Docker片段列表和命令#linux #docker #snippets

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段——cli的终端命令大全

VSCode自定义代码片段4——cli的终端命令大全

VSCode自定义代码片段15——git命令操作一个完整流程