这篇博客记录了一些 Shell 常用命令 供未来查阅。
为了简化 “ls -l”,可以在~/.bash_profile
中加入:
1
2
|
alias
ll
=
'ls -l'
|
$0
是命令本身$1
是第一个参数
$可以认为是 获取内容 。
bash有很多内置变量,我们可以使用$
获取到它们,例如:
1
2
3
4
5
|
$
PWD
$
HOME
$
PATH
$
(
pwd
)
|
配置数据可以像下面一样:
1
2
3
4
|
Fansy
:
UtilTools
fansy
$
cat
.
meta
Installed
=
False
Version
=
1.0
|
写在一个文件中。当读取它的内容时,可以加入如下代码:
1
2
3
4
5
6
|
configPath
=
.
meta
;
source
$
configPath
;
echo
$
Installed
;
echo
$
Version
;
|
使用sed
来替换配置文件中的内容,在上面的例子中,我可以更改配置文件中的值为True :
1
2
|
sed
-
i
$
configPath
's/^Installed.*/Installed=True/g'
$
configPath
|
's/aaa/bbb/g' file.txt
是将aaa替换为bbb,这里使用正则表达式,匹配以 “Installed” 开始的行。
-i 意味着 替换源文件,否则只在内存中做替换,无法保存。
1
2
3
4
|
>
输出重定向
>>
追加到输出重定向
<
输入重定向
<<
追加到输入重定向
|
因此在文件末尾添加内容可以使用:
1
|
echo
"something"
>>
file
.
txt
|
它叫做 shebang, 它告诉shell执行时的程序类型,例如:
1
2
3
4
5
6
7
|
#!/bin/sh — Execute the file using sh, the Bourne shell, or a compatible shell
#!/bin/csh — Execute the file using csh, the C shell, or a compatible shell
#!/usr/bin/perl -T — Execute using Perl with the option for taint checks
#!/usr/bin/php — Execute the file using the PHP command line interpreter
#!/usr/bin/python -O — Execute using Python with optimizations to code
#!/usr/bin/ruby — Execute using Ruby
|
使用-e
可以格式化输出字符串。
[ condition ]
可以测试一个表达式。$?
可以获取判断结果,0表示condition=true.
1
2
3
4
5
|
ln
-
s
$
fullpath
$
linkpath
;
if
[
$
?
-
eq
0
]
;
then
echo
"link success"
;
fi
|
= 两字符串相等
!= 两字符串不等
-z 空串 [zero]
-n 非空串 [nozero]
1
2
3
4
|
[
-
z
"$EDITOR"
]
[
"$EDITOR"
=
"vi"
]
[
"$1"
x
=
""
x
]
#for empty parameter
|
1
2
3
4
5
6
7
8
9
|
-
eq
数值相等(
equal)
-
ne
不等(
not
equal)
-
gt
A
>
B(
greater
than)
-
lt
A
<
B(
less
than)
-
le
A
<=
B(
less、
equal)
-
ge
A
>=
B(
greater、
equal)
N
=
130
[
"$N"
-
eq
130
]
|
1
2
3
4
5
6
7
8
9
10
|
if
condition1
then
//do thing a
elif
condition2
then
//do thing b
else
//do thing c
fi
|
or
1
2
3
4
|
if
condition
;
then
# do something
fi
|
定义:
1
2
3
4
5
6
7
8
|
function
func_name
(
)
{
}
func_name
(
)
{
//do some thing
}
|
传递参数:
1
2
3
4
5
6
7
8
9
|
function
copyfile
(
)
{
cp
$
1
$
2
return
$
?
}
copyfile
/
tmp
/
a
/
tmp
/
b
or
result
=
`
copyfile
/
tmp
/
a
/
tmp
/
b
`
|
判断文件中是否含有某个字符串:
1
2
3
4
5
6
|
if
grep
-
q
"$Text"
$
file
;
then
echo
"Text found"
;
else
echo
"No Text"
;
fi
|
使用 ${expression}
1
2
3
4
5
|
$
{
parameter
:
-
word
}
$
{
parameter
:
=
word
}
$
{
parameter
:
?
word
}
$
{
parameter
:
+
word
}
|
上面4种可以用来进行缺省值的替换。
1
2
|
$
{
#parameter}
|
上面这种可以获得字符串的长度。
1
2
3
4
5
|
$
{
parameter
%
word
}
最小限度从后面截取
word
$
{
parameter
%
%
word
}
最大限度从后面截取
word
$
{
parameter
#word} 最小限度从前面截取word
$
{
parameter
##word} 最大限度从前面截取word
|
详细使用可以参考这个
使用软连接可以直接执行一个程序。命令为:
1
2
|
ln
-
s
source_file
target
_file
|
其中 source_file 要写绝对路径。
本篇博客出自 阿修罗道 ,转载请注明出处,禁止用于商业用途: http://blog.csdn.net/fansongy/article/details/42404151