1.Linux目录树结构

image.png

2.Linux分区

boot分区
存放引导操作系统的bootloader和内核源码,用户可访问/boot目录.
swap分区
相当于虚拟内存,当系统内存空间不足时,先将临时数据存放在swap分区,在合适的时候再将数据调入内存中执行。虚拟内存只是暂存数据,用户没法直接访问。一般来说swap分区是物理内存的2倍。
根分区
除了/boot目录以外的其他目录都对应于该分区下。
逻辑分区
Linux下根据版本不同,可设立数量不等的逻辑分区。逻辑分区可以挂载在根目录下。
意义:确保了数据的安全可靠
问题:磁盘容量有限,如何避免数据增长后带来的风险?(服务器)
相关命令
fdisk,df,mkfs等等,多数发行版提供图形化管理软件

3.Linux用户与文件权限

image.png
image.png
文档类型
d 代表目录,-代表文档
l 代表连接文档(link file)
b 代表存储设备
c 代表串行端口设备
用户群组
为管理用户,将同样要求的用户放入同一用户组,可通过usermod -g修改用户的主用户组
chown #改变文档的拥有者
chgrp #改变文档的拥有组
chmod #修改文档的执行权限
1.直接设置代表权限的数字
chmod 777(对应权限的数字) 文件名
2.给文件添加或减去某些权限
chmod u+w 文件名 给user用户加上w权限
chmod g-r 文件名 将group中的r权限去掉
chmod a+x 文件名 给user、group、other全部加上x权限

在树莓派中,默认用户为pi

4.GUI、CLI与Shell

相对于图形用户接口(Graphics-User-Interface, GUI)而言,
命令行接口 (Command-Line-Interface, CLI)是嵌入式Linux开发的主要工作方式
Shell是一种应用程序,为用户提供了访问操作系统服务的界面。第一个Unix Shell是sh,Windows Explorer是一种典型的图形化Shell。Linux系统有多种Shell,如bash、csh、ksh等等,每个shell都提供了内部命令,可进行shell 编程

  1. #!/bin/bash
  2. echo "Hello World !"

(脚本的运行:文件权限、路径)

5.常用命令

cd:改变目录

cd /home/ab
cd ∼/abc
cd ../hell

ls:列出目录和文件

-a 列出隐藏文件
-l 列出详细信息
-t 根据修改时间排序

mv:移动和重命名

mv hello.c src/
mv hello.c hello2.c

cp:拷贝

-a 拷贝所有属性
-r 递归拷贝(含子目录)
-f 强制拷贝
远程拷贝: scp (ssh cp)

  1. scp /home/abc/hello.tar.gz root@192.168.200.36:/home/root
  1. scp root@192.168.200.36:/home/root/hello.tar.gz /home/abc/

rm:删除文件

-f 不提示,强制删除
-i 每个文件删除前提示是否删除,-I
rm -rf hello 强制递归删除hello目录(含子目录)

touch:创建空文件或更新文件时间

touch hello.c
创建目录:mkdir
删除空目录:rmdir

echo:显示内容

echo “hello \nworld”
echo -e “hello \nworld”

find:在文件树中查找文件,并做出处理

▶ find ./ -mmin 2 找出当前目录下2分钟之前修改过的文件
▶ find ./ 查找当前目录下所有文件
▶ find ./ -iname “hello.c”
▶ find . -name “.txt” -o -name “.pdf”
▶ find /home ! -name “.txt”
▶ find . -maxdepth 3 -type f
▶ find . -type f -size +10k
▶ find . -empty
find . -type f -name “
.txt” -delete
find . -type f -user root -exec chown tom {} \;
find . -type f -name “*.txt” -exec cat {} \;>all.txt

gzip, bzip2, xz, tar:压缩相关

▶ tar -cvf abc.tar abc
▶ gzip abc.tar, bzip2 abc.tar, xz abc.tar
▶ tar -zcvf abc.tar.gz abc 或 -jcvf 或 -Jcvf
▶ tar -jxvf abc.tar.bz2 -C abc2
历史记录: last, lastlog, history

