前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux Shell备忘录

linux Shell备忘录

原创
作者头像
yuann
修改2021-04-12 16:21:31
4970
修改2021-04-12 16:21:31
举报
文章被收录于专栏:one roadone road

一、shell命令

代码语言:txt
复制
1. mount: 挂载存储媒体

2. umount: 移除存储媒体

3. df -h : 显示已挂在的分区列表及使用情况(占了多少了)

5. du: 显示特定目录的磁盘使用情况 

6. sort: 排序数据 

7. grep: 搜索数据 

8. bzip2(.bz2) , compress(.Z) , gzip(.gz) , zip(.zip): 压缩数据,只能压缩单个文件
或者某个目录中的文件,或者是能有通用符表示的多个文件。

9. tar: 归档数据(将多个文件归档进单个文件)

10. file:查看文件类型

11. cat,more,less: 查看整个文件

12. tail,head:查看部分文件

13. uname -a 查看当前服务器信息,-a全部

14. date 查看日期  date -s time1 修改时间

15. 关机: shutdown -h now、init 0、telinit 0 

16. 重启: shutdown -r now、 reboot

17. 注销: logout

18. tree显示目录树形结构

19. mkdir -p direcotory1/directory2 创建文件夹,-p是递归创建

20. 删除文件:rm -f file1、删除目录:rmdir dir1、 删除目录及下挂文件:rm -rf dir1

21. ln -s file1 link1 为文件或目录创建软连接

22. 创建用户:useradd user1, 删除用户:userdel -r user1 (-r 排除主目录)

23. passwd user1 修改user1的密码

24. chmod -R 所有者(111)|所有者所在组(101)|公共用户(101) file1    111是二进制,分别代码 读  写  执行 权限,-R是将目录及下挂都改变。   

25. tar -zxvf xxx.tar.gz 解压   tar -czvf test.tar.gz  a 将a 压缩为test.tar.gz

26. centOS:  yum -y install xxx  从源下载xxx,其中-y代表默认全选yes   ubuntu: apt-get install xxx

27. ifconfig 显示以太网卡配置,如果是ifconfig eth0 ,就是显示具体的eth0的配置

28. ifup eth0 启用网卡eth0,ifdown eth0 禁用网卡eth0

30. top: 实时监测进程 
(1)第一行显示系统的概况:第一行显示当前时间、系统运行时间、登录的用户数以及系统的平均
负载(三个值代表最近1min、5min、15min)如果近15min内的平均负载都很高,说明系统可能有问题。
(2)第二行显示了进程概要信息:有多少进程处在运行、休眠、停止或是僵化状态
(3)第三行显示了CPU的概要信息。
(4)第四行是系统的物理内存:总共多少内存,当前用了多少,还有多少。
(5)第五行是系统交换空间内存:总共多少内存,当前用了多少,还有多少。
(6)第六行显示当前运行中的进程纤细列表:
	PID:进程ID; 
	USER:进程属主名字; 
	PR:进程优先级; 
	NI:进程的谦让值; 
	VIRT:进程占用的虚拟内存总量; 
	RES:进程占用物理内存总量; 
	SHR:进程和其他进程共享的内存总量; 
	S:进程的状态(D可中断休眠,R运行,S休眠,T跟踪或停止,Z僵化); 
	%CPU:进程使用CPU时间比例; 
	%MEM:进程使用的内存占用内存的比例; 
	TIME+:自进程启动到目前位置的CPU时间总量; 
	COMMAND:进程对应的命令行名称。

二、Linux环境变量

1.全局变量:

代码语言:txt
复制
显示全局变量:env、printenv
代码语言:txt
复制
显示全局变量具体值(显示PATH):printenv PATH、echo $PATH

2.设置用户变量:

代码语言:txt
复制
var1 = "haha"
代码语言:txt
复制
获取则$var1或者${var1}

3.设置PATH变量 :

代码语言:txt
复制
PATH=$PATH:/home/christine/Scripts 。 只能持续到退出或者重启系统。

三、构建基本脚本

1.创建shell脚本文件:

(1)第一行:

代码语言:txt
复制
	#! /bin/bash

(2)使用变量:

代码语言:txt
复制
	环境变量: 在变量名前加美元符$来使用这些环境变量。
	用户变量: var1=10,用户变量可通过美元符引用,在shell脚本结束时会被删除掉。
	命令替换:将命令输出赋给变量:反引号字符``或者$()

(3)重定向输入和输出:

代码语言:txt
复制
	输出重定向 : >(写入文件) , >>(追加)
	输入重定向 : <(基本输入) , <<(内联输入重定向)

(4)管道(  |  ):

代码语言:txt
复制
	将一个命令的输出作为另外一个命令的输入,如 ls -l | more

