linux shell 基础 使用日志与心得

1.#!/bin/bash 第一行就出现
#!/bin/bash是指此脚本使用/bin/bash来解释执行。
其中,#!是一个特殊的表示符,其后,跟着解释此脚本的shell路径。
bash只是shell的一种,还有很多其它shell,如:sh,csh,ksh,tcsh,...
详细介绍:
http://blog.sina.com.cn/s/blog_6336857901019zyz.html

2.export PATH
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/root/bin:~/bin
export PATH

export PATH=$PATH:/home/zhaodw
胜于修改环境变量,但只在本次登录中有效
注意:(与shell变量相结合)
1) =前PATH变量不加$符号
2) 再增加的路径用:追加
功能说明:设置或显示环境变量。
语  法:export [-fnp][变量名称]=[变量设置值]
补充说明:在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。
参  数:
 -f  代表[变量名称]中为函数名称。
 -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
 -p  列出所有的shell赋予程序的环境变量
详细介绍:
http://www.cnblogs.com/zhangze/articles/1832542.html
http://blog.csdn.net/zcywell/article/details/7687178
http://blog.csdn.net/embed2010/article/details/5988267

3.echo "====="
在屏幕上打印出指定的字符串
更多详细介绍:
http://see.xidian.edu.cn/cpp/html/1498.html
http://hi.baidu.com/auyvfshtkhbegid/item/49f0d13009c141312e0f817a

4.exit
命令用于退出当前shell,在shell脚本中可以终止当前脚本执行。
SHELL中的exit 0 和 exit 1有什么区别?
当你 exit 0 的时候,在调用环境 echo $? 就返回0,也就是说调用环境就认为你的这个程序执行正确。
当你 exit 1 的时候,一般是出错定义这个1,也可以是其他数字,很多系统程序这个错误编号是有约定的含义的。 但不为0 就表示程序运行出错。 调用环境就可以根据这个返回值判断 你这个程序运行是否ok。
如果你用 脚本 a 调用 脚本b ,要在a中判断b是否正常返回,就是根据 exit 0 or 1 来识别。
执行完b后, 判断 $? 就是返回值
更多详细介绍:
http://www.hndy1688.com/service-60.html

5.; shell分号作用
分号是用来隔断每个语法关键字或命令的 。
对于字符的比较及其他shell语法关键字之间分号的使用方式相同。
需要知道的是在不同的语法命令之间要用分号隔开或是换行方能执行,否则将会在调用脚本的时候报错。
http://hi.baidu.com/lozard/item/6bf9de1b2e704ef1756a84e3

6.if else fi 或 if [ "$test" = "test" ]; then 。。。。fi
if [ $UID != 0 ]; then
echo "===="
exit;
fi
条件判断
更多详细介绍:
http://www.cnblogs.com/276815076/archive/2011/10/30/2229286.html
http://blog.chinaunix.net/uid-20788517-id-3135826.html

7.declare -a ARR 数组
declare -a ARR #声明一个数组 ARR 可以自定义

语法 描述
${!array[*]} 取关联数组所有键
${!array[@]} 取关联数组所有键
${array[*]} 取关联数组所有值
${array[@]} 取关联数组所有值
${#array[*]} 关联数组的长度
${#array[@]} 关联数组的长度

ARR['key']="值" #给数组某键赋值
echo ${ARR['kye']} #在屏幕上输出该键值
echo ${ARR[*]} #输出所有值 或者 ${ARR[@]}
echo ${#ARR[*]} #数组长度个数 或者${#ARR[@]}
echo ${!array[*]} #输出数组所有键 或者 ${!array[@]}
http://www.cnblogs.com/fhefh/archive/2011/04/22/2024857.html
http://hi.baidu.com/liuhelishuang/item/efaff6d33faacbe5b3f777b2
http://www.cnblogs.com/zhuyp1015/archive/2012/07/07/2580716.html
http://blog.csdn.net/ysdaniel/article/details/7909824
http://hi.baidu.com/liuhelishuang/item/efaff6d33faacbe5b3f777b2
http://hi.baidu.com/liuhelishuang/item/efaff6d33faacbe5b3f777b2

8.source 或 点(shell source .)
source /home/test/lnamp.sh

. /home/test/lanmp.sh
意思这两个是一样的
source或点 不是直接执行一个文件,而是从一个文本文件里面读命令行,然后执行这些命令
另外一种意思
shell 加载 其他文件,包含其他文件(可以把一个很大SHELL分开来,例如一个文件专门配置文件,一个文件是函数库文件)

http://blog.csdn.net/xiaolang85/article/details/7861441
http://blog.chinaunix.net/uid-22028566-id-3182362.html

9.function 函数
function fname(){
local tmp="test" #局部变量,只有函数内部使用,其他变量都是全局变量
tmp=$1 # $1就是取该函数的参数1(test1)
tmp=$2 # $2就是取该函数的参数2(test2)
tmp=$* # $*就是取所有参数
程序段
retrun 1 #数值 0-255
}
调用:
fname "test1" "test2"
必须在调用函数地方之前,声明函数,shell脚本是逐行运行。不会像其它语言一样先预编译。一次必须在使用函数前先声明函数
参数返回,可以显示加:return 返回(0-255),如果不加,将以最后一条命令运行结果,作为返回值

http://www.cnblogs.com/chengmo/archive/2010/10/17/1853356.html

10.switch case 选择

case语句适用于需要进行多重分支的应用情况。

case分支语句的格式如下:

case $变量名 in

模式1)

命令序列1

;;

模式2)

命令序列2

;;

*)

