流、管道、重定向

在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"