linxu下�.shå½ä»¤ç¸å½äºæ¯shellå½ä»¤è¯è¨ç解éå¨ãä¸é¢ç±æ为大家æ´çäºlinuxçshå½ä»¤ç详ç»è§£éçç¸å ³ç¥è¯ï¼å¸æ对大家æ帮å©!
ä¸ãLinuxä¸çshå½ä»¤ç详ç»è§£é
shå½ä»¤æ¯shellå½ä»¤è¯è¨è§£éå¨ï¼æ§è¡å½ä»¤ä»æ åè¾å ¥è¯»åæä»ä¸ä¸ªæ件ä¸è¯»åãéè¿ç¨æ·è¾å ¥å½ä»¤ï¼åå æ ¸è¿è¡æ²é!Bourne Again Shell (å³bash)æ¯èªç±è½¯ä»¶åºéä¼(GNU)å¼åçä¸ä¸ªShellï¼å®æ¯Linuxç³»ç»ä¸ä¸ä¸ªé»è®¤çShellãBashä¸ä½ä¸Bourne Shellå ¼å®¹ï¼è¿ç»§æ¿äºC ShellãKorn Shellçä¼ç¹ã
è¯æ³
bash [options] [file]
é项
-c stringï¼å½ä»¤ä»-cåçå符串读åã
-iï¼å®ç°èæ¬äº¤äºã
-nï¼è¿è¡shellèæ¬çè¯æ³æ£æ¥ã
-xï¼å®ç°shellèæ¬éæ¡è¯å¥çè·è¸ªã
äºãLinuxä¸çshå½ä»¤çå ·ä½ä¾å
使ç¨-xé项è·è¸ªèæ¬è°è¯shellèæ¬ï¼è½æå°åºææ§è¡çæ¯ä¸è¡å½ä»¤ä»¥åå½åç¶æï¼
[root@AY1307311912260196fcZ satools]# sh -x check_ssh_login.sh
+ DEFINE=30
+ cat /var/log/secure
+ awk '/Failed/ {++ip[$(NF-3)]} END {for (i in ip) print i"="ip[i]}'
++ cat /root/satools/black.txt
+ for i in '`cat /root/satools/black.txt`'
++ echo 121.42.0.16=1427
++ awk -F= '{print $1}' + IP=121.42.0.16
++ echo 121.42.0.16=1427
++ awk -F= '{print $2}'
+ NUM=1427
+ '[' 1427 -gt 30 ']'
+ grep 121.42.0.16 /etc/hosts.deny
+ '[' 1 -gt 0 ']'
+ echo sshd:121.42.0.16
+ echo vsftpd:121.42.0.16
+ for i in '`cat /root/satools/black.txt`'
++ echo 121.42.0.72=276
++ awk -F= '{print $1}'
+ IP=121.42.0.72
++ awk -F= '{print $2}'
++ echo 121.42.0.72=276
+ NUM=276 + '[' 276 -gt 30 ']'
+ grep 121.42.0.72 /etc/hosts.deny
+ '[' 1 -gt 0 ']'
+ echo sshd:121.42.0.72
+ echo vsftpd:121.42.0.72
ä¸ãLinuxä¸å¯¹.shæ件çæä½å½ä»¤
1ãå建test.shæ件
touch test.sh
2ãç¼è¾shæ件
vi test.sh
3ãä¿åéåº
æ²å»escï¼ ç¶åè¾å ¥ :wq ï¼å车éåº
4ãæ·»å å¯æ§è¡æéï¼å½ç¶é»è®¤å°±æ¯å¯æ§è¡çã
chmod +x test.sh
5ãè¿è¡æ件
(1)./test.sh
(2)sh test.sh
6ãå é¤æ件
rm test.sh
1�.shæ¯linuxä¸è¿è¡shellçå½ä»¤ï¼æ¯shellç解éå¨ï¼shellèæ¬æ¯linuxä¸å£³å±ä¸å½ä»¤è¡çé¢ï¼ç¨æ·å¯ä»¥å¨shellèæ¬è¾å ¥å½ä»¤æ¥æ§è¡åç§åæ ·çä»»å¡ã
è¦è¿è¡shellèæ¬ï¼é¦ééè¦ç»shellèæ¬æéï¼è¿éé以hello.shæ件为ä¾ï¼é¦å éè¦æä¸âcrtl+shift+Tâæå¼ç»ç«¯çªå£ï¼
2ãæ¥çå ç»âhello.shâæ件添å xæéchmod u+x hello.sh
3ãè¾å ¥âsh hello.shâå°±å¼å§æ§è¡shellèæ¬äºï¼æ¤æ¶å¨ç»ç«¯ä¸å°±è¾åºäºâhello!âçåæ ·ã以ä¸å°±æ¯ç¨shæ§è¡shellèæ¬çç®åæ¼ç¤ºï¼å½ç¶Shellæ¯ä¸ä¸ªåè½ç¸å½å¼ºå¤§çç¼ç¨è¯è¨ï¼æçæç¼åï¼æè°è¯ï¼çµæ´»æ§è¾å¼ºçç¹ç¹ï¼
对#!/bin/sh的认识第一次学shell编程,看的文章中说shell程序必须以"#!/bin/sh"开始,也就认为是这样了,虽然知道在shell中以"#"开始的语句都是注释,但也从没认为"#!/bin/sh"也是注释,就像对C语言程序必须有main函数一样毫无怀疑。但前些时候又听说"#!/bin/sh"也是注释,可有可无,当时觉得真是一个失败,连基本的语法都分不清。前几天借了一本书,才真正认识了"#!/bin/sh"。shell编程是以"#"为注释,但对"#!/bin/sh"却不是。"#!/bin/sh"是对shell的声明,说明你所用的是那种类型的shell及其路径所在。(#! /bin/sh 是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面跟的是解释此脚本的shell的路径)如果没有声明,则脚本将在默认的shell中执行,默认shell是由用户所在的系统定义为执行shell脚本的shell.如果脚本被编写为在Kornshell ksh中运行,而默认运行shell脚本的为C shell csh,则脚本在执行过程中很可能失败。所以建议大家就把"#!/bin/sh"当成C 语言的main函数一样,写shell必须有,以使shell程序更严密。
一个命令行结束用&
运行时首先要将文件的权限修改为可执行:chmod +x comdfile
然后要指定执行文件的路径,否则系统会认为执行文件在系统默认目录下。
假如可执行文件在当前的目录下,则:./comdfile ?
$bash是什么意思?
$表示系统提示符,$ 表示此用户为普通用户,超级用户的提示符是#,bash是shell的一种,是linux下最常用的一种shell,$bash的意思是执行一个子shell,此子shell为bash。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)