shell command basic
Contents
shell command basic
ascii to binary
|
|
https://unix.stackexchange.com/questions/98948/ascii-to-binary-and-binary-to-ascii-conversion-tools
base64 > hex
|
|
Display the last users who have logged onto the system
|
|
Display the user and group ids of your current user
|
|
Display who is online
|
|
Show who is logged into the system
|
|
Show this month’s calendar
|
|
printf
|
|
1,234,567.777000
语言环境会影响千分位符的显示
|
|
1234567.777000
不保留小数
|
|
说明: %3.0f表明待打印的浮点数 (floatNum) 至少占3个字符宽,且不带小数点和小数部分,整数部分至少占3个位宽;
注意: 这里的3只代表整数部分至少占3位,舍弃小数点和小数点后面的部分
file
识别文件类型,也可用来辨别一些文件的编码格式。它是通过查看文件的头部信息来获取文件类型,而不是像Windows通过扩展名来确定文件类型的 file 命令用于分析文件的类型。
如果你需要分析二进制文件,可以首先使用 file 命令来切入。我们知道,在 Linux 下,一切皆文件,但并不是所有的文件都具有可执行性,我们还有各种各样的文件,比如: 文本文件,管道文件,链接文件,socket文件,等等。
在对一个文件进行分析之前,我们可以首先使用 file 命令来分析它们的类型。当然除此之外,我们还可以看到一些其它信息。
|
|
/bin/pwd: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0d264bacf2adc568f0e21cbcc9576df434c44380, stripped
ltrace
ltrace的功能是能够跟踪进程的库函数调用。
我们可以使用 ldd 命令来找到程序的依赖库,但是,一个库里少则几个,多则几千个函数,怎么知道现在程序调用的是什么函数呢?
ltrace 命令就是用来做这个事的。在下面的例子里,我们可以看到程序调用的函数,以及传递进去的参数,同时你也可以看到函数调用的输出。
|
|
strace
strace 命令可以用于追踪程序运行过程中的系统调用及信号。
通过上面的介绍,我们知道 ltrace 命令是用来追踪函数调用的。strace 命令类似,但它追踪的是系统调用。何为系统调用?简单说就是我们可以通过系统调用与内核进行交互,完成我们想要的任务。
例如,如果我们想在屏幕上打印某些字符,可以使用 printf 或 puts 函数,而这两个都是 libc 的库函数,在更底层,他们都是调用 write 这个系统调用。
|
|
hexdump
hexdump 命令用来查看二进制文件的 16 进制编码,但实际它能查看任何文件,而不限于二进制文件。
一个二进制文件,如果你直接使用文本编辑器打开的话,将看到一堆乱码。这时候,你就可以使用 hexdump 命令来查看它的内容了。
hexdump 的显示格式是: 左边是字节序号,中间是文件的 16 进制编码,如果是可打印字符的话就会显示在右边。
通过使用这个命令,我们就可以大概知道这个二进制文件里面有什么内容,后面要做什么处理就比较方便了。
hexdump -C /bin/pwd | head
strings
strings 命令可以用来打印二进制文件中可显示的字符。
什么是可显示字符?简单说你在显示器上看到的字符都是可显示字符,比如: abcABC,.:。
我们知道,一个二进制文件里面的内容很多是非显示字符,所以无法直接用文本处理器打开。程序在被开发的时候,我们经常会加一些调试信息,比如: debug log, warn log, error log,等等。这些信息我们就可以使用 strings 命令看得到。
strings /bin/pwd | head
objdump
objdump是用查看目标文件或者可执行的目标文件的构成的GCC工具。
我们知道,程序在开发完成之后,需要经过编译,才可以生成计算机可以识别的二进制文件。我们写的代码计算机不能直接执行,需要编译成汇编程序,计算机才能依次执行。
objdump 命令可以读取可执行文件,然后将汇编指令打印出来。所以如果你想看懂 objdump 的结果,你就需要有一些汇编基础才可以。
|
|
gdb
gdb 就是所谓的 GNU debugger。
gdb 大家或多或少都有听说过。我们在使用一些 IDE 写代码的时候,可以进行打断点、步进、查看变量值等方式调试,其实这些 IDE 底层调用的也是 gdb 。
对于 gdb 的用法,可以写很多,本文就暂且不深入了。下面先演示一小段 gdb 最基础的功能。
|
|
查看pci设备
|
|
磁盘清理
|
|
scrot
pacman -S scrot
- 抓取区域:
scrot -s rectangle.png https://wiki.archlinux.org/index.php/Taking_a_screenshot_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87
delete folder
|
|
cp
|
|
|
|
查看挂载的USB设备
|
|
rmdir : delete folder
rm -rf
-r, -R, -recursive
remove directories and their contents recursively
-f, -force
ignore nonexistent files, never prompt
ps
ps -ef
-a 显示现行终端机下的所有程序,包括其他用户的程序。
-A 显示所有程序。
-e 此参数的效果和指定"A"参数相同。
-f 用ASCII字符显示树状结构,表达程序间的相互关系。
md5sum : compute and check MD5 message digest
统计某文件夹下文件的个数
|
|
统计某文件夹下目录的个数
|
|
统计文件夹下文件的个数,包括子文件夹里的
ls -lR|grep “^-“|wc -l
统计文件夹下目录的个数,包括子文件夹里的
ls -lR|grep “^d"|wc -l
说明:
ls -l
长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等)
grep “^-”
这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d
一行信息对应一个文件,所以也就是文件的个数
chrt
chrt命令 – 更改调度策略 chrt是用来操纵进程的实时属性,所有优先级值在0-99范围内的,都是实时进程,所以这个优先级范围也可以叫做实时进程优先级,而100-139范围内的是非实时进程。在系统中可以使用chrt命令来查看、设置一个进程的实时优先级状态。
语法格式: chrt [参数]
常用参数:
-m/–max 显示最小和最大有效优先级 -p/–pid 对现有的给定pid进行操作
-h/–help 显示此帮助 -V/–version 显示版本
http://blog.chinaunix.net/uid-20355427-id-1700516.html
http://blog.csdn.net/zhouleiblog/article/details/9325913
https://www.linuxcool.com/chrt
lsblk
lsblk 是一个 Linux 工具,它会显示有关你系统里所有可用块设备的信息 (包括磁盘、分区、逻辑卷等)。它从 sysfs 文件系统 中获取信息。 默认情况下,这个工具将会以树状格式显示(除了内存虚拟磁盘外的)所有块设备。
默认情况下 lsblk 会将块设备输出为树状格式:
NAME —— 设备的名称
MAJ:MIN —— Linux 操作系统中的每个设备都以一个文件表示,对块(磁盘)设备来说,这里用主次设备编号来描述设备。
RM —— 可移动设备。如果这是一个可移动设备将显示 1,否则显示 0。
TYPE —— 设备的类型
MOUNTPOINT —— 设备挂载的位置
RO —— 对于只读文件系统,这里会显示 1,否则显示 0。
SIZE —— 设备的容量
|
|
blkid
blkid 命令是一个命令行工具,它可以显示关于可用块设备的信息。 它可以识别一个块设备内容的类型(如文件系统、交换区)以及从内容的元数据(如卷标或 UUID 字段)中获取属性(如 tokens 和键值对)。 它主要有两类作用:用指定的键值对搜索一个设备,或是显示一个或多个设备的键值对。
Author -
LastMod 2011-04-23