首页 > 代码库 > Shell 常用命令

Shell 常用命令

Shell 常用命令

这篇博客记录了一些 Shell 常用命令 供未来查阅。

添加ll

为了简化 “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

#!/bin/bash

它叫做 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
 

echo

使用-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>Bgreater than
-lt  A<Bless than
-le  A<=Blessequal
-ge  A>=Bgreaterequal
 
N=130
[ "$N" -eq 130 ]

if-else

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
 

详细使用可以参考这个

ln 软连接

使用软连接可以直接执行一个程序。命令为:

1
2
ln -s source_file target_file
 

其中 source_file 要写绝对路径。

本文出自: [ 松阳的博客 ]/[ blog.csdn.net/fansongy ] 禁止用于商业用途 转载请注明出处
原文链接: http://www.songyang.net/shell-command/



Shell 常用命令