14.华清嵌入式--shell指令

接下来我们开始学习shell相关的知识,那么shell是什么??怎么操作呢?开始今天的学习吧。

一.shell相关常识

1.了解什么是shell?

linux中shell就是linux内核的一个外层保护工具,负责完成用户与内核之间的交互。

shell是一个命令行解释器,将用户命令解析为操作系统所能理解的指令,实现用户与操作系统的交互。

 

2.用户 shell 和linux之间的关系

 

3.常见的几种shell版本

bourne shell,(sh)

c shell(csh)

korn shell(ksh)

bourne again shell //目前主要用这个,sh发展而来

 

4.shell命令之前的文件和目录的一些指令我们接触过了,还有一些装逼用的命令

sudo shutdown -h now //立即关机

sudo shutdown -r now //立即重启

sudo reboot now //立即重启

sudo shutdown -h +45 “that is all,game over” //定时关机

whomi //用户名

hostname //主机名

pwd //当前目录

 

二.shell命令格式

 

1.例:

 

linux@ububtu:~$

用户名,主机名:~(我们的家目录为我们根目录下home目录下的某个用户的目录 /home/linux,)$为用户权限(普通用户),超级用户会变为#。

 

2.通常一个shell包括命令名称,选项,参数。

3.shell命令格式

指令严格区分大小写。

一条命令的三要素之间用空格隔开

多个命令一行书写,用分号(;)将指令隔开(ls -l;cd ..)

一条指令不能写完在行尾用反斜杠(\)标明该行未结束.

 

三.shell命令行操作

补全命令与文件名(tab )

查询历史命令(方向键,history显示最近的指令)

history 默认记录500条

echo $HISTSIZE //查看当前容量

shell将历史命令保存在环境变量HISTSIZE中

可通过HISTSIZE=100修改历史命令容量(修改的为临时的)

想要永久修改需要修改配置文件 ~/.bashrc,这时修改的为永久的。

 

 

四.shell中的特殊字符(提高效率)

1.shell中的通配符(shell脚本中运用较多)

 

例:ls file*  ls file?  ls file_[ax] 等

 

 

2.shell中的管道

管道可以把一系列命令连接起来,意味着第一个命令的输出将作为第二个命令的输入等

使用管道可以巧妙的将一些命令联合使用

 

ls /usr/bin | wc -w //得到/usr/bin目录下文件的个数

 

 

3.输入输出重定向

重定向是改变命令或程序默认的标准输入输出,重定义到新目标。

例:本来终端打印,改到保存到文档里。

 

>file //如果file中有内容,先清空再保存,新建模式

ls >file ……cat file//查看下保存内容的文件

 

>>file 追加模式(内容添加到文件内容后)

 

<file 输入源

cat <file //将file中的文件打印了一下

 

2> 或&> //标准出错

ls hello 2>file //将报错信息保存到file

ls -l filew.text wrong.txt >right.text 2>wrong.tet//打印的正确信息和错误信息分别保存在不同文件

 

4.命令置换

将一个命令的输出作为另一个命令的参数

