linux-一些补充

alias

# 直接设置别名
alias cls=clear
# 如果命令包含空格,用引号包含,建议使用单引号
alias cp='cp -i'
# 取消别名
unalias cls

通过shell设置的别名生命周期跟随shell生命周期,下次登录就会失效。

可通过修改配置文件进行设置,并永久生效。

vim ~/.bashrc

然后就会明白,为什么经常cpmvrm会有提示,因为就是被alias了。

具体问题和解决办法可以看一下这个东西

结果引用

$(cmd):引用命令执行结果

形式作用
$(cmd)命令执行结果引用
cmd命令执行结果引用

别问我为什么用黑体+下划线,因为重点标记是用反引号进行包含的。

反引号里面用反引号,老是自己就匹配上了,转义都没用,我能怎么办,臣妾也很无奈啊。

如果有知道的老兄,给我一点指引吧。

  • 打印当前目录
echo "the dir absolutely path is $(pwd)."
  • 创建日期文件
touch godme.txt.$(date +%Y-%H-%d)

日志文件都是这样,每天创建一个,既分割文件,又标记日期,不要太方便

  • {}展开
touch {godme,foreva,judas}.txt.`date+%Y-%H-%d`

会创建三个,同后缀的文件就能一次性全部创建完成了。

{}中的数据别带空格,要不效果对不上的啊

  • 分配率
mkdir {a,b}_{c,d}_{e,f}

会创建五个文件夹,文件夹元素可以理解为(a+b)(c+d)(e+f)乘开之后的因子。

也可以理解为嵌套循环,一层一层的会慢慢遍历。

引号

符号名称详细
""双引号弱引用,中间可做变量引用
''单引号强引用
自带"转义"
纯字符串
无引用
``反引号命令替换
引用命令

别问为什么u+b,反引引反引不太会。

通配符

