一、结构化命令
1.1 if-then语句
if语句判断的是command的返回码。 当command命令返回码为0时,认为测试通过。
语法结构
if command
then
commands
else
commands
elif command
commands
fi
#test
由于if判断的是返回码,因此对于条件判断可以使用test命令。 test条件成立时,返回码为0。
if test condition
then
commands
fi
[]
[] 为test命令的简略模式
if [ condition1 ] %% [ condition2 ] || [ condition3 ]
then
commands
fi
比较 描述
n1 -eq n2 检查 n1 是否与 n2 相等
n1 -ge n2 检查 n1 是否大于或等于 n2
n1 -gt n2 检查 n1 是否大于 n2
n1 -le n2 检查 n1 是否小于或等于 n2
n1 -lt n2 检查 n1 是否小于 n2
n1 -ne n2 检查 n1 是否不等于 n2
例如:
if [$n1 -eq n2]
(())
双括号提供了数学表达式的高级功能
if (($val ++ >2))
[[]]
双方括号提供了对字符串处理的高级功能
if [[ $user ==r*]]
case
aa
case $变量名 in
模式1)命令序列1;;
模式2)命令序列2;;
*)默认执行的命令序列;;
esac
#!/bin/bash
#switch语句与shift
while [ -n "$1" ]
do
case "$1" in
-a) echo "Found -a options..";;
-b) echo "Found -b options..";;
-c) echo "Found -c options..";;
*) echo "$* is illegally..";;#default
esac
shift
done
aa
二、算数运算
$(())
echo $((1+2))
3
$[]
echo $[1*2]
2
expr
a=59
b=60
c=`expr $a + $b`
echo $c
119
bc
a=59
b=60
c=$(echo "scale=4; $a / $b" | bc)
echo $c
.9833
命令替换
在bash中,$( )与(反引号)都是用来作命令替换的。
命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行。
$( )与``
在操作上,这两者都是达到相应的效果
c=$(echo "scale=4; $a / $b" | bc)
c=`expr $a + $b`
变量替换
一般情况下, v a r 与 var与 var与{var}是没有区别的,但是用${ }会比较精确的界定变量名称的范围
[root@localhost ~]# A=Linux
[root@localhost ~]# echo $AB #表示变量AB
[root@localhost ~]# echo ${A}B #表示变量A后连接着B
LinuxB
IFS(Internal Field Separator)
The shell uses the value stored in IFS, which is the space, tab, and newline characters by default, to delimit words for the read and set commands, when parsing output from command substitution, and when performing variable substitution.
#!/bash/bin
#changing IFS values
IFS_OLD=$IFS
IFS=$'\n'
for value in $(cat /etc/passwd)
do
IFS=:
for entry in $value
do
echo " $entry"
done
done
三、常用命令
- 添加用户
groupadd luis
useradd -m -s /bin/bash/ -g luis -G adm,root luis
# 添加用户luis到sudo中
vi /etc/sudoers
%sudo ALL=(ALL:ALL) ALL
%luis ALL=(ALL:ALL) ALL
- 挂载磁盘
①fdisk -l 可以看到申请的磁盘
②挂载 mount /dev/xvde /home/Linux_huawei 将/dev/xvde挂载到/home/Linux_huawei目录上。建立挂载到单独的目录下。
tips:df -H 查看挂载情况。
③将挂载写入磁盘
vim /etc/fstab
/dev/xvde /home/Linux_huawei ext4 errors=remount-ro 0 1
- 安装JDK
luis@wuhphisprc09529:~$ tar -zxvf jdk-8u261-linux-x64.tar.gz -C /usr/lib/jdkk
# 环境变量
luis@wuhphisprc09529:~$ sudo vim /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_261
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
luis@wuhphisprc09529:~$ source /etc/profile
luis@wuhphisprc09529:~$ java -version
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)
# 设置alternative
luis@wuhphisprc09529:~$ sudo update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_261/bin/java 400
update-alternatives: using /opt/jdk1.8.0_261/bin/java to provide /usr/bin/java (java) in auto mode
luis@wuhphisprc09529:~$ sudo update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_261/bin/javac 400
update-alternatives: using /opt/jdk1.8.0_261/bin/javac to provide /usr/bin/javac (javac) in auto mode
luis@wuhphisprc09529:~$ sudo update-alternatives --install /usr/bin/jar jar /opt/jdk1.8.0_261/bin/jar 400
update-alternatives: using /opt/jdk1.8.0_261/bin/jar to provide /usr/bin/jar (jar) in auto mode
luis@wuhphisprc09529:~$ sudo update-alternatives --install /usr/bin/javah javah /opt/jdk1.8.0_261/bin/javah 400
update-alternatives: using /opt/jdk1.8.0_261/bin/javah to provide /usr/bin/javah (javah) in auto mode
luis@wuhphisprc09529:~$ sudo update-alternatives --install /usr/bin/javap javap /opt/jdk1.8.0_261/bin/javap 400
update-alternatives: using /opt/jdk1.8.0_261/bin/javap to provide /usr/bin/javap (javap) in auto mode
luis@wuhphisprc09529:~$ update-alternatives --config java
There is only one alternative in link group java (providing /usr/bin/java): /opt/jdk1.8.0_261/bin/java
Nothing to configure.
- 卸载软件
luis@luis:~$ dpkg --list
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==========================================-=====================================-============-======================================================================================================
ii accountsservice 0.6.55-0ubuntu12~20.04.4 amd64 query and manipulate user account information
ii acl 2.2.53-6 amd64 access control list - utilities
ii acpi-support 0.143 amd64 scripts for handling many ACPI events
# 卸载
luis@luis:~$ sudo apt-get --purge remove notable