Linux入职基础-5.4_文件信息显示(命令实例)

本文详细介绍Linux系统中常用的文件操作命令,包括显示文件内容、查看文件头部和尾部、分段显示文件内容等实用技巧。并通过具体实例帮助读者更好地理解和掌握这些命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件信息显示(Linux命令操作实例)

一:命令列表

cat  用来显示文本文件内容或者新建文件

lless    查看文件内容命令

more   逐页显示文件内容方便阅读

mtype   显示MS-DOS文件的内容

head   查看文件头部的内容

tail    查看文件尾部的内容

cut  分段格式显示文件内容

od  以八进制显示文件内容

dos2unix  将一个DOS格式的文件转换为UNIX格式的文件(主要差别在换行符)

indent  调整C原始代码文件的格

type  用于判断另外一个命令是否是内置命令

二、实例解说

名称:cat

功能:用来显示文本文件内容

语法:cat [-AbeEnstTuv] [--help] [--version] fileName

cat [参数] [源文件] [>|>> 重定向的文件名]

范例:

cat textfile1 显示textfile1文件内容。

cat -n textfile1 > textfile2 把 textfile1 的文件内容加上行号后输入textfile2 这个文件里。

cat -b textfile1 textfile2 >>textfile3 把 textfile1 和 textfile2 的文件内容加上行号(空白行不加)之后将内容附加到 textfile3 里。

cat -n >hhwork 创建一新hhwork文件,文件内容通过键盘输入,并加上加上行号。

cat –n >>hhwork对hhwork文件其追加新的一行内容。

cat  /dev/null >  hhwork 清空hhwork文件内容。

名称:less

功能:查看文件内容命令

语法:less [Option] filename

范例

less yp.conf

less -M /etc/passwd  #显示读取文件的行号、百分比以及总行号

less -p root /etc/passwd  #搜索/etc/passwd文件中root字符串

名称:head

功能:查看文件头部的内容

语法:head [参数] [文件名]

范例

head /etc/hosts /etc/services   #默认显示多个文件的前10行

head -n 3 /etc/passwd     #显示文件的前3行

head -n -5 /etc/passwd   #显示文件除最后5行的所有内容

head -c 100 /etc/passwd  #显示文件的前100bytes

名称:cut

功能:分段格式显示内容,

语法:cut –c num1-num2  filename

范例

---------file test-----------

   liubi 23 14000

cut -c 1-5  test 显示每行从开头算起 1 到 5 的文字

[root@localhost cmd]# cut -f 1,2 test  -f m-n 表示显示第m栏到第n栏(使用tab分隔)

liubi  23

## -d用来定义分隔符,默认为tab键,-f表示需要取得哪个字段

cut –d ‘:’ f  3  /etc/passwd > /tmp/users   #提取账户文件中第3个字段的内容

## cut命令默认字段的分隔符号为空格或Tab键,账户文件的各个字段以“:”做为字段分隔符,因此利用-d选项告诉系统账户文件的字段分隔符。

cut -d ':' -f 1,2,4 /etc/passwd  #提取账户文件中第1,2,4个字段的内容

cut -d ':' -f 3- /etc/passwd    #显示从第3个字段到最后的所有内容

 



