Linux/Shell

shell

shell简介

Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核

shell实现对Linux系统的大部分管理例

1. 文件管理

2. 用户管理

3. 权限管理

4. 磁盘管理

5. 软件管理

6. 网络管理

shell脚本优势

批量处理,自动化减少人为失误

shell底层的实现原理

shell底层也是用c语言实现的

shell注意事项

1、Shell脚本的开头必须先输入 #!/bin/sh 或 #!/bin/bash 。

2、#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。/bin/bash指明解释器的具体位置。

3、完成脚本后,要使脚本具有执行权限

$ sudo chmod +x ./test.sh

4、运行shell脚本时,两种方式,例如脚本名为test.sh:

./test.sh 或者 sh test.sh

5、使用变量名时,最好在变量名前加$

6、保存退出 :wq

不保存退出:q!

7、开始输入字符:i/inter键—插入,a—输入下一个字符,o—在下一行输入字符。

8、Linux允许将命令执行结果重定向到一个文件,将本应显示在终端上的内容输出/追加到指定文件中,其中:

> #表示输出,会覆盖文件原有的内容

>> #表示追加,会将内容追加到已有的文件的末尾。

9、脚本内一行中可输入多句命令,用 ; 隔开即可。

10、推荐给所有变量加上花括号

有无;都是一样的

11、$# 显示传递的参数的总个数

$* 将传递的参数均列出来

$@ 将传递的参数均列出来

