linux shell 基础 使用日志与心得
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#
转载于:https://www.cnblogs.com/yhdsir/p/4921255.html
linux shell 基础 使用日志与心得相关推荐
- Linux shell脚本输出日志的方法和案例
Linux shell脚本输出日志 #### log_correct函数打印正确的输出到日志文件 function log_correct () {DATE=`date "+%Y-%m-%d ...
- 一、Linux Shell基础
1.1.shell基础 Bash 是一个与Bourne Shell兼容的.执行从标准输入设备文件读取的命令的语言解释器.Bash是Bournae-Again Shell的缩写.Bash与原来的Unix ...
- linux 运行class文杰,Linux Shell基础知识,你想的到的都在这里
小编提示:此篇文章阅读时间为15分钟左右,可先收藏后阅读. 01/Linux 的江湖地位 Linux 作为一个全球用户超过14亿的操作系统,它的强大与神奇就不必多说了,混在IT界 Linux是可以装B ...
- Linux shell基础之变量声明和处理
本篇博客将讲解shell编程语言中最基础的变量声明和处理. 先来说一下set:声明变量 set:查看变量,可以看到有很多是系统提前设置好的变量,比如系统环境变量PATH,ls命令中颜色的变量LS_CO ...
- Linux shell 基础语法
常用变量的定义 //定义变量.获取变量值(数值型) $ a=1 $ echo ${a} 1 //定义变量.获取变量值(字符串) $ a="hello world" $ echo $ ...
- linux创建zip+函数,linux+shell基础知识
目录: 1.路径: 2.进程: 3.清屏和退出当前命令操作: 4.ls 参数: 5.创建目录\文件\复制文件: 6.查看文件内容: 7.linux通配符: 8.grep: 9.终止命令: 10.搜索文 ...
- Linux Shell基础 - Shell 脚本的执行方式
01.Shell:是一个命令解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面 系统级程序,用户可以用Shell来启动.挂载.停止甚至是编写一些程序. 02.Shell:是一个功能强 ...
- Linux Shell 基础语法 流程控制 逻辑运算 字符串操作详细解析
文章目录 1 shell 简单入门 1.1 shell分类 1.2 shell脚本 1.3 Shell 脚本四种启动方式 2 shell 变量 2.1 普通变量 2.1.1 定义变量 2.1.2 变量 ...
- linux shell编程学习--日志工具
在使用高级语言如java,C++的时候,有专门的日志库,比如log4j,log4cxx等一些专门的日志库,进行日志打印,可以进行日志等级配置,日志的文件名,行号等信息的自动添加.但是在shell里,好 ...
最新文章
- 网络管理常用命令之二 - Ipconfig 命令详解(图文)
- 任正非迷茫的背后是华为在“治未病”
- C#调用C++DLL类的方法
- 成功解决If your current network has https://www.anaconda.com blocked, please filea support request with
- C语言中用栈实现进制转换,利用栈实现进制转换问题
- 在 ubuntu下面利用libpcap编程
- rostcm6情感分析案例分析_电商评论情感分析
- 阿德莱德大学招聘博士后研究员
- Qt 程序访问 sqlite 权限错误
- yii配置mysql_YII2中配置MySQL读写分离
- 通过jquery 获取下拉列表中选中的值对应的value
- python编写的购物网站_写一个购物商城的实例教程
- [转载]云架构师的进阶之路
- Talk预告 | 中国科学技术大学和微软亚洲研究院联合培养博士生冷燚冲:语音识别的快速纠错模型FastCorrect
- 前段时间 qq大战 360..
- LightProxy 无线端代理iOS,安装验证证书后仍不生效
- 常用Linux版本虚拟机的使用比较
- ABAP WB01 BDC ”No batch input data for screen “ ”没有屏幕 的批输入数据“
- 板材眼镜大小调整方法
- matlab沪深a股量化投资培训班,MATLAB沪深A股量化投资培训班