Linux 命令

好记性不如烂笔头,多练一定可以记住

1. tar.bz2.gz解压方法

 php-5.2.3.tar.bz2.gz  的解压方法
   [root@jock99 jock22]# gunzip php-5.2.3.tar.bz2.gz
   [root@jock99 jock22]# tar -xvf php-5.2.3.tar.bz2 (再进行解压)
   然后再 编译安装。。
tar zxvf xxx.tar.gz

http://blog.sina.com.cn/s/blog_7993615401015244.html

压缩:

tar czvf C02.tar.gz C02/

解压:

tar xzvf folderTared.tar.gz /theDir/

2. 将命令结果存入变量中``

filename=download.dat
var=`echo "aaa,bbb,ccc"|awk -F ',' '{print $2}' `
fsize=`ls -l $filename | awk '{print $5}'`
echo $var 
echo $fsize

3. curl 命令测试

curl "http://10.161.129.36:8090/mobile_road?df=4&idx=32&lv=12&dth=50&bn=1&bl=10" -o block.dat
-o将下载结果存入文件中。

4. 修改vim配置

vi ~/.vimrc
# 每次自动显示行号,tableSize设为4个空格。
:set ts=4
:set nu

vi中输入Tab制表符问题

直接i,然后tab按键,按backspace的时候发现tab输入的是四个空格; 另一种方式,i,然后ctrl+v,然后tab,backspace的时候确实是tab按键,不是四个空格。

5.shell逐行读取文件,处理、输出:

# read file line
#!/bin/sh

infile=download.dat
while read -r line
do
    url=`echo $line|awk -F ' ' '{print $1}'`
    dlsize=`echo $line|awk -F ' ' '{print $2}'`         
    #echo $line
    echo $url, $dlsize
done < $infile
download.dat 文件内容:

http://113.142.18.208/r?df=4&idx=32&lv=16&dth=20&bn=3&bl=292,270,293    20392
http://113.142.18.208/r?df=4&idx=32&lv=17&dth=20&bn=2&bl=292,293        17520
http://113.142.18.208/r?df=4&idx=32&lv=18&dth=20&bn=2&bl=292,293        19460
执行上述脚本,输出结果跟文件内容一致。

6. 基于curl,shell的自动化url测试工具:

输入文件内容如download.dat,通过awk将每行的url和dlsize存入两个变量中,通过curl下载数据写入临时文件block.dat,获取block.dat大小和dlsize比对。

# read file line
#!/bin/sh

infile=download.dat
datafile=block.dat

while read -r line
do
    url=`echo $line|awk -F ' ' '{print $1}'`
    dlsize=`echo $line|awk -F ' ' '{print $2}'`
    #echo $line
    #echo $url, $dlsize

    #use url for download
    curl $url -o $datafile

    #get datafile size
    fsize=`ls -l $datafile | awk '{print $5}'`

    #check is download successfully?

    echo    
    echo "+++++++++++++++++"

    if [ $fsize == $dlsize ];then
        echo "download successful"
    else
        echo "download failed."
    fi

    echo $fsize, $dlsize

    echo "-----------------"
    echo

done < $infile

download.dat 文件中每行内容:

http://113.142.18.208/r?df=4&idx=32&lv=12&dth=20&bn=6&bl=32,25,31,33,24,30 6483
对应最终一段输出内容 :

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  6483  100  6483    0     0  5693k      0 --:--:-- --:--:-- --:--:-- 5073k

+++++++++++++++++
download successful
6483, 6483
-----------------

7. Makefile 相关

% 零匹配或者若干字符匹配, %.h, %.c,  mobile_%.h  mobile_开头的头文件。

*   *.c所有后缀为点c的文件

$?  所有比目标新的依赖目标的集合,空格分开

当你希望只对更新过的依赖文件进行操作时,"$?"在显式规则中很有用,例如,假设有一个函数库文件叫"lib",其由其它几个object文件更新。那么把object文件打包的比较有效率的Makefile规则是: 
lib : foo.o bar.o lose.o win.o 
            ar r lib $? # 打包命令

$< 所有依赖目标集

$@ 所有目标集

例子:

    objects = foo.o bar.o 

    all: $(objects) 

    $(objects): %.o: %.c 
            $(CC) -c $(CFLAGS) $< -o $@ 
上面的例子中,指明了我们的目标从$object中获取,“%.o”表明要所有以“.o”结尾的目标,也就是“foo.o bar.o”,也就是变量$object集合的模式,而依赖模式“%.c”则取模式“%.o”的“%”,也就是“foo bar”,并为其加下“.c”的后缀,于是,我们的依赖目标就是“foo.c bar.c”。而命令中的“$<”和“$@”则是自动化变量,“$<”表示所有的依赖目标集(也就是“foo.c bar.c”),“$@”表示目标集(也就是“foo.o bar.o”)。于是,上面的规则展开后等价于下面的规则: 
    foo.o : foo.c 
            $(CC) -c $(CFLAGS) foo.c -o foo.o 
    bar.o : bar.c 
            $(CC) -c $(CFLAGS) bar.c -o bar.o 

一个简单的Makefile框架:

