- 浏览: 237317 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zhangzijun1984:
谢谢! 写的很详细
ruby 的数组操作 -
jcdby:
非常棒的文章。我从头看到了尾。但是为什么最后的关键部分不完整呢 ...
javascript 函数对象 -
56553655:
giianhui 写道希望能介绍一下这个类的使用场景,谢谢!看 ...
sun.misc.Unsafe 的使用 -
liuInsect:
为什么 这样就可以访问了呢? 是改变了什么设置吗??? sec ...
sun.misc.Unsafe 的使用 -
softor:
set什么啊?
MySQL 的 source 命令处理中文问题
管道命令 | , 将前面命令的正确信息 传递给后面的命令作标准输入。 |仅能处理标准输出,对stderr没有直接处理能力.
$ls -al |more
ls 的结果被more读取。
选取命令 cut,grep
注意选取的信息是以行为单位的,即是逐行分析的。
cut
用于使用分割符切割每一行
。
-d '分割符'
-f m,n... 指定取出的第几段, 以逗号分隔,指定都是哪几个段,比如 -f1,3,4 指定取出第1,3,4段
-c 以字符为单位取出固定的字符范围 比如 cut -c 12- ,每行
第12个字符以后的所有内容, cut -c 12-20 ,每行
第12到20 字符之间的内容
例子
woody@xiaoc:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
woody@xiaoc:~$ echo $PATH |cut -d ':' -f 5
/sbin
woody@xiaoc:~$ echo $PATH |cut -d ':' -f 2,4
//第2段和第4段,:分隔
/usr/local/bin:/usr/bin
woody@xiaoc:~$
woody@xiaoc:~$ export
declare -x COLORTERM="Terminal"
declare -x DISPLAY=":0.0"
declare -x GTK_IM_MODULE="xim"
declare -x HISTCONTROL="ignoreboth"
declare -x HOME="/home/woody"
declare -x LANG="en_US.UTF-8"
declare -x LC_CTYPE="zh_CN.UTF-8"
declare -x LESSCLOSE="/usr/bin/lesspipe %s %s"
declare -x LESSOPEN="| /usr/bin/lesspipe %s"
declare -x LOGNAME="woody"
.....省略
woody@xiaoc:~$ export | cut -c 12- //输出每行
第12个字符以后的内容
COLORTERM="Terminal"
DISPLAY=":0.0"
GTK_IM_MODULE="xim"
HISTCONTROL="ignoreboth"
HOME="/home/woody"
LANG="en_US.UTF-8"
LC_CTYPE="zh_CN.UTF-8"
LESSCLOSE="/usr/bin/lesspipe %s %s"
LESSOPEN="| /usr/bin/lesspipe %s"
LOGNAME="woody"
.....省略
grep : 分析每一行,如果行中有需要的信息,则输出该行
grep -[acinv] '搜索内容串' filename
-a 以文本文件方式搜索
-c 计算找到的符合行的次数
-i 忽略大小写
-n 顺便输出行号
-v 反向选择,即找 没有搜索字符串的行
例子
woody@xiaoc:~$ last | grep 'tty2'
//找出last结果中 有tty2 的行
woody tty2 Sat Aug 30 17:14 - 17:14 (00:00)
woody tty2 Sat Aug 30 17:14 - 17:14 (00:00)
woody tty2 Sun Jul 20 22:06 - down (00:07)
woody tty2 Sun Jul 20 22:06 - 22:06 (00:00)
woody tty2 Sun Jul 20 21:35 - down (00:29)
woody tty2 Sun Jul 20 21:35 - 21:35 (00:00)
woody tty2 Mon Jul 21 04:32 - down (01:00)
woody tty2 Mon Jul 21 04:32 - 04:32 (00:00)
woody tty2 Mon Jul 21 04:08 - down (00:00)
woody tty2 Mon Jul 21 04:08 - 04:08 (00:00)
woody@xiaoc:~$
woody@xiaoc:~$ last | grep -v 'tty2'
//找没有tty2的行...
woody pts/0 :0.0 Sat Aug 30 17:42 still logged in
woody pts/0 :0.0 Sat Aug 30 17:42 - 17:42 (00:00)
woody pts/0 :0.0 Sat Aug 30 17:41 - 17:42 (00:00)
woody tty1 Sat Aug 30 17:23 - 17:23 (00:00)
woody tty1 Sat Aug 30 17:23 - 17:23 (00:00)
woody tty1 Sat Aug 30 17:19 - 17:20 (00:00)
woody tty1 Sat Aug 30 17:19 - 17:19 (00:00)
woody tty1 Sat Aug 30 17:17 - 17:17 (00:00)
woody tty1 Sat Aug 30 17:17 - 17:17 (00:00)
省略。。。。
综合利用:
woody@xiaoc:~$ sudo cat /etc/shadow
root:!:14080:0:99999:7:::
daemon:*:14080:0:99999:7:::
bin:*:14080:0:99999:7:::
sys:*:14080:0:99999:7:::
sync:*:14080:0:99999:7:::
games:*:14080:0:99999:7:::
man:*:14080:0:99999:7:::
省略...
woody@xiaoc:~$ sudo cat /etc/shadow |grep 'root' |cut -d ':' -f 1,2
//找到有root的行,取出:分割的前两个段内容
root:!
woody@xiaoc:~$
排序命令
sort 帮助我们排序,排序的字符跟语系编码有关系,因此排序前建议使用LC_ALL=C,让语系统一。
-f 忽略大小写
-b 忽略前面空格
-M 以月份名字排序例如 JAN,DEC等
-n 以纯数字方式排序,默认是字符串模式
-u uniq 相同数据显示一次
-t 分割符号,默认是tab
-k 按哪个字段(分割开得)排序
具体看man手册
woody@xiaoc:~$ cat /etc/passwd |sort
backup:x:34:34:backup:/var/backups:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
dhcp:x:101:102::/nonexistent:/bin/false
dnsmasq:x:107:65534:dnsmasq,,,:/var/lib/misc:/bin/false
games:x:5:60:games:/usr/games:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
haldaemon:x:106:115:Hardware abstraction layer,,,:/var/run/hald:/bin/false
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
klog:x:103:104::/home/klog:/bin/false
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
......
woody@xiaoc:~$ cat /etc/passwd |sort -t ":" -k 3 -n
//按照:分割的第三栏来排序, 数字方式
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
uniq 将重复数据只显示一次
-i 忽略大小写,
-c 计数
wc 统计文件中多少字多少行多少字符。
-l ,只显示行数
-w 仅字(英文单词,连着的汉字字符串是一个字
)
-m 多少字符
vim 中好像总多一个不可见的结束符。utf-8编码下,一个汉字是3个字符大小.
tee 命令,双向重定向
我们知道> 会将数据传送给文件或设备,但是这样后标准输出中就没有内容了。如果想将信息既导向设备或文件,又分流到标准输出,可以用tee命令
tee [-a] file
-a 追加方式
woody@xiaoc:~$ last | tee last.list
| cut -d ' ' -f1 //既将last输出保存到了last.list文件,又将last输出导向给cut命令.
woody
woody
woody
woody
woody
woody
woody
woody
....
字符转换命令 tr,col,join,paste expand
tr [-ds] charset
-d 删除消息中的char set 中包含的字符
-s 替换重复的字符
他的替换方式似乎是一一对应的,比如 tr 'woody' 'WOODY' 会将信息中所有的w替换为W,所有o替换成O..
例子,将小写变大写
$last | tr '[a-z]' '[A-Z]'
将输出中的:删除
$cat /etc/passwd | tr -d ':'
将dos文件中的^M删除
$cat file |tr -d '\r' > newfile
\r 表示^M. DOS文件中会在行尾添加^M,而linux没有。
col -x 用来将tab 替换成对等的空格
woody@xiaoc:~$ cat -A /etc/manpath.config
.......
# --------------------------------------------------------$
# MANDATORY_MANPATH^I^I^Imanpath_element$
# MANPATH_MAP^I^Ipath_element^Imanpath_element$
# MANDB_MAP^I^Iglobal_manpath^I[relative_catpath]$
#---------------------------------------------------------$
# every automatically generated MANPATH includes these fields$
我们看到许多^I ,是tab键的显示。
要将他们换成空格显示,可以这样:
woody@xiaoc:~$ cat /etc/manpath.config | col -x |cat -A|more
也不怎么常用。
join , 将两个文件中,有相同数据的行加在一起。
-t 默认以空格分割数据,并比较第一个字段的数据,相同则将两个数据连成一行。
-i 大小写忽略
-1 第一个文件用哪个字段分析
-2 第二个文件用哪个字段分析
例子:
woody@xiaoc:~$ sudo join -t ':' /etc/passwd /etc/shadow
root:x:0:0:root:/root:/bin/bash:!:14080:0:99999:7:::
daemon:x:1:1:daemon:/usr/sbin:/bin/sh:*:14080:0:99999:7:::
bin:x:2:2:bin:/bin:/bin/sh:*:14080:0:99999:7:::
因为passwd 和shadow以:分割的第一个字段都是帐号名, 因此有相同帐号名的两文件中的行合并了,
由于帐号名相同,第二个文件的帐号名就省略了。红色是第二个文件的。
例子
/etc/passwd 第四字段是GID,/etc/group 第三个字段是GID, 整合命令
woody@xiaoc:~$ sudo join -t ':' -1 4 /etc/passwd -2 3 /etc/group
0:root:x:0:root:/root:/bin/bash:root:x:
1:daemon:x:1:daemon:/usr/sbin:/bin/sh:daemon:x:
2:bin:x:2:bin:/bin:/bin/sh:bin:x:
...
/etc/passwd 第一行: root:x:0:0:root:/root:/bin/bash
/etc/group 第一行 root:x:0:
将第一个的第四栏0 与第二个文件的第三栏0 取出,放到行的最前方。
然后将剩余的东西加在一起放在后面,就得到输出了。
paste 这个比join简单,只是将两个文件的两行合并,以tab分隔
-d 加分隔符号 ,默认tab
- 说明内容是来自标准输入。
woody@xiaoc:~/tmp$ paste file1 file2
this is a file this is a file //两个文件内容相同,因此结果是这样
this is a test this is a test
this file is using paste command. this file is using paste command.
EOF EOF
woody@xiaoc:~/tmp$ paste file1 - //使用标准输入作另一个文件来源
this is a file fuck //标准输入fuck后将fuck与第一行合并
fuck //这是标准输入的内容,不是文件合并后的显示
this is a test hello
hello
this file is using paste command. Im the second
Im the second
.........
expand 将tab转成空格 ,col也可以完成该功能
-t 指定一个tab占多少空格
woody@xiaoc:~/tmp$ grep 'MANPATH' /etc/manpath.config | head -n 3|cat -A
# MANDATORY_MANPATH^I^I^Imanpath_element$
# MANPATH_MAP^I^I
path_element^Imanpath_element$
# every automatically generated MANPATH includes these fields$
woody@xiaoc:~/tmp$ grep 'MANPATH' /etc/manpath.config | head -n 3|expand -t 6|
cat -A
# MANDATORY_MANPATH manpath_element$
# MANPATH_MAP
path_element manpath_element$
# every automatically generated MANPATH includes these fields$
woody@xiaoc:~/tmp$
tab是^I
unexpand命令可以完成逆向工作
split, 可以将大文件分割为小文件,方便复制传送等工作。
-b 后接拆分后单个小文件的大小,可加单位,b,k,m等
-l 按照行数拆分。
$split -b 100m movie.rmvb small_mov
得到结果 small_mova,small_movb.... 依次加上abcd..得到多个100m以内的小文件
要合并他们:
$cat small_mov* >> new_mov.rmvb
cat 可以将多个文件合并输出,比如 cat file1 file2 得到file1 和file2 的输出.
cat 不加参数,则从标准输入(键盘)获取,以ctrl+d 结束输入。
按行数
woody@xiaoc:~$ ls -al / |split -l 10
-
lsroot
将结果生成10行一个的文件 lsroota,lsrootb....
注意那个红色的- 符号,在需要标准输入输出时,恰好没有文件时,则-当成输入/输出
这里split 的结果经过 -(输出) 到lsroota,lsrootb..
关于减号- 的作用,
在管道命令中,常常会用到前一个命令的stdout作后面命令的stdin, stdin/stdout 可以用减号-代替,比如
$tar -cvf - /home | tar -xvf -
这里将/home里的文件打包,但是不生成文件,而是将数据传送到 stdout ,即-,经过管道,将数据传送给
tar -xvf - ,后面这个- 则是取前一个命令的stdout 做stdin用,也就不需要文件了。
参数替换 xargs,以空格分隔输入,产生某个命令的参数,如果一些文件名之类的名字里含有空格,xargs可能会误判。
-0 如果输入的stdin中有特殊字符,如`, \, 空格等,使用-0 将其还原为一般字符
-e EOF的意思,-e后紧跟一个字符串,则分析到这个字符串(空格分割出来的单独参数,而不是参数的一部分)时就停止工作。忽略它并停止分析
-p 执行每个命令的参数时,询问用户
-n 每次后面的命令执行时需要几个参数,
当xargs后面没接命令时,默认echo输出。
woody@xiaoc:~$ cut -d':' -f1 < /etc/passwd | head -n 3 |xargs touch
woody@xiaoc:~$ ls
abc ok? bin
Desktop Downloads playlist tmp wallpapers
Backup daemon
doc linux_c_src root
vbox_share xrgsu
woody@xiaoc:~$
这里 将passwd 前三行取出,使用cut 取出第一栏(帐户名) 作为参数传递给touch, 则创建了三个文件。
woody@xiaoc:~$ cut -d':' -f1 < /etc/passwd | head -n 3 |xargs -p touch //带提示的用法
touch root daemon bin ?...y
使用-e 令当分析到某个参数是sys时,忽略它和后面的参数。
woody@xiaoc:~$ rm bin daemon root //删除之前创建的文件先
woody@xiaoc:~$ cut -d':' -f1 < /etc/passwd | head -n 5 |xargs -p -e'sys' touch
touch root daemon bin
?...y //看,没有sys和后面的
woody@xiaoc:~$ ls
abc ok? bin Desktop Downloads playlist tmp wallpapers
Backup daemon doc linux_c_src root vbox_share xrgsu
woody@xiaoc:~$
使用-n ,指定命令需要的参数为2个,这样分析出的参数2个一组,每组分别执行后面的命令。
woody@xiaoc:~$ cut -d':' -f1 < /etc/passwd | head -n 5 |xargs -n 2 //默认echo 输出得到的参数
root daemon //看两个一组
bin sys
sync
woody@xiaoc:~$
xargs命令很有用,具体参考man手册。
发表评论
-
mapreduce streaming
2014-11-05 11:54 724stream 中mapper若有空格,必须用引号引起 ... -
wget,curl工具设置代理访问
2013-03-05 10:43 0一、wget设置代理 eg: wget -Y o ... -
vim编辑器
2013-01-04 11:12 0securecrt 中 1. Appearance ... -
关于ubuntu启动项
2012-03-09 10:35 1253如果在 /etc/init.d 中加入一个 script ... -
apache+php
2012-03-07 19:09 1028apache 若不设置 DirectoryIndex ... -
python使用pdb调试程序
2012-02-06 12:25 1278Python自带了一个调试器叫pdb,和Gnu的gbd类似。下 ... -
cgi 不能访问外部资源,cannot create directory ==>超级安全的selinux
2011-09-27 15:30 1225今天,做一个监控脚本,但总是不能成功创建目录, 经过认真检查 ... -
磁盘分区和格式化
2011-08-19 14:21 1381一、分区工具 fdisk 命令使用 fdisk 磁盘 ... -
grub命令
2011-08-04 15:07 1045grub 命令 set,ls,insmod,root,pr ... -
一个定时脚本
2011-07-02 14:47 0timer_interrupt=14 timelimit=10 ... -
完善 脚本
2011-07-02 12:27 01.判断 变量是否定义过 -n -z 或是:- ,未定 ... -
shell 变量的条件替换
2011-06-28 11:31 1508(1)${value:-word} 当变量未定义或者值为空时, ... -
tcp 参数设置
2011-06-23 18:27 788tcp 参数 2MSL /proc/sys/net/ipv4/ ... -
登录记录
2011-05-31 16:59 0rmss@r5-73:/var/log$ lastb -f w ... -
僵尸进程
2011-05-20 13:19 641http://www.cnblogs.com/iceocean ... -
linux 安装 c环境
2011-05-20 10:10 1000sudo apt-get install build-esse ... -
linux 僵尸进程
2011-05-19 14:43 1227关于ZOMBIE进程: 这些 ... -
Sed
2011-05-06 17:23 1836[url]http://opkeep.com/system/l ... -
查看网卡状态 工具ethtool
2011-03-31 11:01 4041xxx@xxx:~$ ethtool eth0 Setting ... -
linux ssh 环境变量 配置
2011-02-21 09:40 3162SSH客户端设置环境变量 当使用SSH客户端时,会发现设置的 ...
相关推荐
LINUX常用命令全集 LINUX常用命令全集 LINUX常用命令全集 LINUX常用命令全集 LINUX常用命令全集 LINUX常用命令全集 LINUX常用命令全集 LINUX常用命令全集 LINUX常用命令全集 LINUX常用命令全集 LINUX常用命令全集 ...
以下是一些关于Linux常用命令的详细说明: 1. **pwd**:`pwd`(Print Working Directory)命令用于显示当前工作目录,即用户当前所在的目录路径。 2. **cd**:`cd`命令用于切换目录。例如,`cd /`进入根目录,`cd ...
### Linux常用命令详解 #### 一、文件管理 1. **ls**:此命令用于列出当前目录中的文件和子目录。通过使用不同的选项,可以改变其输出格式。 - `-l`:使用长格式列表输出,包括文件权限、拥有者、组、大小等详细...
04.1.1 Linux常用命令-文件处理命令-命令格式与目录处理命令ls.mp4 04.1.2 Linux常用命令-文件处理命令-目录处理命令.mp4 04.1.3 Linux常用命令-文件处理命令-文件处理命令.mp4 04.1.4 Linux常用命令-文件处理...
Linux 常用命令大全 Linux 操作系统是一个功能强大且灵活的操作系统,拥有众多实用的命令来帮助用户管理和维护系统。下面是 Linux 中一些常用的命令,旨在帮助用户快速掌握 Linux 操作系统。 TTY 控制台终端 在 ...
### Linux常用命令详解知识点 #### 一、命令格式与通配符 - **命令格式**: - **命令**:指定要执行的操作。 - **选项**:改变命令的行为方式,通常以`-`开头,多个选项可以用空格或直接连接的方式给出。 - **...
"最全Linux常用命令大全-linux常用命令全集" 本文档对 Linux 中最常用的命令进行了详细的总结和说明,涵盖了文件和目录管理、磁盘空间管理等方面的命令。 文件和目录管理命令 1. `pwd` 命令:显示当前目录 `pwd`...
LINUX 常用命令语言总结 LINUX 操作系统提供了大量的命令语言,以下是常用的命令语言概述: 1. 远程桌面连接命令:mstsc mstsc 是一种远程桌面连接命令,可以连接到另一台计算机,并在远程桌面上进行操作。 2. ...
linux常用命令大全 1. **ls**:列出目录内容 2. **cd**:改变当前目录 3. **pwd**:显示当前工作目录 4. **mkdir**:创建目录 5. **rmdir**:删除空目录 6. **cp**:复制文件或目录 7. **mv**:移动或重命名文件或...
Linux常用命令.xls Linux常用命令.xls Linux常用命令.xls Linux常用命令.xls Linux常用命令.xls Linux常用命令.xls Linux常用命令.xls Linux常用命令.xls Linux常用命令.xls Linux常用命令.xls Linux常用命令.xls ...
linux常用命令大全; linux常用命令大全; linux常用命令大全; linux常用命令大全; linux常用命令大全; linux常用命令大全; linux常用命令大全; linux常用命令大全; linux常用命令大全; linux常用命令大全; ...
Linux常用命令全集.CHM Linux vi命令大全.txt liunx命令大全.txt liunx 下如何用命令行设置网络?.txt 请问怎么设置DNS的命令?.txt Red Hat Linux下配置Tomcat+JSP+Apache服务器的步骤.txt Linux 下 Apache 与 ...
Linux常用命令汇总中,首先涉及到的是检查Java开发工具包(JDK)是否已安装以及版本信息。使用命令`java –version`和`javac –version`可以实现该功能。`java –version`用于查看Java运行环境的版本,而`javac –...
Linux常用命令大全Linux常用命令深入理解Linux内核鸟哥的Linux私房菜Linux命令学习资料(12个): Linux命令大全(Linuxidc.com修改版).chm Linux命令学习.chm Linux基础命令教程(豪华版).chm LINUX安全加固手册.doc ...
linux常见命令, Linux常用命令大全(非常全!!!)最近都在和Linux打交道,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制
linux常用命令md文件
"Linux常用命令及实用命令万字总结" 本文档旨在总结Linux系统中常用的命令和实用命令,涵盖了基本的文件管理、目录操作、文件查询、系统管理等方面的命令。 1. ls命令 ls命令是Linux系统中最常用的命令之一,用于...
linux常用命令大全常用linux常用命令大全.常用linux常用命令大全.常用linux常用命令大全.常用linux常用命令大全.常用linux常用命令大全.常用linux常用命令大全.常用linux常用命令大全.常用linux常用命令大全.常用...