Linux shell编程学习笔记49:strings命令

2024-05-15 06:28

本文主要是介绍Linux shell编程学习笔记49:strings命令,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0 前言

在使用Linux的过程中,有时我们需要在obj文件或二进制文件中查找可打印的字符串,那么可以strings命令。

1. strings命令 的功能、格式和选项说明

我们可以使用命令 strings --help 来查看strings命令的帮助信息。

pupleEndurer @ bash ~ $ strings --help
Usage: strings [option(s)] [file(s)]
 Display printable strings in [file(s)] (stdin by default)
 The options are:
  -a - --all                Scan the entire file, not just the data section [default]
  -d --data                 Only scan the data sections in the file
  -f --print-file-name      Print the name of the file before each string
  -n --bytes=[number]       Locate & print any NUL-terminated sequence of at
  -<number>                   least [number] characters (default 4).
  -t --radix={o,d,x}        Print the location of the string in base 8, 10 or 16
  -w --include-all-whitespace Include all whitespace as valid string characters
  -o                        An alias for --radix=o
  -T --target=<BFDNAME>     Specify the binary file format
  -e --encoding={s,S,b,l,B,L} Select character size and endianness:
                            s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit
  -s --output-separator=<string> String used to separate strings in output.
  @<file>                   Read options from <file>
  -h --help                 Display this information
  -v -V --version           Print the program's version number
strings: supported targets: elf64-x86-64 elf32-i386 elf32-iamcu elf32-x86-64 a.out-i386-linux pei-i386 pei-x86-64 elf64-l1om elf64-k1om elf64-little elf64-big elf32-little elf32-big plugin srec symbolsrec verilog tekhex binary ihex
Report bugs to <http://bugzilla.redhat.com/bugzilla/>

1.1 strings命令的功能

显示文件中可打印的字符串。

1.2 strings命令的格式

strings [选项(s)] [文件(s)]

 1.3 strings命令的选项说明 

选项说明

-a

--all

-

扫描整个文件而不是只扫描目标文件初始化和装载段

-d

--data

仅打印文件中已初始化、加载的数据段中的字符串,这可能会减少输出中的垃圾量

-e <encoding>

--encoding=<s,S,b,l,B,L>

选择字符编码与字节序。可取值:

s=7bits的ASCII, S=8bits的Latin1, {b,l}=16bits宽字符大小端编码, {B,L}=32bits宽字符大小端编码。其中b,B代表bigendian,l,L代表littleendian

-f

–-print-file-name

在显示字符串前先显示文件名
--help显示帮助信息

-<min-len>

-n <min-len>

--bytes=<min-len>

指定可打印字符序列的最小长度,不指定则默认是4个字符
-o类似 --radix=o

-t <radix>

--radix=<radix>

输出字符串在文件中的偏移位置,radix可取值o(octal,八进制)、d(decimal,十进制)或者x(hexadecimal,十六进制)

-T <bfdname>

--target=<bfdname>

指定二进制文件格式

-v

-V

--version

显示版本信息

-w

--include-all-whitespace

默认情况下,Tab和空格字符包含在字符串中,但其他空白字符除外,比如换行符和回车符等字符不是。-w使所有的空白字符被认为是字符串的一部分
@<file>从指定的文件file总读取命令行选项

字符串: 支持的目标: elf64-x86-64 elf32-i386 elf32-iamcu elf32-x86-64 a.out-i386-linux pei-i386 pei-x86-64 elf64-l1om elf64-k1om elf64-little elf64-big elf32-little elf32-big plugin srec symbolsrec verilog tekhex binary ihex

2 strings命令使用实例

我们先用echo命令创建一个用来演示命令用法的文件a.txt

pupleEndurer @ bash ~ $ echo -e "Hello \t world. \n\r I am PurpleEnduer :-P \a\b ..." > a.txt

然后我们使用cat命令查看文件a.txt的内容

pupleEndurer @ bash ~ $ cat a.txt
Hello    world. 
 I am PurpleEnduer :-P ...

2.1 strings 文件名:查看文件中的可打印字符

pupleEndurer @ bash ~ $ strings a.txt
Hello    world. 
 I am PurpleEnduer :-P 
 ...
pupleEndurer @ bash ~ $ 

 

2.2 strings -f 文件名:在显示字符串前先显示文件名

pupleEndurer @ bash ~ $ strings -f a.txt
a.txt: Hello     world. 
a.txt:  I am PurpleEnduer :-P 
a.txt:  ...
pupleEndurer @ bash ~ $ 

2.3 strings -t x 文件名:以16进制输出字符串在文件中的偏移位置

pupleEndurer @ bash ~ $ strings -t x a.txt
      0 Hello    world. 
     11  I am PurpleEnduer :-P 
     2a  ...
pupleEndurer @ bash ~ $ 

2.4 strings -e 字符编码与字节序 文件名:输出符合指定字符编码与字节序的可打印字符串

 pupleEndurer @ bash ~ $ strings -e S a.txt
Hello    world. 
 I am PurpleEnduer :-P 
 ...
pupleEndurer @ bash ~ $ strings -e{b,l} a.txt
pupleEndurer @ bash ~ $ strings -e{B,L} a.txt
pupleEndurer @ bash ~ $ strings -es a.txt
Hello    world. 
 I am PurpleEnduer :-P 
 ...
pupleEndurer @ bash ~ $ 

这篇关于Linux shell编程学习笔记49:strings命令的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/991057

相关文章

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的