本文只记录一下平时开发经常会用到的Shell命令,一些细节记录下来方便以后查找。
ls
查看某个目录下某天的文件
有时我们需要查看某个目录下某一天生成了哪些文件,这时可以执行如下命令:
ls /tmp/output -l --time-style=long-iso | grep 2018-07-05
find 命令
在Linux环境下开发,find命令使用可以说是非常的频繁,熟练的掌握可以极大地提高我们的工作效率。
找到所有想要的文件并且copy到指定目录
一个常见的场景是,我们在编译服务器上编译某个开源代码,执行make后,一般我们可能不想执行make install,而只是想得到生成的所有.a或者.so文件,这时我们 可以执行如下命令:
find ./ -name *.a -print0 | xargs -I{} -0 cp -v {} /lib/path
objdump
代码实例是C学习笔记一文中地址无关代码
小节中的代码。
参数-h
就是把ELF文件的各个段的基本信息打印出来。
参数-d
是将所有包含指令的段进行反汇编。
ELF文件中一个非常重要的段是.dynamic
,它是专门用于动态链接的,这个段里面保存了动态链接器所需要的基本信息,具体相关说明见c学习笔记。参数-R
就是用来查阅.dynamic
段中相关信息的。
tar
-c
:压缩文件-x
:解压文件-z
:用gzip压缩文件(压缩还是解压依赖是否组合了-c
或者-x
)-j
:用bzip2压缩文件,一般用于.bz2
结尾的文件。-v
(verbose):显示解压过程的具体信息-f
(file):指定要解压的文件,在f之后要立即接文档名,不能再加其他参数
#tar xjvf busybox-1.24.1.tar.bz2 -C /home/work
上面就是一个将以.bz2
格式的文件解压到指定路径的例子,如果不加-C
就解压到当前目录中。
#tar xzvf boa-0.94.13.tar.gz
上面就是将以.gz
格式的文件解压到当前目录的例子。
#ls
u-boot-2015.10 boa-0.94.13
#tar zcvf u-boot.tar.gz u-boot-2015.10
#ls
#u-boot-2015.10 boa-0.94.13 u-boot.tar.gz
上面是一个压缩文件的例子,在参数f之后的文档名是自己取的,我们习惯上都用.tar来作为辨识。
grep
grep命令用来搜索文本,或从给定的文件中搜索行内包含了给定字符串或单词的文件。 一般来说,grep显示匹配到的行。
grep命令的语法
grep [-option] '搜索字符串' filename
cat 文件 | grep '搜索字符串'
在一个文件进行搜索
搜索/etc/passwd文件下的boo用户:
$grep boo /etc/passwd
可以使用grep去强制忽略大小写。例如,使用-i选项可以匹配boo,Boo,BOO和其他组合:
$grep -i "boo" /etc/passwd
当你搜索boo时,grep命令将会匹配fooboo,boo123,barfoo35和其他所有包含boo的字符串,可以使用-w
选项去强制完全匹配搜索
$grep -w "boo" file
可以通过添加-c
选项显示匹配到的次数,-n
选项可以输出匹配到的行号,-v
选项可以进行反转匹配。
在一个目录中递归搜索
加上-r
或者-R
选项可以在一个目录中递归搜索所有文件。例如,在文件目录下面搜索所有包含字符串“192.168.1.5”的文件
$grep -r "192.168.1.5" /etc/
管道与grep命令
grep常常与管道一起使用,在这个例子中,显示硬盘设备的名字:
#dmesg | egrep '(s|h)d[a-z]'
显示CPU型号:
#cat /proc/cpuinfo | grep -i 'Model'
仅仅显示匹配到内容的文件名字
使用-l
选项去显示那些文件内容中包含main()的文件名:
$grep -l 'main' *.c
解压.cpio.gz文件
$gzip -dc file.gz | cpio -div
解压ramdisk.gz文件
$gunzip ramdisk.gz
解压后得到ramdisk镜像文件,该镜像文件会把原有的ramdisk.gz覆盖。
$mkdir mnt
$mount -o loop ramdisk mnt
挂载镜像到mnt目录,这样mnt目录里面就是展开后的文件系统目录。
PS命令
Linux上进程的5种状态:
状态 | 描述 | PS中的状态码 |
---|---|---|
运行 | 正在运行或在运行队列中等待 | R(runnable) |
中断 | 休眠中,受阻,在等待某个条件 | S(sleeping) |
不可中断 | 信号不可唤醒,必须等到中断发送 | D(uninterruptble sleep) |
僵死 | 进程已终止,等待父进程回收 | Z(zombie) |
停止 | 进程收到SIGSTOP,SIGSTP,SIGTIN | T(traced or stopped) |
显示所有进程信息,连同命令行
#ps -ef
列出目前所有的正在内存当中的程序
#ps aux
将目前属于自己这次登入的PID与相关信息列出来
#ps -l