(5)执行数学运算:

代码语言:txt
复制
	expr命令 : expr 1 \* 2 , expr 1 + 5
	使用方括号 : var1=$[1 + 5] var2=$[$var1 * 2]
	
    浮点: 使用bc计算器,设置小数位: scale=4
	在脚本中使用bc,基本格式:
	variable=$(echo “options; expression” | bc)
	例如:var1 = $(echo "scale=4; 3.44/5" |bc)

(6)退出脚本:

代码语言:txt
复制
	exit 0 表示默认正常退出
	exit命令:允许在脚本结束时指定一个退出状态码,如 exit 5

2.if命令:

(1)if语句:

代码语言:txt
复制
    if [ condition ] ####注意空格,第一个方括号后和第二个方括号前都要加一个空格,否则会报错。
    then command1
    elif  [ condition2 ] 
    then command2
    else
       command3
    fi

(2)if的条件:

数值比较

代码语言:txt
复制
    n1 -eq n2  检查n1是否与n2相等 (equal)
    n1 -ge n2  检查n1是否大于或等于n2 (great equal)
    n1 -gt n2  检查n1是否大于n2 (greater than)
    n1 -le n2  检查n1是否小于或等于n2 (less equal)
    n1 -lt n2  检查n1是否小于n2 (less than)
    n1 -ne n2  检查n1是否不等于n2 (not equal)

字符串比较

代码语言:txt
复制
    str1 = str2 检查str1是否与str2相同
    str1 != str2 检查str1是否与str2不同
    str1 < str2 检查str1是否比str2小
    str1 > str2 检查str1是否比str2大
    -n str1 检查str1的长度是否非0
    -z str1 检查str1的长度是否为0

文件检查

代码语言:txt
复制
	定义一个文件:file=/root/Desktop/Scripts
    -d file          检查file是否存在并是一个目录
    -e file          检查file是否存在
    -f file          检查file是否存在并是一个文件
    -r file          检查file是否存在并可读
    -s file          检查file是否存在并非空
    -w file          检查file是否存在并可写
    -x file          检查file是否存在并可执行
    -O file          检查file是否存在并属当前用户所有
    -G file          检查file是否存在并且默认组与当前用户相同
    file1 -nt file2  检查file1是否比file2新
    file1 -ot file2  检查file1是否比file2旧

(3)复合条件测试:

代码语言:txt
复制
    [ condition1 ] && [ condition2 ]  ## 逻辑与
    [ condition1 ] || [ condition2 ]  ## 逻辑或

(4)高级if判断

高级数学表达式需要用双括号判断,如:

代码语言:txt
复制
    val++  后增,    val--  后减,    ++val  先增,    --val  先减
    !  逻辑求反,    ~  位求反,      **  幂运算,    <<  位左移
    >> 位右移,     &  位布尔和,    |  位布尔或,  && 逻辑和,  || 逻辑或

3.case命令:

特殊字符(--)表明选项列表结束

代码语言:txt
复制
	case $USER in
     root | barbara)
        echo "Welcome, $USER"
        echo "Please enjou you visit";;
     --) shift
	     break ;;
     testing)
        echo "Special testing account";;

	   *)
		   echo "sorry,you're not allowed here";;

和switch很像,然后在case的枚举后面,用)代表一个case完。一个case的comman后面加上;;,default应该是*)

4.循环命令:

for:

代码语言:txt
复制
    for var in list
    do
    commands
    done

while:当test_command为true的时候执行命令

代码语言:txt
复制
    while test_command 
    do 
    other commands
    done

until当当test_command为true的时候不执行命令

代码语言:txt
复制
    until test_command
    do
    other commands
    done

5.命令行参数

$0是程序名,$1是第一个参数,以此类推。当参数个数超过10以后,需要在变量数字周围加上花括号,如${10},如果输入到命令行的参数是字符串且含有空格,需要使用引号。

代码语言:txt
复制
例子: sh haha.sh 1 2 "3 4"这样子

6.特殊参数变量

(1)$#:命令行参数的个数