{$* 和 $@ 都表示传递给函数或脚本的所有参数。但当它们被双引号(" ")包含时,表现有所不同。详情可见

shell语法注意事项
变量赋值

必须有空格

[ ]表示条件测试。注意这里的空格很重要。要注意在'['后面和']'前面都必须要有空格

[ ]表示条件测试。字符串、数值、逻辑运算 中间的符号(= 、eq、 )前后都统一加空格;

花括号

获取变量值都加上花括号{},便于阅读,也容易出错;

双引号

“$” "\" "." 有特殊含义,其他没有特殊含义;echo “${name}” 输出tongy

规范:所有变量引用都加双引号 "${name}"

规范:所有的变量赋值,要是字符串都加引号 name="tongy"

单引号、反引号 “ ` ”

单引号:所有的字符都没有特殊含义;echo ‘${name}' 输出${name}

双引号:“$” "\" "." 有特殊含义,其他没有特殊含义;echo “${name}” 输出tongye;规划所有变量引用都加双引号

反引号:反引号中用来引用系统命令,其中的内容会被优先执行,功能和$()一样。规范的写反都用$()来表示

shell语法
  1. 变量:字符串、数字、环境和参数;

  1. 条件:shell中的布尔值;

  1. 程序控制:if、elif、for、while、until、case;

  1. 命令列表;

  1. 函数;

  1. Shell内置命令;

  1. 获取命令的执行结果;

  1. Here文档;

主要的环境变量

$HOME 当前的家目录

$PATH 以冒号分隔的用来搜索命令的目录列表

$0 shell脚本名字

$# 参数的个数

$$ Shell脚本的进程号,脚本程序通常会用它来生成一个唯一的临时文

字符串比较

st1 = st2 判断两个字符串是否相等

st1 != st2 判断不相等

-n st 如果字符串为空,结果为真

-z st 如果字符串韦null 结果为真

算术比较

expression1 -eq expresssion2 两个表达式相等为真

expression1 -ne expresssion2 两个表达式不相等为真

expression1 -gt expresssion2 1大于2 结果为真

expression1 -ge expresssion2 1大于等于 结果为真

expression1 -lt expresssion2 1小于2 结果为真

expression1 -le expresssion2 1小于等于2 结果为真

!expression 表达式为真,则结果为假,反之

文件条件测试

-d file 文件是一个目录结果为真

-e file 文件存在为真

-f file 文件为普通文件为真

-g file 文件的set-group-id位被设置为真

-u file 文件的set-user-id位被设置为真

-r file 文件可读为真

-s file 文件大小不为0为真

-w file 文件可写 为真

-x file 文件可执行为真

控制结构
1、if

if [ 条件判断式 ]

then

语句

fi

2、if -else

if [ 条件判断式 ]

then

语句1

else

语句2

fi

3、if-elif-else

语句1

elif [ 条件判断式2 ];then

语句2

elif [ 条件判断式3 ];then

语句3

……

else

语句e

fi

4、case

case $变量名 in

"值1")

语句1

;;

"值2")

语句2

;;

……

*)

语句*

;;

esac

5、while

while [ 条件判断式 ]

do

语句

done

6、for

注意:在for循环中表达式不需要使用-gt -ne等等 可以使用 = > >= 等

7、for in

for 变量 in 计算值1 计算值2 计算值3 ……

do

语句

done

命令
  1. break

  1. :

  1. .continue

  1. echo

  1. eval

  1. exec

  1. exit n

  1. export

  1. expr

find主要选项和常用测试

-depath 查看目录之前先搜索目录本身

-follow 跟随符号链接

-maxdepaths N 最多搜索n层目录

-mount (-xdev) 不搜索其他目录下的文件

-atime N 文件在N天之前被最后访问过

-mtime 文件在N天之前被最后修改过

-user username 文件的拥有者是指定的用户username

最常用的特殊符号

^ 指向一行的开头

$ 指向一行的结尾

. 任意单个字符

[]方括号内包含一个字符范围,其中任何一个字符都可以被匹配;

linux常用命令

目录操作

切换目录 cd

查看目录 ls

-l 列出文件详细信息 或者直接ll

-a 列出当前目录下所有文件及目录,包括隐藏的a(all)

创建目录 mkdir

-p 创建目录,若无父目录,则创建p(parent)

输出信息 echo

打印文件到命令行(查看文件) cat

改变文件所属用户 chown

改变文件所属组 chgrp

下载文件 wget

在文本文件中查找某个字符串 grep

统计文本中行数、字数、字符数 wc

部分显示 more/less

查找文件 find / -name 'auto.cnf'

创建空文件 touch

复制文件 cp

移动或重命名 mv

删除文件 rm

-r 递归删除,可删除子目录及文件

-f 强制删除

删除空目录 rmdir

树形结构显示目录,需要安装tree包 tree

显示当前目录 pwd

创建链接文件 ln

分页显示文本文件内容 more、less

显示文件头、尾内容 head、tail

vim操作

进入编辑器 vi/vim,vim三种模式:命令模式、插入模式、编辑模式。使用ESC或i或:来切换模式。

进入编辑模式插入 i

退出编辑模式 esc

保存:后面输入w

退出:后面输入q

不保存退出:后面输入q!

显示行号 set number

查找关键字 /xxxx 按n跳到下一个,shift+n上一个

复制光标所在行,并粘贴 yyp

h(左移一个字符←)、j(下一行↓)、k(上一行↑)、l(右移一个字符→)

打包压缩相关命令

打包压缩 tar\gzip\bzip2

-c归档文件

-x 压缩文件

-z gzip压缩文件

-j bzip2压缩文件

-v 显示压缩或解压缩过程 v(view)

-f 使用档名

例:

只打包,不压缩:tar -cvf /home/abc.tar /home/abc

打包,并用gzip压缩:tar -zcvf /home/abc.tar.gz /home/abc

打包,并用bzip2压缩:tar -jcvf /home/abc.tar.bz2 /home/abc

如果想解压缩,就直接替换上面的命令 tar -cvf / tar -zcvf / tar -jcvf 中的“c” 换成“x” 就可以了。

Linux管道

将一个命令的标准输出作为另一个命令的标准输入。也就是把几个命令组合起来使用,后一个命令除以前一个命令的结果。

例:grep -r "close" /home/* | more 在home目录下所有文件中查找,包括close的文件,并分页输出。

三种基本权限

R:读,数值表示为 4

W:写,数值表示为 2

X:可执行,数值表示为1

后台运行

运行 nohup command >out.file 2>&1 &

退出 ps -ef |grep 关键字 |awk '{print $2}'|xarg kill -9

服务方式运行

设置开机启动 systemctl enable

启动systemctl start

关闭systemctl stop

系统管理命令

显示指定文件的详细信息,比ls更详细 stat

显示在线登陆用户 who

显示当前操作用户whoami

显示主机名hostname

显示系统信息uname

动态显示当前耗费资源最多进程信息top

显示瞬间进程状态 ps \ ps -aux

查看目录大小 du -h /home (带有单位显示目录信息)

查看磁盘大小 df -h (带有单位显示磁盘信息)

查看网络情况 ifconfig

测试网络连通 ping

显示网络状态信息 netstat

命令不会用了,看文档 如:man grep

防火墙

查看防火墙状态 firewall-cmd --state

停止防火墙 systemctl stop firewalld.service

禁止firewall开机启动 systemctl disable firewalld.service

关机和重启

关机 shutdown -h now

-r 关机重启

-h 关机不重启

now 立刻关机

重启 reboot

关机 halt

网络配置

查看网卡信息 ifconfig

网络配置 /etc/sysconfig/network-script/ifcfg-eth0

配置网卡 /etc/udev/rules.d/70-persistent-net.rules

用户管理

创建用户 useradd

设置密码 passwd

存储组账号 /etc/group

系统用户配置文件 /etc/passwd

存储用户账号的密码 /etc/shadow

存储用户组账号的密码/etc/gshadow

用户名useradd

用户名userdel

用户名adduser

组名groupadd

组名groupdel

更改文件的用户及用户组

chown

sudo chown [-R] owner[:group] {File|Directory}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值