df,du与归档压缩等
df与du
df显示可用空间,-h用常见的格式显示出大小
du统计文件或者目录的磁盘使用情况,用得比较少。
这些命令通常是在要扩容和挂载时候才使用,配合fdisk -l和lvextend来使用。
tar
tar 命令:用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的。十分常用,但可以在使用时候查找就行了,如果是使用VMware Workstation的话,官方会提示你安装Vmware Workstation tools,可以帮助用户虚拟硬件的驱动,鼠标的无缝移出移入,剪贴板共享,共享主机上的文件夹等实用功能,在安装过程中就会使用到tar来解压。
- tar zcfv压缩成.tar.gz文件
- tar zxfv解压.tar.gz文件
- tar Jcfv压缩成.tar.xz文件
- tar Jxfv解压.tar.xz文件
- tar jcfv压缩成.tar.bz2文件
- tar jxfv解压.tar.bz2文件
chmod类
chmod修改文件目录的访问权限,每种 MODE 都应属于这类形式[ugoa]+-=rwx
操作对像
- u 文件属主权限
- g 同组用户权限
- o 其它用户权限
- a 所有用户(包括以上三种)
权限设定
- + 增加权限
- - 取消权限
- = 唯一设定权限
权限类别(也可以用数字表示,前面出现过)
- r 读权限 ( r–>4)
- w 写权限 ( w–>2)
- x 执行权限 ( x–>1)
相似的,chown修改文件目录的owner,chgrp修改文件目录的group。
Unix通信
ssh
因为用的是树莓派4b的原因,在没有配显示器又想无线连接到树莓派的话,必须通过ssh,在此基础上如果想要使用桌面系统的话,则又要使用VNC Viewer与树莓派相连接。
方法就在这简单描述一下,在烧录完系统后,打开SD卡直接新建SSH文件(无后缀名),随后在配置wpa_supplicant.conf,正常的话开机树莓派就能自动连接到wifi,可以通过路由器管理页面直接查看树莓派分配的ip,直接连接就行了(电脑用的是Putty),通过ssh远程登陆主机和实体操作没有什么区别,另外ssh在github的配置上也有需求,可以查阅一下资料配置一下。
接口与状态
ifconfig用来查看ip地址和网络状态。
ping用来查看与某个网址之间的延迟。
curl
curl是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称url为下载工具。
wget
wget是一个下载文件的工具,对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器,同时wget支持断点下载和指定目录下载,同时非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性.如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。是十分实用的一个命令。
常用命令
使用wget -O下载并以不同的文件名保存(-O:下载文件到对应目录,并且修改文件名称)
wget -O wordpress.zip http://www.minjieren.com/download.aspx?id=1080
使用wget -b后台下载
wget -b <a href="http://www.minjieren.com/wordpress-3.1-zh_CN.zip">http://www.minjieren.com/wordpress-3.1-zh_CN.zip</a>
ftp
文件传输可以在此基础上使用别的软件,如FileZilla Client来传输。
systemd
systemd 是一个专用于 Linux 操作系统的系统与服务管理器。以mysql为例子。
# 开机启动
systemctl enable mysqld
# 关闭开机启动
systemctl disable mysqld
# 启动服务
systemctl start mysqld
# 停止服务
systemctl stop mysqld
# 重启服务
systemctl restart mysqld
# 查看服务状态
systemctl status mysqld
systemctl is-active sshd.service
# 结束服务进程(服务无法停止时)
systemctl kill mysqld
system daemon,代替常用的System V与BSD风格init程序,可以即时发现依赖。
- init采用脚本来加载各种服务,各种服务的依赖难以维持,服务加载速度 慢
- systemd使用c编写的程序接管各种服务加载
关于systemd的管理对象抽象为单元,详细就不叙述了,感兴趣的话可以man 5 systemd.unit,此外systemd还可以配置服务启动或者自定义服务,但个人觉得掌握上面举的例子就能应付很多情况了,感兴趣可以学习哈。
Gnu工具链
Gnu toolchain是开发操作系统、应用程序的一套完整的程序和库,包括gcc、gdb、glibc等。
其中gcc是一族编译器,包括c、c++、go、java等,
- .c为后缀的文件,C语言源代码文件;
- .a为后缀的文件,是由目标文件构成的档案库文件;
- .C、.cc或.cxx 为后缀的文件,是C++源代码文件;
- .h为后缀的文件,是程序所包含的头文件;
- .i 为后缀的文件,是已经预处理过的C源代码文件;
- .ii为后缀的文件,是已经预处理过的C++源代码文件;
- .m为后缀的文件,是Objective-C源代码文件;
- .o为后缀的文件,是编译后的目标文件;
- .s为后缀的文件,是汇编语言源代码文件;
- .S为后缀的文件,是经过预编译的汇编语言源代码文件。
C语言编译过程
- gcc -E hello.c -o hello.i
- gcc -S hello.i -o hello.s
- gcc -c hello.s -o hello.o
- gcc -o hello hello.o
gdb
命令 | 缩写 | 描述 |
---|---|---|
list | l | 打印当前位置源码 |
break | b | 设置断点 |
run | r | 运行程序 |
step | s | 单步进入函数 |
next | n | 单步不进入函数 |
p | 打印变量 | |
continue | c | 继续运行 |
backtrace | bt | 显示调用栈 |
info threads | 显示线程 | |
thread n | 切换线程 | |
set scheduler-locking on | 关闭线程调度 |
makefile
Makefile用于工程组织和编译,与常见的命令式语言不同,它是一种依赖推导语言。
- Shell语言:变量定义+命令执行
- Makefile:变量定义+依赖描述
有显式规则与隐式规则,推导规则为检查目标和依赖文件的时间,如果依赖更新,则执行动作,显式规则 > 隐式规则。
cmake
Cmake在不同平台上生成不同的本地化脚本:Linux下的Gnu Makefile,Visual Studio的sln,Google等ninja
Cmake管理的代码编译主要有两步:
- 利用cmake生成本地编译脚本
- 利用本地脚本编译程序
git
版本控制系统,是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统,git采用分布式管理,十分推荐学习。