Linux学习笔记——常用命令

自己从大二开始玩单片机,一路Arduino、51玩到STM32,虽然性能越来越强大,但是所能做的事都过于局限。
而像树莓派这样的Linux小主机,可以利用海量的Python库文件,能点灯,能做视觉处理、机器学习和科学计算。也逐渐认识到系统的强大,也慢慢不局限于做一些小作品。
目标是嵌入式Linux,利用Python库做科学计算处理。
暂且定一个小项目,用Linux主板做偏振测量仪器的中心处理,加图像显示。

Linux终端常用命令

正点原子

命令描述补充
ls目录信息
ls -a显示目录所有文件,包括隐藏和.开头的
cd进入目录Tab联想文件名
cd …/返回上一级
pwd当前路径显示命令
uname系统信息查看命令
clear清屏
cat显示文件内容ctrl+d 退出
sudo切换用户
sudo suroot用户
sudo su yajoer切回用户yajoer
touch创建文件touch a.c
mkdir创建目录
cp拷贝cope
rm删除rm a.c
rm -rf强制删除rm -rf test/
rm /* -rf删库跑路
rmdir删除目录
mv移动movemv a.c b.c重命名
man查看命令所有选项
ifconfig显示网络配置信息命令
reboot重启
poweroff关机
man系统帮助命令
sync数据同步写入磁盘命令
find查找文件命令find -name a.c
grep查找内容命令grep -nr “Ubuntu” /
du查看文件大小du -sh test1/
df磁盘空间检查命令
gedit用gedit打开某文件gedit a.c
ps查看当前系统进程
top进程实时运行状态查看Q退出
file文件类型查看命令file a.c

ctrl + c 打断终端进程

韦东山

韦东山的视频简洁精炼,废话少很多,但是细节赘述

命令描述
pwd显示当前所在目录(文件夹)
ls显示当前目录下的文件
cd切换路径
cd…返回上一级目录
mkdir test新建目录(文件夹)
touch text1.c新建文件
gedit text1.c编辑文件
cp text1.c text2.c复制(cope)
cat text1.c将文件内容显示到终端
rm text1.c删除文件
rmdir删除目录(文件夹)
clear清屏
man查看命令所有选项

shell

查看路径

echo $PATH
env

运行C程序

cd /home/book/
cd Desktop/ 进入桌面
ls
gcc -o hello hello.c
hello
-/hello 相对路径
-/hello yajoer
/heme/book/Desktop/hello yajoer 绝对路径

hello.c

#include <stdio.h>
int main(int argc,char **argv)
{
	if(argc >= 2)
		printf("Hello,&s!\n",argv[1]);
	else
		printf("Hello,world!\n");
	return 0;
}

设置PATH

  1. 临时设置
export PATH=$PATH:/home/book
  1. 永久设置,修改PATH文件
sudo gedit/etc/environment
将:/home/book添加到最后

Shell 循环

for((i=0;i<10;i++))

ctrl + T 打开终端

Linux命令格式

book@yajoer:~$ ls -l /home
用户名连接符主机名连接符目录(home)普通用户命令command选项options参数constant
book@yajoer:~$ls-l/home

man ls 查看命令ls的所有选项

VMware配置Ubuntu

CPU一处理器 多核(和win五五分)
内存4G以上
硬盘100G以上

屏幕自适应

sudo apt-get instanll open-vim-tools
sudo apt-get instanll open-vim*
reboot

升级系统

更新系统

sudo do-release-upgrade

清理无用安装包

sudo apt-get remove
python
命令描述
quit()退出python
shift+ZZ保存修改内容并退出

常用英文单词

directory目录
change改变
list列出
print打印
remove删除
cope拷贝
move移动
clear清楚
pwdprint working directory打印当前所在目录

9、Ubuntu 下磁盘管理(21/7/14)

Linux只支持文件系统为FAT32的U盘

cd /dev
ls sd*

其中sdb表示U盘,sdb1表示U盘的第一个分区
df 命令 磁盘空间检查命令
du命令 查看目录下文件的大小
du -h --max-depth=1 查看最大深度为1的文件大小

1. 磁盘的挂载(mount)和卸载(umount)

卸载:

sudo umount /media/yajoer/U盘名

挂载:

sudo mount /dev/sdb

2. 磁盘的分区(fdisk)

sudo fdisk -l
sudo fdisk /dev/sdb
需要先卸载U盘再操作

3. 磁盘的格式化(mkfs)

mkfs --help
sudo mkfs -t vfat /fev/sdb1

10、 Ubuntu下压缩和解压缩(21/7/15)

零、Linux常用压缩格式:

.tar、.bz2、.gz
需要再win下安装7zip工具

一. gzip压缩工具(.gz)

文件压缩

gzip xxx	压缩
gzip -d xxx 解压缩
gzip -r xxx 递归操作,对文件夹内所有文件压缩(不打包)

二. bzip压缩工具(.bz2)

bzip --help
bzip -z a,c 压缩
bzip -d a.c	解压缩

三、tar打包工具,也支持压缩

tar --help 查看帮助文档
tar -c 归档
tar -x 提取
-j bzip格式压缩
-z gzip格式压缩
-v 打印过程
-f 使用归档文件

常用操作

tar -vcjf test.tar.bz2 test 压缩
tar -vxjf test.tar.bz2 test	解压
tar -vczf test.tar.gz test 压缩
tar -vxzf test.tar.gz test 解压

四、其他格式的压缩和解压缩

  1. rar格式
sudo apt-get install rar 安装rar
rar a test.rar test		压缩
rar	参看帮助文档 
rar x test.rar 解压

zip格式

-r 递归
-v 打印过程
zip -rv test.zip test 压缩
unzip test.zip 解压

11讲、Ubuntu用户与用户组(21/7/16)

一、Linux用户类别和权限

  • 初次创建用户
  • root用户:可创建普通用户
  • 普通用户
sudo gedit /etc/passwad

每个用户都有一个ID,叫GID。

二、用户组

三、创建用户和用户组

图形化操作,在app中有用户和组的应用程序
命令操作

adduser 创建用户
finger 查看用户信息
passward 修改用户密码
deluser 删除用户

addgroup 添加用户组
groups 显示用户组
delgroups 删除用户组

12讲、Ubunt文件权限(21/7/16)

1. 文件的三种状态:读(r)、写(w)、执行(x)

ls a.c -l 查看a.c文件的权限

2、Ubuntu文件权限修改

  1. 修改文件权限命令(chmod)
  2. 修改文件所属用户(chown)

13讲、Linux连接文件(21/7/16)

一、连接类型

符号链接(软):相当于win的快捷方式
硬链接:
inode:记录文件属性,相当于ID

二、ln命令

ln --help

三、硬链接

多个文件指向同一个inode
修改硬链接中的任一个文件,都会被修改

gedit hello.c
gcc hello.c -o hello
ls
ln hello hello1
ln hello hello2
ll --help
ll -i hello* 参看inode
ln

四、符号连接(软)

ln -s /home/yajoer/hello hello2
快捷方式

软连接创建时最好用绝对路径,否则移动后找不到原来路径。

14讲、Vim编辑器(21/7/18)

尝试安装Ubuntu 20.04双系统,失败告终。使用Rufus创建启动U盘时,分区类型应该选择MBR,否则关闭快速启动和安全启动后,仍然看不到U盘选项。
最终失败原因为,安装Ubuntu需要关闭英特尔快速存储技术,而win10显然依赖该技术,担心文件损失,遂放弃,网上有相关解决方法,但是未尝试。
在这里插入图片描述
嵌入式Linux有着便宜且稳定的特性,可接入广泛的库文件,优势巨大。
Ubuntu 20.04自带vi编辑器,vim编辑器
编辑器有三种工作模式:

1. 一般模式:

进入文档默认一般模式,可按Esc进入

vi tect.c 创建并编辑
:x 保存并退出
:q 退出
:q! 不保存退出
:w 保存文档
:wq 保存并退出
cat ect.c 显示内容
dd 删除行
ndd 删除n行
yy 复制行
nyy 复制n行
p 复制到光标下一行
P 复制到光标上一行

2. 编辑模式

a 在光标后插入字符(常用)
A
i 在光标前插入字符
I
o
s
r
Esc 退出到一般模式
不保存关闭终端,会产生.txt.swp文件

15讲、Linux C编程(21/7/18)

一、编写C程序

vi main.c

设置TAB键,显示行号

sudo vi /etc/vim/vimrc
在最后面添加
set ts = 4 设置TAB键为4空格
set nu  显示行号

二、编译C程序

gcc编译器,gcc -v查看版本,可检查语法错误
预处理、汇编、编译、链接

-c 只编译不链接生成可执行文件,生成.out文件
-o<链接文件> 生成链接文件,不生成.out文件

16讲、make工具和Makefile的引入(21/7/18)

三、Makefile基础

GNU make是一个自动化编程软件

vi Makefile 创建Makefile文件,区分大小写
make 编译,会判断文件最后时间,只编译修改文件
make clean 清楚命令,需要写在Makefile 中

17讲、Makefile 基本语法(21/7/19)

参考书籍:跟我一起写Makefile 作者:陈皓

一、规则格式

main:main.o input.o calcu.o
	gcc -o mian main.o input.o caclu.o
按Tab键

二、Makefile 变量

不需要int、char定义,$(temp)使用变量

  1. 赋值符"="

取决于最后一次赋值

temp = main.o input.o calcu.o
main:$(temp)
	gcc -o $(temp)
  1. ":="赋值符

只使用前面的赋值,不使用后面定义的变量

  1. “?=”
name ?= yajoer

如果变量name未被赋值,赋值为yajoer,否则使用前面的赋值

  1. “+=” 变量的追加

三、模式规则

一条规则将所有C文件编译成O文件
"%"相当于通配符

%.o:%.c

四、自动化变量

$@ 常用
$%
$< 依赖文件,常用
$?
$^ 常用
$+
$*
%.o:%.c 依赖.c文件
	gcc -c %<
将所有C文件编译成O文件

五、Makefile 伪目标

当目录存在文件名为clean的文件,执行make clean不会执行清楚命令
将clean 命名为伪目标

.PHONY:clean 即使重复命名,也会执行
clean: 无依赖文件
	rm *.o 删除所有.o文件
	rm main 删除main链接文件

六、Makefile条件判断

七、函数使用

18讲、shell脚本入门(21/7/19)

一、shell脚本

类似win的批量处理文件,连续执行的命令写成一个文件,提供数组、循环、条件判断

二、shell脚本写法

扩展名:.sh
第一行:#!/bin/bash
echo “hello world!” 在终端显示字符
./my.sh 执行

三、shell脚本语法

  1. 写一个shell脚本
vi my.sh 创建文件并进入
a 进入编辑
#!/bin/bash 
echo "hello world!"
Esc 
:wq
./my.sh
  1. 交互式shell脚本
#!/bin/bash 
echo "please input name:"
read name
echo "your name: $name"
read -p "input your name age and heights" age heights
  1. 数值计算 $(())
total = $(($first + $second))
echo "$first + $second = $total"
  1. test命令
    cmd1 && cmd2 cmd1执行且正确,才执行cmd2
    cmd1 || cmd2 cmd1执行且错误,才执行cmd2
test -e $name && echo y || echo n
  1. 中括号[ ]判断符
    [ $first == $second ] “==” “!=”
  2. 默认变量
    0   0~ 0 n
    $0 为my.sh的名字
    $# 最后一个变量的标号
    $@ 除$0外所有变量

19讲、shell脚本条件判断、函数和循环

一、if语句

  1. if
#!/bin/bash 
if[ 条件判断 ];then
//
fi
  1. if else
if[ 条件判断 ];then
//
else
//
fi
  1. if elif else
if[ 条件判断 ];then
//
elif
//
else
//
fi
  1. case语句
case $变量 in
	"a")
		//
		;;
	"b")
		//
		;;
esac

二、脚本函数

function fname(){
//
}
fname a b 传递参数

三、shell循环

  1. while 条件成立一直执行
while[条件]
do
//
done
  1. utill 条件不成立时一直执行
utill[条件]
do
//
done
  1. for循环
for name in a b c d
do
	echo "$name"
done
for((i=0;i<10;i++))
do
//
done
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值