首页 > 系统相关 >初学Linux第二天

初学Linux第二天

时间:2024-12-11 21:23:15浏览次数:5  
标签:soft 用户组 echo 第二天 初学 master str Linux root

用户组

添加用户组

# 格式:groupadd -g 用户组id 用户组的名称
若不指定id,则按默认的来(1000开始,1-999是系统文件的id)

修改用户组

# 格式: groupmod [-g 用户组id] 用户组名称 

删除用户组

# 格式: groupdel 用户组名称

用户

添加用户

# 格式: useradd [-G 用户组的名称或者id] [-u 用户的id] [-c 注释] [-s shell解释器] 用户名
# 注意:[] 里面的都是可写可不写的,shell解释器就是表明它是否有登录的权限,默认是有的 /bin/bash,  /sbin/nologin 是没有登录权限

修改用户

# 格式: usermod [-G 用户组的名称或者id] [-u 用户的id] [-c 注释] [-s shell解释器] 用户名

删除用户

# 格式1: userdel 用户名

# 格式2: userdel -r 用户名    ---> 这种方式会连家目录和邮件一起删掉

第一个shell脚本

#!/bin/bash
echo "hello world"
echo $name $age $gender

注释

  • 单行注释:#

  • 多行注释:

    # 特殊的多行注释 
    # end of file
    :<<EOF  
    注释内容... 
    注释内容... 
    注释内容... 
    EOF
    
    :<<! 
    注释内容... 
    注释内容... 
    注释内容... 
    !
    

变量

基本使用

# 在命令行进行变量的赋值,举例如下:
name=苏沐橙
age=18
gender="女"
# 这种变量其实是局部变量,可以用export导入变量使之成为全局变量,如果没有导入,上面的脚本并不会打印出name,age,gender的信息

上面是对变量赋值进行一个简单举例,这里有几个关键点需要注意下

  • 变量赋值:变量名=变量值 【注意:等号两边不可以有空格】
  • 使用变量:$变量名,建议使用这种写法:$

删除变量

# 删除变量
unset 变量名

常量

# 用readonly修饰的变量是常量,不可以用unset进行删除
# 两种声明方式
readonly name=苏沐橙
# 或者
name=苏沐橙
readonly name

# 删除方式
# 删除之前,我们先安装一下必要的工具:gdb
yum install gdb -y
[root@master soft]# cat << EOF | gdb
> attach $$
> call unbind_variable("x")
> detach
> EOF

基本数据类型

数字类型

# int整型
定义:age=18
用于标识:年龄,等级,身份证号,qq号,个数
 
# float浮点型
定义:salary=30000.0
用于标识:工资,身高,体重

字符串类型

#在shell中,加了引号的字符就是字符串类型
 
定义:name='xiaohu' 
用于标识:描述性的内容,如姓名,性别,国籍,种族
 
# 注意1:字符串包含空格必须加引号
[root@master soft]# msg="hello xiaohu"
[root@master soft]# msg=hello xiaohu
bash: xiaohu: 未找到命令...
 
# 注意2:连续的字符不加引号包含也是可以的,但我们还是强烈建议加上引号,规范一些
[root@master soft]# msg=hello
[root@master soft]# echo $msg
hello
[root@master soft]# 
 
# 注意3:单引号与双引号是不同的
" "   弱引用,引号的特殊字符有意义
' '   强引用,引号内所有特殊字符都取消意义
[root@master soft]# name=“xiaohu”
[root@master soft]# echo "${name} is good"
xiaohu is good
[root@master soft]# echo '${name} is good'
${name} is good 

数组类型

=================声明普通数组=================
# 方式一:array=(元素1 元素2 元素3)
arr1=(1 2 3 4 5 6 7 8 9 10)

# 方式二:array=([key1]=value1 [key2]=value2 [key3]=value3)
arr2=([0]=11 [1]=22 [2]=33 [3]=44)

# 方式三:依次赋值
[root@master exer]# arr2[0]=111
[root@master exer]# arr2[1]=222
[root@master exer]# arr2[2]=333
[root@master exer]# arr2[3]=444
[root@master exer]# arr2[6]=666

# 方式四:利用执行命令的结果设置数组元素:array=($(命令))  或者  array=(`命令`)
arrdate=(`date`)