CC = gcc
XX = g++

CFLAGS = -Wall -O -g

TARGET = ./road_server

INCDIR = -I"/usr/local/include"

LIBDIR = -L"/usr/local/lib"

LIBS = -lfcgi -lz -lpthread

RM = rm -rf


%.o: %.c
	 $(CC) $(CFLAGS) -c $< -o $@

%.o:%.cpp
	 $(XX) $(CFLAGS) -c $< -o $@


SOURCES = $(wildcard *.c *.cpp)
OBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCES)))


$(TARGET) : $(OBJS)
	 $(XX) $(OBJS) $(INCDIR) $(LIBDIR) $(LIBS) -o $(TARGET)
	 chmod a+x $(TARGET)

clean :
	$(RM) *.o $(TARGETS)

参考:http://www.chinaunix.net/old_jh/23/408225.html


wildcard 函数,它有一个参数,功能是展开成一列所有符合由其参数描述的文件名,文件间以空格间隔。注意函数跟参数间空格隔开

SOURCES = $(wildcard *.c *.cpp) 结果是"a.c b.cpp d.cpp e.c" 等。

patsubst(patten substitude, 匹配替换的缩写)函数需要3个参数:第一个是需要匹配的模式,第二个是替换的模式,第三个是被处理的由空格分隔的字列。函数跟参数间空格隔开,参数之间用逗号隔开

OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(SOURCES))) 结果是"a.o b.o d.o e.o"

$< 表示上面一行 冒号右边所有的文件, $@ 表示上一行冒号左边所有文件。

VI正确输入制表符:修改Makefile文件时,i,tab输入制表符,然后backspace会发现tab被自动解析成四个空格。。输入tab方法:i,ctrl v,tab;此时backspace发现确实是制表符。

8. 手机抓包工具TcpDump

下载tcpdump包,拷到adb目录下,

电脑连接手机打开cmd,进入命令行,切换到adb目录下,执行:

adb push tcpdump /data/local/
adb shell
chmod 6755 /data/local/tcpdump
cd /data/local/
./tcpdump -p -vv -s 0 -w /sdcard/capture.pcap
要停止,按ctrl+c。

然后在sdcard目录下生成capture.pcap文件,使用WireShark 查看。

参考:http://www.pocketdigi.com/20111013/537.html

9. dos2unix

window上建立的文本文件每行结束符为^M,到linux上通过命令

dos2unix test.txt
去掉文本中的^M符号。

10. 查找命令

find ./ -name "*.sh"
寻找当前根目录下所有后缀为sh的文件。

11. 文件夹中文乱码问题

export  LANG=zh_CN

写到文件, vi ~/.bash_profile

文件中录入 export LC_ALL=zh_CN.gbk

VIM中中文乱码问题:

set encoding=cp936
set fileencodings=gbk,utf-8,big5

12. 账号切换

su 登陆root

su - peteryfren 切换到指定账户

cd ~跳到当前账户根目录

13. secureCRT中home、delete、end按键不好使:

工具 \ 键映射编辑器中 双击这些按键,对话框listview下选择发送字符串,后面文本框中依次输入:

E  VK_END                \033[4~
E  VK_HOME               \033[1~
E  VK_INSERT             \033[2~
E  VK_DELETE             \033[3~
http://www.opensoce.com/1340.html

14. Vim中home、delete、end按键不好使:
vi ~/.vim rc

set term=xterm
set nu
set backspace=indent,eol,start
set encoding=cp936
set fileencodings=gbk,utf-8,big5
set sw=4
set ts=4
set et
set hlsearch
http://www.cbug.org/2012/09/12/vim-end-home.html

15. Vim中样式设置

colo delek
syntax enable
color主题路径:/usr/share/vim/vim64/colors

16. SecureCRT 设置

反空闲 会话选项 / 终端 / 反空闲, 每隔600秒发送空格。

记住上次连接 全局选项 / 常规 / 默认会话 / 记住并连接最后一次使用的会话 。 克隆几个会话,下次打开后继续使用。

别自己设置字体 使用默认的Lucida Console字体。手工设置其他字体后会导致该字体丢失。。BUG。

主题:终端选择Linux,外观 颜色方案选择 黑 / 花白。

鼠标设置:Option  / Global Option / Terminal 下面的Copy on  select,Paste on right button


17. hexdump 使用

http://blog.csdn.net/zybasjj/article/details/7874720

hexdump file.bat -C | head //  asc码形式输出file.dat文件头部

18. history 格式设置,

root权限直接 vi /etc/bashrc

用户权限,vi ~/.bashrc 

#设置保存历史命令的文件大小
export HISTFILESIZE=10000000

#保存历史命令参数
export HISTSIZE=1000000

#实时记录历史命令,默认只有在用户退出之后才会统一记录,很容易造成多个用户间的互相覆盖
#等号后面不能有空格
export PROMPT_COMMAND="history-a"

#记录每条历史命令的执行时间
export HISTTIMEFORMAT="%Y-%d_%H:%M:%S"
然后执行history 10 输出最近使用10条命令。注意文件中复制运算符=前后不能有空格。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值