Linux Shell命令基础

一、结构化命令

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

bash变量替换

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

三、常用命令

  1. 添加用户
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
  1. 挂载磁盘
    ①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
  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.

  1. 卸载软件
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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值