1. How to test variable
1) Example:
#String test test str1=str2 #Test if str1.equals(str2) test str1!=str2 #Test if !str1.equals(str2) test str1 #Test if str1 != null test -n str1 #Test if str1 != null test -z str1 #Test if str1 == null #Integer test test int1 -eq int2 #Test if int1 == int2 test int1 -ne int2 #Test if int1 != int2 test int1 -ge int2 #Test if int1 >= int2 test int1 -gt int2 #Test if int1 > int2 test int1 -le int2 #Test if int1 <= int2 test int1 -lt int2 #Test if int1 < int2 #File test test -d file #Test if file type is directory test -f file #Test if file type is file test -x file #Test if file is executable test -r file #Test if file is readable test -w file #Test if file is writable test -a file #Test if file exists test -s file #Test if file size != 0 #We can use #echo $? to decide the test result #If equals 0, that means test result is true, #If not, that means test result if false.
$ ls -lt | grep .sh -rwxr-xr-x ... expr.sh $ test -d expr.sh $ echo $? 1 $ test -x expr.sh $ echo $? 0 $ test -w expr.sh $ echo $? 0 $ chmod 555 expr.sh $ test -w expr.sh $ echo $? 1
2) "test" is commonly used together with "if"
#!/bin/bash #A demo for usage of test if [ -d $1 ] then echo "Is directory" fi # "test -d $1" is the same as "[ -d $1 ]" #Sample Input: #sh test.sh Templates #Sample Output: #Is directory
2. if ... then ... else ... fi
#!/bin/bash #A demo for usage of if statement if [ -d $1 ] then echo "Is directory" else echo "Not directory" fi #Sample Input #bash test.sh Templates #Sample Output #Is directory #Sample Input #bash test.sh test.sh #Sample Output #Not directory
#!/bin/bash #A demo for usage of complex if statement if [ -d $1 ] then echo "Is directory" elif [ -f $1 ] then echo "Is file" elif [ -c $1 ] then echo "Is device file" else echo "Is unknown file" #Sample Input #sh test2.sh test2.sh #Sample Output #Is file #Sample Input #sh test2.sh donotexist.sh #Sample Output #Is unknown file
#!/bin/bash #A demo for usage of more complex if statement if [ -d $1 ] then echo "Is directory" elif [ -f $1 ] then echo "Is file" if [ -r $1 ] then echo "File is readable" else echo "File is not readable" if if [ -w $1 ] then echo "File is writable" else echo "File is not writable" fi if [ -x $1 ] then echo "File is executable" else echo "File is not executable" fi elif [ -c $1 ] then echo "Is a device file" else echo "Is an unknown file" fi #Sample Input #sh test2.sh test2.sh #Sample Output #Is file #File is readable #File is writable #File is executable
#!/bin/bash if [ $# -ne 2 ] then echo "Not enough params" exit 0 if [ $1 -eq $2 ] then echo "$1 equals $2" elif [ $1 -gt $2 ] then echo "$1 greater than $2" elif [ $1 - lt $2 ] then echo "$1 less than $2" else echo "You will never get here" fi #Sample Input #sh compare.sh 1 2 #Sample Output #1 less than 2 #Sample Input #sh compare.sh 2 1 #Sample Output #2 greater than 1 #Sample Input #sh compare.sh 2 2 #Sample Output #2 euqlas 2
3. AND OR
1) -a: AND
2) -o: OR
4. Exit
1) exit 0: means normal exit process
5. for ... in ... do ... done
#!/bin/bash for DAY in Sunday Monday Tuesday Wednesday Thursday Friday Saturday do echo "The day is $DAY" done #Sample Output #The day is Sunday #The day is Monday #The day is Tuesday #The day is Wednesday #The day is Thursday #The day is Friday #The day is Saturday
6. Example
#!/bin/bash #"if ... else" usage #Using this program to show your system's services echo "Now, the web services of this Linux System will be detected..." echo #Detect www service web=`/usr/bin/pgrep httpd` if [ "$web" != "" ] then echo "The Web service is running." else echo "The Web service is NOT running." /etc/rc.d/init.d/httpd start fi
7. awk
#detect user whose UID=0 (means SUPER USER) $grep root /etc/passwd #format: #username:password:UID:GID:userinfo:homefolder:shell root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin $awk -F: '$3==0 {print $1}' /etc/passwd #-F --> assign the seperator in each line, the default seperator is space, here is ":" #'$3==0 {print $1}' means that if the third segment equals 0, then we will print out the first segment #/etc/passwd means the file that will be processed $ps -el PID PPID PGID WINPID TTY UID STIME COMMAND 5212 1 5212 5212 con 500 20:36:31 /bin/sh 4008 5212 4008 4448 con 500 21:03:03 /bin/ps $ps -el | awk '$1==5212 {print $8}' /bin/bash $ps -el | awk 'length($2)==1 {print $8}' /bin/sh $ps -el | awk 'length($2)==4 {print $8}' COMMAND/bin/ps/bin/sh #detect user whose password is empty $awk -F: 'length($2)=0 {print $1}' /etc/shadow
8. Example
#!/bin/bash /bin/echo "Please input username" read username /bin/grep $username /etc/passwd > /dev/null 2> /dev/null if [ $? -eq 0 ] then /bin/echo "Username is: $username" else /bin/echo "User $username doesn't exist" exit 1 fi /bin/echo #list /etc/passwd info #grep ^$username:x --> means that find lines which start with $username:x #grep $username #root:x:0:0:root:/root:/bin/bash #operator:x:11:0:operator:/root:/sbin/nologin #grep ^$username:x #root:x:0:0:root:/root:/bin/bash --> Here is the valur of $userinfo userinfo=`/bin/grep ^$username:x /etc/passwd` userid=`/bin/echo $userinfo | /bin/awk -F: '{print $3}'` groupid=`/bin/echo $userinfo | /bin/awk -F: '{print $4}'` homedir=`/bin/echo $userinfo | /bin/awk -F: '{print $6}'` shell=`/bin/echo $userinfo | /bin/awk -F: '{print $7}'` /bin/echo "userid = $userid" /bin/echo "groupid = $groupid" /bin/echo "homedir = $homedir" /bin/echo "shlle = $shell"
9. killuser
#!/bin/bash #The script to kill logined user username="$1" #find all processes that belongs to this user /bin/ps -aux | /bin/grep $username | /bin/awk '{print $2}' > /tmp/temp.id killid=`cat /tmp/temp.pid` #kill all the processes that started by this user for PID in $killid do /bin/kill -9 $PID 2> /dev/null done #once we have killed all the processes that started by a specific user, that means the user is no longer logged in current system.
相关推荐
在《Introduction to Unix and Linux Shell - 1》这份文档中,作者Star Ren(2008年1月19日)为我们提供了关于Unix/Linux Shell的基础介绍。这部分内容主要涵盖了Shell的基础概念、为何学习Shell的重要性以及一些...
ii Table of Contents Slicing file names based on extension 84 Renaming and moving files in bulk 86 Spell checking and dictionary manipulation 89 Automating interactive input 90 Chapter 3: File In, ...
### Linux命令Shell入门知识点 #### 一、引言与背景 在《Linux命令Shell入门》这一教程中,作者Victor Gedris旨在为初学者提供一个快速而简单的Linux命令Shell使用介绍。该文档假设读者对Linux命令行界面几乎没有...
【Unix/Linux Shell简介 - 2】 Unix/Linux Shell是操作系统中的一种命令解释器,它为用户提供了一个与系统交互的界面,允许用户输入命令、执行程序、管理文件和进行系统操作。Shell不仅是一个命令行接口,还是一个...
1. **命令行界面**:Linux主要通过命令行界面(CLI)进行操作,如bash shell。掌握常用的Linux命令,如ls(列出目录内容)、cd(切换目录)、mkdir(创建目录)、rm(删除文件或目录)、cp(复制文件或目录)、mv...
Bash(Bourne Again SHell)是Linux最常用的命令行解释器。为了有效使用Linux,用户还需掌握如何获取帮助,例如通过man命令查看手册页以及利用其他在线资源。 其他重要知识点还包括: - 如何在图形模式和文本模式下...
inux for Beginners doesn't make any assumptions about your background or knowledge of Linux. You need no prior knowledge to benefit from this book. You will be guided step by step using a logical and ...
Bash(Bourne Again SHell)是Linux中最常用的shell。了解如何使用Bash的一些高级功能,如命令历史、别名定义和管道操作,可以极大地提高工作效率。 ##### 2.3 获取帮助 **2.3.1 man页面** 在Linux中,几乎所有的...
《The Linux Command Line: A Complete Introduction》这本书通过易懂、短小精悍的章节帮助读者逐步掌握这些技能,克服对命令行的初始恐惧(通常被称作"shell shock"),并发现命令行与计算机沟通的自然和富有表现力...
3. 网络资源 MOOC (103/Introduction-to-Linux/) 操作系统原理() 该教学大纲旨在为学生提供一个系统的学习路线,帮助学生掌握 Linux 操作系统的基本原理和 shell 编程技术,并为学生提供了许多实验项目供实践。
Wicked Cool Shell Scripts—101 Scripts for Linux, Mac OS X, and Unix Systems Introduction Chapter 1 - The Missing Code Library Chapter 2 - Improving on User Commands Chapter 3 - ...
- **Shell**: Shell是用户与Unix/Linux系统之间的接口,它能够解释用户的命令并将其传递给操作系统执行。 - **命令行工具**: 包括文件操作(如cp、mv)、进程管理(如ps、kill)、网络工具(如ping、curl)等丰富的...
在技术方面,内容覆盖了Linux shell的基本概念,如何使用终端模拟器,进行初步的键盘输入、命令历史回顾、光标移动,以及如何尝试一些简单的命令。此外,书中还对Linux文件系统进行了介绍,包括文件系统树的概念、...
- 《Linux命令行与Shell脚本编程大全》:介绍了Linux命令行的基本使用和编写Shell脚本的方法。 - 《鸟哥的Linux私房菜》:适合Linux初学者,全面覆盖了Linux基本操作、系统管理等知识。 2. **Linux系统管理**: ...
《The Linux Command Line: A Complete Introduction》是William E. Shotts, Jr.所著的一本全面介绍Linux命令行的书籍,旨在带领读者从零基础学习Linux命令行,直至能够编写Bash脚本。本书不仅提供了Linux命令行的...
### 《高清彩版 The Linux Command Line: A Complete Introduction》知识点总结 #### 一、书籍基本信息 - **书名**:《高清彩版 The Linux Command Line: A Complete Introduction》 - **作者**:William E. ...
本书致力于将读者从对命令行的初步了解引导至能够编写完整程序的高级水平,特别是使用当前版本的bash shell,它是Linux系统中最受欢迎的shell之一。本书覆盖了从系统管理、网络配置、软件包安装到进程管理的各项技能...