linux一些稍微高级的命令

原文链接: http://www.cnblogs.com/onetwo/p/9065047.html
cut 命令:提取文件中指定的字段(列)、字符内容。单词的默认分隔符为空格。
cut [选项]... [文件]...
选项:
-b  按照字节切
-c  按照字符切
-d  指定分割符
-f   指定以分割符分割的哪个字段
head  -5  /etc/passwd  >  /tmp/pass   将passwd文件中的前5行覆盖写入/tmp/pass文件中
cat    /tmp/pass    显示/tmp/pass的全文内容
cut  -d :  -f  6  /tmp/pass   显示/tmp/pass文件中以:分隔的第6列的内容,家目录内容
cut  -d :  -f  1,7 /tmp/pass   显示/tmp/passwd文件中的第1列(用户名)和第7列(shell解释器)的内容
cut  -d :  -f  1,4-7 /tmp/pass   取1 4 5 6 7列
cut  -d :  -f  -3 /tmp/pass  取第1列至第3列
cut  -d :  -f  3- /tmp/pass  取第3列至最后一列
cut  -c  1-3  /tmp/pass     取每行的前3个字符
 
sort  排序(升序、降序)
-n, --numeric-sort      根据数值比较,默认是按单个字符来比较
-r, --reverse      逆序输出排序结果
-t    指定分割符
-k   排序键(即排序的列字段)
-u   去掉重复行
 
准备阶段:用cat命令创建一个a.txt文件。
说明:以下是用cat命令将EOF...EOF之间的内容覆盖写入(>)到a.txt文件中
cat   > a.txt <
root:1:0:bin
bin:2:200:bash
jim:10:300:bash
tom:102:10:bash
EOF
 
查看a.txt文件内容:cat   a.txt
sort  a.txt      //默认顺序排序(按第1列排升序) 
bin:2:200:bash
jim:10:300:bash
root:1:0:bin
tom:102:10:bash
 
sort -r a.txt   //逆序输出排序结果(按第1列排降序)
tom:102:10:bash
root:1:0:bin
jim:10:300:bash
bin:2:200:bash
 
sort -t : -k 2 a.txt    //按:分割开的以第2部分的第一个字符排序
tom:102:10:bash
jim:10:300:bash
root:1:0:bin
bin:2:200:bash
 
sort -t : -k 2 -n a.txt   //按:分割开的以第2列的数值大小排序(用得最多)
root:1:0:bin
bin:2:200:bash
jim:10:300:bash
tom:102:10:bash
 
sort -t : -k 1.2  a.txt    按:分割开的以第1列的第2个字符排序
bin:2:200:bash
jim:10:300:bash
root:1:0:bin
tom:102:10:bash
 
将/etc/passwd 文件中第3列按数值大小排降序
sort -n -r -t : -k 3 /etc/passwd
 
# echo "bin:2:200:bash"  >> a.txt   将echo命令后的文本追加到a.txt文件中
 
# cat a.txt    显示a.txt全文内容
root:1:0:bin
bin:2:200:bash
jim:10:300:bash
tom:102:10:bash
bin:2:200:bash
 
# sort  a.txt   将a.txt排序输出
bin:2:200:bash
bin:2:200:bash
jim:10:300:bash
root:1:0:bin
tom:102:10:bash
 
# sort -u a.txt   去掉重复行
bin:2:200:bash
jim:10:300:bash
root:1:0:bin
tom:102:10:bash
 
1.查看/etc/passwd文件的前2行内容。然后取出本系统中所有的用户名、uid、用户的shell信息将结果保存在/tmp/users.txt文件中?最后用cat查看users.txt文件。
head   -2  /etc/passwd    查看前2行
cut  -d :  -f  1,3,7  /etc/passwd  > /tmp/users.txt
cat   /tmp/users.txt  
说明:-d  指定分隔符,-f 指定字段(即列)
 
2.统计系统中有多少个用户?
whatis   wc    显示命令功能简介
wc   /etc/passwd   统计passwd文件中的行数、单词数、字符数
wc   -l    /etc/passwd   统计行数,即用户数量(每行一个用户账号)
说明:wc是统计单词数量、行数、字符数。-l 是统计行数,-c是统计字符数,-w显示单词计数
 
3.显示/根目录下的文名件名列表,然后统计根目录下的文件数量?
ls  /    显示根目录下的文件名列表
ls  / | wc -l    将ls  /命令结果用wc  -l进行统计
说明:|是管道符,作用是将左边命令的结果传给右边的命令继续处理。
 