ls `pwd‘//查看当前目录文件(pwd的结果作为ls的参数,也可以写为ls $(pwd))

 

例如:

查看当前时间

echo “today is data” //结果:today is data

echo “today is `data`”;//today is mon feb 22 ……..

 

 

五.shell基本系统维护命令

1.man //获取联机帮助

man ls //查看ls使用,:q退出帮助界面

帮助信息包含以下内容

NAME:命令名称

SYNOPSIS:命令的语法格式

DESCRIPTION:命令的一般描述以及用途

OPTIONS:描述命令所有的参数或选项

SEE ALSO:列出联机版主页中与该命令直接相关或者相近命令

BUGS:问题及缺陷

EXAMPLES:普通用法示例

AUTHORS:联机帮助页以及命令的作者

 

2.passwd

sudo passwd //修改密码

 

3.su //临时改变用户身份,exit命令切换回来

su  //不加用户名默认切换到超级用户

 

4.echo 显示一段文字,起提示作用

echo “hello” //打印出hello

echo -n “hello” //打印完不换行

 

例:

A=3

echo $A //终端打印3

 

5.

data 用于显示和设置系统日期和时间

sudo data -s 5:30:40 //修改时间

 

6.clear 清屏(或者使用ctrl+L)

 

7.df 查看磁盘空间使用情况

-a 显示所有文件系统的使用情况

-T显示文件格式类型

-h 大小按兆字节显示

-k 大小按千字节为单位显示

例:

从以下命令的执行结果可以看到,这台计算机只有一块硬盘(/dev/sda1),文件格式类型为Ext3,已经使用36%的存储空间。

          

              linux@ubuntu:~$ df –T

              文件系统    1K-块    已用        可用    已用%    挂载点

              /dev/sda1    ext3     7850996  2664868   4787316   36%    /

 

8.

du 列出目录和文件所使用的磁盘块数,每块512字节

-a 列出空闲文件数

-h 列出磁盘使用情况

-s 列出总的空闲空间(kb)

 

 

六.Linux用户管理

1.用户管理相关文件

/etc/passwd 文件是系统能够识别的用户清单, 用户登陆时,系统查询这个文件,确定用户的UID并验证用户口令( 1)登陆名 2)经过加密的口令 3)UID 4)默认的GID 5)个人信息 6)主目录 7)登陆shell)

用户属性(用户名 口令 用户ID 用户主目录 用户shell)

/etc/group 包含了UNIX组的名称和每个组中成员列表

每一行代表一个组(组名 加密口令 GID号 成员列表)

 

sudo adduser newuser //添加newuser为新用户

/etc/adduser.conf 配置文件

 

/etc/skel目录被/usr/sbin/useradd使用

这个目录存有新用户常用的一些配置(环境变量,Vim配置等)

 

 

2.用户管理相关命令

su linux //切换到linux用户下

exit //回到之前用户

sudo passwd linux //为liux修改新密码

 

 

修改用户属性

sudo usermod -d /home/test -m -l test linux 修改用户名为test和家目录

 

删除用户

sudo deluser -remove-home test  //删除test用户

 

添加用户组

sudo addgroup group

 

删除用户组

sudo delgroup group

 

 

七.进程管理相关指令

1.进程概念

程序的一次执行就是一个进程

 

使用命令查看进程

(1).ps 显示进程的动态

ps  -elf

ps  aux   

以上两种都是显示进程动态,只是显示遵循的标准不一样

 

进程的状态标志

(D:不可中断的静止 R:正在执行中 S:阻塞状态 T:暂停执行

z:僵尸,资源未释放 <:高优先级进程 N:低优先级进程 L:有内存分页分配并锁在内存中)

 

(2).top 实时监测进程(q退出)

 

(3).pstree //树形方式演示进程信息,查看进程间关系

 

(4).cd  /proc/ (进程相关信息存储的位置,实质)

 

(5).

kill [-signel] PID //终止进程(发送杀死信号终止进程)

kill -9 PID //发信号杀死

kill -L //查看kill支持的信号

 

 

 

八.文件系统的类型和结构

1.文件系统:用于组织和管理计算机存储设备上的大量文件,并提供用户交互接口

 

linux支持的文件系统格式

磁盘文件系统:硬盘,DVD,磁盘等(常见文件格式FAT FAT32 NTFS,EXT3,)

网络文件系统:网络远程访问的文件系统(格式:NFS,Samba)

虚拟文件系统:不驻留在磁盘上的文件系统

 

文件系统类型:Ext4 linux上常用的文件格式

 

sata硬盘的设备名称 /dev/sda

IDE硬盘设备名称是 “/dev/hda”

/dev/hab_1 表示第二个IDE硬盘的第一个分区

 

cat /proc/partitions //查看硬盘设备具体信息

 

交换分区:将内存中的内容写入硬盘,或从硬盘中读出,称为内存交换

 

2.linux 文件系统结构:

树形分层结构

windows下,目录结构属于分区

linux下,分区属于目录结构(分区挂载在目录下)

 

linux中将所有设备都视为文件来处理(一切皆文件)

 

文件分层结构标准(FHS)

 

 

绝对路径和相对路径

绝对路径:文件在文件系统中的准确位置(pwd查看)

相对路径:相对于用户当前位置的一个文件

 

 

 

 

九.文件系统相关命令

 

  1. file命令 //判定一个文件的类型

flie 1.c  file destop/

 

mkdir dir

mkdir -p dir1/dir2/dir3 (创建多层目录)

rmdir -p dir1/dir2/dir3(删除多层目录,但是各层目录要为空)

rm -r dir1 //同样可以删除目录,不要求各层目录为空

   

  1. ln命令

两种类型的链接:(动态库经常用到链接)

硬链接:利用linux为每个文件分配的物理编号(备份)-inode建立链接,不能跨越文件系统。

软链接(类似快捷方式):文件路径名建立链接(绝对路径),增加可移植性

 

ln 1.c copy_link //建立硬链接,内容相同,源文件改名字,链接无影响,删除再重建文件,链接失效(inode已经改变)

inode节点:磁盘—》进行分区—》分区为单位建立文件系统—》每个文件给一个唯一的inode编号

注:硬链接和cp不是一回事(cp后会占用新的内存,新的inode,可跨越文件系统拷贝,硬链接实际是增加了原来文件的count(链接数))

ln -s 1.c test_link //建立软链接,内容相同,源文件改名字,链接失效,删除在重新创建源文件,链接有效。

  1. 文档的归档和压缩

gzip  gunzip

 

gzip test.c //压缩为.gz的压缩包

gunzip test.gz //解压文件

bzip2 test.c //压缩为.bz2压缩包

bunzip2 test.c.bz2 解压文件

 

zip file.zip test.c

unzip file.zip 

  1. tar 命令(归档和压缩功能)

       

 

例:tar -czf d1.tar.gz d1

解压:tar -xvzf d1.tar.gz 等

 

tar  –cf   myExamples.tar      myExamples

 

 

十.linux网络配置

无论命令行还是图形界面,最后都是通过修改网络配置文件配置网络

如: /etc/interfaces , /etc/hosts, /etc/resolv.conf

 

配置IP地址:

静态IP,动态IP

 

ifconfg //查看IP

ifconfig eth1 //只看eth1网卡的相关信息

 

sudo ifconfig eth0 192.168.1.129 netmask 255.255.255.0 //配置IP和掩码(临时生效)

sudo dhclient //动态获取IP(电脑寻找 DHCP房东,多个房东给你分配一个房子(IP),电脑觉得A房东的不错确认要租这间,A房东和电脑确认签协议)

 

无论是配置静态IP还是动态IP想永久生效,就要修改配置文件

1./etc/network/interfaces (静态直接读取配置文件参数,动态就通过DHCP获取网络配置)

例:简要说明

配置文件中动态配置

auto eth0

iface eth0 inet dhcp

 

静态获取IP配置

auto eth0

iface eth0 inet static

address 192.168.0.129

netmask 255.255.255.0

gateway 192.168.0.1

 

2.DNS服务器的指定

/etc/resolv.conf 文件中替换相应的服务器地址

nameserver 192.168.0.1

 

3.sudo vi /etc/rc.local

echo “nameserver 192.168.0.1”>> /etc/resolv.conf (将DNS服务重定向到DNS文件,使每次都写这个服务器)

 

修改完后

sudo /etc/init.d/networking restart //使刚才的修改生效

 

但是我执行完这条指令没有返回ok,重启后IP配置成功了,但是没有外网。

最后使用图形界面配置的静态IP,但是为什么图形界面好用。(按说都是操作文件,不应该啊)

 

 

ping 命令

判断网络是否通畅(ctrl+C打断)

 

nslookup //根据域名获取对方主机IP地址

nslookup www.baidu.com

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值