# ps:查看声明过的数组
declare -a
# 结果如下:
declare -a arr1='([0]="1" [1]="2" [2]="3" [3]="4" [4]="5" [5]="6" [6]="7" [7]="8" [8]="9" [9]="10")'
declare -a arr2='([0]="111" [1]="222" [2]="333" [3]="444" [6]="666")'
declare -a arrdate='([0]="2024年" [1]="12月" [2]="11日" [3]="星期三" [4]="17:21:37" [5]="CST")'


=================访问普通数组=================
# 正向索引
[root@master exer]# echo ${arr1[2]}
3

# 负向索引
[root@master exer]# echo ${arr1[-2]}
9

# 打印数组的全部信息
[root@master exer]# echo ${arrdate[*]}
2024年 12月 11日 星期三 17:21:37 CST

=================访问关联数组=================
declare -A info # 必须要先声明一下关联数组,才能进行赋值
[root@master soft]# info=(["name"]="xiaohu" ["age"]=18 ["gender"]="male")
[root@master soft]# echo ${info[0]}
xiaohu
[root@master soft]# echo ${info["age"]}
18
[root@master soft]# echo ${info["gender"]}
male

相关功能【字符串】

切片

# 格式:字符串名称:起始位置:长度
str="abcdefghijklmn"
echo ${str:3:4}   # defg

长度