4.统计系统现在有多少个进程?
ps -elf | wc -l
 
wc  统计行数 单词数 字节数
wc   /etc/passwd
 
-l   统计行数
wc -l a.txt
 
-c  统计字节数
wc  -c   /etc/passwd
 
-w 统计单词数
wc  -w   /etc/passwd
 
-m 统计字符数
wc  -m   /etc/passwd
 
统计/bin目录下有多少个命令
ls /bin | wc -l
 
uniq   合并连续重复的行
-u  只显示没有连续重复的行
-c  统计连续重复行的次数
-d  只显示连续重复行一次,哪一行连续重复了就显示哪行
-i   忽略大小写
 
# cat  > a.txt <
jim tom root
aa bb cc
aa bb cc
jim 
aa bb cc
tom
tom abc
tom
tom abc
EOF
 
# uniq -c a.txt     统计连续出现的次数
      1 jim tom root
      2 aa bb cc
      1 jim 
      1 aa bb cc
      1 tom
      1 tom abc
      1 tom
      1 tom abc
 
#  sort a.txt|uniq -c     请跟上一条命令的结果对比
 
# uniq  a.txt     对a.txt文件中连续重复的行只显示一次
jim tom root
aa bb cc
jim 
aa bb cc
tom
tom abc
tom
tom abc
 
# uniq -u a.txt     不显示连续重复的行
jim tom root
jim 
aa bb cc
tom
tom abc
tom
tom abc
 
# uniq -d a.txt   仅显示连续出现的内容一次
aa bb cc
 
显示连续重复、未重复的内容,都只显示一次
sort  a.txt | uniq
 
sort a.txt | uniq  -c   同上,并统计次数,结果如下
      3 aa bb cc
      1 jim
      1 jim tom root
      2 tom
      2 tom abc
 
显示没有重复的行
sort a.txt | uniq -u
jim 
jim tom root
 
diff 文件差异的对比
diff   文件1   文件2
 
准备要比较差异的文件:
head  -3  /etc/passwd   >  /tmp/pas3
head  -5  /etc/passwd   >  /tmp/pas5
vimdiff比较两个文件的差异,不同涂红色
cd  /tmp    切换到/tmp目录
vimdiff   pas3  pas5     说明:  用:q退出
注:在vimdiff中可以按i键进入vim的编辑模式修改文件内容。按Esc键退出编辑模式,用:wq保存并退出vim编辑器。(用ctrl+w+w在窗口之间切换)
      
安装patch软件:rpm  -ivh  /dvd/Packages/patch-2.7.1-8.el7.x86_64.rpm
yum   install   -y   patch
 
patch 打补丁
用法:patch    原文件   补丁文件
 
实例:35.patch和53.patch补丁文件是diff命令练习生成的。
cd   /tmp
patch  pas3   35.patch    给pas3文件打补丁,提示如下
patching  file  pas3
 
cat  -n  pas3    读pas3文件并显示行号,发现文件中多了2行内容
 
patch  pas3   53.patch    给pas3文件打补丁,提示如下
cat  pas3   发现文件中少了2行内容
 
whatis 查看命令的描述信息
例:whatis    whatis
       whatis    pwd
       whatis    useradd
       whatis    which
       whatis   whereis
       
which   查看二进制命令的绝对路径、别名
# which  ls
alias ls='ls --color=auto'
/usr/bin/ls
 
alias  查看或定义命令别名(即快捷键)
alias  查看现有的命令别名
alias   h3='head  -3'     临时定义head  -3命令的别名为h3
h3   /etc/passwd    用h3命令别名查看/etc/passwd文件内容
unalias   h3     取消h3别名
注:命令别名可以写到/etc/bashrc、/etc/profile、/etc/rc.d/rc.local等环境配置文件。
 
whereis   根据关键字搜索binary二进制(即命令)、源文件、man手册
 
stat命令:查看文件的状态信息(即详细属性),包括文件的路径、大小、访问时间(atime)、修改时间(mtime)、属性修改时间(ctime)、索引号(inode)等属性。
 
实例:
stat  /etc/passwd
Access  (最近访问atime)文件最后一次被访问的时间(cat、head查看文件内容)
Modify  (最近更改mtime)文件最后一次被修改内容的时间(用vim修改文件内容)
Change  (最近改动ctime)文件最后一次被修改过属性的时间(chmod、chown改文件权限、属性)
 
