Shell是一种用于与操作系统内核进行交互的命令行解释器(command-line interpreter)。它是一种命令语言,提供了一种通过键入文本命令来执行操作的方式。Shell还可以解释和执行脚本文件,这些脚本文件包含了一系列按顺序执行的命令。
在Linux和其他类Unix系统中,常见的Shell是Bourne Shell(sh),它是最早的Unix Shell。然而,现代Linux系统通常使用Bash(Bourne Again Shell)作为默认Shell,Bash是对Bourne Shell的扩展和改进。
Shell提供了许多功能和特性,使用户能够与操作系统进行各种交互操作,包括:
总之,Shell是一种命令行解释器,它为用户提供了一种与操作系统进行交互和执行命令的方式。通过Shell,用户可以控制和管理操作系统的各种功能,并使用脚本编写来实现自动化和批处理操作。
1、命令执行:
输入命令并按下回车键即可执行命令。
命令的输出可以通过重定向(>或>>
)保存到文件中,或者通过管道(|
)传递给其他命令进行处理。
例如:
ls -l # 执行ls命令
cat file.txt # 打印文件内容
ls -l > output.txt # 将ls命令的输出保存到output.txt文件中
ls -l | grep ".txt" # 通过管道将ls命令的输出传递给grep命令进行过滤
实例:新建一个test.sh的文件,敲入一下代码执行
你会发现和直接输入命令执行的是一样的
2、变量:
变量用于存储和操作数据,变量名一般以字母或下划线开头,并区分大小写。
变量赋值时不需要使用类型声明,可以直接使用等号(=
)进行赋值。
通过$
符号可以获取变量的值。
例如:
name="C3ting" # 定义一个名为name的变量,并赋值为"C3ting"
age=25 # 定义一个名为age的变量,并赋值为25
echo $name # 输出变量name的值
3、条件语句:
if语句用于根据条件执行不同的命令或代码块。
条件语句的语法为:
if [ 条件 ]; then
# 执行条件为真时的命令或代码块
else
# 执行条件为假时的命令或代码块
fi
在条件语句中,常用的条件判断符号有:
-eq
:等于-ne
:不等于-gt
:大于-lt
:小于-ge
:大于等于-le
:小于等于-z
:字符串为空例子:判断两个数是否相等
num1=10
num2=20
if [ $num1 -eq $num2 ]; then
echo "相等."
else
echo "不相等."
fi
4、循环结构:
for循环用于迭代一个列表或范围,并执行相应的命令或代码块。
while循环用于在条件为真时重复执行一组命令或代码块。
循环结构的语法为:
# for循环示例
for 变量 in 列表; do
# 执行循环体中的命令或代码块
done
# while循环示例
while [ 条件 ]; do
# 执行循环体中的命令或代码块
done
例子:
# for循环示例
for i in 1 2 3; do
echo "Number: $i"
done
# while循环示例
counter=0
while [ $counter -lt 5 ]; do
echo "Counter: $counter"
counter=$((counter + 1))
done
1、文件操作
ls
:列出目录中的文件和子目录。
ls
、ls -l
、ls -a
。cd
:切换当前工作目录。
cd /path/to/directory
、cd ..
。pwd
:显示当前工作目录的路径。
mkdir
:创建新目录。
mkdir new_directory
。rm
:删除文件或目录。
rm file.txt
、rm -r directory
(递归删除目录)。cp
:复制文件或目录。
cp file.txt destination
、cp -r directory destination
(递归复制目录)。mv
:移动文件或目录,或对文件或目录重命名。
mv file.txt new_location
、mv old_name.txt new_name.txt
。touch
:创建新文件或更新文件的访问和修改时间。
touch file.txt
。cat
:连接文件并显示其内容。
cat file.txt
。less
:逐页显示文件内容。
less file.txt
。head
:显示文件的开头部分。
head file.txt
、head -n 10 file.txt
(显示前10行)。tail
:显示文件的末尾部分。
tail file.txt
、tail -n 10 file.txt
(显示最后10行)。grep
:在文件中搜索指定模式的行。
grep pattern file.txt
。wc
:统计文件的行数、字数和字符数。
wc file.txt
、wc -l file.txt
(只显示行数)。chmod
:修改文件的权限。
chmod 755 file.txt
(将文件权限设置为 rwxr-xr-x)。这些是一些常用的Shell文件操作命令,可以用于管理文件和目录,复制、移动、删除文件,查看文件内容等。每个命令都有更多的选项和功能,
2、sed
(Stream Editor)是一种流式文本编辑器,常用于对文本进行转换、替换和处理。它通过读取文本流并根据指定的规则进行处理,然后将结果输出到标准输出或文件中。sed
在Linux和Unix系统中广泛使用,具有强大的文本处理能力。
基本语法:
sed options 'command' file
常用选项:
-i
:直接在原始文件中进行修改(in-place),而不是将结果输出到标准输出。-e
:允许在一行中使用多个编辑命令。常用命令:
替换操作:s/原字符串/新字符串/
,用新字符串替换原字符串。
sed 's/foo/bar/' file.txt
删除操作:d
,删除匹配的行。
sed '/pattern/d' file.txt
插入操作:i
,在匹配的行之前插入文本。
sed '/pattern/i new line' file.txt
追加操作:a
,在匹配的行之后追加文本。
sed '/pattern/a new line' file.txt
打印操作:p
,打印匹配的行。
sed -n '/pattern/p' file.txt
区间操作:使用起始模式和结束模式指定操作的行范围。
sed -n '/start/,/end/p' file.txt
脚本文件操作:从文件中读取sed
命令。
sed -f script.sed file.txt
其他高级操作:sed
还支持正则表达式匹配、变量、条件判断等高级功能。
sed
命令可以通过结合使用多个命令来实现复杂的文本处理。在命令中可以使用正则表达式进行模式匹配,还可以使用变量和控制结构来实现更灵活的处理逻辑。需要注意的是,默认情况下,sed
命令不会修改原始文件,而是将结果输出到标准输出。如果要直接在原始文件中修改,可以使用-i
选项。