默认执行的命令序列 ;;

esac

case语句结构特点如下:

case行尾必须为单词“in”,每一个模式必须以右括号“)”结束。

双分号“;;”表示命令序列结束。

匹配模式中可是使用方括号表示一个连续的范围,如[0-9];使用竖杠符号“|”表示或。

最后的“*)”表示默认模式,当使用前面的各种模式均无法匹配该变量时,将执行“*)”后的命令序列。

vi paranoia
##################################
#!/bin/sh
case $1 in
start | begin)
echo "start something"
;;
stop | end)
echo "stop something"
;;
*)
echo "Ignorant"
;;
esac
####################################
执行
[foxman@foxman bash]# chmod 755 paranoia
[foxman@foxman bash]# ./paranoia
Ignorant
[foxman@foxman bash]# ./paranoia start
start something
[foxman@foxman bash]# ./paranoia begin
start something
[foxman@foxman bash]# ./paranoia stop
stop something
[foxman@foxman bash]# ./paranoia end
stop something

参考网站:http://blog.csdn.net/dreamtdp/article/details/8048720

11.shell for in 循环 while/until
11.1.for 变量 in 字符串(这个可以是数组)
for rs in $(seq "one" "two" 3 4 5 asdfsadf "dsf sadf");do
echo $rs;
done;
11.2.for((赋值;条件;运算语句))
for((i=1;i<=10;i++));do
echo $i;
done;

http://blog.csdn.net/ph123456789/article/details/6334040

11.3.while 条件语句
i=10;
whil [[ $i -gt 5 ]];do
echo$i;
((i--));
done;
11.4.untile 条件语句
i=10;
until [[ $i -gt 0 ]];do
echo$i;
((i--));
done;
12.read -p 命令接收标准输入(键盘)的输入
read -p "Please Input 1,2,3,4,5: " SERVER_ID
echo "Input $SERVER_ID"
read命令接收标准输入(键盘)的输入,或其他文件描述符的输入(后面在说)。得到输入后,read命令将数据放入一个标准变量中
http://blog.sina.com.cn/s/blog_4077692e0100r7ct.html
13.clear (shell clear) 清屏命令
清空本显示屏幕
14.sleep 睡眠
sleep 1 睡眠1秒
sleep 1s 睡眠1秒
sleep 1m 睡眠1分
sleep 1h 睡眠1小时

15.chmod chown chgrp
15.1.chmod 给文件或文件夹设置权限
chmod 777 test.txt
http://www.cnblogs.com/peida/archive/2012/11/29/2794010.html
15.2.chown 改变文件或文件夹的用户或者用户组
chown user1 test.txt
chown -R user1:root /tmp/test
http://www.cnblogs.com/peida/archive/2012/12/04/2800684.html
15.3.chgrp 改变文件或文件夹的用户组
chgrp user1 test.txt
http://www.cnblogs.com/peida/archive/2012/12/03/2799003.html

http://blog.163.com/yang_jianli/blog/static/1619900062012116101843165/
16.mkdir 创建目录,创建文件夹(创建多个目录)
mkdir test
mkdir -p test/test2/test3 #一次性创建3个文件夹
http://www.cnblogs.com/peida/archive/2012/10/25/2738271.html
17.pwd 或 $(pwd)当前工作目录,当前文件路径
http://www.cnblogs.com/peida/archive/2012/10/24/2737730.html
19.uname
20.basename
21.$() 括号 与 `` 反引号
22.${} 变量替换
23.$ 变量

