一、基础命令
在LinuxShell的世界中,基础命令是我们必须要学会的,例如常见的ls、mkdir、cd、cp、mv、rm、touch、echo等命令。
1、ls命令:
ls -l
在不加参数的情况下,ls命令为我们展示了当前目录的文件列表,而加上-l参数将为我们提供更为详细的信息,例如文件的权限、所有者、文件大小、创建时间等。
2、mkdir命令:
mkdir test_dir
该命令用于在当前目录下创建一个名为test_dir的目录。
3、cd命令:
cd test_dir
该命令将进入当前目录下的test_dir目录。
4、cp命令:
cp test.txt test_dir/
该命令将test.txt文件复制到test_dir目录下。
5、mv命令:
mv test.txt test_dir/
该命令将test.txt文件移动到test_dir目录下。
6、rm命令:
rm test.txt
该命令将删除当前目录下的test.txt文件。
7、touch命令:
touch test.txt
该命令用于创建一个名为test.txt的新文件。
8、echo命令:
echo "Hello World"
该命令将在终端中输出Hello World字符串。
二、Shell脚本
在了解基础命令之后,我们就可以开始编写Shell脚本了。Shell脚本是一种在LinuxShell环境中运行的脚本程序,常用于编写自动执行任务、批量操作文件等自动化处理任务。
1、创建一个简单的Shell脚本:
#!/bin/bash echo "Hello World"
该脚本包含了一个echo命令,作用是输出Hello World字符串。
2、运行Shell脚本:
chmod +x test.sh ./test.sh
我们需要先将脚本文件test.sh赋予执行权限,然后通过./命令运行该脚本。
三、正则表达式
正则表达式是一种灵活的字符串匹配模式,LinuxShell中许多命令都支持正则表达式。
1、使用grep命令过滤文本:
grep 'hello' file.txt
该命令将在文件file.txt中查找包含hello字符串的行,并将其打印到终端中。
2、使用sed命令编辑文件:
sed 's/old/new/g' file.txt
该命令将在文件file.txt中查找old字符串,并将其替换为new字符串,所有匹配的字符串都会被替换。
四、Shell变量
Shell变量是我们在脚本中用于存储值的标识符,它可以是数字、文本或其他任何类型的数据。我们可以通过Shell脚本中定义的变量来进行不同的操作。
1、定义一个Shell变量:
name="Tom" echo $name
该脚本定义了一个名为name的变量,并将其值设置为Tom,在终端中运行该脚本后,将输出Tom。
2、使用环境变量:
echo $HOME
使用$HOME环境变量,将输出当前用户的home目录路径。
3、使用特殊变量:
echo $0
使用$0特殊变量,将输出当前脚本的名称。
4、Shell数组:
names=("Tom" "Jerry" "Mike") echo ${names[1]}
该脚本定义了一个名为names的数组,并将其值初始化为Tom、Jerry、Mike三个数据,然后通过${names[1]}命令输出该数组的第二个元素Jerry。
五、Shell函数
Shell函数是一段可重复使用的代码,当需要执行某些操作时,我们可以通过调用函数的方式来完成这些操作。
1、定义一个Shell函数:
#!/bin/bash # 定义函数 function sayHello(){ echo "Hello World" } # 调用函数 sayHello
该脚本定义了一个名为sayHello的函数,并在函数中定义了echo命令,用于输出Hello World字符串。在脚本的最后,我们调用了该函数,将在终端中输出Hello World。
2、定义带有参数的Shell函数:
#!/bin/bash # 定义函数 function sayHello(){ echo "Hello $1" } # 调用函数 sayHello "Tom"
该脚本定义了一个名为sayHello的函数,并在函数中定义了echo命令,用于输出Hello和函数中传入的参数。在脚本的最后,我们调用了该函数,并传入了参数Tom,将在终端中输出Hello Tom。
六、Shell条件判断
条件判断是我们在编写Shell脚本时不可避免的需求,例如我们需要在特定条件下执行特定操作,这时我们可以使用Shell的条件判断语句。
1、if语句:
num=10 if [ $num -gt 5 ]; then echo "num is greater than 5" fi
该脚本定义了一个名为num的变量,并将其值初始化为10。然后使用if语句判断num是否大于5,如果是,则输出num is greater than 5。
2、case语句:
fruit="apple" case $fruit in apple ) echo "This is an apple.";; banana ) echo "This is a banana.";; esac
该脚本定义了一个名为fruit的变量,并将其值初始化为apple。然后使用case语句对fruit的值进行判断,如果是apple,则输出This is an apple。
七、Shell循环
循环语句在编写Shell脚本时也是常用的语句之一,例如我们需要对某些操作进行多次重复执行,这时我们就需要使用循环语句。
1、while循环:
count=0 while [ $count -lt 5 ] do echo "Current count is: $count" count=`expr $count + 1` done
该脚本定义了一个名为count的变量,并将其值初始化为0,然后使用while循环对count进行迭代,每次迭代输出Current count is:和当前的count值。
2、for循环:
names=("Tom" "Jerry" "Mike") for name in ${names[@]} do echo "Hello $name" done
该脚本定义了一个名为names的数组,并将其值初始化为Tom、Jerry、Mike三个数据。然后使用for循环输出Hello和数组中的每个元素。
八、Shell并发编程
当我们涉及到多个任务需要同时执行时,我们就需要使用到Shell并发编程技术,以提高代码的效率。
1、&符号:
#!/bin/bash # 运行任务1 task1(){ echo "This is task1." sleep 5 } # 运行任务2 task2(){ echo "This is task2." sleep 5 } # 运行任务3 task3(){ echo "This is task3." sleep 5 } # 并发运行任务 task1 & task2 & task3 &
该脚本定义了三个名为task1、task2、task3的函数,每个函数都包含一个输出语句和5秒的睡眠时间。在脚本的最后,我们使用&符号来并发运行三个函数。
九、Shell输入输出重定向
Shell输入输出重定向是我们在Shell编程中常用的技术之一,例如我们需要将命令的输出结果保存到文件中,或者从文件中读取输入等操作,都需要用到输入输出重定向技术。
1、输出重定向:
echo "Hello World" > file.txt
该命令将输出Hello World字符串,并将其重定向到文件file.txt中。
2、输入重定向:
cat < file.txt
该命令将从文件file.txt中读取数据,并输出到终端中。
十、Shell管道
Shell管道是我们另外一个常用的技术,通过将一个命令的输出结果传递给另一个命令来完成一系列的操作,以实现更加复杂的任务。
1、使用管道过滤数据:
cat file.txt | grep "Hello"
该命令将从文件file.txt中读取数据,然后将其传递给grep命令(也就是将包含Hello字符串的行输出到终端中)。
2、使用管道排序数据:
cat file.txt | sort
该命令将从文件file.txt中读取数据,然后将其传递给sort命令(也就是将文件内容按行排序输出到终端中)。
十一、Shell网络编程
在需要与外部服务器或者其他设备进行交互时,我们就需要使用到Shell网络编程技术,以完成网络通讯等任务。
1、使用telnet与远程服务器进行交互:
telnet www.baidu.com 80
该命令将连接到百度服务器并打开80端口,在终端中可以进行与该服务器的交互操作。
2、使用curl下载文件:
curl -O http://example.com/file.zip
该命令将从指定网址下载一个名为file.zip的文件。
十二、Shell常用工具
除了Shell自带的命令和组件外,还有一些社区或第三方提供的库和工具,我们可以使用这些工具来完成更加复杂的任务。
1、使用awk命令进行文本处理:
awk '{print $1}' file.txt
该命令将从文件file.txt中读取数据,并使用awk命令将每一行的第一个单词提取出来,输出到终端中。
2、使用sed命令编辑文件:
sed '原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/241339.html