-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathlinux command.html
More file actions
392 lines (308 loc) · 10.9 KB
/
linux command.html
File metadata and controls
392 lines (308 loc) · 10.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>linux command</title>
<link rel="stylesheet" href="templates/SyntaxHighlighter.css"></link>
<link rel="stylesheet" href="templates/style.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script language="javascript" src="templates/shCore.js"></script>
<script language="javascript" src="templates/shBrushCpp.js"></script>
<script language="javascript" src="templates/shBrushJScript.js"></script>
<script language="javascript" src="templates/shBrushPhp.js"></script>
<script language="javascript" src="templates/shBrushJava.js"></script>
<script language="javascript" src="templates/shBrushXml.js"></script>
<script language="javascript" src="templates/shBrushCss.js"></script>
<script language="javascript" src="templates/shBrushObjectiveC.js"></script>
<script language="javascript" src="templates/vimwiki.js"></script>
</head>
<body>
<div class="navbar">
<div class="navbar-container">
<a class="brand" href="index.html">NieNet</a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="index.html">主页</a></li>
<li><a href="about.html">关于</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
<div class="container">
<div id="content">
<p>
$sudo -s //永久的切换到root账户
$type adb //查看adb命令的位置
</p>
<h2 id="toc_0.1">尚未解决的几个命令</h2>
<ul>
<li>
列出一个压缩包的最上层内容,不要解压缩,不要列举所有文件。对于一个压缩包内容很多时有用,例如linux kernel、android代码等得压缩包。
<li>
显示路径下的所有文件夹名,不要子文件。
</ul>
<h2 id="toc_0.2">alternatives 命令</h2>
<p>
这是一个只有 root 才能执行的命令。alternatives 的意思是 “可选择的内容”。假如你的系统中有几个命令功能十分类似,却又不能随意删除,那么可以用 alternatives 来指定一个全局的设置。在 FC3 中,全局默认输入法和 java 系统等等都是用它来进行设置的。它有几种功能,可以用命令行参数来指定。alternatives --install <link> <name> <path> <priority> 意思是在 alternatives 数据库中添加一个 <path>,使它成为 <link> 的可选项,优先级是 <priority>。而 <name> 则是一个中转站。这样说似乎有些抽象 所以,执行一下看看
</p>
<p>
代码:
</p>
<pre>
alternatives --install /etc/X11/xinit/xinput.d/zh_CN xinput-zh_CN /etc/X11/xinit/xinput.d/scim 100
alternatives --install /etc/X11/xinit/xinput.d/zh_CN xinput-zh_CN /etc/X11/xinit/xinput.d/fcitx 99
</pre>
<p>
这两个命令的意思就是将刚才新建的 scim 和 fcitx 两个文件作为 zh_CN 的可选内容。它们的优先级分别是 100 和 99,它们共同的名字是 xinput-zh_CN。
</p>
<p>
另外一种功能是选择默认值。上面的命令仅仅向数据库中添加了可选内容,接下来当然是进行选择了。可以用两种办法,第一种是 alternatives --auto <name>,这时系统会根据优先级来选择 <name> 的默认值。例如,运行
</p>
<p>
代码:
</p>
<pre>
alternatives --auto xinput-zh_CN
</pre>
<p>
会把默认输入法设置为 scim。(为什么?因为我们在上面指定的优先级是 100,是最高的,fcitx 只有 99)
</p>
<p>
第二种是 alternatives --config <name>,这时会显示一个对话框,大概是这样
</p>
<p>
代码:
</p>
<pre>
[root@jackbillow ~]# alternatives --config xinput-zh_CN
There are 3 programs which provide 'xinput-zh_CN'.
Selection Command
-----------------------------------------------
1 /etc/X11/xinit/xinput.d/iiimf
*+ 2 /etc/X11/xinit/xinput.d/scim
3 /etc/X11/xinit/xinput.d/fcitx
Enter to keep the current selection[+], or type selection number:
</pre>
<p>
可以看到系统中已经通过 alternatives --install 添加了三个可选内容。优先级最高的是 <code>*</code>指示的那一个,目前的默认全局使用的是`+'指示的那一个。输入数字 3 就会将默认值改为fcitx,输入回车的话就不做改动。
</p>
<p>
哪种好一点?它们不会冲突,哪个都可以。要修改优先级怎么办?比如要把 fcitx 的优先级提高成 101,应该怎么办?答案很简单,再运行一次 alternatives --install 就可以了。
</p>
<p>
代码:
</p>
<pre>
alternatives --install /etc/X11/xinit/xinput.d/zh_CN xinput-zh_CN /etc/X11/xinit/xinput.d/fcitx 101
</pre>
<p>
需要注意的是,这样做不会修改当前的默认值,只有再运行 alternatives --auto 才会做出选择。或者,用 alternatives --config 也可以。
</p>
<p>
alternatives 还有一些功能,包括删除一个可选项等等。同样,这个设置应该由输入法的安装程序 rpm 来做。有关alternatives命令配置java的实例,参考<a href="Android tool chain.html">Android tool chain</a>。
</p>
<h2 id="toc_0.3">du命令</h2>
<p>
在查看目录的使用情形时,我们可以将输出结果导到 sort 指令进行排序,以了解哪个档案用了最多的空间:
</p>
<blockquote>
du /etc | sort -nr | more
</blockquote>
<p>
下面的命令能够递归查找所有文件,并且把其中所有大于50M的文件都找出来。
</p>
<blockquote>
find . -type f -size +1000000k
</blockquote>
<h2 id="toc_0.4">find命令</h2>
<p>
find命令-name选项后面的参数,最好使用双引号,否则,会出现些异常问题。
</p>
<p>
查找目录(包括子目录)下所有的.DS_Store文件,并且每个文件使用<code>git rm</code>命令删除。
</p>
<blockquote>
find . -name ".DS_Store" -exec git rm --cached -f {} \;.
</blockquote>
<p>
查找目录(包括子目录)下的所有后缀为.m的文件,并且将所有这些文件一次输入给<code>genstrings</code>命令,生成I18N文件(iphone开发中)。
</p>
<blockquote>
find . -name "*.m" | xargs genstrings -o en.lproj
</blockquote>
<p>
查找包含某字符串的文件, 在当前路径下的所有文件中查找包含help字符的文件。
</p>
<blockquote>
find . -type f -name "*"|xargs grep help
</blockquote>
<p>
批量文件编码转化,使用find命令找到所有需要转换的文件,然后使用-exec执行iconv命令单个转化。
</p>
<pre name="code" class="c">
#!/bin/bash
find . -type f -name "*.wiki" \
-exec ls '{}' \; \
-exec iconv -f gb2312 -t utf8 '{}' -o ../webutf/tmp.wiki \; \
-exec mv ../webutf/tmp.wiki ../webutf/'{}' \;
</pre>
<h2 id="toc_0.5">压缩解压缩命令(tar,zip,unzip)</h2>
<p>
将当前路径下的所有网页打包压缩:
</p>
<blockquote>
tar cjf test.tar.bz2 *.html
</blockquote>
<p>
查看某个压缩包中的所有文件,以.tar.bz2压缩包为例:
</p>
<blockquote>
tar tjf test.tar.bz2
</blockquote>
<p>
把一个文件abc.txt和一个目录dir1压缩成为yasuo.zip:
</p>
<pre>
# zip -r yasuo.zip abc.txt dir1 //压缩的是个文件夹,则要加上-r参数,表示调用递归压缩
# zip -r yasuo abc.txt dir1 //不需要增加.zip后缀,也可以达到同样压缩成yasuo.zip文件的目的
</pre>
<p>
查看某个zip包中的内容,但是不解压缩:
</p>
<blockquote>
unzip -t test.zip
</blockquote>
<p>
在zip命令中,压缩某个目录下的所有文件,但是不包含某种类型的 <strong>文件</strong> ,使用-x选项:
</p>
<blockquote>
zip -r test.zip dir1 -x \*.o //压缩dir1目录下所有的文件,除去所有的.o文件。其中\的目的是排除所有子目录下的.o文件。这个解释好像不完全,理解得不够,查看man zip。
</blockquote>
<p>
在zip命令中,压缩某个目录下的所有文件,但是不包含某个子目录,这次应该怎么写呢?命令如下,下面进行详细的解释。压缩test3目录为test6.zip文件,但是不包含./test3/bin/目录下的所有文件(包括路径),也不包括./test3/.git/目录下的所有文件和目录。这里,如果将反斜杠去掉,则不能够达到去除目录的作用,则只会不包括./test3/bin/目录下的所有文件(注意,不包括目录)。
</p>
<blockquote>
zip -r test6 test3 -x ./test3/bin/\* -x ./test3/.git/\*
</blockquote>
<h3 id="toc_0.5.1">tar.gz</h3>
<p>
tar.gz文件的基本操作:
</p>
<p>
解压缩:<code>tar -xzvf xxx.tar.gz</code>
查看包内容,-v命令表示显示详细的信息:<code>tar -tzvf xxx.tar.gz</code>
</p>
<h3 id="toc_0.5.2">tar.bz2</h3>
<p>
tar.bz2文件的基本操作:
</p>
<p>
解压缩:<code>tar -xjvf xxx.tar.bz2</code>
</p>
<h2 id="toc_0.6">内存检查命令</h2>
<ul>
<li>
free
<li>
top
</ul>
<h2 id="toc_0.7">dmidecode</h2>
<p>
dmidecode(DMI table decoder)。它可以全面的显示你系统的信息,包括bios、cpu、内存等信息。
</p>
<h2 id="toc_0.8">我喜欢直接把用的用户提升为root</h2>
<p>
netseek ALL=(ALL) NOPASSWD: ALL
</p>
<h2 id="toc_0.9">文件拷贝</h2>
<p>
[ny@localhost Templates]$ cp -v test.c{,.tmp}
<code>test.c' -> </code>test.c.tmp'
文件的拷贝,文件名添加扩展
</p>
<h2 id="toc_0.10">patch 命令</h2>
<p>
使用专门格式的补丁文件进行修改
-i
</p>
<h2 id="toc_0.11">nmap</h2>
<p>
nmap是Linux下最常使用的安全扫描工具,经典中的经典。
</p>
<h2 id="toc_0.12">grep,egrep命令</h2>
<ul>
<li>
grep NW datafile
</ul>
<p>
解释:打印datafile中包含NW的行
</p>
<ul>
<li>
grep -i 'define END_RCV_RTN_CALL' -r ./h/*
</ul>
<p>
解释:递归查找h目录下含有所示字符串的文件,忽略大小写
</p>
<ul>
<li>
grep -i -F 'void * muxDevLoad' -r ./src/*
</ul>
<p>
解释:-F选项表示使用普通字符串匹配,不使用正则表达式
</p>
<ul>
<li>
grep -R "whatever you like" * |grep -v ".svn/*"
</ul>
<p>
解释: GNU Grep含有--exclude-dir选项,如果使用Unix Grep,没有该选项,则使用以上命令。这种方式是使用管道进行双层“过滤”,其中第二次grep使用了-v选项,即逆向匹配,打印出不匹配的行。
</p>
<ul>
<li>
grep '^[we]' datafile
</ul>
<p>
打印datafile中以w或者e开头的行
</p>
<ul>
<li>
egrep '2\.?[0-9]' datafile
</ul>
<p>
解释:打印所有这样的行:它包含一个2,后跟0个或者一个句号,然后跟一个数字。
</p>
<h2 id="toc_0.13">其他命令</h2>
<ul>
<li>
挂载ISO文件
</ul>
<p>
#mount -o loop xxx.iso /mnt/media
</p>
<ul>
<li>
创建一个用户
</ul>
<p>
#useradd ny
#passwd ny
</p>
<ul>
<li>
对C文件进行排版,在拷贝代码错乱的时候很有用。但是kr风格的C语言可能我们还有些不习惯,并不是公司的C语言规范标准。
</ul>
<p>
#indent -kr main.c
</p>
</div>
</div>
<footer>
<p id="legal">Copyright © 2012 NIE-YONG. All Rights Reserved.</p>
</footer>
<a class="go2top" style="display: none;"><span></span></a>
</body>
<script language="javascript">
dp.SyntaxHighlighter.HighlightAll('code');
</script>
</html>