ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Linux shell基础(一)

Linux shell基础(一)

原创 Linux操作系统 作者:markzy5201190 时间:2013-06-11 17:39:22 0 删除 编辑
Linux shell基础(一)

1.远程登录主机
ssh 账号@IP/主机名
ssh mark@192.168.0.99

2.Socket文件是内部进程通信的一种特殊文件,可作为和远程主机通信的管道
如: mysql -S /tmp/mysql.socket

3.续行符号
先键入\ =>Enter
./configure \
    --with-apache=../apache_$ApacheVersion \
    --with-mysql=$MYSQLHOME &&

4.字符集合[]
所列字符范围中的某一个字符
[a-zA-Z0-9] - 代表字符范围

5.括号扩展{}
{a,b,c}\*{d,e,f}
a*d a*e ...

6.转向输入和转向输出
命令或Script. < 输入文件 > 输出文件
sort < unsort_input.txt > sorted_output.txt

7.登陆(login)
登陆主机,login shell 先执行/etc/profile,接着bash检查用户的
主目录中是否有.bash_profile 或 .bash_login 或 .profile,若有
则会读取并执行其中一个文件,执行顺序:
.bash_profile
.bash_login
.profile
满足其中一个即可

8.列出登陆主机后,最近执行过的命令
fc -l
fc -l Number //列出大于或等于 指定编号历史命令

9.read 一次读取一行数据放入数组中
read -a arr < <(echo 123 agb dfe)
echo ${arr[2]}
dfe

9.读取参数,结合成一个新指令,在进行变量代换后,执行
log="ls -al /data/*.sh"
eval $log

10.locate 关键词
由文件名数据库中,找出包含有"关键词"的文件路径
locate lsof

11.tr 转换或删除字符
tr k K < dataf1
执行结果:dataf1的k换成K字符
tr -d k
执行结果:k字符全删除

12.xargs
由标准输入,安排要执行的命令和参数
find . -name '*.txt' | xargs -n 2 diff

13.在写Script时,为了怕变量写错,造成排错困难,可以规定:
变量要进过设定的程序才能使用,如下:
#!/bin/bash

shopt -s -o nounset  <<---- 这行语句
echo $Infomix

改成如下:
#!/bin/bash

shopt -s -o nounset
declare Infomix=50  //declare 定义变量,不会提示 nounset 变量
echo $Infomix

14.在shell Script中,$放在变量名之前,如果需要显示$,
用 \--表示转义
用 ''--也可以得到
I=8
echo \$I 或 echo '$I' //'' 单引号作用:一个所见即所得的字符串(即写什么,就是显示什么)

15.IFS
定义分隔符,default value:空格符,tab字符,换行字符(newline)
#!/bin/bash

PL="root:x:0:0:root:/root:/bin/bash"

IFS=':' //分隔符

j=0  //定义行数

for i in $PL
do
    j=$((j+1))
    echo 第$j个字段是$i
done

16.数组
B=(123 [8]=188 266)
echo ${B[@]}      //取出数组元素
echo ${#B[@]}     //数据个数
unset B           //取消数组
unset B[0]        //取消数组某个元素

17.利用here document,打包C的原始码
#!/bin/bash

echo "正在产生hello.c...."
echo
cat    < hello.c
#include

int main(){
    printf("Hello world!\n");
    return 0;
}

EOF

echo "编译hello.c...."
echo
#编译Hello.c,产生执行文件
gcc -o hello hello.c

#若编译成功,就执行。
if [ $? -eq 0];then
    echo "执行hello...."
    echo
    ./hello
else
    echo 'Complile ERROR:hello.c'
fi

18.高级变量主题
变量扩展
命令替换
算术扩展
在Bash Shell中,$算符会触发上述3种扩展,形式如下:
${变量名称}---变量扩展---${filename}
$(命令)---命令替换---$(ls /)
$((算术表达式))---算术扩展---$((9+9))

19.测试变量 存在与否用法
${待测变量-默认值}
待测变量,若不存在,返回 默认值;存在,返回 待测变量
unset myname
r=${$myname - 'fuck'}
echo $r

20.${待测变量:-默认值} 与上面相比 多了:测试变量 不存在 或 其值为空,返回 默认值
IamHappy='Feel so good'
r=${IamHappy:+'true'}
echo $r

21. 多文件搜寻方式:
fgrep.sh
#!/bin/bash

exec grep -F ${1+"$@"}

fgrep.sh  Mem /proc/meminfo     /root/test.txt

$1=Mem 非空,则,${1+"$@"}传回$@,此变量值等于所有位置参数组合起来的:
Mem /proce/meminfo /root/test.txt

grep -F Mem /proce/meminfo /root/test.txt

整理:
${待测变量:-默认值}---回传结果-定是非空值---测不存在或空值
${待测变量:=默认值}---给空值变量设一个默认值---测不存在或空值
${待测变量:?默认值}---检查条件是否完备---测不存在或空值
${待测变量:+默认值}---判断某事是否为真---测试存在且非空
移除:,只测存在性,不测空值
记忆法:
:)---空---测试空
-)---负向---测不存在
=)---设值---给空值变量设一个默认值
?)---有问题---检查条件是否完备后再来执行吧
+)---正向---测试存在

22.字符串截取
语法一:${变量:位置起点}
myname="sheller man"
substr=${myname:4}
echo $substr
语法二:${变量:位置起点:长度}
filename="/etc/apache2"
dir1=${filename:1:3}
echo $dir1



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26855487/viewspace-763735/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-04-05

  • 博文量
    82
  • 访问量
    456300