ps, pstree, top, kill, killall:进程管理

▶ ps -aux ; pstree
▶ top
▶ kill -9 23232; killall -9 hello
显示当前进程:ps (类似windows的任务管理器)
语法:
ps [options] [—help]
参数:
-A列出所有进程
-w显示下款,可以显示较多的信息
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
进程驻留后台执行:“命令”& 或命令执行中按Ctrl+Z(暂停)
示例:
find / -name install.log &
关闭执行中的程序或工作: kill(kill不是杀死意思,是向进程发送终止命令)
kill [options]

其他常用命令

grep:用正则表达式搜索文本
▶ grep “a dog” book.txt
▶ grep d.g book.txt
▶ grep -v “a dog” book.txt
▶ echo “this is a test line.” | grep -o -E “[a-z]
+.”
▶ grep -c “text” filename 统计包含text的行数
▶ grep “text” -n filename 显示包含text的行号
seq, printf:序列产生
▶ seq -f “%03g” 1 100
▶ seq -w 1 100
▶ printf “%03d\n” {1..100}
wc:统计
四种选项 -l -c -m -w
cut:显示文本文件指定列的内容
▶ cut -d “ ” -f 1 my.txt
sort, uniq:排序文本文件
▶ sort -u my.txt
▶ uniq my.txt
▶ sort -k 2 -t “ ” test.txt
export, env, alias, unalias:环境变量
▶ echo $PATH; export PATH=$PATH: /bin
▶ env | grep PATH
▶ alias ll=‘ls -l’; unalias ll
du, df, free, mount:磁盘相关
▶ mount /dev/sda1 /data
cat:显示或合并
-n 显示行号
cat file1 file2 >newfile
查看整个文件
▶ more hello.c 空格翻页, q退出
▶ less hello.c 可逐行上下查看
加行号显示: nl hello.c
显示前几行: head -n 2 hello.c
显示后几行: tail -n 2 hello.c
查看命令位置: which ls
定位命令、源代码、帮助文件位置: whereis ls

6.Linux文本编辑器

图形化编辑器 命令行编辑器/程序开发环境
gedit vim (简单)
kate emacs(复杂,最受专业程序员欢迎,可以深度定制)

命令模式(Command mode)

启动后直接进入命令模式,在输入模式下按ESC可切换到命令模式。在命令模式下输入字符为命令字符,而非文本编辑。
i 在当前光标位置前编辑 I 在当前行首编辑
a 在当前光标位置后编辑 A 在当前行尾编辑
o 在当前行之后插入一行 O 在当前行之前插入一行
/text 查找text,按n键查找下一个,按N键查找前一个
?text查找text,反向查找,按n键查找下一个,按N键查找前一个
d1G 删除光标所在到第一行的数据 dG删除光标所在到最后一行的所有数据
d$ 删除光标到该行最后一个字符 d0 删除光标到该行最前面的一个字符
yy 复制光标所在一整行 nyy 复制光标所在向下n行
dd 剪切光标所在一整行 ndd 剪切光标所在向下n行
p 将数据复制到光标下一行 P 将数据复制到光标上一行
u 撤销上一个操作 Ctrl+r重复上一个操作

输入模式(Insert mode)

在输入模式下,按ESC键切换到命令模式

底线命令模式(Last line mode)

在命令模式下输入”:“进入底线命令模式,可以输入多个字符的命令
:w 将当前编辑的数据保存 :w! 强制保存(如以只读打开)
:q 退出vim编辑器 :q! 强制退出,不保存
:wq 保存并退出 :w [filename] 另存为
:!command 暂时离开vi编辑环境到命令行执行command命令并显示
:set nu 设置显示行号 :set nonu不显示行号

Q&A

Q:树莓派执行“sudo vim”显示找不到命令怎么办?

A:
原因是因为没有安装vim
执行以下命令安装vim即可

  1. sudo apt-get install vim-gtk