# 格式: #字符串
 str="abcdefghijklmn"
 echo ${#str}   # 14

截断【截掉】

"===========================左截断=============================="
用 #	截断相应的字符串,注意,左截断,所以一定是从开头开始,一旦匹配到相应的字符串,从当前位置到开头全部砍掉
str="www.baidu.com"
echo ${str#"www"}	# .baidu.com
用 #* 截断相应的字符串,但是尽可能地少截断
str="www.baidu.com"
echo ${str#*"w"}	  # ww.baidu.com
用 ##* 截断相应的字符串,但是尽可能地多截断
str="www.baidu.com"
echo ${str##*"w"}		# .baidu.com

"===========================右截断=============================="
用 %	截断相应的字符串,注意,右截断,所以一定是从末尾开始,一旦匹配到相应的字符串,从当前位置到末尾全部砍掉
str="www.baidu.com"
echo ${str%"com"}	# www.baidu.
用 %* 截断相应的字符串,但是尽可能地少截断
str="www.baidu.com"
echo ${str%"."*}	  # www.baidu
用 %%* 截断相应的字符串,但是尽可能地多截断
str="www.baidu.com"
echo ${str%%"."*}		# www

注意:左截断, * 在要匹配的字符串的左边,而右截断,它的 * 要在要匹配的字符串的右边

数值的运算

整数的运算

# 第一种方式:  $[]
echo $[3+4] # 7
echo $[3-4] # -1
echo $[3*4]
echo $[3/4]
echo $[3%4]
echo $[3*4]

# 第二种方式:  $(())
echo $((3+4))
echo $((3-4))
echo $((3*4))
echo $((3/4))
echo $((3%4))
echo $((3**4))

# 第三种方式:  expr   # 操作数与操作符之间必须要有空格
expr 3 + 4
expr 3 - 4
expr 3 \* 4  # 注意:这里需要进行转义,因为 * 在shell里面有特殊含义
expr 3 / 4
expr 3 % 4

# 第四种方式:  let  # 只支持赋值运算
let a+=3
let a-=3
let a*=3
let a/=3
let a%=3

小数运算

# 首先:安装 bc
yum install bc -y 

res=`echo "1.2+1.3" | bc`
echo $res # 2.5

第二个shell脚本

#!/bin/bash
echo '下面是一个程序的测试结果:'
read -p "请输入你的家庭户住址:" address
echo "我的家庭住址是:$address"
echo '====================$n====================='
echo '这是脚本名:$0 = ' $0
echo '这是第一个参数:$1 = ' $1
echo '这是第二个参数:$2 = ' $2
echo '这是第三个参数:$3 = ' $3
echo '====================$#====================='
echo '参数的总个数是:$#' 
echo '====================$?====================='
echo '验证上一条命令是否执行成功' $?

程序分析

# 首先看第一行
#!/bin/bash   这是shell解释器的意思

# 第二行 输出语句打印如下信息:
下面是一个程序的测试结果:

# 第三行 read  这是交互传值,类似python的input(),而 -p:指定读取值时的提示符
由我们输入一个值然后传给address

# $n,就是 $与数字结合
$0:表示脚本名	$1:表示我们传进去的第一个值......$n:以此类推

# $#  获取参数的总个数

# $?  返回上一步的执行情况,如果是0,则说明成功运行没有错,否则是出错了

标签:soft,用户组,echo,第二天,初学,master,str,Linux,root
From: https://www.cnblogs.com/ajnq-fz/p/18600731

相关文章

  • Linux如何挂载windows共享文件夹(包含Linux报错解决)
     目录前言windows如何共享文件夹windows如何查看共享Linux端挂载共享文件夹关于挂载共享文件夹的报错解决1.关闭windows防火墙2.确认windows的CIFS文件共享功能是否开启3.检查源路径与挂载路径是否正确4.检查用户名及密码是否正确5.检查共享文件夹权限6.......
  • 【Linux】进程的状态和进程优先级
    进程状态进程状态的名词解析新建:字面意思重新创建一个进程,但是这个进程的test_struct还没有加载到运行队列中此时的状态成为新建。运行:进程的test_struct结构体被加载到可执行队列中。         阻塞:等待非CPU资源的就绪时的状态就叫做阻塞。    ......
  • Linux中vim常用命令详解
    文章目录Linux中vim常用命令详解一、引言二、Vim的工作模式1、命令模式1.1、常用命令2、输入模式3、底线命令模式三、文本编辑1、移动命令2、编辑操作3、撤销与重做四、使用示例1、查找与替换2、多文件编辑五、总结Linux中vim常用命令详解一、引言Vim是Linux......
  • Linux中vi和vim的区别详解
    文章目录Linux中vi和vim的区别详解一、引言二、vi和vim的起源与发展三、功能和特性1、语法高亮2、显示行号3、编辑模式4、可视化界面5、功能扩展6、插件支持四、使用示例1、启动编辑器2、基本操作五、总结Linux中vi和vim的区别详解一、引言在Linux系统中,vi和vim......
  • 【Linux】记录一下考RHCE的学习过程(五)
        最近伤口恢复的还可以,明天就可以去拆线了。不过眼睛还是有点不舒服。计算机硬件组成        本篇的主要内容是计算机硬件,不过一般学过计算机或者爱玩游戏的都比较熟悉这方面吧(应该)。    一般计算机硬件分为输入设备、输出设备、主机设备、外部......
  • linux/centOS7用户和权限管理笔记
    linux系列中可以:配置多个用户配置多个用户组用户可以加入多个用户中linux中关于权限的管理级别有2个级别,分别是:针对用户的权限控制针对用户组的权限控制一,root用户root用户拥有最大的系统操作权限,而普通用户在许多地方的权限是受限的二,用户组的管理(root用户执行)1.创建用......
  • linux/centOS7用户和权限管理笔记练习
    1.创建用户组bigdata2.创建用户dsj,指定基本组bigdata,附加组bigdata2,指定home目录为/home/dsj3.查看用户4.创建用户dsj2,指定基本组为bigdata2,附加组为bigdata,指定uid为24025.查看dsj2用户6.从root用户切换到dsj用户7.切回root用户 8.给dsj2用户添加密码 9.......
  • Linux_构建命令和文件-make和makefile
    安装和编译源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(makeinstall)Make可以从一个名为Makefile的文件中获得如何构建程序的知识基本概念make命令定义C/C++编译选项,C++使用C++11标准CFLAGS:=C++FLAGS:=-std=c++11Makefile文......
  • linux命令
    ipconfigserviceiptablesstop关闭防火墙serviceiptablesstart开启防火墙serviceiptablesrestart重启防火墙serviceiptablesstatus查看防火墙状态suroot切换到超级用户敲回车输入密码su普通用户切换普通用户查看用......
  • Linux 连接 远程服务器的指定IP地址和端口号
    ‌Telnet命令用于连接远程服务器的指定IP地址和端口号,其基本格式如下‌:‌telnet[远程主机IP][端口号]例如,要连接到IP地址为192.168.1.100的设备,端口号为23(默认的Telnet端口号),命令如下:telnet192.168.1.10023Telnet命令的作用‌是提供远程登录服务,用户可以通过Telnet命......