linux命令总结1129

来源:互联网 发布:骑士数据 编辑:程序博客网 时间:2024/05/21 09:32
===================================================================================================================
一、linux压缩、解压命令用法
===================================================================================================================
.gz
压缩:
gzip filename 生成 filename.gz
解压:
gzip -d filename.gz

.bz2
压缩:
bzip2 -z FileName
解压:
bzip2 -d FileName.bz2

.tar
压缩:
tar cvf filename.tar DirName
解压:
tar xvf filename.tar
tar xvf filename.tar -C /home

.tar.gz
压缩:
tar zcvf filename.tar.gz DirName 把DirName目录打包,生成filename.tar.gz文件
解压:
tar zxvf filename.tar.gz

.tar.bz2
压缩:
tar jcvf filename.tar.bz2 DirName 把DirName目录打包,生成filename.tar.bz2文件
解压:
tar jxvf filename.tar.bz2

.tgz
compress:
tar zcvf filename.tgz DirName
decompress :
gzip -dv filename.tgz --> filename.tar
tar xvf filename.tar

.rar
压缩:
rar a lj_tmp ./temp/ -->lj_tmp.rar
解压:
rar e FileName.rar
unrar e FileName.rar
unrar x FileName.rar


-------------------------------------------------------------------------------------------------------------------
linux - tar 分卷压缩
分卷压缩适用于比较大的文件,比如android源码,可以将一个大的文件或目录压缩成多个较小的压缩包,这样便于网络传输,
此外,有 文件系统单个文件不得大于4G,如fat16,此时利用分卷压缩,将一个大文件分成多个小文件存储显得很有用。
文件下载到本地PC端以后,再使用多卷合并,把多个较小的压缩包合并为一个大包,最后再将此大包解压。
整个流程如下:
source_dir/ --> 分卷压缩 --> 多卷合并 --> 解压缩 --> source_dir/

1、压缩成.tar.gz包,待压缩文件为 test/
(1)分卷压缩
tar czvf - /test | split -b 20m - ts.tar.gz.
将把 test/目录压缩成每个20M的包,依次生成 ts.tar.gz.aa ts.tar.gz.ab ts.tar.gz.ac ... 生成包的个数视 test/目录本身的大小而定
(2)多卷合并
cat ts.tar.gz.a* > ts.tar.gz
这一步实现多卷合并

2、压缩成.tar.bz2包,待压缩文件为 test/
(1)分卷压缩
tar cjvf - test/ | split -b 30m - ts.tar.bz2.
生成 ts.tar.bz2.aa ts.tar.bz2.ab ts.tar.bz2.ac ...
(2)多卷合并
cat ts.tar.bz2.a* > ts.tar.bz2

3 解压
tar xzvf ts.tar.gz
或者
tar xjvf ts.tar.bz2

===================================================================================================================
二、ls 命令的参数选项说明:
===================================================================================================================
-a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件。
-A, –almost-all 列出除了 . 及 .. 以外的任何项目
–author 印出每个文件的作者
-f 对输出的文件不进行排序,-aU 选项生效,-lst 选项失效
-F, –classify 加上文件类型的指示符号 (*/=@| 其中一个)
-clt 显示当前目录下的文件,并按时间先后排列
-k 即 –block-size=1K,以 k 字节的形式表示文件的大小
-l 列出文件的详细信息
-o 类似 -l,显示文件的除组信息外的详细信息。
-L, –dereference 当显示符号链接的文件信息时,显示符号链接所指示的对象而并非符号链接本身的信息
-lh, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
-p, -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字
-Q, –quote-name 将项目名称括上双引号
-r, –reverse 依相反次序排列
-R, –recursive 同时列出所有子目录层
-s, –size 以块大小为单位列出所有文件的大小
-S 根据文件大小排序

只列出子目录
1. ls -F | grep /$
2. ls -l | grep “^d”

列出目前工作目录下所有名称是s 开头的档案,愈新的排愈后面,可以使用如下命令:
ls -ltr s*


用ls -l命令查看某一个目录会得到一个9个字段的列表.
drwxrwxr-x 4 insound insound 4096 4月 22 17:59 workspace
1 2 3 4 5 6 7 8 9
第1字段: 文件属性字段
第2字段: 文件硬链接数或目录子目录数
第3字段: 文件拥有者
第4字段: 文件拥有者所在的组
第5字段: 文件大小(以字节为单位)
第6字段: 文件创建月份
第7字段: 文件创建日期
第8字段: 文件创建时间
第9字段: 文件名 (如果是一个符号链接,那么会有一个 “->” 箭头符号,后面根一个它指向的文件)



===================================================================================================================
三、grep与正则表达式
===================================================================================================================
1、 grep -[acinv] '搜索内容串' filename

-a
以文本文件方式搜索

-c
计算找到的符合行的次数

-i
忽略大小写

-n
顺便输出行号

-v
反向选择,即找没有搜索字符串的行

其中搜索串可以是正则表达式!


搜索有the的行,并输出行号
$grep -n 'the' regular_express.txt


