-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathLinux Shell.html
More file actions
227 lines (174 loc) · 6.6 KB
/
Linux Shell.html
File metadata and controls
227 lines (174 loc) · 6.6 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
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Linux Shell</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">
<h2 id="toc_0.1">内部命令</h2>
<p>
android的adb等工具,并不是内部命令,每次使用都需要指定路径。将其所在的路径添加到~/.bashrc文件中:
</p>
<pre>
# android adb
# export ANDROID_HOME=/home/ny/android/adt-bundle-linux-x86-20130729/sdk
# export PATH=$PATH:$ANDROID_HOME/platform-tools
</pre>
<p>
使用命令<code>source ~/.bashrc</code>使修改生效。
</p>
<p>
可以使用type命令查看现在执行的adb命令的位置。
</p>
<pre>
root@ny-server01:~# type adb
adb 是 /home/ny/android/adt-bundle-linux-x86-20130729/sdk/platform-tools/adb
root@ny-server01:~#
</pre>
<h2 id="toc_0.2">shell的定制</h2>
<p>
工作中经常使用Cygwin的shell,但是其中ls命令所有显示都是黑白,其实可以如下定制:
修改用户目录下的.bashrc文件。
</p>
<p>
例如,ls命令分颜色显示目录、文件、链接文件等不同类型的目录或者文件
</p>
<ol>
<li>
将alias ls='ls -hF --color=tty'前面的注释号#去掉
<li>
使用source .bashrc命令重置环境变量或者重启shell
</ol>
<p>
例如,如果习惯使用ll命令
</p>
<ol>
<li>
则将alias ll='ls -l'前面的注释#去掉,然后重置环境变量
</ol>
<p>
当然,你也可以使用dircolors命令去改变ls --color的颜色输出。
</p>
<h2 id="toc_0.3">#!</h2>
<p>
<code>#!</code>实际上是一个2 字节的魔法数字,这是指定一个文件类型的特殊标记,man magic 来获得关于这个迷人话题的更多详细信息。
</p>
<p>
当然"#!"也可以被忽略,不过这样你的脚本文件就只能是一些命令的集合,不能够使用shell 内建的指令了,如果不能使用变量的话,当然这也就失去了脚本编程的意义了.
</p>
<h2 id="toc_0.4">shell脚本用户切换密码输入</h2>
<p>
想在shell脚本中实现用户切换,如下:
</p>
<pre>
#!/bin/sh
su - user1 << END
user1passwd
END
</pre>
<p>
这个恐怕办不到了,su也不允许通过重定向输入密码。可以使用root用户执行这个脚本,这样su时就不要输入密码了。
</p>
<p>
su读密码是通过/dev/tty读的,而不是通过stdin。所以你用普通的stdin重定向不能实现自动输入密码的功能。
</p>
<p>
我也试过,只能通过/dev/tty,不能同步哦stdin。如:
</p>
<pre>
Assembly code
echo -e "user\npass\n" | su
standard in must be a tty
</pre>
<h2 id="toc_0.5">shell脚本切换路径</h2>
<p>
我在一个脚本中切换了路径,如下:
</p>
<pre>
#!/bin/bash
cd /home/winter
</pre>
<p>
运行推出后发现仍然是在运行脚本的路径,请教如何才可以在退出脚本后进入我指定的目录呢?
</p>
<p>
通常,当你执行一个shell script时,shell会重新运行一个新的shell来执行,而你执行cd xxx, 只是那个新的shell cd到xxx, 执行完退出,原本的shell当然没有变化,但有另一种执行方式, 可以让当前的shell直接执行命令, 这样就可以达到你要的效果了,将./shell_script.sh 改为 source ./shell_script.sh
</p>
<h2 id="toc_0.6">shell编辑命令行</h2>
<p>
通过光标和功能键(Home、End 等键),您可以浏览并编辑命令行,如果您需要,还可以用键盘的快捷方式来完成一般的编辑:
</p>
<ul>
<li>
<CTRL k>:删除从光标到行尾的部分
<li>
<CTRL u>:删除从光标到行首的部分
<li>
<ALT d>:删除从光标到当前单词结尾的部分
<li>
<CTRL w>:删除从光标到当前单词开头的部分
<li>
<CTRL a>:将光标移到行首
<li>
<CTRL e>:将光标移到行尾
<li>
<ALT a>:将光标移到当前单词头部
<li>
<ALT e>:将光标移到当前单词尾部
<li>
<CTRL y>:插入最近删除的单词
<li>
<!$>:重复前一个命令最后的参数。
</ul>
<p>
例如:您用命令 mkdir peter/pan/documents/tinkerbell 新建了一个目录,现在您向用命令'cd'进入该目录,您可以用 cd !$,shell 将把前一个命令'mkdir'的参数添加到现在的'cd'后面。当您更深入了解Linux后,将看到这些快捷方式在其他应用程序下输入时,有时也有效,比如,在浏览器中的输入框中。
</p>
<h2 id="toc_0.7">LD_LIBRARY_PATH</h2>
<p>
Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。(该路径在默认路径之前查找)当执行函数动态链接.so时,如果此文件不在缺省目录下‘/usr/local/lib’ and ‘/usr/lib’. 那么就需要指定环境变量LD_LIBRARY_PATH。假如现在需要在已有的环境变量上添加新的路径名,则采用如下方式:
</p>
<p>
LD_LIBRARY_PATH=NEWDIRS:$LD_LIBRARY_PATH.(newdirs是新的路径串)(注:gnu系统可以自动添加在 /etc/ld.so.conf文件中来实现环境变量的设置)
</p>
<pre>
[root@localhost etc]# ls /etc/ld.so*
/etc/ld.so.cache /etc/ld.so.conf
kernel-2.6.31.5-127.fc12.i686.PAE.conf qt-i386.conf xulrunner-32.conf
mysql-i386.conf tix-i386.conf
</pre>
</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>