Linux之我最常用的命令
更多内容,请点击:http://blog.csdn.net/weixin_37977062?viewmode=contents
cd / ls / man /rm /
1.history
1.参数
n ;数字,列出最近的n笔命令
-c:将当前shell中的所有history清空
-r;将histfiles的内容读到目前这个shell中的history中
-w:将目前的history记忆内容写入histfiles中
2.用法
2.find
用法
find支持文件名的正则表达式查找,按文件修改时间查找,按文件大小查找,按文件权限查找,按文件类型查找等,查找到以后还支持直接对查找到的
文件使用命令,功能非常强大
典型的find命令的写法是:
find 查找路径 查找的标准查找到之后的动作
比如: find/home -type d -ls
意思是:找出/home/下所有的目录,并显示目录的详细信息
选项
1.按文件名查找
-name
直接加文件名,且支持文件名通配
iname
类似于-name,但是匹配文件名时不去分大小写
-regex
正则表达式匹配文件名
example:
find . -name "vim*" -ls
查找当前目录下所有以vim开头的文件,并显示其详细信息
find . -iname "vim*" -ls
查找当前目录下所有以vim开头的文件(不区分大小写),并显示其详细信息
2.按文件类型查找
-type 文件属性
d: 目录
f: 普通文件
l: 链接文件(link)
s: socket文件
p: 管道文件(pipe)
b: 块设备文件
c: 字符设备文件
example:
find . -type d -ls
显示当前目录下所有的目录的详细信息
find . -type l -ls
显示当前目录下所有的链接文件的详细信息
3.按文件所属组/owner查找
-gid GID
-uid UID
-user USER
-group GROUP
-nouser
-nogroup
exmaple:
find . -user gavinzhou -ls
显示当前目录下属于gavinzhou的所有的文件的详细信息
4.按文件大小查找
size [+,-][b,k,M,G]
example:
find . -type f -size +1k -ls
显示当前目录下所有大于1k的普通文件的详细信息
5.按文件的修改时间等查找
ctime: 改变时间(按照天计算)
atime: 访问时间
mtime: 修改时间
-amin: 改变时间(按照分钟计算)
-cmin: 访问时间
-mmin: 修改时间
使用[+,-]表示[大于,小于]
example:
find . -atime -1 -ls
显示当前目录下所有在两天以内访问过得文件的详细信息
find . -cmin +10 -ls
显示当前目录下所有超过10min没有改变过的文件的详细信息
6.按文件权限查找
-perm MODE
/MODE: 任意一位匹配即满足条件
-MODE: 文件权限能完全包含此MODE时才符合条件
example:
find . -perm -644 -ls
显示当前目录下文件权限的每一位至少包含r-xr–r–的文件的详细信息
find . -perm /464 -ls
显示当前目录下文件权限的某一位至少包含r–rx-r–的文件的详细信息
7.组合查找
-a: and
-o: or
-not:
example:
find . -type d -o -type l -ls
显示当前目录下所有目录和链接文件的详细信息
8.后继命令
-print: 显示
-ls:类似ls-l的形式显示每一个文件的详细
-quit: 查找到一个就退出
-delete: 删除匹配到的行
-ok COMMAND {} \;每一次操作都需要用户确认,{}表示引用找到的文件,是占位符
-exec COMMAND {} \;每次操作无需确认
example:
find . -type d -delete
删除当前目录下的所有目录
find . -type f -ok wc -l {} \;
找出当前目录下所有的普通文件并显示文件行数(需确认)
find . -type f -exec wc -l {} \;
找出当前目录下所有的普通文件并显示文件行数(无需确认)
3.basename
1.用法示例
$ basename /usr/bin/sort输出"sort"。
$ basename ./include/stdio.h .h输出"stdio"。
为basename指定一个路径,basename命令会删掉所有的前缀包括最后一个slash(‘/’)字符,然后将字符串显示出来。
2.basename命令格式
basename [pathname] [suffix]
basename [string] [suffix]
suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。
示例:
1.$ basename /tmp/test/file.txt
2.file.txt
3.$ basename /tmp/test/file.txt .txt
4.file
3.注意点
1、如果像下面脚本中传递参数给basename,参数为空,basename会将参数左移
2、basename最多接受两个参数,如果设置的参数多于两个,会提示错误
4.dirname | readlink
1.dirname
有时候,我们需要知道当前执行的输出shell脚本的所在绝对路径,可以用dirname实现。
我们知道dirname可以获取一个文件所在的路径,dirname的用处是:
输出已经去除了尾部的”/”字符部分的名称;如果名称中不包含”/”,则显示 ”.” (表示当前目录)。
示例一:
dirname /usr/bin/sort
输出:
/usr/bin
示例二:
dirname stdio.h
输出:
从上面的描述可知道,直接从dirname返回的未必是绝对路径,取决于提供给dirname的参数是否是绝对路径。
所以下面这样的代码中SHELL_FOLDER中不一定是绝对路径
SHELL_FOLDER=$(dirname "$0")
需要用cd和pwd命令配合获取脚本所在绝对路径,正确的写法是这样的,
SHELL_FOLDER=$(cd "$(dirname "$0")";pwd)
2.readlink
所以用readlink命令我们可以直接获取$0参数的全路径文件名,然后再用dirname获取其所在的绝对路径:
SHELL_FOLDER=$(dirname $(readlink -f "$0"))
5.tar | gzip
从网络上下载到的源码包,最常见的是.tar.gz 包,还有一部分是 .tar.bz2包
要解压很简单 :
.tar.gz 格式解压为 tar -zxvf xx.tar.gz
.tar.bz2 格式解压为 tar -jxvf xx.tar.bz2
1.gzip, gunzip
最广泛的压缩工具,Linux系统中标准压缩工具,对于文本文件能够达到很高的压缩率
例:
[root@localhost a]# gzip a.c
[root@localhost a]# ll a.c.gz
-rw-r--r--. 1 root root 271 Aug 20 08:32 a.c.gz
[root@localhost a]# gzip -d a.c.gz
[root@localhost a]# ll a.c
-rw-r--r--. 1 root root 423 Aug 20 08:32 a.c
gzip -d 等价于 gunzip
2.bzip2, bunzip2
新版Linux压缩工具,比gzip拥有更高的压缩率
3.tar命令
主选项
· -c创建新的档案文件。如果用户想备份一个目录或者一些文件,就要选择这个选项
-r 把要存档的文件追加到档案文件的末尾
-t 列出档案文件的内容,查看已经备份了那些文件
-x 从档案文件中释放文件
辅助选项
-f 使用档案文件或设备,这个选项通常是必选的
-v 详细报告tar处理的文件信息。如无此选项,tar不报告文件信息
-z 用gzip来压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩
例一:把/home目录下包括他的子目录全部做备份文件,备份文件名为usr.tar
tar cvf usr.tar /home
例二:把/home目录下包括他的子目录全部做备份文件,并进行压缩,备份文件名为usr.tar.gz
tar czvf usr.tar.gz /home
例三:把usr.tar.gz这个备份文件还原并解压缩
tar xzvf usr.tar.gz
例四:查看usr.tar备份文件的内容,并以分屏方式显示在显示器上
tar tvf usr.tar |more
选项说明
-p 保留权限
-fname 使用name指定存档文件名或设备名
-v 列出处理的详细信息
-z 用GNU的gzip压缩文件或解压
-j 用GNU的bzip2压缩文件或解压
-C directory 将当前目录切换到directory
-M 创建/列出/恢复多卷存档文件,以便在几个备份介质中存放
-N DATE 指定仅对那些比DATE新的文件进行操作
-p 表示希望保留文件许可权限
-P 保留文件的绝对路径,即不去掉/
-w 要求等待用户确认每一个操作
-W 表示在写入备份内容到备份设备以后再读出来进行验证以提高可靠性
-T filename 从指定的文件中读需要备份或恢复的文件名
-X filename 不处理给定文件中列出的文件
--exclude=PATTERN不处理指定的文件
6.mail
1.环境配置
第一步:
yum remove sendmail
yum remove postfix
第二步:
配置文件(添加)
vim /etc/mail.rc
set from=goupxm1314@163.com //发送邮件的邮箱
set smtp=smtp.163.com //选择的服务器
set smtp-auth-user=goupxm1314 //账号用户名
set smtp-auth-password=xim52011241314 //授权码
set smtp-auth=login //登录方式
2.命令
echo "TEST" | mail -s "LOVE" -a test.txt2426876333@qq.com
-s:邮件正文
-a:附件
1.echo "邮件内容"| mail -s "标题"-a附件 xxx@xx.com
2.mail -s 标题 xxx@xx.com< file
3.mail -s 标题 xxx@xx.com
//邮件正文
……
……
ctrl+D结束正文并发送
7.awk
1.简介
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,
以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
awk有3个不同版本:awk、nawk和gawk,未作特别说明,一般指gawk,gawk是AWK 的GNU版本。
完整的awk脚本通常用来格式化文本文件中的信息
2.使用方法
awk '{pattern +action}' {filenames}
例一:
搜索/etc/passwd有root关键字的所有行。
$ awk -F:'/root/' /etc/passwd
root:x:0:0:root:/root:/bin/bash
这种是pattern的使用示例,匹配了pattern(这里是root)的行才会执行action(没有指定action,默认输出每行的内容)
例二:
搜索/etc/passwd有root关键字的所有行,并显示对应的shell.
$ awk -F:'/root/{print $7}' /etc/passwd
/bin/bash
这里指定了action{print$7}。
尽管操作可能会很复杂,但语法总是这样,其中pattern表示AWK 在数据中查找的内容,而action 是在找到匹配内容时所执行的一系列命令。
花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。pattern就是要表示的正规表示法,用斜杠括起来。
3.调用awk
有三种方式调用awk。
1.命令行方式
awk [-F field-separator] 'commands' input-file(s)
其中,commands是真正awk命令,[-F域分隔符]是可选的。input-file(s)是待处理的文件
在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空白键或者Tab键
例一:
只显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以tab键分割
$ cat/etc/passwd |awk -F ':' '{print $1"\t"$7}'
root /bin/bash
daemon /bin/sh
bin /bin/sh
sys /bin/sh
例二:
只显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以逗号分割,而且在所有行添加列名name,shell,在最后一行添加"blue,/bin/nosh"。
$ cat/etc/passwd |awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "blue,/bin/nosh"}'
name,shell
root,/bin/bash
daemon,/bin/sh
bin,/bin/sh
sys,/bin/sh
....
blue,/bin/nosh
2.shell脚本方式
将所有的awk命令插入一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,一遍通过键入脚本名称来调用。
相当于shell脚本首行的:#!/bin/sh
可以换成:#!/bin/awk
3.文件调用方式
将所有的awk命令插入一个单独文件,然后调用:
awk -fawk-script-file input-file(s)
其中,-f选项加载awk-script-file中的awk脚本,input-file(s)跟上面的是一样的
4.awk内置变量
awk有许多内置变量用来设置环境信息,这些变量可以被改变,下面给出了最常用的一些变量。
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行-F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
此外,$0变量是指整条记录,$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推。
例如:
awk -F ':' '{print "filename:" FILENAME ",linenumber:" NR",columns:" NF ",linecontent:"$0}' /etc/passwd
filename:/etc/passwd,linenumber:1,columns:7,linecontent:root:x:0:0:root:/root:/bin/bash
filename:/etc/passwd,linenumber:2,columns:7,linecontent:daemon:x:1:1:daemon:/usr/sbin:/bin/sh
filename:/etc/passwd,linenumber:3,columns:7,linecontent:bin:x:2:2:bin:/bin:/bin/sh
filename:/etc/passwd,linenumber:4,columns:7,linecontent:sys:x:3:3:sys:/dev:/bin/sh
使用printf替代print,让代码更加简洁易读。
$ awk -F ':' '{printf("filename:%10s,linenumber:%s,columns:%s,linecontent:%s\n",FILENAME,NR,NF,$0)}'/etc/passwd
5.print和printf
awk中同时提供了print和printf两种打印输出的函数。
其中print函数的参数可以是变量、数值或者字符串。字符串必须用双引号引用,参数用逗号分隔。如果没有逗号,参数就串联在一起而无法区分。
这里,逗号的作用与输出文件的分隔符的作用是一样的,只是后者是空格而已。
printf函数,其用法和c语言中printf基本相似,可以格式化字符串,输出复杂时,printf更加好用,代码更易懂。
6.awk编程
1.变量和赋值
除了awk的内置变量,awk还可以自定义变量。
范例1:统计/etc/passwd的账户人数。
$ awk'{count++;print $0;} END{print "user count is ", count}'/etc/passwd
root:x:0:0:root:/root:/bin/bash
......
user count is 40
count是自定义变量。之前的action{}里都是只有一个print,其实print只是一个语句,而action{}可以有多个语句,以;号隔开。
这里没有初始化count,虽然默认是0,但是妥当的做法还是初始化为0:
$ awk 'BEGIN{count=0;print "[start]user count is ", count}{count=count+1;print $0;} END{print "[end]user count is ",count}' /etc/passwd
[start]usercount is 0
root:x:0:0:root:/root:/bin/bash
...
[end]usercount is 40
范例2:统计某个文件夹下的文件占用的字节数。
$ ls -l |awk'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ",size}'
[end]size is 8657198
如果以M为单位显示:
$ ls -l |awk'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ",size/1024/1024,"M"}'
[end]size is 8.25889 M
注意,统计不包括文件夹的子目录。
2.条件语句
awk中的条件语句是从C语言中借鉴来的,见如下声明方式:
if (expression){
statement;
statement;
... ...
}
if (expression){
statement;
} else {
statement2;
}
if (expression){
statement1;
} else if(expression1) {
statement2;
} else {
statement3;
}
范例3:统计某个文件夹下的文件占用的字节数,过滤4096大小的文件(一般都是文件夹):
$ ls -l |awk'BEGIN {size=0;print "[start]size is ", size}{if($5!=4096){size=size+$5;}} END{print "[end]size is ",size/1024/1024,"M"}'
[end]size is 8.22339 M
3.循环语句
awk中的循环语句同样借鉴于C语言,支持while、do/while、for、break、continue,这些关键字的语义和C语言中的语义完全相同。
4.数组
因为awk中数组的下标可以是数字和字母,数组的下标通常被称为关键字(key)。值和关键字都存储在内部的一张针对key/value应用hash的表格里。由于hash不是顺序存储,因此在显示数组内容时会发现,它们并不是按照你预料的顺序显示出来的。数组和变量一样,都是在使用时自动创建的,awk也同样会自动判断其存储的是数字还是字符串。
一般而言,awk中的数组用来从记录中收集信息,可以用于计算总和、统计单词以及跟踪模板被匹配的次数等等。
范例4:显示/etc/passwd的账户
$ awk -F ':''BEGIN {count=0;} {name[count] = $1;count++;}; END{for (i = 0; i <NR; i++) print i, name[i]}' /etc/passwd
0 root
1 daemon
2 bin
3 sys
4 sync
5 games
......
这里使用for循环遍历数组
8.sed
1.简介
sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspace),接着用sed命令处理
缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向
存储输出。sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
2.sed [-nefr] [动作]
1.选项与参数
-n:使用安静(silent)模式。在一般sed的用法中,所有来自STDIN 的数据一般都会被列出到终端上。但如果加上-n 参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行sed 的动作编辑;
-f :直接将sed 的动作写在一个文件内,-f filename则可以运行filename 内的sed 动作;
-r :sed的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i:直接修改读取的文件内容,而不是输出到终端。
1.$ sed -i's/\.$/\!/g' regular_express.txt
利用sed将regular_express.txt内每一行结尾若为. 则换成 !
2.$ sed -i '$a# This is a test' regular_express.txt
①利用sed直接在regular_express.txt最后一行加入“# This is a test”
②$代表的是最后一行,而a的动作是新增
2.动作说明
动作说明:[n1[,n2]]function
n1, n2:不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在10到 20行之间进行的,则『10,20[动作行为]』
3.function
a :新增,a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
head -n 3/etc/passwd | sed '2a Drink tea or ......\
> drinkbeer ?'
c :取代,c 的后面可以接字串,这些字串可以取代n1,n2之间的行!
nl /etc/passwd| sed '2,5c No 2-5 number'
d :删除,因为是删除啊,所以d 后面通常不接任何咚咚;
nl /etc/passwd| sed '/root/d'
i :插入,i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
head -n 3/etc/passwd | sed '2i goup love ximeng'
p:列印,亦即将某个选择的数据印出。通常p会与参数sed -n 一起运行
nl /etc/passwd| sed '/root/p'
nl /etc/passwd| sed -n '/root/p'
s:取代,可以直接进行取代的工作哩!通常这个s的动作可以搭配正规表示法!例如1,20s/old/new/g就是啦!
4.数据的搜寻并替换
sed's/要被取代的字串/新的字串/g'
5.多点编辑
多点编辑-e
$ nl/etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/'
1 root:x:0:0:root:/root:/bin/blueshell
2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh
sed 后面接的动作,请务必以'' 两个单引号括住
例如:
1.nl/etc/passwd | sed '2,5d' 删除2-5行
2.nl/etc/passwd | sed '3,$d' 删除3-最后一行
3.head -n 3/etc/passwd | sed '2i goup love ximeng'
root:x:0:0:root:/root:/bin/bash
goup loveximeng
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
4.#head -n 3/etc/passwd | sed '2a Drink tea or ......\
> drinkbeer ?'
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
Drink tea or......
drink beer ?
bin:x:2:2:bin:/bin:/bin/sh
5.nl/etc/passwd | sed '2,5c No 2-5 number'将第2-5行内容替换为“No2-5 number”
6.nl/etc/passwd | sed -n '5,7p'仅列出5-7行
7.nl/etc/passwd | sed '/root/p'搜索/etc/passwd有root关键字的行。
如果root找到,除了输出所有行,还会输出匹配行。
8.nl/etc/passwd | sed '/root/d'删除/etc/passwd所有包含root的行,其他行输出
9,先观察原始信息,利用/sbin/ifconfig查询IP:打印出本机的ip是192.168.1.100。
$/sbin/ifconfig eth0
eth0 Linkencap:Ethernet HWaddr 00:90:CC:A6:34:84
inetaddr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr:fe80::290:ccff:fea6:3484/64 Scope:Link
UP BROADCASTRUNNING MULTICAST MTU:1500 Metric:1
.....(以下省略).....
第一步:下面将IP前面的部分予以删除:
$/sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g'
192.168.1.100Bcast:192.168.1.255 Mask:255.255.255.0
第二步:接下来则是删除IP后面的部分:
$/sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed's/Bcast.*$//g'
192.168.1.100
9.tee
双重重定向
tee [-a] file
-a:追加(append)
能够将数据分流到文档与屏幕
例如:ls -l |tee [-a] ~/homefile | more
10.tr
1.用法
tr [-ds] SET1 ...
2.参数
-d:删除讯息当中的SET1这个字符串
-s:替换掉重复的字符
例一:
将last输出的讯息中,小写转换成大写
last | tr'[a-z]' '[A-Z]'
例二:
将/etc/passwd输出的讯息中,将冒号(:) 删除。
$ cat/etc/passwd | tr -d ':'
11.grep
1.用法
grep [-acinv] [--color=auto] '搜索字符串'filename | [less | more]
2.参数
-a:将bin文件以text文件的方式
-c:计算找到'搜索字符串的次数'
-i :忽略大小写的不同
-n:顺便输出行号
-v:反向搜索
--color=auto:加色
-r:明确要求搜索子目录 grep-d skip忽略子目录
-l: 只列出匹配的文件名
-L: 列出不匹配的文件名
-w: 只匹配整个单词,而不是字符串的一部分(如匹配magic,而不是magical)
没有参数,在当前目录搜索带'索搜字符串'行的文件
3.用于搜索的特殊符号
1./< 和/>分别标注单词的开始和结尾
例如:
grep man* 会匹配'Batman'、'manic'、'man'等
grep '/<man'* 匹配'manic'、'man',不匹配'Batman'
grep '/<man/>'* 只匹配'man'
2.'^' 指匹配的字符串在行首
例如:
grep -n'[^a-z]oo' a.txt
匹配oo前非小写字母的行
grep -n'^[a-z]' a.txt
匹配以小写开头的行
3.'$' 指匹配的字符串在行尾
例如:
grep -n '^$'a.txt
找出空白行
4.正则语法总结
特殊字符表示意义
^word 待搜寻的字符在行首
word$ 待搜寻的字符在行尾
. 匹配任何一个可能的字符
/ 跳脱符号将特殊字符变成普通字符
? 任何一个单一字符
* 匹配模式中重复的字符
[list] 列表中的字符
[range] 列表中范围内的字符
[^range] 反向选择,与[list] 相反
/{n/} 与前一个相同字符连续n 个
/{n,m/} 与前一个相同字浮连续n-m 个
12.uname
1.uname –a详解
例一
$ uname -a
系统名节点名称 操作系统的发行版号 内核版本
Linux ubuntu 3.2.0-29-generic-pae #46-Ubuntu SMP Fri Jul 2717:25:43 UTC 2012
系统处理器的体系结构 CPU硬件平台 操作系统
i686 i686 i386 GNU/Linux
例二
系统名节点名称 操作系统的发行版号 内核版本
Linux localhost.localdomain 2.6.32-431.el6.x86_64 #1 SMP Sun Nov10 22:19:54 EST 2013
系统处理器的体系结构 CPU硬件平台 操作系统
x86_64 x86_64 x86_64 GNU/Linux
2.参数
将每个参数都单独执行一次,得到:
----------------------------------------------------------------------------
硬件平台:
$ uname -i
i386
---------------------------------
机器硬件(CPU)名:
$ uname -m
I686
---------------------------------
节点名称:
$ uname -n
Ubuntu
---------------------------------
操作系统:
$ uname -o
GNU/Linux
---------------------------------
系统处理器的体系结构:
$ uname -p
i686
---------------------------------
操作系统的发行版号:
$ uname -r
3.2.0-29-generic-pae
---------------------------------
系统名:
$ uname -s
Linux
---------------------------------
内核版本:
$ uname -v
#46-Ubuntu SMP FriJul 27 17:25:43 UTC 2012
13.wc
1.统计命令:wc
1.语法
语法:#wc [-lwm]
选项与参数:
-l :仅列出行;
-w :仅列出多少字(英文单字);
-m :多少字符;
2.使用
#wc /etc/passwd
40 45 1719/etc/passwd
40是行数,45是单词数,1719是字节数
wc的命令比较简单使用,每个参数使用如下:
#wc -l/etc/passwd #统计行数,在对记录数时,很常用
/etc/passwd #表示系统有40个账户
#wc -w/etc/passwd #统计单词出现次数
/etc/passwd
#wc -m/etc/passwd #统计文件的字节数
14.cut
1.参数
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了-n 标志。
1.指定文件中每行的第1,3到7个字符输出:
cut -b 1,3-7test.txt
2.-n表示1到前n个字符,n-表示从n开始的所有字符
3.打印前两个字符和从第8个开始的字符
$ cut -b -2,8-test.txt
-c :以字符为单位进行分割。
-d:自定义分隔符,默认为制表符。
-f:与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和-b 标志一起使用。如果字符的最后一个字节落在由-b标志的List 参数指示的<br/>范围之内,
该字符将被写出;否则,该字符将被排除。
2.用法
例1:
显示所有的用户名:
[root@localhost~]# cat /etc/passwd | head -n 5 | cut -d : -f 1
root
bin
daemon
adm
lp
例二:
[root@localhost~]# cat cut_ch.txt
星期一
星期二
星期三
星期四
[root@localhost~]# cut -b 3 cut_ch.txt
�
�
�
�
[root@localhost~]# cut -c 3 cut_ch.txt
一
二
三
四
//当遇到多字节字符时,可以使用-n选项,-n用于告诉cut不要将多字节字符拆开。
15.cat
1.参数
-n或--number由1开始对所有输出的行数编号
-b或--number-nonblank和-n相似,只不过对于空白行不编号
-s或--squeeze-blank当遇到有连续两行以上的空白行,就代换为一行的空白行
-v或–show-nonprinting
16.at
1.Ubuntu默认不安装at,安装at
sudoapt-get install at ,出错,按照提示
sudoapt --fix-broken install at
2.安排一个一次性的任务,那么at命令提供了一个快捷的方式,从而不需要接触crontab
at命令的运行方式是在后面紧跟着你想要运行的任务的运行时间。时间是灵活的,因为它支持许多时间格式。包括下面这些例子:
at12:00 PM September 30 2017
atnow + 1 hour
at9:00 AM tomorrow
实例:
goup@Goup-X450JB:~/Desktop/pritice$at now + 1 minute
warning:commands will be executed using /bin/sh
at>/home/goup/Desktop/pritice/goup.sh
at><EOT>
job4 at Tue Oct 10 14:47:00 2017
当你以带参数的方式输入at命令以后,将会提示你该命令将在你的linux系统上运行。这可能是一个备份脚本,一套维护任务,甚至是一个普通的bash命令。如果要结束任>务的话,可以按ctrl+d。
另外,你可以使用atq命令产看当前用户的所有任务,或者使用sudoatq查看所有用户的任务。它将会展示出所有排定好的任务,并且每一个任务都有一个ID。如果>你想取消一个排定好的任务,可以使用atrm命令,并且以任务ID作为参数
17.shred
1.粉碎一个test.txt的文件命令是:
$shredtest.txt
2.粉碎多个文件的命令是:
$shredtest1.txt test2.txt
这两条命令的效果是文件依旧存在,但不再是原来的文件了,对比测试可以通过先编辑一个文本文件后保存,然后使用shred命令覆盖此文件,再打开该文本文件即可看出>内容不再是原有内容了。如果想要覆盖的同时删除文件(这才是粉碎的表现么),加上参数-u,命令变为:
$shred–u test.txt
3.覆盖一个挂载分区的文件命令是:
$shred/dev/hda0 //覆盖IDE接口的第一个磁盘设备的第一分区
$shred/dev/sda2 //覆盖SCSI或SATA接口的第一个磁盘设备的第三分区
在终端下使用shred命令来进行文件粉碎操作实在不方便,得益于Nautilus的可扩展性,我们可以给Ubuntu的Nautilus添加右键菜单来执行shred操作:
在终端下输入命令安装Nautilus-actions(中文名被汉化为“Nautilus动作配置”):
$sudoapt-get install nautilus-actions
然后单击“系统”–>“首选项”–>“Nautilus动作配置”->单击“Definea new action”按钮
然后在“添加新动作”窗口中输入以下信息:
ContextLabel: Shred粉碎//你可以随便想一个名字,这里是显示在右键菜单的名字
Tooltip: Shred粉碎机//一样可以随便想一个描述,这是停留在右键菜单的提示
Icon:gtk-dialog-warning //可以单击Browse或者下拉菜单中选择一个图标
路径:shred
参数:-f -u -v -z %M
然后单击“Recordall themodified”标签卡,如果只需要这个粉碎右键菜单出现在仅处理文件的时候,那么就单击“仅文件”单选框,同理如果需要出现在仅处理文件夹的>时候就单击“仅文件夹”单选框,如果需要文件和文件夹上右键都能出现该粉碎菜单,那么单击“Both”单选框。另外勾选“Appearsif selection has multiple files or folders”复选框
18.lsof
1.信息含义
每行显示一个打开的文件,若不指定条件默认将显示所有进程打开的所有文件。lsof输出各列信息的意义如下:
COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE:文件类型,如DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称
常用的参数列表: lsof filename 显示打开指定文件的所有进程 lsof -a 表示两个参数都必须满足时才显示结果 lsof -c string 显示COMMAND列中包含指定字符的进程所有打开的文件 lsof -u username 显示所属user进程打开的文件 lsof -g gid 显示归属gid的进程情况 lsof +d /DIR/ 显示目录下被进程打开的文件 lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长 lsof -d FD 显示指定文件描述符的进程 lsof -n 不将IP转换为hostname,缺省是不加上-n参数 lsof -i 用以显示符合条件的进程情况 lsof -i[46] [protocol][@hostname|hostaddr][:service|port] 46 --> IPv4 or IPv6 protocol --> TCP or UDP hostname --> Internet host name hostaddr --> IPv4地址 service --> /etc/service中的 service name (可以不只一个) port --> 端口号 (可以不只一个) 例如: 查看22端口现在运行的情况 # lsof -i :22 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME sshd 1409 root 3u IPv6 5678 TCP *:ssh (LISTEN) 查看所属root用户进程所打开的文件类型为txt的文件: # lsof -a -u root -d txt COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME init 1 root txt REG 3,3 38432 1763452 /sbin/init mingetty 1632 root txt REG 3,3 14366 1763337 /sbin/mingetty mingetty 1633 root txt REG 3,3 14366 1763337 /sbin/mingetty mingetty 1634 root txt REG 3,3 14366 1763337 /sbin/mingetty mingetty 1635 root txt REG 3,3 14366 1763337 /sbin/mingetty mingetty 1636 root txt REG 3,3 14366 1763337 /sbin/mingetty mingetty 1637 root txt REG 3,3 14366 1763337 /sbin/mingetty kdm 1638 root txt REG 3,3 132548 1428194 /usr/bin/kdm X 1670 root txt REG 3,3 1716396 1428336 /usr/bin/Xorg kdm 1671 root txt REG 3,3 132548 1428194 /usr/bin/kdm startkde 2427 root txt REG 3,3 645408 1544195 /bin/bash ... ...
19.netstat
常用参数
-a (all)显示所有选项,默认不显示LISTEN相关
-t(tcp)仅显示tcp相关选项
-u(udp)仅显示udp相关选项
-n拒绝显示别名,能显示数字的全部转化成数字。
-l仅列出有在 Listen(监听)的服務状态
-p 显示建立相关链接的程序名
-r显示路由信息,路由表
-e显示扩展信息,例如uid等
-s按各个协议进行统计
-c每隔一个固定时间,执行该netstat命令。
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
更多内容,请点击:http://blog.csdn.net/weixin_37977062?viewmode=contents