shell用法大全

1 篇文章 0 订阅
订阅专栏

文章目录

基本介绍

  • 执行/etc/profile
  • 执行/etc/profile.d/.sh
  • 执行~/.bash_porfile
  • 执行~/.bashrc
  • 执行/etc/bashrc

操作文件目录

列出文件(ls命令)

ls命令存在如下常用参数

参数意义
-F判断列出的是文件还是目录
-l列出文件的详细信息,包括权限,大小(byte单位,如果想要更友好可以-lh),最后修改时间
-a同时显示隐藏文件和目录
-t按照最后修改时间排序
-r在原来的基础上倒序

获取当前目录(pwd命令)

获取当前用户所在的目录命令:pwd

有个需求,已知文件的路径,想获得文件名或者文件所在的目录名
可以使用basename和dirname命令

#!/bin/bash
path="/root/dexuan/server.py"
echo $path
echo "basename:$(basename $path)"
echo "dirname:$(dirname $path)"

结果:

/root/dexuan/server.py
basename:server.py
dirname:/root/dexuan

查看文件内容(cat,more,less,head,tail)

cat命令

cat可以跟上多个文件名字,将内容进行拼接后打印到终端

cat [option] [file]

参数意义
-n显示行号
-b只给非空行添加标号

more和less命令

有时候文件内容太多,使用cat命令就不合适,使用more和less命令都可以实现分页查看。

区别:

  • more:只能用空格键一页一页显示文件内容,直到文件结束,more命令退出
  • less:可以按PageUp或者PageDowm或者上下方向键来回反复浏览文见内容,Q退出

head和tail命令

如果我们只关心文件内容的开头和结尾,就可以使用head和tail命令

参数意义
-n限制输出行数
-c限制输出字节数
-f动态展示内容

统计文件行数和字数(wc)

wc test.sh

输出:

5  10 119 test.sh

第一列是行数,第二列是字数,第三列是字节数

|–|--|
| -l | 只统计行数 |
| -w |只统计字数 |
| -c | 只统计字节数|

创建文件和目录(touch,mkdir)

创建文件夹:

  1. 可以直接使用vim命令创建
  2. touch命令创建

创建目录:

mkdir命令,最常用的就是-p选项,递归创建

mkdir -p /root/dexuan/test

删除文件和目录(rm)

最常用的,rm -rf ./test.sh

重命名文件和目录(mv)

mv souce dist

例子:将当前目录test.sh重命名为t.sh

mv ./test.sh t.sh

移动文件和目录(mv)

同样是mv命令,但是要注意一点,假如说你要移动的文件或者文件夹与目的地的文件或者文件夹存在重名,就会直接覆盖,可以给mv加个-i参数,重名时候会提示。

建立文件和目录的链接(mv)

可以把链接理解成快捷方式。
具体命令如下:

ln -s 源文件名称 软链接文件名称

例子:

ln -s ./souce ./souce_link
cd souce_link
pwd -L
pwd -P

pwd -L 会打印出逻辑地址,即./souce_link
pwd -P会显示物理地址,即./souce

复制文件和目录(cp)

命令和mv格式基本一致

cp souce dist

如果想移动目录,就需要加-r参数

cp -r souce dist

权限控制(chmod)

linux一共存在3种权限,分别是读,写,执行

以以下命令为例:

[root@i-zd7on5h0 ~]# ls -l
total 16572
drwxr-xr-x  3 root root     4096 Dec 20 22:53 dexuan
drwxr-xr-x 19  501  501     4096 Dec  1 23:41 Python-3.7.1
-rw-r--r--  1 root root 16960060 Oct 20  2018 Python-3.7.1.tar.xz

drwxr-xr-x

  • 第一个d代表目录
  • 2-4代表文件所有者的权限
  • 5-7代表文件所属组的权限
  • 8-10代表文件所有者的权限

drwxr-xr-x代表着是一个文件夹,root用户对其有读写执行权限,root用户组内其他成员对其只有读和执行权限,非该用户组的用户也有读和执行权限

如何修改文件或者目录权限呢?
在这里插入图片描述
例子:

chmod 755 test.py

修改test.py文件权限,root用户对其有读写执行权限,root用户组内其他成员对其只有读和执行权限,非该用户组的用户也有读和执行权限