hqyj@ubuntu:~$ echo $ PATH $ PATH hqyj@ubuntu:~$ find / -path "*usr/bin/*-linux-*" 2>/dev/null | grep gcc /usr/bin/x86_64-linux-gnu-gcc-nm /usr/bin/x86_64-linux-gnu-gcc /usr/bin/x86_64-linux-gnu-gcc-ranlib /usr/bin/x86_64-linux-gnu-gcc-9 /usr/bin/x86_64-linux-gnu-gcc-ranlib-9 /usr/bin/x86_64-linux-gnu-gcc-ar-9 /usr/bin/x86_64-linux-gnu-gcc-ar /usr/bin/x86_64-linux-gnu-gcc-nm-9 /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux/arm-ostl-linux-gcc-ranlib /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux/arm-ostl-linux-gcc-ar /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux/arm-ostl-linux-gcc-nm /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux/arm-ostl-linux-gcc /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-gcc-ranlib /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-gcc /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-gcc-ar /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-gcc-nm /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musleabi/arm-ostl-linux-musleabi-gcc-ar /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musleabi/arm-ostl-linux-musleabi-gcc-ranlib /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musleabi/arm-ostl-linux-musleabi-gcc /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musleabi/arm-ostl-linux-musleabi-gcc-nm /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musl/arm-ostl-linux-musl-gcc-ranlib /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musl/arm-ostl-linux-musl-gcc /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musl/arm-ostl-linux-musl-gcc-nm /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musl/arm-ostl-linux-musl-gcc-ar /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux/arm-ostl-linux-gcc-ranlib /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux/arm-ostl-linux-gcc-ar /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux/arm-ostl-linux-gcc-nm /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux/arm-ostl-linux-gcc /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-gcc-ranlib /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-gcc /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-gcc-ar /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-gnueabi/arm-ostl-linux-gnueabi-gcc-nm /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musleabi/arm-ostl-linux-musleabi-gcc-ar /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musleabi/arm-ostl-linux-musleabi-gcc-ranlib /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musleabi/arm-ostl-linux-musleabi-gcc /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musleabi/arm-ostl-linux-musleabi-gcc-nm /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musl/arm-ostl-linux-musl-gcc-ranlib /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musl/arm-ostl-linux-musl-gcc /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musl/arm-ostl-linux-musl-gcc-nm /opt/st/fsmp1a/3.1-snapshot/sysroots/x86_64-ostl_sdk-linux/usr/bin/arm-ostl-linux-musl/arm-ostl-linux-musl-gcc-ar hqyj@ubuntu:~$
最新发布
07-18
<think>我们正在寻找系统中已安装的交叉编译工具链,特别是GCC的路径。根据引用[1][2][3][4],交叉编译工具链通常安装在特定目录,并且可以通过环境变量或搜索系统路径来找到。以下是步骤: 1. **检查环境变量**:交叉编译工具链的路径通常会被添加到`PATH`环境变量中。我们可以通过`echo $PATH`查看,并从中寻找包含交叉编译工具链的目录(如`/usr/bin`,`/usr/local/bin`,或用户自定义的路径)。 2. **使用`which`或`whereis`命令**:如果我们知道交叉编译工具链的前缀(如`arm-linux-gnueabihf-`,`aarch64-linux-gnu-`等),我们可以使用`which`或`whereis`命令来查找具体路径。 3. **搜索常见位置**:交叉编译工具链通常安装在以下目录: - `/usr/bin` - `/usr/local/bin` - `/opt`下的子目录(如`/opt/toolchains`) - 用户主目录下的某个目录(如`~/toolchains`) 4. **使用`find`命令搜索**:如果我们不知道具体的前缀,我们可以搜索包含特定字符串(如`linux-gnu`,`linux-gnueabi`等)的可执行文件。 具体步骤: ### 1. 查看环境变量 ```bash echo $PATH ``` 在输出的路径中,注意是否有包含交叉编译工具链的目录(例如:`/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin`)。 ### 2. 尝试已知的常见前缀 常见的交叉编译工具链前缀有: - `arm-linux-gnueabi-`(32位ARM,软浮点) - `arm-linux-gnueabihf-`(32位ARM,硬浮点) - `aarch64-linux-gnu-`(64位ARM) - `mips-linux-gnu-` - 等等 我们可以使用以下命令查找这些工具是否存在: ```bash # 例如查找32位ARM的交叉编译器 which arm-linux-gnueabihf-gcc # 或者 whereis arm-linux-gnueabihf-gcc ``` ### 3. 搜索整个系统(如果以上方法没有找到) 如果不知道前缀,我们可以搜索包含`gcc`和`linux`的可执行文件: ```bash # 在/usr/bin目录下搜索 find /usr/bin -name "*-linux-*-gcc" # 在整个系统搜索(需要sudo权限,因为有些目录需要权限) sudo find / -name "*-linux-*-gcc" 2>/dev/null ``` 注意:`2>/dev/null`是为了忽略权限拒绝等错误信息。 ### 4. 检查工具链的安装路径 如果之前是通过包管理器安装的,可以使用`dpkg`来查找: ```bash # 例如,查找所有包含arm-linux-gnueabihf-gcc的包 dpkg -L gcc-arm-linux-gnueabihf | grep bin/arm-linux-gnueabihf-gcc ``` ### 5. 检查用户主目录下的工具链 很多情况下,交叉编译工具链被解压到用户主目录下的某个目录,例如: ```bash find ~ -name "*-gcc" -type f -executable ``` ### 示例输出 如果找到了交叉编译器,输出可能类似于: ``` /usr/bin/arm-linux-gnueabihf-gcc /opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc ``` ### 总结步骤 1. 先尝试已知前缀的`which`命令。 2. 搜索常见目录(如`/usr/bin`,`/usr/local/bin`,`/opt`)。 3. 使用`find`命令在整个系统搜索(注意权限)。 ### 相关问题 1. 如何将找到的交叉编译工具链路径添加到环境变量?[^1][^2] 2. 交叉编译工具链的常见前缀有哪些?[^3][^4] 3. 如何验证交叉编译工具链是否可用?[^4]</think>### 查看Ubuntu系统中交叉编译工具链路径的完整方法 #### 1. **检查环境变量中的路径** ```bash # 查看PATH环境变量中的工具链路径 echo $PATH | tr ':' '\n' | grep -E "bin|gcc|arm|aarch" # 检查常用环境变量 echo "CROSS_COMPILE路径: ${CROSS_COMPILE:-未设置}" echo "TOOLCHAIN路径: ${TOOLCHAIN_PATH:-未设置}" ``` 环境变量是最直接的配置方式,交叉编译工具链通常通过`PATH`、`CROSS_COMPILE`或`TOOLCHAIN_PATH`设置[^1][^2]。 #### 2. **搜索常见安装位置** ```bash # 搜索系统级安装路径 find /usr/bin /usr/local/bin /opt -name "*-gcc" 2>/dev/null # 搜索ARM架构工具链(常见嵌式平台) find / -path "*/bin/*-linux-*gcc" 2>/dev/null | grep -E "arm|aarch" ``` 典型安装位置包括: - `/usr/bin`(系统默认) - `/usr/local/bin`(用户级安装) - `/opt`(第三方工具链) - `~/toolchains`(用户自定义路径)[^2][^3] #### 3. **通过编译器命令反查路径** ```bash # 使用which定位已知编译器 which arm-linux-gnueabihf-gcc 2>/dev/null which aarch64-linux-gnu-gcc 2>/dev/null # 查看符号链接实际路径 ls -l $(which arm-linux-gnueabihf-gcc) 2>/dev/null ``` 如果知道工具链前缀(如`arm-linux-gnueabihf-`),可直接定位[^3][^4]。 #### 4. **检查包管理器安装记录** ```bash # 检查apt安装的工具链 dpkg -L gcc-arm-linux-gnueabihf 2>/dev/null | grep bin/ dpkg -L gcc-aarch64-linux-gnu 2>/dev/null # 检查Buildroot生成工具链 find ~/buildroot/output/ -name "*gcc" 2>/dev/null ``` 通过包管理器安装的工具链可通过`dpkg`查询[^4]。 #### 5. **识别工具链类型** 找到路径后,确认工具链架构: ```bash # 查看编译器目标平台 /path/to/toolchain/arm-linux-gnueabihf-gcc -dumpmachine # 输出示例: arm-linux-gnueabihf → ARM32架构 # 输出示例: aarch64-linux-gnu → ARM64架构 ``` #### 示例输出分析 成功找到工具链路径后: ``` /usr/bin/arm-linux-gnueabihf-gcc → 系统级安装(标准位置) /opt/gcc-linaro-7.5.0/bin/arm-linux-gnueabihf-gcc → 自定义安装 ~/toolchains/aarch64/bin/aarch64-linux-gnu-gcc → 用户目录安装 ``` ### 常见工具链路径规律 | 架构类型 | 典型路径模式 | 编译器前缀示例 | |----------------|----------------------------------|---------------------------| | ARM32 | `*/bin/arm-linux-gnueabihf-gcc` | `arm-linux-gnueabihf-*` | | ARM64 | `*/bin/aarch64-linux-gnu-gcc` | `aarch64-linux-gnu-*` | | MIPS | `*/bin/mips-linux-gnu-gcc` | `mips-linux-gnu-*` | | RISC-V | `*/bin/riscv64-unknown-linux-gcc`| `riscv64-unknown-linux-*` |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值