2023年11月27日发(作者:)

shell脚本常⽤命令

shell基本命令

1.#!/bin/sh是指此脚本使⽤/bin/sh来解释执⾏。

解释:#! 是⼀个约定的标记,它告诉系统这个脚本需要什么解释器来执⾏,即使⽤哪⼀种 Shell

命令⽤于向窗⼝输出⽂本。

举例:echo "Hello World !"

_name="qinjx"

赋值变量

echo ${your_name}

打印变量;使⽤变量的时候加括号和美元符

+x ./ #使脚本具有执⾏权限

./ #执⾏脚本

chmod 777 /tmp -R 意思是把tmp⽂件夹及其⼦bai⽂件夹的权限全部修改为777

解释语句⼀:ping -c 5 > /dev/null 2>&1

1. ping -c 5

-c<完成次数>:设置完成要求回应的次数;

2. >/dev/null

这条命令的作⽤是将标准输出1重定向到/dev/null中。 /dev/null代表linux的空设备⽂件,所有往这个⽂件⾥⾯写⼊的内容都会丢失,俗称

。那么执⾏了>/dev/null之后,标准输出就会不再存在,没有任何地⽅能够找到输出的内容。

3. 2>&1

这条命令⽤到了重定向绑定,采⽤&可以将两个输出绑定在⼀起。这条命令的作⽤是错误输出将和标准输出同⽤⼀个⽂件描述符,说⼈话就

是错误输出将会和标准输出输出到同⼀个地⽅。

linux在执⾏shell命令之前,就会确定好所有的输⼊输出位置,并且从左到右依次执⾏重定向的命令,所以>/dev/null 2>&1的作⽤就是让标准

输出重定向到/dev/null中(丢弃标准输出),然后错误输出由于重⽤了标准输出的描述符,所以错误输出也被定向到了/dev/null中,错误输

出同样也被丢弃了。执⾏了这条命令之后,该条shell命令将不会输出任何信息到控制台,也不会有任何信息输出到⽂件中。

5.解释语句⼆:if [ $? -ne 0 ];then

$? 是⼀个特殊变量,⽤来获取上⼀个命令的退出状态,或者上⼀个函数的返回值。

所谓退出状态,就是上⼀个命令执⾏后的返回结果。退出状态是⼀个数字,⼀般情况下,⼤部分命令执⾏成功会返回 0,失败返回 1,这和

C语⾔的 main() 函数是类似的。

-ne 表⽰不等于。

含义:如果上⼀条命令执⾏后结束代码不是0则执⾏下⾯的命令,直到fi⾏之前。

sh -c "echo 'eipadmin ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers"

eipadmin ALL=(ALL) NOPASSWD:ALL,写⼊/etc/sudoers⾥的最后⾯(追加)。

7.查看系统安装了哪些shell

[rocrocket@localhost ~]$ chsh -l

/bin/sh

/bin/bash

/sbin/nologin

/bin/zsh

查看当前正在使⽤的shell

[rocrocket@localhost ~]$ echo $SHELL

/bin/bash

eipadminshell改成/bin/bash

sudo chsh -s /bin/bash eipadmin

设置账号和密码的有效期限

sudo chage -I -1 -m 0 -M 99999 -E -1 eipadmin 设置eipadmin⽤户

-c "echo '_hugepages=2048' > /etc/sysctl.d/"

⽂件覆盖为⾥_hugepages=2048(⽂件⾥只剩这⼀个变量)

10.⼿动加载所有的配置⽂件,执⾏:

# sysctl --system

3_ROOT_DIR=/etc/eipadmin

sudo mkdir -p ${SQLITE3_ROOT_DIR}

mkdir -p

在创建⽬录时,我们通常会先检查⼀下是否存在,如果不存在,就创建,这个时候通常⽤mkdir -p进⾏。

-p, --parents 需要时创建上层⽬录,如⽬录早已存在则不当作错误

12.超级⽤户给其他⽤户设置权限:sudo chmod a+rx /home/user 使所有⼈可以访问,

cp eipadmin-dump /usr/bin/

复制eipadmin-dump⽂件到/usr/bin/

touch /var/log/

在这个路径下/var/log/创建⽂件

15.关闭UBUNTU⾃动更新

# Disable apt auto update

sudo systemctl disable apt-daily

sudo systemctl disable

sudo systemctl disable

sudo systemctl disable apt-daily-upgrade

sudo sed -i 's/"1"/"0"/g' /etc/apt/.d/10periodic

16.回显执⾏的命令

set -x

17.出现:Account locked due to 25 failed logins

pam_tally2 --user=ops #查看

pam_tally2 --user=ops --reset #重置

/ -name id_rsa

rm /root/eip-cluster-master/id_rsa

19.每⼀个 rules ⽂件,就像其他的 Makefile ⼀样,包含着若⼲条 rules,其中每⼀个都定义了⼀个 target 以及其具体操作。 ⼀个新的 rule

⾃⼰的 target 声明开头,后续的⾏都以 TAB 开头,以指⽰ target 的具体⾏为。

当你想要执⾏⼀个 rule 的时候,就将 target 名称作为命令⾏参数来调⽤。⽐如说,debian/rules clean binary 会执⾏ clean binary 两个

target

clean(必需):清理所有编译的、⽣成的⽂件或编译树中⽆⽤的⽂件。

fakeroot debian/rules clean

#fakeroot 执⾏⼀个clean rule

debian/rules clean 运⾏了 dh clean,其实际执⾏的命令为:

dh_testdir

dh_auto_clean

dh_clean

fakerootsudo的区别

fakeroot不能获得root的权限,sudo可以。

fakeroot只是伪装成root,它不能改变需要root权限才能改变的⽂件,它只是让程序执⾏时按照有root权限的情况来运⾏,⽽对⽂件的操作实

际上是在普通⽤户下进⾏的。

fakeroot tar cvf /tmp/ /usr/localsudo tar cvf /tmp/ /usr/local

上⾯两条命令都会在/tmp下建⽴tar内的⽂件名都会以/开头,但前⼀条命令⽣成的⽂件属于当前⽤户,后⼀条命令⽣成的⽂件是

root的。

20.解压tar⽂档

解压到当前⼯作路径

#

未压缩

tar -xf

# gnuziptar

使⽤算法进⾏压缩的⽂档

tar -xzf

解压到指定⽬录

# 未进⾏压缩的tar⽂档

tar -xf -C /path/to/destination

# 使⽤gunzip算法压缩的tar⽂档

tar -xzf -C /path/to/destination

21.解决出现unable to resolve host

直接从/etc/hosts⾥⾯将127.0.1.1 {} 改成对应的主机名称

22.全局搜索/查看历史命令

root@ecs:~# find /* -name 01autoremove

eipadmin@ecs:/root/eip-cluster-master$ history