流、管道、重定向

在linux里面,这三个是命令行操作的核心概念,用于控制数据流向和实现复杂任务

数据流

Linux 将所有设备抽象为文件,通过文件描述符管理输入输出

管道

通过“|”符号连接多个命令,将前一个命令的输出作为另一个命令的输入
例子:(列出目录后筛选包含“text”的行)

1
ls | grrep "text"

重定向

覆盖写入

使用“>”,直接写入文件,若文件已存在则覆盖
例子:

1
echo "content" > file.txt

追加写入

使用“>>”,将内容追加到文件末尾
例子:

1
echo "more content" >> file.txt

错误重定向

使用“2>”将错误信息写入指定文件

混合重定向

“&>”将正确和错误信息同时写入文件

用户组和文件权限

用户组

用户账号

超级用户、普通用户、程序用户

组账号

基本组(私有组)
附加组(公共组)

UID and GID

UID(用户标识号)
GID(组标识号)

chmod

修改文件权限

1
chmod 644 filename

chown

更改文件所有者和所属组

1
chown user:group filename

环境变量

export

设置环境变量

1
export VARIABLE_NAME=value

procfs文件系统

procfs是一个虚拟文件系统,提供了关于内核和进程的信息

查看进程信息

1
cat /proc/[PID]/status

字节序

字节序只多字节数据在内存或网络传输中的存储顺序,分大端序和小端序

大小端序

大:高位字节存储在低地址处,低位字节存储在高地址处
小:与大端序相反

判断系统字节序

1
lscpu | grep "Byte Order"

调用约定

函数调用约定是规定函数调用过程中参数传递方式、堆栈平衡规则及返回值处理机制的编程规范。
查看函数调用约定

1
objdump -D binary_file | grep "callq"