嵌入式Linux学习】Linux基础知识(总结版)

网友投稿 489 2022-05-28

实用小技巧

后台运行程序,以signal 应用程序为例

./signal & // 后台运行 ps -A | grep signal // 查看进程 ID,假设是 9527 kill -9 9527 // 给这个进程发信号

1

2

3

查看分区信息

sudo fdisk -l 侧重显示分区表的信息

df -h侧重显示挂载点

查看CPU使用率

top

某个进程的CPU使用率显示 0.0% ,并不是说不使用 CPU 了,只是因为使用率太小了, CPU 使用率可能为0.00001%,但是只显示出小数点后一位,因此就显示成了 0.0%。

常用清理命令

sudo apt autoclean: 将已删除软件包的.deb安装文件从硬盘中删除; sudo apt clean: 同上,但会把已安装的软件包的安装包也删除掉; sudo apt autoremove: 删除为了满足其他软件包的依赖而安装,但现在不再需要的软件包; sudo apt remove [软件包名]: 删除已安装的软件包(保留配置文件); sudo apt --purge remove [软件包名]: 删除已安装包(不保留配置文件)。

1

2

3

4

5

6

7

常用安装命令

sudo dpkg -i ××× //安装软件包 sudo dpkg --list //查看所有已安装软件 sudo apt install --reinstall ××× //安装一半后,终止再安装 sudo apt install -f //修复依赖关系

1

2

3

4

不小心锁定了输入终端

在vim输入过程中可能会习惯按下ctrl+s保存,会发现在输入任何字符都没有反应了,此时进入了锁定终端模式!

按下ctrl+q退出锁定终端模式

vim操作【更详细操作,参考菜鸟教程】

命令模式下

复制当前行yy,多行的话nyy

粘贴p

剪切某一行dd,剪切某个单词dw

删除一行dd

撤销u,反撤销ctrl+r

查找/×××,n是下一个,N上一个

下一页 - [Page Down];上一页 - [Page Up] ;移动至本行开头字符 - [Home];移动至本行结尾字符 - [End]

【嵌入式Linux学习】Linux基础知识(总结版)

数字+方向键实现跳转

10 + ↑ 向上跳转10行

10 + ↓ 向下跳转10行

10 + ← 向左跳转10个字符

10 + → 向右跳转10个字符

移动到某一行 nG

移动到最后一行G

可视化【配合上下左右键】

字符可视化模式(v):文本选择以字符为单 大专栏 vim可视化模式位。

行可视化模式(shift + v):文本选择以行为单位。

块可视化模式(ctrl + v):文本选择以块(矩形)为单位。

一些文件的作用

开机就要启动的应用

编辑/etc/fstab

linux内核启动后,需要启动一些服务

/etc/init.d/rcS

操作技巧

终端操作

打开一个终端:ctrl+Alt+T

在同一个窗口打开多个终端:clrl+Shift+T

切换到第一个终端: Alt + 1

返回到上一次的工作目录:cd -

修改时间戳,但不修改文件的实质内容:touch ×××

备份某个文件:cp ××× ×××_bak

重命名某个文件:mv xxx yyy

编译

V=1 用于设置编译过程的信息输出级别

-j 用于设置主机使用多少个核编译

驱动编写完成后,可以多加载卸载几次,测试驱动!

Linux两个基本思想

一切皆文件

目录、块设备、进程、线程、管道等都可被视为一个文件

每个软件都有确定的用途

常用命令

-r逐层遍历、-n显示行号

man ××可查看某一个命令的帮助手册

ls -l ×××【显示xxx的详细信息(a表示显示隐藏)。若未指定×××,则显示全部!】

加入参数a,即ls -l ... 即可显示隐藏文件信息!

还可以配合通配符一起使用,如ls -al h*,显示h开头的文件详细信息。

fdisk -l【显示磁盘信息】

ifconfig > test2.log,将网络配置文件的输出写入到test2.log文件中

/dev/null相当于回收站

tree -L 2显示2层目录树

jobs查看后台进程

在命令后加&,则直接在后台运行。如,gedit log2.txt &

管道

××× | grep -i "×××"【用来查找含有某字符串的变量】

ps -ef | more实现翻页【空格】

ps -ef | less实现翻页【上下按键或空格】【输入/×××可用于查找某个字符】

pwd显示当前绝对路径,若当前路径是链接,则使用pwd -p显示实际路径

mkdir -p 路径名,有了-p参数,即使后面的路径中有些文件夹不存在,它会自动创建。

rm - rf ×××删除某个文件

cp

cp log1 dir2,log1是文件,dir2是文件夹