输入输出重定向和管道

linux最重要的设计思想就是一切皆文件,如显示屏幕是个设备文件,网络连接也是一个文件。linux运行的每一个进程都会默认关联到3个打开的文件上,他们是:标准输入,标准输出,以及错误输出

重定向(覆盖)

linux中重定向输出的格式是

command >outputfile

如果outputfile存在,就会覆盖掉原来的内容

ls >test.txt

把ls输出的内容重定向到test.txt文件中

重定向(追加)

linux中重定向输出的格式是

command >>outputfile

如果outputfile存在,就会追加输出内容到文件末尾

标准输入

read online <test.txt

这句话的意思是将test.txt的一行输入到变量online中

例子:
test.txt内容如下,要求打印文件的每一行

[root@i-zd7on5h0 dexuan]# cat test.txt 
hello
dexuan

echo.sh

#!/bin/bash
  
read oneline
while [ "$oneline" != "" ]
do
echo "$oneline"
read oneline
done

exit 0

输出:

[root@i-zd7on5h0 dexuan]# ./echo.sh <test.txt 
hello
dexuan

标准错误输出

指定输出到标准错误输出代码如下

echo "errormsg" > &2

重定向代码如下:

./echo2.sh >standard.out 2>error.err

此时会把进程标准输出重定向到standard.out,错误输出重定向到error.err

例子:
下面是echo2.sh代码

#!/bin/bash

echo "error" >&2
echo "print" >&1

输出如下:`

./echo2.sh 
error
print
[root@i-zd7on5h0 dexuan]# ./echo2.sh >standard.out 2>error.err
[root@i-zd7on5h0 dexuan]# cat standard.out 
print
[root@i-zd7on5h0 dexuan]# cat error.err 
error
[root@i-zd7on5h0 dexuan]# 

如果想要将正常和错误的重定向内容全部放在一个文件中,可以这样:

./echo2.sh >standard.out 2>&1

管道

一个程序的标准输出想作为下个程序的输入,那该怎么办呢,可以使用管道符处理

命令1 | 命令2

注意,下一个命令需要是读取标准输入流进行处理的命令,管道才能生效,如less, more, head, tail 等都是可以接受 standard input 的管线命令,ls, cp, mv 等就不是管线命令。

文件描述符

文件描述符,可以理解成符号与文件的映射关系,系统自带的3个文件描述符,stdin:0,stdout:1,stderr:2,其他的需要自己定义。

定义:

echo "output" >4&

意思是这段话输出到文件描述符为4的文件中。

此时只需要定义文件即可,加入上述脚本存在test.sh中,那么可以定义下面命令:

./test.sh 4>out.txt

把文件描述符为4的输出,输出到out.txt

进程

进程查看

https://www.cnblogs.com/fakerbin/p/6513365.html

jobs命令,查看后台进程命令

前台进程与后台进程

  • 一个进程占据了整个终端,叫做前台进程
  • 进程启动后不占据终端,终端可以继续执行命令

前台进程转后台进程

一般我们启动命令都是前台进程,假如我想创建后台进程,应该怎么办呢?可以使用&符号

如:

./start.sh &

就是将start.sh脚本后台运行
但是这样也有弊端,这个进程的标准输出或者标准错误输出会显示在终端上,这是我们不希望的,那么我们应该怎么办呢?重定向就起到作用了

./start.sh >output.txt 2>1& &

后台进程转前台进程

有时候后台进程需要标准输入,这时候程序就会阻塞等待标准输入,就需要将后台进程转到前台,此时fg命令就有用了

fg %工作号

工作号就是jobs命令查看后台进程编号

nohup

使用上面方式进行后台进程的启动会存在弊端,就是假如父进程退出了,子进程也会跟着被杀死。那么nohup命令就是解决这个问题的,当父进程退出后,nohup启动的命令会被init进程接管。具体命令如下:

nohup ./start.sh >output.txt 2>1& &

杀死进程

kill -9 pid

-9是参数,表示强制删除

最常见的是9和15
9) SIGKILL
用来立即结束程序的运行. 本信号不能被阻塞、处理和忽略。如果管理员发现某个进程终止不了,可尝试发送这个信号。
15) SIGTERM
程序结束(terminate)信号, 与SIGKILL不同的是该信号可以被阻塞和处理。通常用来要求程序自己正常退出,shell命令kill缺省产生这个信号。如果进程终止不了,我们才会尝试SIGKILL。

killall命令会杀死带有输入的所有进程

killall 进程名称

[root@localhost ~]# ps -ef|grep vi

root     17581 17398  0 17:51 pts/0    00:00:00 vi test.txt

root     17611 17582  0 17:51 pts/1    00:00:00 grep vi

[root@localhost ~]# ps -ef|grep vi

root     17581 17398  0 17:51 pts/0    00:00:00 vi test.txt

root     17640 17612  0 17:51 pts/2    00:00:00 vi test.log

root     17642 17582  0 17:51 pts/1    00:00:00 grep vi

[root@localhost ~]# killall vi

[root@localhost ~]# ps -ef|grep vi

root     17645 17582  0 17:52 pts/1    00:00:00 grep vi

字符串操作

cut命令

-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。

例如:
保留ls -l 每一行的第3-5个字符

ls -l | cut -b 3-5

结果:

[root@VM-101-190-centos ~]# ls -l | cut -b 3-5
tal
w-r
wxr
wxr
wxr
wxr
w-r
w-r
wxr

例2:

echo $PATH | cut -d ':' -f 1

根据:对字符串分割,留下第一个
结果:

/root/dexuantang/apache-maven-3.6.3/bin

paste命令

paste number.txt name.txt -d : 

将number.txt各行和name.txt各行进行拼接,拼接符为:

sort和uniq命令

  • sort 可针对文本文件的内容,以行为单位来排序
  • uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用

变量

定义变量

在shell中,定义变量直接就是

name=value

shell中没有变量类型,都是字符串
假如要把执行命令的标准输出流弄到变量中去

name=`命令`

例子:

name=`ls`

就是将ls输出的内容赋值到变量name中
如果想要输出变量,就可以使用$符号

name2=$name
echo "$name2"xxxxx

删除变量

unset命令用于删除变量或函数
可以删除普通变量,数组变量以及函数变量

数组变量

初始化数组一共有2种方法
第一种:

array[index]=value

第二种:

array=( v1 v2 v3 )

空格分开各个元素
如果指定某个值赋值给哪一个元素了,就可以用下面的方法

array=( [2]=v3 [0]=v1 [1]=v2 )

引用数组的方式如下:
引用数组某个值:

t=${array[0]}

引用数组所有列表并打印:

t=${array[@]}
for i in $t
do
	echo $i
done

本地变量和环境变量

  • 本地变量:shell启动子进程的时候,变量不会传递到子进程中。
  • 环境变量:创建子进程可以创建父进程中的

如何创建环境变量呢

export name=value
name=value;export

所有子进程可以使用父进程的环境变量,但不能修改父进程的环境变量

shell变量

当shell启动的时候,会初始化一些特殊变量。

  • HOME:当前用户主目录
  • SHELL:当前用户所使用的shell程序,如/bin/bash
  • USER:当前的登陆用户名
  • UID:扩展为当前用户数字的userid
  • BASH_VERSION:当前所使用的bash版本号
  • PWD:当前工作目录
  • OLDPWD:前一个工作目录,即执行cd命令以前所在的目录
  • SCECONDS:当前shell执行的时间
  • RANDOM:产生0-32767随机整数
  • PATH:环境变量

特殊变量

也就是参数变量

./test.sh param1 param2

test.sh内容

#!bin/bash
echo $#
echo $0
echo $1
echo $2

此时答应出来内容:
2
./test.sh
param1
param2
param1 param2

  • $# 代表参数个数
  • $@ 输出参数列表
  • $? 代表上一个命令是否执行成功,0就是成功
  • $$ 代表当前进程的pid

流程控制

条件分支

if list1
then
	list2
elif list3
then
	list4
else
	list5
fi

如果list1退出状态为0,说明这个分支触发成功。

list可以是条件表达式,对于数字的比较有以下几种

  • eq:等于
  • ne:不等于
  • -le:小雨等于
  • gt:大于
  • ge:大于等于

对于字符串的比较

  • == 两个字符串相等
  • != 两个字符串不相等

while循环

while 条件
do
	循环内容
done

for循环

for i in 列表
do
	循环内容
done
for (i=1;i<=100;i++)
do
	循环内容
done

break语句

break语句的基本语法为

break [n]

n可以忽略,如果忽略就是跳出最内层循环,如果n有值,就是跳出n层循环

continue语句

break语句的基本语法为

continue [n]

n可以忽略,如果忽略就是继续最内层循环,如果n有值,就是继续n层循环

变量替换

高级获取参数(getopts)命令

getopts optstring name [args]
  • optstring是选项
  • name 是放选项的变量
#!/usr/bin/env bash
# filename: getopts.sh
while getopts :abc:e:f:h argvs; do
  case $argvs in
    a) echo "这是执行-a的效果" ;;
    b) echo "这是执行-b的效果" ;;
    c) echo "这是执行-c的效果及参数值:${OPTARG}" ;;
    e) echo "这是执行-e的效果及参数值: ${OPTARG}" ;;
    h) echo "帮助信息"
    f) echo "这是-f的效果及参数值 ${OPTARG}" ;;
  [?]) echo "无效或不存在的选项" ;;
    :) echo "选项缺少参数" ;;
  esac
done
  • 第一个冒号 getopts 会区分 invalid option (无效选项) 错误和 miss option argument(丢失选项)错误。
  • while循环中每次都会执行getopts命令,每处理一个命令getopts会返回0,直到所有命令都处理完,返回1,退出循环。
  • getopts在处理每一个需要参数的选项时,都会把参数保存到变量OPTARG中。
  • 如果在getopts命令某个选项字符后面添加了冒号,说明该选项需要参数。

文件替换

常用通配符

通配符含义
*匹配0个或者多个任意字符
?匹配1个任意字段
[]匹配指定字符范围中任意一个字符

例子

ls ?.txt # 显示文件名以txt结束并且文件名只有1位的文件
ls [ab]* #显示文件名以a或者b起始的文件
ls [^ab]* #显示文件名不以a或者b起始的文件
ls [!ab]* #显示文件名不以a或者b起始的文件
ls [a-c]* #显示文件名以a或者b或者c起始的文件

命令替换

有时候希望一个命令中引用另一个命令的输出,这时候就需要用到命令替换。

$(commands)
`commands`

可以将命令赋值给变量,变量替换下一个命令
例子:

echo ls
echo $(ls)

第一个输出ls字符串,第二个输出ls命令的标准输出流

算数运算符替换

$((expression))

例子

echo $((3+2*4/8))

输出:4

引用

当命令中存在特殊字符时候,就需要被引用。
例子,当目录存在tmp*.txt文件时候,我们需要删除这个文件,这时候如果直接使用rm -rf tmp*.txt时候,命令把*当成通配符处理,会造成误删除。这时候就需要引用。

  • 对于单个特殊字符,可以使用\来引用,如rm -rf tmp\*.txt
  • 对于大量字符的时候,可以使用单引号,如echo '$(ls)',此时输出的内容就不是ls命令的标准输出,而是$(ls)字符串
  • 当想引用单个字符但是保留变量,可以使用双引号,如echo "list is : $(ls)",输出内容就是list is : test.txt,如果不想引用某个变量,就可以加\,如echo "list is : \$(ls)",输出内容就是list is : $(ls)

函数

定义函数

name(){
command-list
}

执行函数

name

删除定义

unset name

带参数函数

name(){
$1 代表第一个参数
$2 代表第二个参数
$# 代表参数个数
}
name 参数1 参数2

常用工具

find查找文件

find [path] [expression]
  • path参数指定了find所要查找的目录树的起点,可以制定多个目录树作为起点
  • expression可以由若干个表达式构成搜索条件

具体见:https://www.cnblogs.com/soymilk2019/p/11758086.html

当找到后,我们可以使用-exec ls -l { } \来制定找到后所想要执行的命令。

无论find命令看上去多复杂,其本质指定了3个部分:搜索起始目录,一些搜索条件,对于找到文件所做的操作。

which查找命令所在路径

which 命令
whereis 命令

例子:

which ls

输出:
/usr/bin/ls

xargs命令

如果有大量文件需要删除,-exec参数是十分消耗资源的,如果使用$(command)进行rm命令的拼接,有可能参数超出rm命令所能容纳的参数。xargs就派上用场了。

command1 | xargs command2

命令command1的标准输出流经管道作为xargs命令的标准输入当作命令command2的参数执行。如果xargs从标准输入得到大量参数,会智能分步执行。

file命令判断文件类型

file 文件名

dd命令数据备份

dd 能保持文件的原有的格式布局,cp只是针对数据填满一款存储区域,对于一些较大的具有特殊文件,建议使用dd

dd if=[file] of=[file] count=[blocks] bs=[bytes]
  • if告诉dd输入数据
  • of告诉dd输出数据到指定地方
  • count指定数据大小
  • bs指定一次读写的字节数

压缩与解压

https://blog.csdn.net/shengjie87/article/details/106684662

下载

curl和wget

信号

发送信号

我们可以把信号看作是软中断,当有一些重要事件发生的时候,他们就会发送到程序中。如何发送信号呢,kill命令就是专门发送信号的。
信号可以理解为一个进程给另外一个进程发送消息。

处理信号

trap命令可以定义信号的回调处理函数。

trap cmd 信号1 信号2

当其他进程给这个进程发送信号的时候,就会执行cmd命令或者函数。这个有什么用呢?
比如有个命令会产生缓存文件,当命令执行完成后会删除缓存文件,然而有时候这个命令执行到一半被杀了,这时候缓存文件还保留在硬盘中,这样不好。我们可以使用trap命令,当接收到TERM信号后,可以回调rm命令删除缓存。

当一个进程接收到一个信号后,先会查看该信号是否被忽略,如果没有被忽略就执行注册的信号处理函数,如果没有注册就会执行默认行为。

忽略信号

有时候我们不希望进程被杀掉,怎么办,就可以使用忽略信号。
只需要把trap命令中的操作指定为空就可以

trap '' 信号1 信号2

那么此时如果进程接收到了相关信号,就会进行信号忽略。

linux三剑客

基础正则表达式

^(对于每一行以…开头)

例子:
输出以e打头的每一行

[root@VM-101-190-centos ~/dexuantang]# cat test.sh 
echo $0
echo $1
echo $#
echo $@
ls
pwd
[root@VM-101-190-centos ~/dexuantang]# grep "^e.*" test.sh 
echo $0
echo $1
echo $#
echo $@

$(对于每一行以…结尾)

例子:
输出以s结尾的行

[root@VM-101-190-centos ~/dexuantang]# cat test.sh 
echo $0
echo $1
echo $#
echo $@
ls
pwd
[root@VM-101-190-centos ~/dexuantang]# grep ".*s$" test.sh 
ls

^$(空行)

常见作用:排除文件中空行

grep -v "^$" 文件名

.(任意一个字符)

例子:
输出以s包含exxo的行,x代表任意字符

[root@VM-101-190-centos ~/dexuantang]# cat test.sh 
echo $0
echo $1
echo $#
echo $@
ls
pwd
[root@VM-101-190-centos ~/dexuantang]# grep ".*e..o.*" test.sh 
echo $0
echo $1
echo $#
echo $@

*(前一个字符连续出现0或者多次)

.*(任意字符,贪婪匹配)

什么叫贪婪匹配呢,举个例子

grep "^.*t" test.txt

这时候test.txt内容为

jstqdetsssa
jjjjtkkkktooootssss

这时候他会以贪婪模式进行匹配,也就是匹配到了下面内容

jstqdetsssa
jjjjtkkkktooootssss
会尽可能多的匹配内容

.*?(任意字符,非贪婪匹配)

grep "^.*?t" test.txt

这时候test.txt内容为

jstqdetsssa
jjjjtkkkktooootssss

这时候他会以贪婪模式进行匹配,也就是匹配到了下面内容

jstqdetsssa
jjjjtkkkktooootssss
遇到第一个匹配到就会停止

[](方括号内字符或关系)

  • [abc] 匹配a或者b或者c
  • [a-z] 匹配任意小写字母
  • [0-9] 匹配任意数字
  • [a-zA-Z0-9] 匹配任意小写字母或者大写字母或者数字
  • [^ab] 除了a或者b以外的任意字符
  • [a-z|A-Z] 匹配任意小写字母或者大写字母或者|

扩展正则表达式

+ 号,前一个字符出现了1次或者多次以上

grep -E "0+" test.txt

grep只支持基础正则,如果想要进行扩展,只能加-E,
0+代表0出现了1次或者多次以上。

一般与[]擦出不一样的火花
如:

grep -E "[0-9]+" test.txt

匹配出数字

() 被括起来的内容,表示一个整体(一个字符)

例子

grep -E "oldb(o|e)y" test.txt

匹配oldboy或者oldbey

{} 连续出现

o{n,m} 前一个字母o,至少连续出现n次,最多连续出现m次
o{n} 前一个字母o,连续出现n次

?连续出现,前一个字符出现0次或者1次

例子

grep -E "go?d" test.txt

匹配gd或者god

三剑客

命令特点过滤速度最快
grep过滤过滤速度最快
sed替换修改文件内容,取行取出范围内容,修改文件内容
awk取列,统计计算取列,对比,比较

grep

选项含义
-E支持扩展正则
-A-A5 匹配你要的内容并且显示接下来的5行
-B-B5 匹配你要的内容并且显示接上面的5行
-C-C5 匹配你要的内容并且显示接上下5行

sed

特点和格式

功能:找谁干啥,找谁(某一行),干啥(增删改查)
默认不支持扩展正则,如果要加扩展正则,需要加r参数

  • 2p. 指定行号进行查找
  • 1,5p 指定行号范围进行查找
  • /lidao/p 类似grep过滤,//里面可以写正则
  • /10:00/,/11:00/p 范围过滤

例子:

  1. 输出test.txt的第三行
sed -n "3p" test.txt
  1. 输出test.txt的第1-5行
sed -n "1,5p" test.txt
  1. 输出test.txt的第4到最后1行
sed -n "4,$p" test.txt
  1. 输出test.txt的包含 boy或者girl的行
sed -nr "/(boy|girl)/p" test.txt
  1. 输出test.txt的第一个为10:00到最后一个为11:00的行
sed -nr "/10:00/,/11:00/p" test.txt

参数为d,主要功能为删除某一行,如果想要删除某个字符,就需要试用到替换

例子:

  1. 删除test.txt的包含 boy或者girl的行
sed -r "/(boy|girl)/d" test.txt
  1. 删除test.txt的第1-5行
sed "1,5d" test.txt
  1. 删除文件中空行或者包含#号的行
sed -r "^$|#d" test.txt
增加
  • 参数a append追加,向指定行或者每一行追加内容(后一行)
  • 参数i insert插入,向指定行或者每一行插入内容(前一行)
  • 参数c replace替代,替换这一行的内容

例子:

  1. 在test.txt的包含 boy或者girl的行下追加一行字符串test
sed -r "/(boy|girl)/a test" test.txt
  1. 在test.txt的第5行前插入一行字符串test
sed "5i test" test.txt
  1. 替换test.txt的第5行为字符串test
sed "5c test" test.txt
替换

参数为s
一般格式:

s/查找内容正则/替换内容/g

g代表全局替换,sed默认只替换每一行第一个匹配的内容

例子:

  1. 替换test.txt的oldboy单词为test
sed "s/oldboy/test/g" test.txt

后向引用(先保护,再引用)

例子:

  1. 在每一行开头增加 ‘<’ 结尾增加 ‘>’
sed -r "s/(.*)/<\1>/g" test.txt

\1代表获取()中的内容

  1. 替换test.txt的ip为0.0.0.0
sed -r "s/([0-9]{1,3}\.){3}[0-9]{1,3}/0.0.0.0/g" test.txt
shell的运用
MKC__jiaoq的博客
10-27 1083
介绍 在公司中应用的环境: shell 脚本 :70%以上是和任务计划结合完成任务( 分 时 日 月 周 命令或者是脚本进行查看或者执行);或者做一些复杂的、重复性任务,可以帮助管理员实现批量化完成任务,实现自动化运维。 任何一门语言都有解释器:python、php、java、c、c++ 等等,在所有语言运行的时候,都会先转换成机器码,然后在去运行 shell解释器以: #!/bin/bash 或者 #!/bin/sh 为开头 ...
shell脚本大全
11-03
本篇“shell脚本大全”资料集成为Linux环境下使用Shell脚本编程的详尽指南。尽管其名称为“shell脚本大全”,但知识点也适用于那些通过Windows商店安装的Linux环境,例如Windows Subsystem for Linux (WSL)。通过WSL...
shell用法
qq_36709282的博客
10-21 281
shell文件都是以 .sh 结尾 #! /bin/sh //这里要写绝对路径 或者 #! /bin/bush h=“hello123” #变量赋值 echo “hello” echo ${h}; echo $h echo “this is shell” &gt; hello.txt 注释:需要修改...
Shell基础知识
最新发布
weixin_61252283的博客
07-26 588
一个类用c语言编写的命令解释器程序的统称,也是以恶搞脚本编程语言,用户与内核交互的桥梁shell的功能接收用户命令调用相应的应用程序解释并交给内核处理返还内核处理结果命名规则:字母,数字,下划线,不能以数字开头,不能是关键字定义方式:变量名="变量值"提取变量:$变量名或${变量名}
Shell的基础用法
lslslslslss的博客
12-07 1549
Shell的基础用法 一、shell概述 shell是一个命令行解释器,它接受应用程序/用户命令。然后调用操作系统内核。 shell也是一个功能强大的编程语言,易编写、易调试、灵活性高。 1)Linux提供的Shell解析器有: [ls@hadoop100 ~]$ cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh 2)bash
shell使用
weixin_38095675的博客
08-14 271
1 shell变量 定义变量 (1) 定义变量时,变量名不加美元符号$ (2) 变量名和等号之间不能有空格 例如:your_name="runoob.com" 使用变量 (1) 使用定义过的变量,只要在变量名前面加美元符号即可。 例如: your_name="qinjx" echo $your_name ...
shell介绍及基本用法
weixin_33727510的博客
11-15 82
8.1:shell介绍: shell是一个命令解释器,提供用户和机器之间的交互,支持特定语法,支持逻辑判断、循环,并且每个用户都可以有自己的shell: Centos默认的shell是bash(Bourne Agin Shell):其实为了纪念sh的创造者bourne这个用户: 常见的还有zsh(power - shell) ksh(korn -...
python shell 用法
01-08
7. 内建函数和模块:Python Shell允许你使用内建函数,如`len()`,`type()`等,以及导入和使用标准库或第三方模块。例如,`import math`后,你就可以使用数学函数,如`math.sqrt(16)`。 8. 错误处理:在Shell中,...
VB 中SHELL用法详解
03-07
VB 中,常以Shell指令来执行外部程式,然而它在Create该外部process 後,立刻 就会回到vb 的下一行程式,无法做到等待该Process结束时,才执行下一行指令, 或是说,无法得知该Process是否已结束,甚者,该...
shell 编程中空格的使用方法
01-10
1.定义变量时, =号的两边不可以留空格. eg: gender=femal————right gender =femal———–wrong gender= femal———–wrong 2.条件测试语句 [ 符号的两边都要留空格. eg: if [ $gender = femal ];...
Shell中特殊字符的用法总结大全
01-20
前言 众所周知shell既是类Unix操作系统的命令解析器,用于解释执行用户输入的...本文将给大家介绍关于Shell特殊字符用法的相关内容,话不多说,来一起看看详细的介绍: 1、;分号 连续运行命令 # ifdown eth0;i
shell用法
xiexie1357的专栏
07-30 153
195. 第十行 tail -n+10 file.txt | head -1 # tail从第10行开始打印,head打印第一行 awk 'NR==10' file.txt # NR表示行号,过滤出第十行 cat file.txt | sed -n 10p //sed 按行过滤,10p,打印10行, -n 仅显示处理后的结果 194. 转置文件 awk '{ for...
Shell 语法
aikcsu4084的博客
07-19 124
Shell 之 语法 解释器: 1)Bourne Shell(/usr/bin/sh或/bin/sh) 2)Bourne Again Shell(/bin/bash) 3)C Shell(/usr/bin/csh) 4)K Shell(/usr/bin/ksh) 5)Shell for Root(/sbin/sh) Shell 注释: 1. 单行注释 在一行的字符最...
shell使用(上)
sunsady的博客
07-02 520
'''1.shell命令(变量)$:声明一个变量echo 显示 echo $SHELL 显示shell路径bash 执行.sh的shell文件 bash first_shell.shlinux发行版: ubuntu   centos(yum install  )   redhat  kali渗透测试,黑客攻击软件预安装,可以玩一下脚本:单行注释 : #    多行注释 :   :&lt;&lt;!...
linux Shell编程入门 实例讲解
03-01 147
本文结合大量实例阐述如何编写一个shell脚本。   为什么要进行shell编程   在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具。Shell不仅仅是命令的收集,而且是一门非常棒的...
Shell使用
weixin_56933381的博客
07-27 424
shell使用
一文带你学会shell基本用法
weixin_45814478的博客
03-26 5687
Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数。预定义变量、环境变量、自定义变量、位置变量。关联数组:可以使用字符串作为数组的索引。普通数组:只能用整数作为数组的索引。
Linux命令行与shell脚本编程大全
Linux 命令行的基本概念包括命令的基本语法、命令的分类、命令的使用方法等。Shell 脚本编程基础则涵盖了 shell 脚本的基本语法、变量的使用、控制结构、函数等方面的内容。高级 shell 脚本编程则涵盖了正则表达式...
写文章

热门文章

  • python游戏自动化实战--游戏辅助软件冰山后的秘密 15548
  • python服务器性能测试工具locust使用指南 15068
  • Charles配置移动端代理 5965
  • shell用法大全 4583
  • Selenium常用实战功能指南 3622

分类专栏

  • 软实力 2篇
  • 其他 2篇
  • 后端 16篇
  • 质量保障 13篇
  • python 9篇
  • 持续集成 4篇
  • 前端 14篇
  • 刷题 1篇
  • 操作系统 1篇
  • java 5篇
  • 版本控制工具 1篇
  • mysql数据库 6篇
  • 写作展示工具 1篇
  • 数据结构与算法 16篇

最新评论

  • python服务器性能测试工具locust使用指南

    lian@qiao: 我现在想压测sdk里面的一些函数方法,函数又调用了具体的api函数,这样的该怎么搞呢?不是直接压协议接口的,而是直接压测函数。我尝试压测函数时,host填的本地地址,发现监控的web界面没有显示内容

  • python游戏自动化实战--游戏辅助软件冰山后的秘密

    m0_75277808: 感谢分享,请教一下注册dm.dll的时候弹窗提示dm.dll已加载,但对DllRegisterServer的调用失败是需要付费吗。用的是Github上的那个大漠插件

  • python游戏自动化实战--游戏辅助软件冰山后的秘密

    飘飞雪: 3版本,最后一版免费的,在我的github里面有

  • python游戏自动化实战--游戏辅助软件冰山后的秘密

    鱼小数: 大佬,你的dm是那个版本?免费吗?

  • python游戏自动化实战--游戏辅助软件冰山后的秘密

    狐: 大佬知道不用大漠绑定窗口吗

最新文章

  • 寻找亲密关系需要发挥主观能动性
  • 《爱的五种能力》读书笔记
  • 塔罗分析笔记--权杖家族
2024年1篇
2023年4篇
2022年24篇
2021年10篇
2020年36篇
2019年16篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家武汉玻璃钢雕塑供应商浙江玻璃钢雕塑骑士穿墙玻璃钢雕塑深圳黑色小型玻璃钢花盆滁州玻璃钢雕塑设计价位湖里园林玻璃钢雕塑郑州哪里有玻璃钢仿铜雕塑厂上海玻璃钢雕塑雕刻四川玻璃钢商城广场美陈雕塑工厂佛山玻璃钢工艺雕塑厂招聘广州商场圣诞美陈布置商场美陈主管简历常州商场美陈装饰深圳高档玻璃钢花盆锦州玻璃钢主题雕塑广东玻璃钢雕塑摆件制造玻璃钢雕塑怎么算价格管城玻璃钢花盆花器三门峡抽象玻璃钢彩绘雕塑公司连云港玻璃钢花盆花器广州室内商场美陈七夕商场美陈玻璃钢景观雕塑平台电话多少春节商场主到美陈布置定做玻璃钢卡通雕塑河北公园玻璃钢雕塑图片厦门玻璃钢雕塑价格池州佛像玻璃钢雕塑生产厂家上海主题商场美陈怎么样商场特色美陈花盆香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化