您的位置:首页 > 运维架构 > Linux

Linux浅入浅出之常用几个命令和概念

2014-08-28 17:41 519 查看
一、

echo "some text": 将文字内容打印在屏幕上 

ls: 文件列表 -la 列出所有文件和文件夹  包括隐藏的

wc –l file  wc -w file   wc -c file: 计算文件行数计算文件中的单词数计算文件中的字符数 

cp sourcefile destfile: 文件拷贝

mv oldname newname : 重命名文件或移动文件

rm file: 删除文件 

grep 'pattern' file: 在文件内搜索字符串  -n显示行数 -i不区分大小写

chmod [+ | - | =] [mode] 文件名  改资源权限

file somefile: 得到文件类型 

find: 搜索文件比如:根据文件名搜索find . -name filename -print 

dirname file: 返回文件所在路径比如:dirname /bin/tux将返回 /bin 

tar:压缩、解压     eg: 压:tar -zcvf test.tar.gz test.sh   解到指定目录:tar -xzvf test.tar.gz -C /home/end

mkdir 创建目录    -p 一次性创建多层目录

二、

1.管道  |  将一个命令的输出作为另一个命令的输入:grep "hello" file.txt | wc -l 在file.txt中搜索包含有”hello”的行并计算其行数。 

2.重定向 > 或 >>  将命令的结果输出到文件而不是标准输出。>覆盖旧文件  >>加到文件尾

3.反短斜线(普通键盘数字1前面的键)  将一个命令的输出作为另一个命令的参数。

eg:tar -zcvf test.tar.gz `find -name test.sh -print`

三、流程控制

1.if

<span style="font-size:18px;"><pre name="code" class="plain"><span style="font-size:18px;">if....; then
...
elif....; then
....
else
....
fi</span></span>


通常用[ ]表示条件,注意方括号中内容的前后要有空格。

[ -f "somefile" ] :判断是否是一个文件 
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限 
[ -n "$var" ] :判断$var变量是否有值 
[ "$a" = "$b" ] :判断$a和$b是否相等

eg:

<span style="font-size:18px;"><span style="font-size:18px;">#!/bin/sh
if [ `ls -la | wc -l` == "4" ]; then
echo "yes 4"
else
a=`ls -la | wc -l`
echo "$a"
fi</span></span>


2.case    eg:   $1 表示传进来的第一个参数  脚本名为test.sh  使用:test.sh ***.tar.gz

<span style="font-size:18px;">#!/bin/sh
type=`file "$1"`
case "$type" in
"$1: gzip"*)
tar -xzvf "$1" -C /home/end;;
"$1: Zip "*)
unzip "$1";;
*) echo "file can not been unzip";;
esac</span>


3.select  用户可以从一组值中选择一个  eg:

<span style="font-size:18px;"><span style="font-size:18px;">#!/bin/sh
echo "what is your favourite language?"
select lan in "java" "c" "c++" "python" "Ruby";
do
break
done
echo "you selected $lan"</span></span>


4.loop

(1)while loop

<span style="font-size:18px;">#!/bin/sh
a=0
while [ "$a" -lt 5 ]; do
echo "a is $a";
((a=a+1))
done</span>

-lt less than        小于

-gt great than    大于

-ge great equal  大于等于

-le less equal     小于等于

-eq equal           等于
(2)for loop

eg:

<span style="font-size:18px;">#!/bin/sh
for a in 1 2 3 4 5; do
echo "current is $a";
done</span>
eg:

<span style="font-size:18px;">#!/bin/sh
for a in $*; do
echo "current is $a";
done</span>
$*表示传进来的所有参数

5.引号

bash程序在参数传递之前,会扩展通配符和变量。比如 * 或 $SHELL 等。引号可以阻止这种扩展,且单引号比双引号更为严格。

6. Here documents  

将多行文字传递给命令,以<<开头,和面接一个字符串   然后是想要的文字  最后以相同的开始字符串结尾

eg:

<span style="font-size:18px;">#!/bin/sh
cat << !here!
this is my sample bash program
do you want to learn it?
we can work together!
!here!</span>


7.引入其他脚本

在脚本中引入其他脚本的内容有两张方式:

(1)source   other.sh   (2). other.sh   "."和后面的脚本之间必须有个空格

eg:

child.sh

#!/bin/sh
param="this is child"
test.sh

#!/bin/sh
param="this is test"
echo "$param"
. child.sh
echo "$param"
执行test.sh的结果是:

this is test

this is child
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: