小工具      在线工具  汉语词典  dos游戏  css  js  c++  java

Linux简介与shell脚本

Linux,linux,unix,服务器 额外说明

收录于:17天前

Linux

分配系统资源并协调计算机内部所有细节的计算机程序称为操作系统或内核。

hardware:硬件,比如屏幕显示,键盘输入等
kernel:内核,负责连接硬件和内核,只有通过内核才能操作硬件
shell:可以理解为一个框架(更多的翻译将其翻译为壳),通过这个框架外层的应用可以调用内核

应用程序:应用程序,例如数据库(DBMS)、邮件服务(mail)等,可能需要使用硬件。这种情况下就必须通过shell调用内核来操作硬件。

内核:内核是操作系统的核心。它与硬件和大多数任务像内存管理任务调度和文件管理交互。
Shell:shell 是用于处理您的请求的实用程序。当您在您的终端键入命令时,Shell 将命令解释并调用你想要的程序。Shell 使用标准语法的所有命令。C Shell, Bourne Shell 和 Korn Shell 是最著名的 shell ,适用于大多数 UNIX 变体。
命令和实用程序:有各种各样的命令和实用程序可供您使用。cp, mv, cat 和 grep 等是命令和实用程序的几个例子。有超过 250 标准命令,再加上通过第三方软件提供的其他命令。所有的命令都跟着各种可选的选项。
文件和目录:在 UNIX 中的所有数据被都组织到文件中。所有文件被都组织到目录中。这些目录被组织成一个称为文件系统的树状结构。

在这里插入图片描述
如何在图形模式和文本模式之间切换
Linux预设提供了六个命令窗口终端机让我们来登录。

默认情况下,我们登录到第一个窗口,即 tty1。这六个窗口是 tty1、tty2...tty6。您可以按 Ctrl + Alt + F1 ~ F6 进行切换。

如果您安装了图形界面,则默认进入图形界面。此时可以按Ctrl+Alt+F1~F6进入其中一个命令窗口界面。

当进入命令窗口界面并返回图形界面时,只需按Ctrl+Alt+F7即可返回。

如果使用的是vmware虚拟机,切换命令窗口的快捷键是Alt+空格+F1~F6。如果您处于图形界面,请按 Alt + Shift + Ctrl + F1~F6 切换到命令窗口。

Linux 关机

同步将数据从内存同步到硬盘。

shutdown shutdown 命令,可以使用 man shutdown 来阅读帮助文档。例如,您可以运行以下命令 > shutdown:

shutdown –h 10 ‘此服务器将在 10 分钟后关闭’ 该命令告诉每个人计算机将在超过 10 分钟后关闭,并将显示在登录用户的当前屏幕上。

shutdown –h now 立即关闭

shutdown –h 20:25 系统将于今天 20:25 关闭

关机 –h +10 十分钟后关机

shutdown –r now 系统将立即重新启动

Shutdown –r +10 系统将在十分钟后重新启动。

reboot的意思是重启,相当于shutdown –r now

halt 关闭系统,相当于 shutdown -h now 和 poweroff

Linux远程登录

在Linux系统中,远程登录功能是通过ssh服务实现的。默认 ssh 服务端口号为 22。

SSH是Secure Shell的缩写,由IETF网络工作组开发; SSH是一种基于应用层的安全协议。 SSH 是一种更可靠的协议,旨在为远程登录会话和其他网络服务提供安全性。使用SSH协议可以有效防止远程管理过程中的信息泄露。 SSH最初是UNIX系统上的一个程序,并迅速扩展到其他操作平台。

Linux 文件基本属性

ls- l  #查看详细信息

在这里插入图片描述

它们从左到右用数字 0-9 表示。

位 0 确定文件类型,位 1-3 确定拥有文件权限的所有者(文件的所有者)。

位4-6确定该组(所有者同一组中的用户)对该文件具有权限,位7-9确定其他用户对该文件具有权限。

其中第1、4、7位代表读权限。如果用“r”字符表示,则具有读权限。如果用“-”字符表示,>则表示没有读权限;

第2、5、8位代表写权限。如果使用“w”字符,则表示有写权限。如果使用“-”字符,则表示没有写权限。第3、6、9位代表可执行权限。如果用“x”字符表示的话,则具有执行权限。如果用“-”字符表示,则没有执行权限。

更改文件属性

  • chgrp:更改文件的组
chgrp [-R] 属组名文件名
# -R:递归更改文件属组,就是在更改某个目录文件的属组时,目录下的所有文件的属组都会更改。
  • chown:更改文件所有者,同时也可以更改文件组
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
  • chmod:更改文件的9个属性

九个权限分别是(1)用户(2)组(3)其他三种身份!那么我们就可以用u、g、o来代表这三个身份的权威了!

另外,a代表all,即所有身份!那么读写权限就可以写成r,w,x!即可以使用如下方法查看:

在这里插入图片描述

chmod u+x file
chmod u+[r/w/x] file
chmod g-[r/w/x] file
...

Linux 文件与目录管理

  • 绝对路径:
    路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。
  • 相对路径:
    路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd …/man 这就是相对路径的写法

处理目录的常用命令

ls: 列出目录
cd:切换目录
pwd:显示目前的目录
mkdir:创建一个新的目录
rmdir:删除一个空的目录
cp: 复制文件或目录
rm: 移除文件或目录
mv: 移动文件与目录、文件重命名
可以使用man [command]查看各个命令的使用文档,如:man cp。

CP详细解释:

在这里插入图片描述
mv详细解说
在这里插入图片描述

# mv [参数] 来源 目标
mv mvtest mvtest2
# cp [参数] 源头 目标
cp ~/.bashrc /tmp/bashrc
cp -i ~/.bashrc /tmp/bashrc

rm详细解释:
在这里插入图片描述