25.type -p
26.ls 显示目录下文件和目录
http://www.cnblogs.com/peida/archive/2012/10/23/2734829.html
27.cd 切换至目录,打开文件夹
cd /root
cd ../
cd ~ #切换至当前用户文件夹下
http://www.cnblogs.com/peida/archive/2012/10/24/2736501.html
28.rm 删除文件或文件夹目录
rm log.log
rm -rf log #删除log目录下所有文件,忽略不存在文件,不提示
http://www.cnblogs.com/peida/archive/2012/10/26/2740521.html
29.rmdir 删除空目录
rmdir doc
http://www.cnblogs.com/peida/archive/2012/10/27/2742076.html
30.tree 已树状列出所有目录的内容
http://linux.sheup.com/linux/4/31078.html
31.mv 移动文件或将文件改名
mv test.log test.txt #文件改名
mv test.log log #将文件test.log 移动到log目录中
http://www.cnblogs.com/peida/archive/2012/10/27/2743022.html
32.cp 复制文件或者目录
cp test.log test.txt #复制文件
cp test.log log #将文件test.log 复制到log目录中
http://www.cnblogs.com/peida/archive/2012/10/29/2744185.html
33.touch 修改文件时间戳,或者新建一个不存在的文件
touch test.log
http://www.cnblogs.com/peida/archive/2012/10/30/2745714.html
34.cat 链接文件或输入并打印显示内容
http://www.cnblogs.com/peida/archive/2012/10/30/2746968.html
35.more 一页一页显示,用空格键下一页,按 b 键,返回上一页
more test.log
http://www.cnblogs.com/peida/archive/2012/11/02/2750588.html
36.tail 查看即时日志,不断刷新
tail -f test.log
http://www.cnblogs.com/peida/archive/2012/11/07/2758084.html
37.find 查找搜索文件
find / -name test.log #全部目录搜索 test.log 文件名
http://www.cnblogs.com/peida/archive/2012/11/16/2773289.html
http://www.cnblogs.com/peida/archive/2012/11/13/2767374.html
38.tar 压缩,解压缩
tar -zcvf log.tar.gz
http://www.cnblogs.com/peida/archive/2012/11/30/2795656.html
39.ln 建立连接,软连接,硬链接
ln -s log.log link2013
http://www.cnblogs.com/peida/archive/2012/12/11/2812294.html
40.date 时间
http://www.cnblogs.com/peida/archive/2012/12/13/2815687.html
41.grep 文本搜索
ps -ef|grep svn
http://www.cnblogs.com/peida/archive/2012/12/17/2821195.html
42.ps 列出 当前运行进程
http://www.cnblogs.com/peida/archive/2012/12/19/2824418.html
43.kill 终止/关闭/杀死 进程
kill -9 2123
http://www.cnblogs.com/peida/archive/2012/12/20/2825837.html
44.killall 终止/关闭/杀死 进程名称
killall mysql
http://www.cnblogs.com/peida/archive/2012/12/21/2827366.html
45.top 性能分析
http://www.cnblogs.com/peida/archive/2012/12/24/2831353.html
46.ifconfig 查看IP 网关 子网掩码
http://www.cnblogs.com/peida/archive/2013/02/27/2934525.html
47.netstat 显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况
http://www.cnblogs.com/peida/archive/2013/03/08/2949194.html
48.scp 远程复制文件
http://www.cnblogs.com/peida/archive/2013/03/15/2960802.html
49.wget 下载文件
wget http://url.com/test.zip
http://www.cnblogs.com/peida/archive/2013/03/18/2965369.html
31.groupadd useradd
32./sbin/ldconfig
33.ulimit

35.sed
36.unset
37.netstat -ntl
38.#
39.update-rc.d
40./sbin/iptables

2>&1 | tee -a

更多命令
http://www.cnblogs.com/peida/tag/linux%E5%91%BD%E4%BB%A4/default.html

转载自:http://blog.csdn.net/fenglailea/article/details/12836591#

