您的位置:首页 > 运维架构 > Linux

linux命令汇总

2014-04-02 09:45 417 查看
启动终端的快捷键:default:CTRL+ALT+T

1. grep
grep,即Global RegularExpressionPrint,全局正则表达式,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打出来。
主要参数:-c,只输出匹配行的计数;-I,不区分大小写(只适用于单字符); -h,查询多文件时不显示文件名; -l,查询多文件时只输出包含匹配字符的文件名;-n,显示匹配行及行号; -s,不显示不存在或无匹配文本的错误信息; -v,显示不包含匹配文件的所有行;.
正则表达式主要参数:
\:忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行,即匹配的字符串在行首。
$:匹配正则表达式的结束行,即匹配的字符串在行末。
\<:从匹配正则表达式的行开始。
\>:从匹配正则表达式的行结束。
[ABC]:字符集合,匹配任意一个单个字符,如[A],即A符合要求。
[^ABC]:负值字符集合,匹配未包含其中字符的其它任意字符。
[-]:范围,如[A-Z],即A,B,...,Z都符合要求。
.:所有单个字符。
*:匹配所有字符,长度也可以为0.
例:(1)grep \$./*,匹配含有$字符的行。(2) grep ^[^48] ./*,匹配不宜4或8开始的行

2. tar,zip,unzip,压缩解压命令
tar命令参数:
-c,建立压缩档案; -x,解压;-t,查看内容;-r向压缩归档文件末尾追加文件,-u更新原压缩包中的文件。
以上五个参数有且只能有一个,它们是互斥的。
-f,使用档案名字,该参数是必须的,而且只能作为最后一个参数。

(1) 解压
tar -xvf file.tar
tar -xzvffile.tar.gz
tar -xjvffile.tar.bz2
tar -xZvffile.tar.Z
unzip file.zip
(2)压缩
tar-cf file.tar *.bmp
zip -rfilename.zip filesdir
zipfilename.zip *.jpg

3.find
Linux下的文件查找工具。
语法:find PATH OPTION[-exec COMMAND {}\;]
这里的PATH是起始目录,我们不需要加-R,它会自动查找子文件夹。
OPTION:

-name ’字串’ 查找文件名匹配所给字串的所有文件,字串内可用通配符 *、?、[ ]。
-lname ’字串’ 查找文件名匹配所给字串的所有符号链接文件,字串内可用通配符 *、?、[ ]。
-gid n 查找属于ID号为 n 的用户组的所有文件。
-uid n 查找属于ID号为 n 的用户的所有文件。
-group ’字串’ 查找属于用户组名为所给字串的所有的文件。
-user ’字串’ 查找属于用户名为所给字串的所有的文件。
-empty 查找大小为 0的目录或文件。
-path ’字串’ 查找路径名匹配所给字串的所有文件,字串内可用通配符*、?、[ ]。
-perm 权限 查找具有指定权限的文件和目录,权限的表示可以如711,644。
-size n[bckw] 查找指定文件大小的文件,n 后面的字符表示单位,缺省为 b,代表512字节的块。
-type x 查找类型为 x 的文件,x 为下列字符之一:
b 块设备文件
c 字符设备文件
d 目录文件
p 命名管道(FIFO)
f 普通文件
l 符号链接文件(symbolic links)
s socket文件
-xtype x 与 -type 基本相同,但只查找符号链接文件。

以时间为条件查找
-amin n查找n分钟以前被访问过的所有文件。
-atimen 查找n天以前被访问过的所有文件。
-cmin n查找n分钟以前文件状态被修改过的所有文件。
-ctimen 查找n天以前文件状态被修改过的所有文件。
-mmin n查找n分钟以前文件内容被修改过的所有文件。
-mtimen 查找n天以前文件内容被修改过的所有文件。
-print:将搜索结果输出到标准输出。
例:在root以及子目录中查找不包含目录/root/bin的,greek用户的,文件类型为普通文件的,3天前的名为test-find.c的文件,并将结果输出:
find /-name "test-find.c" -type f -mtime +3 -user greek -prune /root/bin-print

当然在这其中,-print是一个默认选项,我们不必刻意去配置它。
我们再看一下exec选项:
-exec:对搜索的结构指令指定的shell命令。注意格式要正确:"-exec 命令 {} \;"
在}和\之间一定要有空格才行;
{}表示命令的参数即为所找到的文件;命令的末尾必须以“ \;”结束。
例子:对上述例子搜索出来的文件进行删除操作,命令如下:
find /-name "test-find.c" -type f -mtime +3 -user greek -prune /root/bin-exec rm {} \;

4. tee
读取标准输入的数据,并将其内容输出到一个或多个文件中。
参数:-a,追加到文件后面;-i,忽略终端信号;--help;--version.
例:ls -al | tee log1.txtlog2.txt
adb logcat | tee log.txt
5. 管道:|
Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为右边命令的输入。连续使用管道意味着第一个命令的输出作为第二个命令的输入,第二个命令的输出作为第三个命令的输入,依此类推。
例:
#rpm -qa|grep licq
//这条命令使用一个管道符“|”建立一个管道。第一个命令的输出(系统上所有安装的RPM包)作为grep命令的输入,从而列出带有licq字符的RPM包。
#cat /etc/passwd|grep /bin/bash | wc -l
//这条命令使用了两个管道,第二个命令找出所有含有/bin/bash的行,第三个命令wc统计出输入中所有的行数。

6. 查看磁盘以及文件大小
(1)查看磁盘空间

$ df -h
命令结果参考如下:
Filesystem Size Used Avail Use% Mountedon
/dev/sda4 367G 7.1G 342G 3% /
none 7.7G 232K 7.7G 1%/dev
none 7.8G 0 7.8G 0% /dev/shm
none 7.8G 440K 7.8G 1%/var/run
none 7.8G 0 7.8G 0% /var/lock
/dev/sda1 184M 28M 147M 16% /boot
/dev/sda6 443G 120G 301G 29% /file
/dev/sda3 92G 4.4G 83G 5% /home
参数 -h 表示使用「Human-readable」的输出,也就是在档案系统大小使用 GB、MB 等易读的格式。
上面的命令输出的第一个字段(Filesystem)及最后一个字段(Mountedon)分别是档案系统及其挂入点。我们可以看到 /dev/sda4 这个分区被挂在根目录下。
接下来的四个字段 Size、Used、Avail、及 Use%分别是该分割区的容量、已使用的大小、剩下的大小、及使用的百分比。

(2)查看文件以及文件夹大小

$ du -h --max-depth=1
2.5G ./device
2.8M ./.repo
688K ./mirror
244M ./platform
3.8G ./kernel
884K ./git-repo.git
6.4G .
如果当前目录下文件和文件夹很多,使用不带参数的du命令,可以循环列出当前目录下所有文件和文件夹所使用的空间。文件多时就会很乱,可以使用参数"--max-depth="指定深入目录的层数;如要查看当前目录已使用的总空间大小,使用"$du -h--max-depth=0"命令即可;如要查看当前目录已使用的总空间大小及当前目录下一级文件和文件夹各自使用的总空间大小,使用"$du -h --max-depth=1"命令即可。

7. uname,查看当前操作系统信息
>>在ubuntu环境下
$uname
Linux
$uname -a

Linux ubuntu 2.6.38-10-generic #46-Ubuntu SMP Tue Jun 28 15:05:41 UTC 2011 i686 i686 i386 GNU/Linux


>>在Cygwin环境下
$uname
CYGWIN_NT-6.1
$uname -a
CYGWIN_NT-6.1 COMPUTERNAME 1.7.9(0.237/5/3) 2011-03-29 10:10i686 Cygwin

不要小看这个命令,当你编写跨平台的Makefile时,这个命令可以帮助你识别当前运行的环境,例如,我们可以用:
MY_OS = $(shell uname | cut -f 1 -d "_")
这样,我们就可以用一下判断语句来对不同环境做不同的配置。

ifeq ($(MY_OS), Linux)PLATFORM=linux
endif
ifeq ($(MY_OS), CYGWIN)
PLATFORM=cygwin
endif
ifeq ($(MY_OS), CYGWIN_NT)
PLATFORM=cygwin
endif

8. cut

cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的。

(1)其语法格式为:

cut [-bn] [file] 或 cut [-c] [file] 或 cut [-df] [file]

使用说明

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

主要参数

-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。

-c :以字符为单位进行分割。

-d :自定义分隔符,默认为制表符。

-f :与-d一起使用,指定显示哪个区域。

-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List参数指示的<br/>范围之内,该字符将被写出;否则,该字符将被排除。

(2)cut一般以什么为依据呢? 也就是说,我怎么告诉cut我想定位到的剪切内容呢?

cut命令主要是接受三个定位方法:

第一,字节(bytes),用选项-b

第二,字符(characters),用选项-c

第三,域(fields),用选项-f

例如:我们想取出文件“file.txt”中以“-”分割的第二段域,则

file.txt内容: MY-OS-LINUX

$ cat file.txt | cut -f 2 -d "-"

OS

9. 查看当前系统登录用户以及用户的操作

who, w, last, lastlog, whoami

who查看当前有哪些用户登录到系统,并会显示当前用户的登录信息。

w查看当前用户正在进行的操作以及有多长时间没有进行操作

last查看所有用户登录的历史信息,登录时间,退出时间等等。

lastlog查看本机所有用户最近一次登录的信息。

whoami查看自己的用户名

10. history命令

history命令可以查看历史的命令行操作记录。其实命令记录存放在~/.bash_history文件中。默认情况下,没有命令的执行时间。可以通过以下方法加入时间。

编辑/etc/bashrc文件,加入如下三行:

HISTFILESIZE=2000

HISTSIZE=2000

HISTTIMEFORMAT="%Y%m%d-%H%M%S: "

export HISTTIMEFORMAT

保存后退出,关闭当前shell,并重新登录
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: