【无标题】

day5
shell
1、shell命令、shell、shell脚本的本质区别
2、shell类型
3、命令格式
注意:
Linux命令
1、用户系统相关命令
1.1 用户切换命令
1.2 系统管理命令
shell命令:是用户向内核发出的控制请求,与之交换的文本流
shell:是一个命令行解释器,将用户的指令解析为操作系统所能识别的指令(用户和内核沟通的桥梁)
shell脚本:一堆命令的集合
Bourne Shell: 最早的Shell
C Shell
Ksh
Z Shell
Bourne-again shell(bash)
命令名称 [选项] [参数];
[]:表示可以省略
选项:功能
参数:要操作的对象
(1)三者之间必须用空格隔开
(2)多个命令在一行书写,用分号(;)隔开
(3)如果一条命令不能在同一行写完,在行尾使用反斜杠(\)标明该命令为结束
su - 用户名;//切换用户
su - root <==> su - :路径以及环境变量都发生了改变
su root:路径以及环境变量为发生改变
1.2.1 查看进程
ps:显示当前系统中由该用户运行的进程列表
ps -ef:查看所有的进程及其进程号(PID)
ps aux:除可以显示-ef的内容外,还可以显示CPU及其内存的占有率
top:动态显示系统中运行的程序
pstree:以树状显示
1.2.2 kill
发送信号
1.3 磁盘相关命令
1.3 文件、目录相关命令
Linux下的7中文件类型
kill -l :列出所有的信号
free:查看当前系统内存的使用情况
fdisk:查看硬盘的分区情况(fdisk -l)
注意:使用fdisk -l时必须使用root权限
1、普通文件:-
a、ASCII文件(文本文件) b、二进程文件
2、目录文件:d
3、字符设备文件:c
4、块设备文件:b
5、链接文件:l
6、管道文件:p
7、套接字(socket) s

  • rwx rwx r-x 1 linux linux 8344 9月 5 18:33
    a.out
    文件类型 文件拥有者 文件属组用户 其他人 用户 用户所在组
    1.3.1 chmod
    作用:改变文件的访问权限
    方式1
    方式2
    1.3.2 chown
    作用:修改文件所有者和组别
    注意:使用时必须使用root权限
    (1)修改文件的所有者
    (2)修改文件的组别
    用户:u
    用户所在组:g
    其他人:o
    所有人:a
    +:增加权限
    -:删除权限
    =:设置权限
    rwx rwx r-x 有权限一般用1来表示,-表示没有权限,用0表示
    111 111 101 775
    -w- --x r-w
    010 001 101 215
    (3)同时修改用户和组别
    1.3.3 chgrp
    作用:修改组别
    注意:使用必须使用root权限
    1.3.4查看文件内容
    1.3.5 压缩打包相关命令
    压缩工具:
    注意:只能压缩文件
    (1)gzip
    压缩:
    cat 文件名:适合看比较短的文档
    more 文件名:适合看比较长的文档,按回车向下翻一行,空格向下翻一页,q退出
    less 文件名:加强版的more,合看比较长的文档,按回车向下翻一行,空格向下翻一页,支持上下键,q退

    gzip 文件名,压缩后的后缀为.gz
    bzip2 文件名,压缩后的后缀为.bz2
    解压:
    (2)bzip2
    压缩:
    tar
    作用:对文件或文件夹进行打包,打包后的后缀为.tar
    先打包
    再压缩
    解压缩:
    先解压:
    gzip -d 文件名;
    gunzip 文件名;
    bzip2 -d 文件名;
    bunzip2 文件名;
    -c:打包
    -x:解包
    -v:显示详细信息
    -f:指定包名(该参数只能放在最后一个)
    -z:调用gzip来压缩打包文件,与"-x"连用时调用gunzip完成解压缩
    -j:调用bzip2来压缩打包文件,与"-x"连用时调用bunzip2完成解压缩
    再解包:
    将打包压缩一体化:
    解压解包一体化:
    1.3.6 环境变量
    为什么在所有的路径下都认识ls?
    临时添加
    注意:一次性的,只对当前终端有效
    永久添加
    起别名
    想要永久有效的话,添加到.bashrc(家目录下)中
    1.4 硬链接和软链接
    env:查看所有的环境变量
    (1) sudo vim /etc/profile
    (2) 在文件末尾添加export PATH=$PATH:绝对路径
    (3) 重启 or source /etc/profile
    sudo reboot:重启 sudo shutdown -h now(10):立刻关机
    1.4.1 硬链接
    1.4.2 软链接
    1.4.3 创建硬链接
    1.4.4 软链接
    1.4.5 软链接和硬链接的区别
    1.5 shell中的特殊字符
    利用Linux中为每个文件分配的物理编号–inode建立链接
    利用文件的路径名建立链接,注意:必须是绝对路径
    相同点:
    ln命令会保持每一处文件的同步性,也就是说不论改动了哪一处,其它文件都会发生相同的变化
    不同点:
    软链接会在用户选定的位置上生成一个文件镜像,不会重复占用磁盘空间,平时用的最多的就是软链接
    硬链接会在用户选定的位置上生成一个和源文件大小相同的文件(不是拷贝,起了个别名)
    grep 字符串 文件:从指定的文件中查找特定的字符串
    -n:显示行号
    wc -c:统计文件中有多少个字符
    wc -l:统计文件有多少行
    ``:反引号,当作命令来处理
    输出重定向 追加重定向 输入重定向

<
如果文件不存在,则新建,如果
文件存在,则会覆盖文件中的内

如果文件不存在,则新建,如果
文件存在,则会追加在文件的末

wc < file1,将file1中的
内容作为输入传给wc命

1.5.1 管道
1.5.2 重定向
输出重定向
追加重定向
输入重定向
2>或&>
|:一般不单独使用,将前一个命令的输出作为后一个命令的输入
1.5.3 通配符
注意:以上除了*,其余匹配的都是一个字符
1.6 网络配置
测试是否有网
查看Linux下IP地址

  • 匹配任意长度的字符串
    ? 匹配一个长度的字符
    []:匹配其中指定的一个字符
    [ - ]:匹配指定的一个字符范围
    [^]:除了其中指定的字符,均可匹配
    ifconfig
    windows下查看IP地址
    Linux下的网络配置
    ipconfig
    (1)虚拟机–>设置–>网络适配器
    (2)编辑–>虚拟网络编辑器

配置静态IP
Windows下网络配置
2、共享文件夹
(1)直接拖
(2)共享文件夹
虚拟机–>设置–>选项–>共享文件夹(/mnt/hgfs)
(3)winscp
3、Linux用户管理
新建用户
(1)/etc/passwd 系统能够识别的用户清单
(2)/etc/shadow 加密的用户清单
(3)/etc/group UNIX组的名称和每个组成员列表
sudo adduser 用户名;
修改用户密码
删除用户
新建组
修改用户所在组
删除组
day6
sudo passwd 用户名
sudo deluser --remove-home 用户名;//删除时连同主目录一起删除
sudo groupadd 组名;
sudo usermod -g 目标组 被改用户;
sudo groupdel 组名;
1、shell脚本
1.1 如何创建shell脚本
(1)创建脚本文件(1.sh)
(2)编辑脚本文件(vim 1.sh)
(3)执行的时候发现没有可执行权限,需要人为添加
(4)运行
1.2 变量
1.2.1 用户自定义变量
shell允许用户建立 变量存储类型,但它不支持数据类型(int、float),所有赋值给变量的值都会被解
释为一串字符
命名规范
注意:
(1)要取用一个变量的值,只需在变量名前加一个$即可
(2)等号的左右两侧不能有空格
C语言(强类型语言–>对数据类型分的很清楚),需要编译 gcc 1.c ./a.out
shell脚本(弱类型语言),不需要编译,直接运行
chmod 777 1.sh or chmod u+x 1.sh
./1.sh
(1)由数字、字母,下划线组成,首位不能为数字
(2)一般shell变量用大写表示
1.2.2 位置参数
1.2.3 预定义变量
$#:包含命令行参数的个数
$@:包含所有命令行参数
$*:包含所有命令行参数
$$:包含正在执行的进程的ID号
? :包含前一个命令的退出状态,正常退出返回 0 ,反之为非 0 ( 0 为真,非 0 为假) 1.2.4 环境变量案例案例 21.3 s h e l l 程序和语句在家目录下创建一个 m y d i r 文件夹,在该文件夹中创建 1. t x t ,然后向 1. t x t 中写入 " h e l l o s h e l l " 1 、将交叉编译工具链压缩包拖到虚拟机的某个目录下 2 、打开终端,进入该目录 3 、解压 s u d o t a r − x j v f s t a g i n g d i r . A R 9331 − A L 3 A . t a r (名字根据实际文件名替换)注意:解压时,压缩包的名字可以使用 t a b 键自动补全 4 、解压成功后,就会有一个“ s t a g i n g d i r ”的目录,将解压后的文件名修改为 O p e n W r t 进入到该目录,直到进入 t o o l c h a i n − m i p s 中的 b i n 目录 5 、使用 p w d 命令,得到该目录的绝对路径,并将该目录的绝对路径拷贝下来 6 、 s u d o v i m / e t c / p r o f i l e 7 、在该文件的末尾加上 e x p o r t P A T H = ?:包含前一个命令的退出状态,正常退出返回0,反之为非0(0为真,非0为假) 1.2.4 环境变量 案例 案例2 1.3 shell程序和语句 在家目录下创建一个mydir文件夹,在该文件夹中创建1.txt,然后向1.txt中写入"hello shell" 1、将交叉编译工具链压缩包拖到虚拟机的某个目录下 2、打开终端,进入该目录 3、解压 sudo tar -xjvf staging_dir.AR9331-AL3A.tar(名字根据实际文件名替换) 注意:解压时,压缩包的名字可以使用tab键自动补全 4、解压成功后,就会有一个“staging_dir”的目录,将解压后的文件名修改为 OpenWrt 进入到该目录,直到进入toolchain-mips中的bin目录 5、使用pwd命令,得到该目录的绝对路径,并将该目录的绝对路径拷贝下来 6、sudo vim /etc/profile 7、在该文件的末尾加上 export PATH= ?:包含前一个命令的退出状态,正常退出返回0,反之为非00为真,非0为假)1.2.4环境变量案例案例21.3shell程序和语句在家目录下创建一个mydir文件夹,在该文件夹中创建1.txt,然后向1.txt中写入"helloshell"1、将交叉编译工具链压缩包拖到虚拟机的某个目录下2、打开终端,进入该目录3、解压sudotarxjvfstagingdir.AR9331AL3A.tar(名字根据实际文件名替换)注意:解压时,压缩包的名字可以使用tab键自动补全4、解压成功后,就会有一个stagingdir的目录,将解压后的文件名修改为OpenWrt进入到该目录,直到进入toolchainmips中的bin目录5、使用pwd命令,得到该目录的绝对路径,并将该目录的绝对路径拷贝下来6sudovim/etc/profile7、在该文件的末尾加上exportPATH=PATH:/home/linux/staging_dir/toolchain-mips_34kc_gcc-5.3.0_musl1.1.14/bin
注意:“KaTeX parse error: Expected 'EOF', got '#' at position 104: …成功 1.3.1 说明性语句 #̲:表示注释 1.3.2 功能性…n并非脚本中的$n
(2)函数中的所有标准输出都会传递给主程序中的变量
while [表达式]
do
语句
done
方式1:
函数名()
{
语句
}
方式2:
function 函数名()
{
语句
}
注意:一般使用最多的是方式2
方式1:
变量名=函数名 参数列表
方式2:
函数名 参数列表
注意:一般使用最多的是方式2
案例
1、判断用户主目录是否有file-dir和dir-dir目录
如果这两个目录存在,询问是否删除这两个目录
如果用户的是Y,将这两个目录删除,重新创建这两个目录
如果是N,取消删除
如果上述的目录不存在,则创建这两个目录
2、请用户输入一个路径,将这个路径下的文件拷贝到file-dir这个目录,将
这个路径下的目录拷贝的dir-dir目录
3、统计拷贝的文件和目录的个数
#!/bin/bash
for dir in $HOME/file-dir $HOME/dir-dir
do
if [ -d $dir ]
then
read -p "是否删除该目录
" op
case $op in
Y|YES|y|yes)
rm -r $dir
mkdir $dir
;;
N|NO|no|n)
echo “用户取消删除”
;;
esac
else
mkdir $dir
fi
done
fileCount=0
dirCount=0
read -p "请输入一个路径:
" pathname
flist=ls $pathname
for list in $flist
do
if [ -f p a t h n a m e / pathname/ pathname/list ]
then
cp p a t h n a m e / pathname/ pathname/list $HOME/file-dir
fileCount=expr $fileCount + 1
elif [ -d p a t h n a m e / pathname/ pathname/list ]
then
cp -r p a t h n a m e / pathname/ pathname/list $HOME/dir-dir
dirCount=expr $dirCount + 1
fi
done
echo “fileCount = $fileCount”
echo “dirCount = $dirCount”

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

公子 魏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值