符号说明
*任意长度任意字符
?任意长度单个字符
[]空集合
[a-z]小写字母
[[:lower:]]``[a-z]`
[A-Z]大写字母
[[:upper:]][A-Z]
[[:alpha:]][a-zA-Z]
[0-9]数字
[[:digit:]][0-9]
[[:alnum:]][a-zA-Z0-9]
[[:space:]]空白字符
[[:punct:]]标点符号
^补集
  • 字符理解
  1. 所谓集合

[]表示的就是集合。

[abc]表示的是三个字母。

[a-z]表示的是范围集合表示。

[:alpha:]表示的是字符类别,相当于a-z

但不论是范围表示还是类别表示,最后必须是集合。

所以必须用[]包括,于是有了[[:alpha:]]

  • 字符取反

对集合内部进行取反,理解了类别表示,就能轻易理解了。

[^[:alpha:]],对元素取反,没问题。

  • 空白匹配

空白匹配关键不在于匹配,而是怎么不用空白来匹配空白。

当使用到空白的时候,命令中就不得不使用引号,但是又变得不能正则泛化。

ls [[:alnum:]]*[[:space:]]*[[:alnum:]]

通过类别进行表示,就可以用来进行的表示,省去一个麻烦。

更多信息,可以通过man 7 glob进行查看。

man 1 sh

man 3 glob

man 3 fnmatch

man 7 locale

man 7 regex

<think>好的,用户现在在问关于aarch64-linux-gnu-系列工具的问题,特别是如何用这些工具来编译C文件。首先,我需要确认用户提供的工具列表中有没有合适的编译器。 用户列出的工具里有aarch64-linux-gnu-开头的各种工具,比如ar、as、ld等,这些都是交叉编译工具链的一部分。但通常,C编译器是gcc,所以需要检查列表中是否有aarch64-linux-gnu-gcc。但是用户给出的列表里并没有这个,只看到了aarch64-linux-gnu-gold和aarch64-linux-gnu-ld等链接器相关的工具。这可能意味着用户的环境里可能没有安装完整的交叉编译工具链,或者只安装了部分工具。 接下来,用户想编译.c文件,所以需要确认是否存在可用的编译器。如果用户的环境中没有aarch64-linux-gnu-gcc,可能需要安装完整的交叉编译工具链。例如在Ubuntu上,可以通过安装gcc-aarch64-linux-gnu包来获取。 另外,用户可能是在为ARM架构(aarch64)进行交叉编译,所以需要指导用户如何正确使用这些工具。如果确实没有gcc,可能需要手动调用其他工具链中的组件,比如使用aarch64-linux-gnu-as进行汇编,aarch64-linux-gnu-ld进行链接,但这通常比较复杂,不如直接安装完整的交叉编译器方便。 另外,可能用户对交叉编译不太熟悉,需要解释交叉编译的概念,以及为什么需要这些工具。例如,当开发环境是x86_64架构,但目标平台是ARM架构时,就需要交叉编译器来生成可在ARM上运行的可执行文件。 还需要检查用户提供的命令是否正确,比如是否应该使用aarch64-linux-gnu-gcc而不是其他工具。如果没有安装,需要给出安装命令,比如sudo apt install gcc-aarch64-linux-gnu。 最后,要确保回答清晰,步骤明确,帮助用户解决问题,同时补充可能需要的其他信息,比如如何验证安装,如何运行编译后的程序等。</think>从你列出的工具来看,这些属于 **aarch64架构的交叉编译工具链**,但缺少直接编译C文件的`aarch64-linux-gnu-gcc`主程序。以下是详细分析和解决方案: --- ### **1. 当前工具用途** 你列出的工具是 **交叉编译工具链的辅助工具**,主要用于: - `aarch64-linux-gnu-ld`:链接器(将目标文件合并为可执行文件) - `aarch64-linux-gnu-as`:汇编器(将汇编代码转为机器码) - `aarch64-linux-gnu-ar`:静态库打包工具 - `aarch64-linux-gnu-objdump`:反汇编工具 - 其他工具如`nm`、`strip`等用于调试和优化 但这些工具**无法直接编译C文件**,需配合完整的编译器使用。 --- ### **2. 解决方案** #### **情况1:你需要交叉编译(在x86环境生成ARM程序)** 1. **安装完整交叉编译器**: ```bash # Ubuntu/Debian sudo apt install gcc-aarch64-linux-gnu # CentOS/RHEL sudo yum install gcc-aarch64-linux-gnu ``` 安装后会获得 `aarch64-linux-gnu-gcc`。 2. **编译C文件**: ```bash aarch64-linux-gnu-gcc -o output_name your_file.c ``` 生成的可执行文件可在ARM架构设备(如华为昇腾设备)运行。 --- #### **情况2:你只需本地编译(当前环境是ARM架构)** 1. **直接使用系统自带的`gcc`**: ```bash gcc -o output_name your_file.c ``` 若未安装,通过包管理器安装: ```bash sudo apt install gcc # Ubuntu/Debian sudo yum install gcc # CentOS/RHEL ``` --- ### **3. 验证工具链完整性** 检查是否已有交叉编译器: ```bash which aarch64-linux-gnu-gcc # 若输出路径则表示已安装 ``` --- ### **4. 手动分步编译(不推荐)** 若坚持使用现有工具,需手动完成编译流程(复杂且易错): 1. **预处理**(需要`aarch64-linux-gnu-cpp`,但列表中无此工具) 2. **编译为汇编代码**(需要`aarch64-linux-gnu-gcc -S`) 3. **汇编为目标文件**: ```bash aarch64-linux-gnu-as -o hello.o hello.s ``` 4. **链接为可执行文件**: ```bash aarch64-linux-gnu-ld -o hello hello.o -lc ``` --- ### **总结建议** | 场景 | 操作 | |------|------| | 目标平台为ARM设备 | 安装 `gcc-aarch64-linux-gnu` 并使用 `aarch64-linux-gnu-gcc` | | 当前环境是ARM架构 | 直接使用系统 `gcc` | | 仅做实验性操作 | 安装完整交叉工具链或使用Docker镜像 | 若需进一步帮助,请补充说明你的设备架构和目标平台!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值