搜索没有the的行,并输出行号
$grep -nv 'the' regular_express.txt



2、 利用[ ]搜索集合字符
[ ] 表示其中的某一个字符,例如[ade] 表示a或d或e
grep -n 't[ae]st' regular_express.txt

可以用^符号做[]内的前缀,表示除[]内的字符之外的字符
grep -n '[^g]oo' regular_express.txt

[ ] 内可以用范围表示,比如: [a-z] 表示小写字母, [0-9] 表示0~9的数字, [A-Z] 则是大写字母们。 [a-zA-Z0-9]表示所有数字与英文字符。
当然也可以配合^来排除字符。

搜索包含数字的行:
grep -n '[0-9]' regular_express.txt


3、^表示行的开头; $表示行的结尾; ^$表示空行
这里^与[ ]里面使用的^意义不同。它表示^后面的串是在行的开头。
比如搜索the在开头的行:
grep -n '^the' regular_express.txt


搜索以小写字母开头的行:
grep -n '^[a-z]' regular_express.txt


搜索开头不是英文字母的行:
grep -n '^[^a-zA-Z]' regular_express.txt


$表示它前面的串是在行的结尾,比如'\.' 表示. 在一行的结尾搜索末尾是.的行 :
grep -n '\.$' regular_express.txt //. 是正则表达式的特殊符号,所以要用\转义


^$ 就表示只有行首行尾的空行拉。
搜索空行:
grep -n '^$' regular_express.txt

搜索非空行:
grep -vn '^$' regular_express.txt


4、在bash中*代表通配符,用来代表任意个字符,但是在正则表达式中,他含义不同,*表示有0个或多个某个字符

oo*, 表示第一个o一定存在,第二个o可以有一个或多个,也可以没有,因此代表至少一个o.

. 代表一个任意字符。
g??d 可以用 'g..d' 表示:
grep -n 'g..d' regular_express.txt

5、{ }限定连续重复字符的范围
. *只能限制0个或多个,如果要确切的限制字符重复数量,就用{范围},范围是数字中间用,分隔。
2,5表示2~5个
2表示2个
2,表示2个到更多个

注意,由于{ }在SHELL中有特殊意义,因此作为正则表达式用的时候要用\转义一下。
搜索包含两个o的字符串的行:
grep -n 'o\{2\}' regular_express.txt


搜索g后面跟2~5个o,后面再跟一个g的字符串的行:
grep -n 'go\{2,5\}g' regular_express.txt


搜索包含g后面跟2个以上o,后面再跟g的行:
grep -n 'go\{2,\}g' regular_express.txt

注意,想让[]中的^ -不表现特殊意义,可以放在[]里面内容的后面。
'[^a-z\.!^ -]' 表示没有小写字母,没有. 没有!, 没有空格,没有- 的串。
注意[]里面有个小空格。另外shell 里面的反向选择为[!range], 正则里面是[^range]



===================================================================================================================
四、关于linux系统中的软链接与硬链接
===================================================================================================================
ln 链接命令
ln -s source dist 为档案source创建软链接文件dist
ln source dist 为档案source创建硬链接文件dist

硬连结的意思是一个档案可以有多个名称,而软连结的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。软链接就是ln -s ** **,
它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间;硬链接ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件.
无论是软链接还是硬链接,文件都保持同步变化。
若一个 inode 号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名

硬链接的特点:
删除一个硬链接文件并不影响其他有相同 inode 号的文件
不能对目录进行创建,只可对文件创建
文件有相同的 inode 及 data block


软链接的特点:
软链接有自己的文件属性及权限等,也即软链接有自己的inode号;
删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)
软链接可对文件或目录创建;
可对不存在的文件或目录创建软链接;


例如:
ln -s /home/insound/jackly ./ln_jackly
在当前目录下创建一个软链接文件ln_jackly,指向/home/insound/jackly




===================================================================================================================
五、U盘格式化
===================================================================================================================
mkfs.vfat -F 32 /dev/sdb1
将U盘格式化为FAT32格式



===================================================================================================================
六、linux下用fdisk对U盘进行分区:
===================================================================================================================
(1) 查看U盘对应的设备名
fdisk -l
----------------------------------------------------------------------------------
Disk /dev/sdb: 3904 MB, 3904897024 bytes
190 heads, 35 sectors/track, 1146 cylinders, total 7626752 sectors
Units = 扇区 of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000b89b

设备 启动 起点 终点 块数 Id 系统
/dev/sdb1 * 24576 7626751 3801088 c W95 FAT32 (LBA)
-----------------------------------------------------------------------------------

(2)进入U盘
fdisk /dev/sdb

(2)
m,打印帮助信息

(3)
p,列出分区表

(4)
n,新建分区
输入起始sector
输入终止sector

(5)
w,保存退出



===================================================================================================================
七、linux下用find查找命令
===================================================================================================================
find pathname -options [-print -exec -ok]

例如:
find /home/lijiang/ -name *love.java -print
在 /home/lijiang 目录下 查找 含有 love.java字段的文件,并在终端打印出来
0 0
原创粉丝点击