updatedb  //手动更新查找数据库
说明:安装新软件,创建的新文件,必须updatedb后,才能用locate命令查到。
 
------------------------------------
locate 搜索  
命令格式:locate  关键字
特点:
    a.可以模糊匹配
    b.快速查找
    c.基于数据库 
说明:必须安装mlocate软件才能使用locate命令。  
实例:locate   hosts.allow    查找tcpwraper防火墙白名单文件
          locate   ifcfg-e    查找网卡配置文件及其相关的文件
 
使用通配符需要把通配符的内容用引号引起来
"*.conf" 
 
scp命令:
功能:用于远程发送、下载文件。
用法:scp   -rv   源    目标
发文件给对方:scp    /etc/hosts    [email protected]:/opt/
从对方电脑下载文件:scp   [email protected]:/etc/hosts   /tmp/
注:[email protected]中的root是对方电脑的用户账号,@后面是ip地址。
 
find语法:
    find  路径 选项  动作
    find  查询的路径  查询的条件 条件相关的参数 动作
    路径
        不指定路径 默认查找当前目录的文件  在查找的时候是递归查找(目录及其子目录下查找) 
    动作
          对find找到的文件执行指定的操作,可以是复制、删除等     
    选项(蓝字为常用选项)
     选项的作用:定义以名称、类型、大小、时间、权限、用户、组等各种条件来查找。
         -name  文件名     //按文件名查找,实例如下
                find  /etc  -name  host*    在/etc目录下查找名称以host开头的所有文件
                find  /  -name  *.conf      在/根目录下查找名称以.conf结尾的所有文件                
         -iname 文件名      //按文件名查找 不区分大小写
                  find  /etc  -iname  HOST*                       
         -size 大小[cwbkMG]    //按文件大小查找
                   +3G  大于3G的文件
                   -3G   小于3G的文件
                    3G   等于3G的文件
                 find / -size +3G   //在根目录下查找文件大于3G的文件
                 find  /boot  -size  +10M   //在/boot目录下查找文件大于10M的文件   
              
                  多条件查找  逻辑表达式
                 expr1 -and  expr2   逻辑与    -and == -a
                 expr1 -or   expr2     逻辑或    -or == -o
                 !expr              取反
                 -not expr        不是
                 
                  文件大小大于3G且小于4G的文件
                  find / -size +3G -a  -size -4G                   
                  
         -amin  访问时间     //min 分钟
         -atime 访问时间     //time  天数
         -cmin  改动时间
         -ctime 改动时间
         -mmin  修改时间
         -mtime  修改时间
         
           find / -atime 2 
           n       2   在2天之前的“一天之内”被访问过的文件
           +n    +2 列出2天之前被访问过的文件
           -n      -2  列出2天之内被访问过的文件         
         -perm
                find / -perm -4000   查找文件权限设置了suid的文件
                find / -perm -2000   查找文件权限设置了sgid的文件
                find / -perm 0755    查找权限等于0755的文件                
         -type  根据文件类型查找
              d  目录(即文件夹)
              f   普通文件,即word文档、txt文本文档、jpg图片、mp3音乐、avi视频。find   /etc   -type  f
              b  块设备文件,即硬盘、u盘、硬盘分区,例:find   /dev  -type   b
              c  字符设备文件,即终端tty,例:find   /dev  -type   c
              p  管道文件
              l   符号链接(也称软链接),即快捷方式,例:find   /   -type   l
              s   套接字,ip+port。例:find   /   -type   s
 
              find /etc  -type  d    在/etc目录下查找类型为d目录的文件          
              find / -type c -a -user root   在/根目录下查找类型为c且属主为root的文件
              
         -gid  用户的gid     //文件的所属组
         -group  用户组名   //文件的所属组
         -uid  用户的uid     //文件的所有者
         -user  用户的名字  //文件的所有者
         -inum  inode号      //查找指定inode号是多少的文件,inode是文件的索引号,显示索引号ls   -li   /etc/hosts   
                find /   -uid  1000    在根目录下查找uid(属主)为1000的文件
                find / -inum  16777341
                
动作:对查找到的文件做额外的操作(可以cp复制、mv移动、rm删除、ls  -l等)
          [-exec | -ok  要操作的命令  {}  \;]   //非交互式  或  交互式
          [ | xargs  -i 动作 ]       //非交互式的  -i支持使用{}
解释:{}代表用find命令找到的文件,\;是动作的结束符号
          -exec  操作时无提示
          -ok      操作是有提示
 
要操作的命令
        ls -l {} \;
        cp -rv {} /tmp/  \;
                
例:find    /etc    -name   host*   -exec   ls  -ld  {}  \;    在/etc目录下查找host*文件,将找到的文件用ls  -ld查看属性
       find    /etc    -name   host*   -exec   cp  -rv  {}   /tmp/   \;      将找到的文件复制到/tmp目录中
 
例:仅在/etc目录下查找类型为d(即目录)的文件,不在其子目录中查找。
find  /etc  -maxdepth  1  -type  d     注:-maxdepth指定最大查找深度
 
tr  替换字符    被替换的字符与替换的字符数必须是相等的
用法:tr   旧字符   新字符
 
# cat  > a.txt  <
root:1:0:bin
bin:2:200:bash
jim:10:300:bash
tom:102:10:bash
bin:2:200:bash
EOF
 
# cat a.txt | tr  20   89    将cat  a.txt结果中的20替换成89。  
root:1:9:bin
bin:8:899:bash
jim:19:399:bash
tom:198:19:bash
bin:8:899:bash
 
# cat a.txt | tr "a-z" "A-Z"    在替换的时候是一一对应的替换
ROOT:1:0:BIN
BIN:2:200:BASH
JIM:10:300:BASH
TOM:102:10:BASH
BIN:2:200:BASH
 
# cat a.txt | tr  0-4   5-9  
root:6:5:bin
bin:7:755:bash
jim:65:855:bash
tom:657:65:bash
bin:7:755:bash
 
\n      换行符
# cat a.txt | tr "\n"  "+"     将换行符换成+号
root:1:0:bin+bin:2:200:bash+jim:10:300:bash+tom:102:10:bash+bin:2:200:bash+
 
# cat a.txt | tr -s "o0"  把连续重复的字符替换成一个字符
rot:1:0:bin
bin:2:20:bash
jim:10:30:bash
tom:102:10:bash
bin:2:20:bash
 
# cat a.txt | tr -s "\n"  去掉空白行
 
tar包管理:
作用:实现将文件或目录进行打包压缩、解包解压缩。
windows的压缩软件:WinRaR、好压haozip、360压缩等
 
为何要压缩?
1、节省空间
2、方便在网络上传输
 
打包压缩:tar   -czvf    包名.tar.gz    要打包的文件
例:tar -czvf etc.tar.gz  /etc
      du  -hs   /etc   etc.tar.gz    统计文件大小(disk use)
解释:
tar后面的-c是打包(create),z是采用gzip压缩,v显示过程,f是指定包文件名。
du后的-h是显示容量单位,-s是sum统计总大小(通常用于目录)
 
解包解压缩:tar  -xvf   包名.tar.gz   -C   解压到的目录
例:tar  -xvf   etc.tar.gz   -C   /opt/
      ls   /opt     显示/opt目录中的文件名列表
      rm   -rfv   /opt/etc    强制删除/opt目录下的etc目录  
解释:tar后面的-x是解包解压。
         rm是删除文件,-r是递归删除目录,-f强制(即不提示yes/no),-v显示过程。
 
tar:可以实现打包并压缩,解包解压缩这两种功能。
查看帮助:tar  --help | more
 
tar打包并压缩:tar   -czvf    etc.tar.gz    /etc
说明:-c是打包    -z是用gzip压缩   -v显示过程    -f是指定压缩包文件包    -j是用bzip2压缩
 
tar解包解压缩:tar   -xzvf    etc.tar.gz   -C   /tmp/
说明:-x是解包     -C是指定解压到的目录
 
查看tar包中的文件列表:tar   -tf  etc.tar.gz
 
往tar包中添加新文件、删除文件:
tar   -cvf   host.tar    /etc/host*      打包
tar  -tf  host.tar    查看tar包中的文件列表
tar  -rvf  host.tar  /etc/passwd  /etc/group   往tar包中追加passwd、group文件
tar  -vf  host.tar  --delete   etc/host*    从tar包中删除host*文件

转载于:https://www.cnblogs.com/onetwo/p/9065047.html

你可能感兴趣的:(linux一些稍微高级的命令)