[root@www tmp]# rm -i bashrc
rm: remove regular file `bashrc'? y

在这里插入图片描述

** vi 文本编辑器**
vi 是老式的字处理器,使用vi [文件名]进入编辑窗口,按键i进入编辑模式。Esc切换模式,有编辑模式和命令模式,按键Shift+:进入命令模式。w保存,q退出,!使命令强制执行。
在这里插入图片描述
vi是系统自带的文本编辑器,用于写程序时并不方便。vim用于程序开发的编辑器,可以主动的以字体颜色辨别语法的正确性,方便程序设计。

不同Linux的发行版本时不一样的,如Ubuntu是apt-get install,删除是apt-get remove
CentOS则是yum installyum -e .
在这里插入图片描述

Shell脚本

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
在这里插入图片描述
不同于gome桌面的GUI操作,shell是交互式的编程语言,用于操作Linux内核。Linux内核中都有shell解析器,因此可以直接解析shell命令或文本,文本需要声明。Linux shell脚本众多,Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。同时,Bash 也是大多数 Linux 系统默认的 Shell。

shell文本是可执行程序,没有声明将被视为无效关键字。运行 shell 脚本有两种方法:

  1. 直接运行文件
chmod +x ./test.sh  #使脚本具有执行权限
./test.sh  #执行脚本

# 必须带 / 是告诉系统路径下找.s的脚本并运行,必须带文件的后缀,不然会当路径处理
# 如果文件就在当前目录直接 ./ [文件名即可],不再当前目录文件路径要写对
  1. 作为解释器参数
# 最为解析器参数,就是告诉系统这就是个可执行的脚本
. test.sh
bash test.sh
source test.sh
sh test.sh 

执行文件文件系统

ls    查看目录,
ls -l   查看目录详细信息
cd  切换目录
vi 编辑文件
cat 查看文件内容

Shell作为用户界面,实际上是一个解释器(Interpreter,如Linux下常用的Bash),可以解释分析用户键盘输入,执行输入的命令,然后返回结果。

Shell脚本已经写好了,名为test.sh(vi test.sh)

有几种方法可以执行它

. test.sh
bash test.sh
source test.sh

就像python解析器解析.py文件python test.py一样

但是普通用户没有运行权限,ls -l可查看权限,可用chmod u+x [文件名]增加权限。

chmod +x 和 chmod u+x的区别?
在这里插入图片描述
不同权限的文件有不同颜色:
在这里插入图片描述

蓝色表示目录;
绿色表示可执行文件,可执行的程序;
红色表示压缩文件或包文件;
浅蓝色表示链接文件;
灰色表示其它文件;

//赋予权限后自行编辑的文件变绿色就可以执行了

在这里插入图片描述

传递参数

$用于传递参数,注意范围

test.sh
echo "paramter $0"

. test.sh zhansan
//执行命令行后传递参数

$1  $2 ...依次传递的位置

$#   为传递的参数的所有个数
$@    为传递的所有参数的内容
$?    为最近一次计算结果
$*  传递的参数作为一个字符串显示

$自定义参数名  为内部传参

数组
数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组)。

# Shell 数组用括号来表示,元素用"空格"符号分割开
array=(A B "C" D)

# 也可以使用下标来定义数组
array[0]=value0
array[1]=value1
array[2]=value2

# 通过下标读取数组元素值
array[0]

# 使用@ 或 * 可以获取数组中的所有元素
echo "数组的元素为: ${array[*]}"
echo "数组的元素为: ${array[@]}"


# 获取数组的长度
echo "数组元素个数为: ${
     #array[*]}"
echo "数组元素个数为: ${
     #array[@]}"


shell运算

expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
在这里插入图片描述

 `...` 反单引号为调用系统工具,还有$()也是。
sum=`expr 2+3`

# 运算实例
a=10
b=20

val=`expr $a + $b`
echo "a + b : $val"

val=`expr $a - $b`
echo "a - b : $val"

val=`expr $a \* $b`
echo "a * b : $val"

val=`expr $b / $a`
echo "b / a : $val"

val=`expr $b % $a`
echo "b % a : $val"

if [ $a == $b ]
then
   echo "a 等于 b"
fi
if [ $a != $b ]
then
   echo "a 不等于 b"
fi

乘号() 前面必须有一个反斜杠 () 来实现乘法; if...then...fi 是一个条件语句,后面会解释。在 MAC 中,shell 的 expr 语法为:$((表达式)),其中表达式中的 "" 不需要转义符号 “” 。

条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]

运算符
在这里插入图片描述
注意()范围

逻辑运行算符
在这里插入图片描述
<=>=开口或缺口对的地方要加空格,如果是字符串两边都不要空格。

在这里插入图片描述
比较运行算符
在这里插入图片描述
循环

  • for循环
    在这里插入图片描述

  • while循环
    在这里插入图片描述
    0本身只代表数字[ 0 ]才代表true,break跳出循环,continue跳出本次循环。

在这里插入图片描述
在这里插入图片描述

条件语句
在这里插入图片描述

if []
then
	...
elif
then
	...
else
	...
fi

//then也可以和判断写在一行用;隔离开
if [] ; then

在这里插入图片描述
都可以用breakcontinue跳出循环或本次循环。

文件测试运算符
文件测试运算符用于检测 Unix 文件的各种属性。
在这里插入图片描述
输出命令
Shell echo命令用于字符串的输出:

# 显示普通字符串
 echo "It is a test"
# 显示转义字符
  echo "\"It is a test\""

# 显示结果定向至文件
echo "It is a test" > myfile  # >覆盖 >> 追加

# 命令执行结果
echo `date`
echo $(date)

printf 命令模仿 C 库中的 printf() 程序。 printf 使用带引号的文本或空格分隔的参数。 printf中可以使用格式化字符串,还可以指定字符串的宽度、左右对齐等。默认情况下printf不会像echo那样自动添加换行符,我们可以手动添加\n。

printf  format-string  [arguments...]

printf "Hello, Shell\n"

# 类型个格式控制
# %s %c %d %f都是格式替代符
#%-10s 指一个宽度为 10 个字符(-表示左对齐,没有则表示右对齐),
	#任何字符都会被显示在 10 个字符宽的字符内,如果不足则自动以空格填充,
	#超过也会将内容全部显示出来。

#%-4.2f 指格式化为小数,其中 .2 指保留 2 位小数。

printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg  
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234 
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543 
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876 

#### 结果:
姓名     性别   体重kg
郭靖     男      66.12
杨过     男      48.65
郭芙     女      47.99

Shell test命令
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

功能

//函数定义
[ function ] funname [()]

{
    

    action;

    [return int;]

}
# 可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
# 参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值

在这里插入图片描述

常用符号详解

$0  shell本身文件名
$? 最后运行命令的返回值
$! shell最后运行的后台process的PID
$$ shell本身的pid
$#  shell的参数个数
$@ 所有参数列表, 以"$1 $2$n"的形式输出所有参数,此选项参数可超过9个
$*   所有参数列表, 以"$1" "$2""$n" 的形式输出所有参数

$()` `bash shell 中,$( )` ` (反引号) 都可用做命令替换用。 ` ` 基本上可用在全部的 unix shell 中使用,若写成 shell script ,其移植性比较高,但反单引号容易打错或看错。
$()并不是所有shell都支持。

${ }

$[] $(()) $[]和$(())是一样的,都是进行数学运算的。
支持+ - * / %(“加、减、乘、除、取模”)。
但是注意,bash只能作整数运算,对于浮点数是当作字符串处理的。

[ ] 为test命令的另一种形式,但要注意:
1.必须在左括号的右侧和右括号的左侧各加一个空格,否则会报错。
2.test命令使用标准的数学比较符号来表示字符串的比较,而用文本符号来表示数值的比较。
3.大于符号或小于符号必须要转义,否则会被理解成重定向。


(( ))[[ ]] 
分别是[ ]的针对数学比较表达式和字符串表达式的加强版。

[[ ]]中增加模式匹配特效;

(( ))不需要再将表达式里面的大小于符号转义,除了可以使用标准的数学运算符外,还增加了以下符号:

在这里插入图片描述
命令

. . .

相关推荐

额外说明

【Golang】基于OAuth2.0微信扫码实现客户端用户登录(原理+代码实现+视频讲解)

前言: 细心汇总,包括原理+配置+代码详细实现 文章目录 原理讲解 什么是OAuth2.0 解决方案 授权码模式讲解 认证流程 Go语言实现微信扫码登录 1. 内网穿透配置 2. 微信测试账号申请 3. 验证和微信服务器连接 二维码生成 回调地址 测试

额外说明

数据库json、视图

1 什么是JSON?      JSON是一种轻量级的数据交换格式,全称为JavaScript Object Notation(JavaScript对象表示法)。它以易于阅读和编写的文本格式来表示结构化数据,常用于Web应用程序之间的数据传输。  JSO

额外说明

程序员如何过码农特色的中秋? ‍

程序员如何过码农特色的中秋? --‍- 程序员如何过码农特色的中秋? --‍- 摘要 - 引言 - 创意月饼DIY:代码与美食的完美融合 - 1. 编程主题月饼设计 ✨ 2. 月饼模具3D打印 -️ 编程赏月:利用技术观赏中秋圆月 - 1. 月相跟踪应用

额外说明

【java】输入输出

普通的输入输出 package test; import java.util.*; // java的输入输出 public class test { public static void main(String[] args) { Sca

额外说明

三种不同数据库取前10条记录

oracle取前十条记录  select rownum,t.* from tableName t where rownum <=10   mysql取前十条记录   select t.* from tableName t  limit 10   sql取

额外说明

国科大.算法设计与分析:Valid Parenthesis String(C++实现)

给定一个由(、)、*组成的字符串,其中*可以是左括号、右括号或空字符,问该字符串是否是合法的。 实现如下: #include <iostream> using namespace std; bool judge(string str) { int c

额外说明

实用指南:在Windows平台上搭建轻NAS,实现可道云私有云盘的内网穿透公网访问

文章目录 1.前言 2. Kodcloud网站搭建 2.1. Kodcloud下载和安装 2.2 Kodcloud网页测试 3. cpolar内网穿透的安装和注册 4. 本地网页发布 4.1 Cpolar云端设置 4.2 Cpolar本地设置 5. 公网

额外说明

(五)二叉树的广度优先遍历的递归实现与迭代实现

102.二叉树的层序遍历 107.二叉树的层次遍历II 199.二叉树的右视图 637.二叉树的层平均值 429.N叉树的层序遍历 515.在每个树行中找最大值 116.填充每个节点的下一个右侧节点指针 117.填充每个节点的下一个右侧节点指针II 10

额外说明

Linux【命令篇】—— Linux操作系统常用指令大全

目录 一、关机与重启指令 (1)shutdown - 关机 (2)halt - 关机 (3)reboot - 重启 (4)sync - 将内存的数据同步到磁盘 二、帮助指令 (1)man - 查看某个命令的帮助手册 (2)help - 查看某个命令的帮助

额外说明

vue-nocaptcha_如何在WordPress中添加NoCAPTCHA来阻止垃圾评论

vue-nocaptcha Do you find CAPTCHA hard to use and annoying? What if we told you there is a new method that’s just as effective

ads via 小工具