cp ../dir3/log2 .当前目录是dir2,实现将dir3目录的log2文件拷贝到当前dir2目录。

cp log2 /home/clay/log1将log2文件复制到/home/clay目录下,并实现

复制并重命名

若源文件是目录,必须加-r参数。cp -r /etc .将tec目录下的全部文件复制到当前目录

-a参数和-r参数是一样的

cp -s log1 log.link将log1复制成一个

软链接【快捷方式】

cp -u ~/.bashrc .bashrc当发生两个文件不一样,才会进行复制。

mv

mv dir3 dir2将dir3目录下的全部文件移动到dir2目录

touch

创建新文件

touch xxx

> xxx

cat > file这个也可以完成创建新文件的操作

改变现有文件的时间戳

touch log1创建log1文件

touch file(1..5).txt创建file1~file5文件

stat log1可以用来查看log1的创建、修改和最后访问时间

file【识别文件类型,辨别文件编码格式】

ln链接(https://blog.csdn.net/gao_zhennan/article/details/79127232)

ln -s log log_link创建一个指向log的软链接

ln log log_link创建一个指向log的硬链接

查找命令

命令名查找 which

which ls

文件名查找 whereis locate find【whereis和locate利用数据库查找,速度快。find利用硬盘查找速度慢!】

whereis bash

刚建立或者刚更名的文件locate是找不到的,需要先执行updatedb命令

find

按照文件名字搜索

find / -name pam.conf,从根目录下搜索和pam.conf完全匹配的文件

find / -name “pam.conf*”,从根目录下搜索含有pam.conf的文件

按照文件大小搜索

find / -size 389c,从根目录下搜索含有389字节大小的文件

find / -size -1k,从根目录下搜索含有小于1k字节大小的文件

find / -size +1k,从根目录下搜索含有大于1k字节大小的文件

按照文件修改时间搜索

find ./ -mtime 7,从根目录下搜索,7-8天那一天修改的文件

find ./ -mtime -7,从根目录下搜索,7天内修改的文件

find ./ -mtime +7,从根目录下搜索,7天前修改的文件

按照文件类型搜索

find / type d,从根目录下搜索,类型为目录(-)的文件

按照文件权限搜索

find / -perm 777,从根目录下搜索,权限为777的文件

ps -ef用于查看全格式的全部进程

grep

grep -n “author” ls.txt在ls.txt中搜索author字符串,其中的-n表示显示行号!

grep -n [td]o ls.txt在ls.txt中搜索to和do。【】表示t或者d,满足其中一个。

grep -n ^ls ls.txt在ls.txt中以ls开头的

grep -n 'gr..p' ls.txt找出含有“gr××p”的字符串

grep -n 'o\{3,5\}' ls.txt搜索含有3个~5个o的字符串

chmod

ps -aux = ps -ef查看当前所有进程静态显示

ps | more

top 当前所有进程动态显示

终止进程

ctrl + z

kill -9 进程号

网络相关

netstat

ifconfig 【和windows下的ipconfig一样】

route

常用文件系统

ext2

Linux标准文件系统

vfat

与Windows兼容的文件系统【FAT16、FAT32】,可作为windows和Linux交换文件分区

NFS

网络文件系统

swap【类似windows的虚拟内存】

专用交换分区

文件类型

普通文件【 通常是流式文件】

文件类型用-表示

可分为:纯文本文件、二进制文件、数据文件

目录文件【 用于表示和管理系统中的全部文件】

文件类型用d表示

设备文件【包括块设备文件(硬盘、U盘等)和字符设备文件(键盘)】

块设备文件类型用b表示,/dev/sda是块设备所在,

字符设备文件类型用c表示,/dev/tty通常是字符设备所在。

管道文件(fifo)【提供进程间通信的一种方式】

文件类型用p表示

解决多个程序同时存取一个文件造成的错误问题

链接文件【 用于不同目录下文件的共享】

文件类型用l表示

套接字文件【该文件类型与网络通信有关】

文件类型用s表示

同在/var/lib目录

目录

/【Linux只有一个根目录】

/bin【系统下最基础的命令,如“ls、cp、del”。该目录下的文件是可执行的,普通用户都可以使用的命令。】

/boot【引导加载程序相关的文件,内核映像文件也常放于此处!】

/etc【系统的各种配置文件,如用户账号密码配置文件、系统初始化文件,安装的各种应用软件、服务的配置文件等】

/usr【用到的应用程序、文件等】

/bin【集中了所有用户命令,是系统的软件库】

/include【包含C语言头文件,用来描述C语言中用到的数据结构、函数和常量】

/lib【程序库文件,系统不变的数据文件】

/sbin【根文件系统不必要的系统管理命令,如多数服务程序】

/var【经常变化的文件,如日志、数据库等】

/sbin【系统管理员使用的管理程序】

/tmp【系统临时文件】

/dev【设备文件,设备驱动程序】

/home【用户工作目录,个人配置文件】

/root【超级管理员文件夹】

/lib【根文件系统上的程序所需的共享库】

/mnt【系统管理员临时挂载系统的挂载点,】

分区

硬盘(硬盘必须分区才能使用)

磁盘分区:主分区(数量1~3个)

包括操作系统文件启动的硬盘分区

磁盘分区:扩展分区(需要分为逻辑分区才能使用。扩展分区数量可以0~1个,而逻辑分区无数量限制)

/dev/sda1 ... /dev/sda2 ... /dev/sda5 ...

1

2

3

上例中,sd表示硬盘种类,a表示计算机上的第一块硬盘,1、2、5表示分区号。【扩展分区从5开始,故sda5为扩展分区,sda1和sda2为主分区】

挂载:将目录和分区对应起来,通过访问该目录来访问该分区!

shell【命令解析器】

内核的外层保护,完成用户与内核的交互。将用户命令解析为操作系统所能理解的指令,实现操作系统与用户之间的交互。

Tab键自动补齐,或列出满足已打出字母的全部文件

历史命令

输入history即可查看历史命令【默认保存可达1000个】,所有的这些命令是保存在~/.bash_history

上下方向键可查看之前运行过的命令

!+历史命令标号即可运行对应的历史命令

!!即可运行上一条命令

!+字符串运行历史命令中与之相对应的命令,或列出满足已打出字母的历史命令

history -c清除历史命令

ctrl+r即可进入向后增量搜索模式,输入想要查找的命令相关字母,即可搜索出相关命令!

快捷键

控制命令

ctrl + l 清屏

ctrl + c终止当前正在执行的命令

ctrl + z挂起命令,停止当前命令运行,使用fg进行命令恢复

ctrl + s阻止屏幕输出,当前正在执行的命令不再打印信息!

ctrl + q允许屏幕输出,与ctrl + s配套使用

ctrl + d退出当前的shell

ctrl + o执行当前命令,并选择上一条命令

编辑命令

光标移动

ctrl + a移动到命令行首

ctrl + e移动到命令行尾

ctrl + f向右移动一个字符

ctrl + b向左移动一个字符

alt + f向右移动一个单词

alt + b向左移动一个单词

删除

ctrl + u从光标删除至命令行首

ctrl + k从光标删除至命令行尾

ctrl + w从光标删除至字首

alt + d从光标删除至字尾

ctrl + d删除光标处(后)的字符

ctrl + h删除光标前的字符(同backspace)

alt + backspace 同ctrl + w,分隔符有些差别

ctrl + y粘贴至光标后

重定向

输出重定向

【基本用法】

命令 > 文件,该方式是覆盖的方式。如,ifconfig > test1.log - 将网络配置信息写入到test1.log文件

命令 >> 文件,该方式是追加的方式。

【高级用法】

命令 >> 文件1 2 >> 文件2,正确追加到文件1,错误追加到文件2

命令 &>> 文件,无论正确与否都追加到文件 = 命令 >文件 2>&1 如,ifconfig eth0 > test1.log 2>&1 - 将错误信息保存到了test1.log文件!

命令执行顺序

;多个命令并列,顺序执行

&&前一个命令执行完毕才可以执行后一个命令

||前一个命令执行失败才执行后一个命令

环境变量

常用环境变量

PATH【决定了shell在哪些目录去寻找命令和程序】

echo $PATH 显示当前系统的PATH变量【变量是路径;变量之间用冒号分割】

export PATH=$PATH:/home,设置临时的环境变量。【退出当前shell该环境变量不生效】【注意export新建变量时,等号左右不要加空格】

修改用户主目录下的~/.profile文件或者~/.bashrc中使用export,启用后【用source启用或者重启启用】永久生效。 【通常修改.bashrc】

修改系统目录下的profile 文件,也会永久生效【要慎重设置,尤其是ROOT用户登录】

HOME【当前用户组目录】

USER【查看当前的用户】

LOGNAME【当前用户登录名】

UID【当前用户的识别字】

SHELL【当前用户使用的shell类型】

TERM

PWD【绝对路径】

MAIL【用户邮件存放目录】

HISTSIZE【保存历史命令的条数】

HOSTNAME【主机名】

系统全局配置文件 /etc/profile【该文件是在登录到shell才会读取的文件】

利用用户标识符(UID)来确定很多重要变量

用户配置文件~/.bash_profile【~表示 /home目录】

~/.bashrc 专用于当前用户的配置信息

如何让保存的环境变量配置立即生效呢?

source ×××

source .bash_profile

source ~/.bashrc

常用命令

env显示所有的环境变量

通常会很多,我们使用管道进行筛选出想要的:env | grep -i "×××"【"××ד是想要的字符串,-i表示忽略大小写】

set显示所有本地定义的shell变量【这个显示的全】

unset删除环境变量

unset -f:仅删除函数

unset -v:仅删除变量

readonly【修改变量或函数的属性为只读,即既不能修改,也不能删除。】

readyonly ×××即可设置环境变量

路径

绝对路径

完整路径

相对路径

..上一个目录

如从目录usr/share/doc 到 /usr/share/man可直接使用../man

.当前目录

~home目录

-上一个工作目录

当前用户主目录 ≠ 系统根目录

用户是指当前用户所在目录。如/home/clay,此时等同于cd ~命令。

若使用root用户,则在/root目录下

根目录是/,等同于cd /

链接

硬链接

两个或多个文件名与相同的i结点相关联,可以为单个文件创建一个或多个硬链接

以文件的副本的形式存在【大小跟源文件一样大】

源文件删除之后,对硬链接没有影响;源文件内容改变,硬链接内容不改变。

不能对目录文件做硬链接

不能再不同的文件系统之间做硬链接

软链接(符号链接)【类似windows 的快捷方式】

软连接是一个新文件,具有不同的i结点号

以路径的形式存在

删除源文件,只删除了数据不会删除链接;源文件内容改变,软链接内容改变。

软连接可以跨文件系统

软链接可以对目录进行链接

正则表达式

以^开头,以$结尾

[0-9]匹配单个数字

+匹配一个多个字符串

用户

用户可分为超级用户root、系统用户和普通用户。

文件拥有者owner

用户组group

其他用户others

用户文件的相关配置存放在/etc/passwd文件中

用户配置共分为7个字段

如clay:x:1000:1000:CLAY,,,:/home/clay:/bin/bash

用户密码存放在/etc/shadow文件中

创建一个简单的用户rain

adduser rain创建用户

删除用户是userdel rain

passwd rain设置密码

用户组

用户组的信息存放在/etc/group目录下、

groupadd ourgroup创建一个ourgroup组

usermod -a -G ourgroup clay将clay添加到ourgroup组

cat /etc/group | grep ourgroup查看该组所含成员,验证是否加入组成功

压缩与归档

常用的gzip和bzip2中 -9 表示压缩,-d 表示解压

gzip *所有文件都压缩

gunzip *解压所有文件

tar zcvf ls.tar.gz ls.txt 用gzip 将ls.txt文件打包并压缩,注意后缀要规范为.tar.gz

解压用zxvf

tar jcvf ls.tar.bz2 ls.txt 用bzip2 将ls.txt文件打包并压缩,注意后缀要规范为.tar.bz2

解压用jxvf

vi工具使用技巧

一般模式下

输入12g跳转到第12行。

dd删除某一行

yy复制某一行

p粘贴到某一行

搜索:在一般模式下输入/要搜索的词,按n翻页

替换:在命令模式下【按:进入命令模式】输入。如,:50,100s/m/M/g把50~100行中小写的m替换成大写的M

撤销:

另存为::w 文件名

更新 2020-10-20

apt和apt-get的区别?

建议直接用apt即可!

https://blog.csdn.net/liudsl/article/details/79200134

curl详解

http://www.ruanyifeng.com/blog/2019/09/curl-reference.html

wget详解

https://www.cnblogs.com/sx66/p/11887022.html

linux终端sh命令含义

https://zhidao.baidu.com/question/98300903.html

sh -c 什么意思?

可以执行后面的字符串,比如sh -c "echo This is a test string"会输出This is a test string。

还常常用来下载东西

https://stackoverflow.com/questions/3985193/what-is-bin-sh-c

Shell中 2>/dev/null 什么意思?

https://blog.csdn.net/gramdog/article/details/80374119

Linux实用命令之xdg-open

https://www.cnblogs.com/zqb-all/p/10666474.html

Linux alias命令

https://www.runoob.com/linux/linux-comm-alias.html

Linux tee命令

https://www.runoob.com/linux/linux-comm-tee.html

https://blog.csdn.net/jjlovefj/article/details/83176871

https://www.linuxprobe.com/tee-using-example.html

linux 中 ‘|’的作用是什么?

https://zhidao.baidu.com/question/556066419.html

Linux 嵌入式

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:安卓EditText点击后虚拟键盘回车变成搜索和事件
下一篇:Python MySQL 数据库之测试索引
相关文章