linux shell 基础 使用日志与心得的更多相关文章

  1. Linux Shell基础(下)

    Linux Shell基础(下) 目录 一.shell特殊符号cut命令 二.cut.sort.wc.uniq命令 三.tee.tr.split命令 四.简易审计系统 五.fork, exec, so ...

  2. Linux shell基础知识(上)

    Linux shell基础知识(上) 目录 一.shell介绍 二.命令历史 三.命令补全和别名 四.通配符 五.输入输出重定向 六.管道符和作业控制 七.shell变量 八.环境变量配置文件 九.b ...

  3. Linux Shell 基础知识(一)

    1. 本文知识结构 2. shell 基础知识 2.1 shell 简单介绍 ​ GNU bash shell 能提供对 Linux 系统的交互式访问,一般来说,使用快捷键 Ctrl + Alt + ...

  4. Linux shell基础

    shell是核心程序kernel之外的指令解析器,是一个程序,同事是一种命令语言和程序设计语言 --shell是命令解析器,用户输入命令,它去解析. shell类型 ash,bash,ksh,csh, ...

  5. linux shell基础语法

    1.第一个Shell脚本 打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了. 输入一些代码 ...

  6. Linux Shell基础 环境变量配置文件

    source命令:使环境变量配置文件强制生效 source 命令会强制执行脚本中的全部命令,而忽略脚本文件的权限.该命令主要用于让重新配置的环境变量配置文件强制生效.source 命令格式如下: [r ...

  7. Linux Shell基础 位置参数变量、预定义变量

    位置参数变量 在 Linux 的命令行中,当一条命令或脚本执行时,后面可以跟多个参数,我们使用位置参数变量来表示这些参数.其中,$0 代表命令行本身,$1 代表第 1 个参数,$2 代表第 2 个参数 ...

  8. Linux Shell基础 环境变量

    环境变量 环境变量和用户自定义变量最主要的区别在于,环境变量是全局变量,而用户自定义变量是局部变量.用户自定义变量只在当前的 Shell 中生效,而环境变量会在当前 Shell 和这个 Shell 的 ...

  9. Linux Shell基础 Shell基本知识

    概述 在 Linux 的脚本中,只要是基于 Bash语法写的Shell脚本第一行必须是"#!/bin/bash",用来声明此文件是一个脚本. 运行方式 Shell 脚本的运行主要有 ...

随机推荐

  1. 【Excle数据透视表】如何调整压缩形式显示下的缩进字符数

    调整前:                                                                                                 ...

  2. IIS7 经典模式和集成模式的区别分析

    IIS7.0中的Web应用程序有两种配置模式:经典模式和集成模式.两者区别大家可以参考下,根据实际情况选用. 经典模式是为了与之前的版本兼容,使用ISAPI扩展来调用ASP.NET运行库,原先运行于I ...

  3. iOS仿支付宝首页的刷新布局效果

    代码地址如下:http://www.demodashi.com/demo/12753.html XYAlipayRefreshDemo 运行效果 动画效果分析 1.UI需要变动,向上滑动的时候,顶部部 ...

  4. 给mysql root用户设置密码

    使用其他用户进入数据库, 用select PASSWORD('你要设置的密码'), 然后直接update mysql.user set  mysql.user.Password='你PASSWORD( ...

  5. Html中嵌套其他HTML文件的几种方法(转)

    给大家整理了3个方法,一个是HTML的iframe标签,别两个是JS引用.比如要在arr.html文件里引用index.html文件,方法如下. HTML引用方法: <iframe name=& ...

  6. POJ1195 Mobile phones 【二维线段树】

    Mobile phones Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 14291   Accepted: 6644 De ...

  7. 在SDL中显示GBK点阵汉字

    大家注意到没有,RA2的中文版本使用的是GBK点阵字库,这样做有一个好处:不管玩家是用的简体还是繁体都能识别显示的文字. GBK的意思大概是“国家标准汉字扩展字符集”吧,记不清了.但它的确是个好东东, ...

  8. Lua基本函数库 【转】

    转自:http://www.cnblogs.com/whiteyun/archive/2009/08/12/1543184.html 基本函数库为Lua内置的函数库,不需要额外装载 assert (v ...

  9. Junit 内部解密之二: TestResult + TestListener + Assert

    转自:http://blog.sina.com.cn/s/blog_6cf812be0100wbhw.html 之前我们看到了Test接口里面的run方法有个TestResult的参数,不错,这个类就 ...

  10. oracle中提高order by的性能

    1.如果order by columnA,那么在where查询条件中添加条件columnA=value,则oracle内部会过滤order by排序,直接用索引(可以通过execution plan查 ...