(2)${!#}:最后一个参数

(3)$*:变量会将命令行上所提供的所有参数当作一个单词保存。相当于sh haha.sh 1 2 "3 4" 参数数量为1,也就是 1 2 "3 4"这一个参数。

(4)$@:变量将命令行上提供的所有参数当作同一个字符串中的多个独立的单词。相当于sh haha.sh 1 2 "3 4" 参数数量为3,也就是 1,2, "3 4"这3个参数。

7.移动变量

shift:每个参数变量向左移动一个位置,$3的值会移到$2中,$2会移到$1中,而$1的值则会被删除,无法再恢复。

代码语言:txt
复制
    #! /bin/bash
    count=1
    while [ -n "$1" ]
    do
      echo "Parameter #$count = $1"
      count=$[ $count + 1 ]
      shift
    done

代码里相当于就是遍历了所有参数了。

8.获得用户输入

read命令从标准输入或者另一个文件描述符中接受输入。

代码语言:txt
复制
    #! /bin/bash
    ## read 命令
    echo -n "please enter your name: "
    read name
    echo "Hello $name,welcome to my program"
    ## -p 选项允许直接在read命令行指定提示符
    read -p "Please enter your age:" age
    day=$[ $age * 365 ]
    echo "that makes you over $day days old"
    ## 如果在read命令行不指定变量,read命令把它收到的任何数据都会放在REPLY中
    read -p "Enter your name: "
    echo "Hello $REPLY,welcome to my program"
    ## -t选项设置超时
    if read -t 5 -p "Please enter you name:" name
    then
       echo "Hello $name,welcome to my script"
    else
       echo 
       echo "sorry,too slow"
    fi
    ## -n选项设置读取的字符个数
    read -n1 -p "Do you want to continue [Y/N]:"  ##-n和1一起使用,表示read在接受单个字符后退出
    ## -s选项隐藏方式读取,通常用于输入密码
    read -s -p "Enter your password:" pass
    echo "Is your password really $pass"
    ## 从文件中读取,通常使用cat命令将结果通过管道直接传给含有read命令的while命令
    count=1
    cat test14_2.sh | while read line
    do 
       echo "Line $count: $line"
       count=$[ $count + 1 ]
    done

四、呈现数据

1.日志输出:

0 STDIN 标准输入

1 STDOUT 标准输出

2 STDERR 标准错误

代码语言:txt
复制
	### 2>表示将错误重定向到test4文件,1>表示将标准输出重定向到test5文件
	ls -al test badtest 2>test4 1>test5
	### &>会将所有的输出发送到同一个文件,包括错误和数据
	ls -al test test3 test4 badtest &> test7

2.在脚本中重定向输出

(1)临时重定向,使用&

(2)永久重定向,使用exec命令

代码语言:txt
复制
exec 2>testerror #重定向标准错误

3.阻止命令输出

xxxx >/dev/null,将数据重定向到/dev/null。

4.后台模式

在命令后加上 & 符就可以了,终端会话推出,后台进程也会随之退出。

五、函数

1.创建函数与使用

代码语言:txt
复制
    ## 创建函数,注意函数名和大括号中间有空格,不然会报错
    function func1 {
       echo "this is an example of funciton"
    }
    ## 使用函数
    func1

2.返回值

(1)返回退出默认值:

代码语言:txt
复制
    ## 函数默认退出状态码,返回函数执行的最后一条命令
    func2() {
       echo "trying to display a non-existent file"
       ls -l badfile
    }
    func2
    echo "the exit status is: $?" ##$?为函数默认推出状态码

(2)使用return 命令

代码语言:txt
复制
	 ## 使用return命令,需要函数一结束就取返回值,并且返回值必须是0-255
    function db1 {
       read -p "Enter a value:" value
       echo "doubling the value"
       return $[ $value * 2 ]
    }
    db1
    echo "the new value is : $?"

(3)使用函数输出

代码语言:txt
复制
    function db2 {
       read -p "Enter a value: " value1
       echo $[ $value1 * 2 ]
    }
    result=$(db2)
    echo "the new result is $result"

3.在函数中使用变量

(1)向函数传递参数

代码语言:txt
复制
$(func1 10 15)、$(func1 $1 $2)

(2)变量类型

在脚本中定义的所有变量都是全局变量,如果需要局部变量,则在变量声明前加上local关键字:local temp=5

4.数组和函数

(1)接收数组:thisarray=($(echo "$@")) $@就是按数组获取输入

(2)打印数组:${thisarray*}

5.import外部库

通过source命令,替代import,导入库文件。那么就可以用库文件的方法了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、shell命令
  • 二、Linux环境变量
    • 1.全局变量:
      • 2.设置用户变量:
        • 3.设置PATH变量 :
        • 三、构建基本脚本
          • 1.创建shell脚本文件:
            • 2.if命令:
              • 3.case命令:
                • 4.循环命令:
                  • 5.命令行参数
                    • 6.特殊参数变量
                      • 7.移动变量
                        • 8.获得用户输入
                        • 四、呈现数据
                          • 1.日志输出:
                            • 2.在脚本中重定向输出
                              • 3.阻止命令输出
                                • 4.后台模式
                                • 五、函数
                                  • 1.创建函数与使用
                                    • 2.返回值
                                      • 3.在函数中使用变量
                                        • 4.数组和函数
                                          • 5.import外部库
                                          领券
                                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档