Linux SNIPPETS

登陆机器:ssh root@110.110.110.110

修改密码:passwd

CentOS关闭防火墙

1、重启后永久性生效:

开启:chkconfig iptables on

关闭:chkconfig iptables off

2、即时生效,重启后失效:

开启:service iptables start

关闭:service iptables stop

Linux用户登录日志信息

———————————————————————————————–

覆盖copy文件:在自己的机器执行

scp -vP36000 root@10.110.110.110:/data/app/audiofwdsvr/log/filename.tar .

追加copy文件:

rsync -ar root@10.110.110.110:/data/app/audiofwdsvr/log/filename.tar .

注:空格. 表示copy到当前目录下

———————————————————————————————–

删除文件 rm /home/oicq/test/result.txt

删除文件夹 rm -r ./FileName

-f强制删除 -r循环删除(删除文件夹及内容,保险)

切记不要做如下事情(后果很严重):

———————————————————————————————-

压缩命令:

tar压缩命令 tar cf filename.tar *.txt

tar.gz压缩命令 tar -zvcf filename.tar.gz ./file

bz2压缩命令 tar -jvcf all.tar.bz2 *.jpg

zip压缩命令 zip -r file.zip ./filename

解压缩命令:

tar 格式解压为 tar xf TestVoice.tar

.tar.gz 格式解压为 tar -zvxf xx.tar.gz

.tar.bz2 格式解压为 tar -jvxf xx.tar.bz2

zip 格式解压为 unzip test.zip

———————————————————————————————-

查看文件: ll = ls -l

查看文件大小:ll -h

按文件修改时间查看文件:ls -lrt

仅仅查看目录下文件夹: ls -d */

查看空间大小:df -h

显示当前路径:pwd

查看已知的进程对应目录:pwdx PID

自动补齐文件名:Tab

创建软连接:ln -s file1 file2

———————————————————————————————–

linux下使用split 来分割大文件

[root@localhost database]# ls -lh gkdb.db

-r–r–r– 1 root root 411M Jul 23 17:20 gkdb.db

将这个276M文件分割成20M的小文件,文件分割操作如下:

[root@localhost database]# split -b 20m gkdb.db gkdb_pack_

split 是命令, -b 20M 是指将每个分卷文件最大20M ,gkdb.db 需要分割的文件。

gkdb_pack_ 是指分割后的文件开头, 分割后后的文件名一般为 gkdb_pack_aa、gkdb_pack_ab、gkdb_pack_ac依次类推。

显示分割后的文件名及大小

[root@localhost database]# ll -lh gkdb_pack_a*

-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_aa

-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_ab

-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_ac

-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_ad

-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_ae

-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_af

-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_ag

-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_ah

-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_ai

-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_aj

-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_ak

-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_al

-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_am

-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_an

-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_ao

-rw-r–r– 1 root root 20M Jul 27 16:10 gkdb_pack_ap

-rw-r–r– 1 root root 20M Jul 27 16:10 gkdb_pack_aq

-rw-r–r– 1 root root 20M Jul 27 16:10 gkdb_pack_ar

-rw-r–r– 1 root root 20M Jul 27 16:10 gkdb_pack_as

-rw-r–r– 1 root root 20M Jul 27 16:10 gkdb_pack_at

-rw-r–r– 1 root root 11M Jul 27 16:10 gkdb_pack_au

最下面的那个文件是剩余的文件。 20*20+11=411MB

linux合并文件

[root@localhost database]# cat gkdb_pack_*>gkdb.tar.gz

split -l 1000 filename.txt new_name_ 指定每个输出文件有多少行,按照行数拆分文件

———————————————————————————————–

在Windows下实现文件合并,用“copy”命令就能实现:

格式:copy /b <filename1>+<filename2>+…+<filenameN> <filename>
使用方法:假设你有两个文件分别是filename.log.001 和 filename.log.002 那么我们在该目录下输入“copy /b filename.log.001+filename.log.002 filename.log”就可以了,其中filename.log就是你合并后生成的新文件名。

———————————————————————————————-

数据移动: mv data.zip path_name/

文件改名: mv name1 name2

上载文件: rz -bye

下载文件: sz filename 下载到默认目录

查看当前目录下txt文件的个数: ll *.txt | wc -l

———————————————————————————————–cd .. 返回上一级目录

cd ../.. 返回上两级目录

cd 进入个人的主目录
cd ~user1 进入个人的主目录
cd – 返回上次所在的目录

———————————————————————————————-

新建新的空目录 mkdir filename

删除一个空目录 rmdir filename

———————————————————————————————-

:sp 分横屏

:vsp 分竖屏

———————————————————————————————-

Linux环境下各类颜色的意义

白色:表示普通文件
蓝色:表示目录
绿色:表示可执行文件
红色:表示压缩文件
浅蓝色:链接文件
红色闪烁:表示链接的文件有问题
黄色:表示设备文件
灰色:表示其他文件

———————————————————————————————-

cp file1 dir1 将文档 file1 复制到目录 dir1 下,文件名仍为 file1

注:拷贝至当前目录的子文件夹cp file1 ./dir1

拷贝至上一级目录的文件夹cp file1 ../dir1

cp /tmp/file1 . 将目录 /tmp 下的文档 file1复制到现行目录下,档名仍为 file1.

cp /tmp/file1 file2 将目录 /tmp 下的文档 file1现行目录下,档名为file2

———————————————————————————————-

一个目录下有很多文件,显示一部分

ls | head

将其中的一部分打包下载

ls | head > a.txt

tar cf filename.tar a.txt

查看文件命令

cat a.txt(全部打开) cat *.txt > all.txt(合并文件)

more a.txt(从前向后查看,空格向下翻)

less a.txt(从前向后查看,pg up/pg dn 控制上下)

head -n 5 a.txt(查看前面5行) tail -n 5 a.txt (查看后面5行)

——————————————————————————————–

同时执行多个程序,后台运行,自己可以操作其他命令

nohup ./ImagePro > a.txt 2>b.txt &

nohup — 脱机,不关闭进程

& — 后台运行进程,自己可以操作其他命令

jobs -l — 查看程序是否结束,同时显示进程PID

ps -alx — 查看全部进程 ps 查看运行中的进程

Kill -9 PID — 杀死进程

———————————————————————————————–

查看每个目录实际占用空间大小 du –max-depth=1 -h

———————————————————————————————–

Vim显示行号

vim很强大,显示行号有两种方式:

1)用vim打开文件时,按“Esc”进入命令模式,键入

:set nu

即可显示行号

2)直接修改配置文件

vi ~/.vimrc (注:.vimrc文件原先可能没有,在此可以创建)

在该文件中添加一行

set nu

保存,退出

———————————————————————————————-

在vi中按u可以撤销一次操作

u 撤销上一步的操作
Ctrl+r 恢复上一步被撤销的操作

———————————————————————————————-

将b.txt中的内容复制到a.txt中

Vim a.txt

:r b.txt

———————————————————————————————-

vim常用

k、j、h、l 上、下、左、右光标移动

w、b 跳一个单词

^、$ 行首,行尾

nG 跳到第n行

Ctrl+f(b) 滚整屏

Ctrl+u(d) 滚半屏

gg、G 文件头、末

vim块操作(选择整列) 可用于批量增加文件名前缀

ctrl+v 上下箭头选中, y复制,P粘贴 c输入替换字符 ESC确定修改

Python脚本 批量增加文件名前缀

import os

l = os.listdir(‘.’)

for i in l;

os.rename(i, ‘aa_’ + i)

———————————————————————————————–

vim tab设置为4个空格

在.vimrc中添加以下代码后,重启vim即可实现按TAB产生4个空格:
set ts=4 (注:ts是tabstop的缩写,设TAB宽4个空格)
set expandtab

对于已保存的文件,可以使用下面的方法进行空格和TAB的替换:
TAB替换为空格:
:set ts=4
:set expandtab
:%retab!

空格替换为TAB:
:set ts=4
:set noexpandtab
:%retab!

加!是用于处理非空白字符之后的TAB,即所有的TAB,若不加! 则只处理行首的TAB

———————————————————————————————

设置linux下的动态库环境变量

在 Linux 下,如果你写好了自己的动态链接库,需要在其它程序里调用,则需要让这些程序能找到这些动态链接库。如果设置不对,会出现类似如下的错误:

test: error while loading shared libraries: libexampleso.so.0: cannot open shared object file: No such file or directory

vi ~/.bashrc

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib(动态库路径)

实际情况

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/vlfeat/bin/glnxa64/

修改完后,记得关掉当前终端并重新打开一个新的终端,从而使上面的配置生效。

———————————————————————————————-

recall文件在本地修改的时间与linux时间不符

`recall.cpp’ has modification time 3.5e+02 s in the future

recall文件在本地修改的时间在linux系统时间之后,采用touch *修正为系统时间

生成大小为零的文件: touch a.dat

———————————————————————————————-

Windows下生成jpg文件列表 dir /b /s *.jpg > name_list.txt

Linux下生成jpg文件列表 find ./img_words -name “*.jpg” > list.txt

将文件夹名字中的空格替换为_ rename ‘ ‘ ‘_’ *

———————————————————————————————

ls /data2/daweizhang/ImgPro/caijian/tailor/img_word/cj_word1/*.png > test.txt

等价于

find /data2/daweizhang/ImgPro/caijian/tailor/img_word/cj_word1/*.png > test1.txt

———————————————————————————————-

查看文件夹大小 du -h

linux下面

du -h –max-depth=2

mac下面

du -h -d 2

查看CPU top

查看硬盘大小 df -h

查看linux版本号 uname -a

列出块设备,除RAM外,以标准的树状输出格式,显示块设备 lsblk

以列表形式显示块设备 lsblk -l

按兆(G)为单位输出内存的已用,未用,总共等结果 free -m (free -g )

输出各处理器的详细信息 cat /proc/cpuinfo

查看机器类型:cat /etc/*release* (suse or centOS)

挂载硬盘 mount -t ext3 /dev/sdc /data2/

查看正在使用的端口号码 ss -ln

计算验证md5信息 md5sum

更改文件模式位 chmod +r w x

显示年份 cal

———————————————————————————————–

正则表达式:sed替换命令

sed -i “s#/data1/home/moses/pictures/daweiImage#/data2/20140522_cover#g” /data2/download/image.list.words

1,$s#\\#/#g 将\替换为/ (\\代表一个\)

:%s/^ *//g –> 删除行首的空格
:%s/ *$//g –> 删除行尾的空格
:%s/^\n//g –> 删除空行

vim打开文件统计其中的字符1的个数

:%s/1//gn –>7680 个匹配,共 5991 行

选择1-5行的数据

sed -n ‘1,5p’ filename > a.txt

输出某一行(9557行)的数据

awk ‘NR==9577’ mfcc.txt 或者 sed -n ‘9577p’ mfcc.txt

删除1-5行的数据

sed -i ‘1,5d’ filename

———————————————————————————————

两台机器间拷贝文件夹(不打包)

scp -r 文件夹名 用户名@ip地址:/远程服务器路径(重新全部拷贝)
如 scp -r /soft root@192.168.1.101:/root/soft ( 覆盖复制 )

rsync -arPq daweizhang @10.219.155.122:/data1/ (增量复制)

———————————————————————————————

程序已经在刷屏,又忘记了用nohup,此时在options->session options->Terminal->send string \0 防止中断

———————————————————————————————-

查找以前的输入命令

history | grep rsync

ctrl + r 搜索以前的命令

———————————————————————————————-

 

注释cpp文件中的连续多行

:m,ns#^#//#g

注释脚本文件中的连续多行

:m,ns/^/#/g

———————————————————————————————

wget 批量下载

如果有多个文件需要下载,那么可以生成一个文件,把每个文件的URL写一行,例如生成文件download.txt,然后用命令:wget -i download.txt

wget 下载后重命名 wget “http://…” -O

———————————————————————————————-

Linux下批量删除空文件(大小等于0的文件)的方法

find . -name “*” -type f -size 0c | xargs -n 1 rm -f

用这个还可以删除指定大小的文件,只要修改对应的 -size 参数就行

find . -name “*” -type f -size 1024c | xargs -n 1 rm -f

就是删除1k大小的文件。(但注意 不要用 -size 1k,这个得到的是占用空间1k,不是文件大小1k的)

查找空文件夹 find -type d -empty

———————————————————————————————

mkdir的-p选项允许你一次性创建多层次的目录,而不是一次只创建单独的目录。例如,我们要在当前目录创建目录Projects/a/src,使用命令

mkdir -p Project/a/src
建立目录Project,其中含有4个文件夹a, b, c, d,且这4个文件都含有一个src文件夹

mkdir -p Project/{a,b,c,d}/src

———————————————————————————————-

如何在DOS环境下获取某个目录下的文件夹列表:

1.打开cmd;

2.进入文件所在硬盘:d:回车

3.进入文件所在目录:cd D:\code\PicTran\jiangzhi\test\pic

4.获取完整路径名dir /s/b > list.txt

5.仅仅获取文件名dir /b > list.txt

———————————————————————————————

提取文件的前100行:head -n 100 girlPic.cha > 100.cha

查看linux位数:file /sbin/init

查找文件:yum search filename

———————————————————————————————

linux 下查看文件个数及大小

ls -l |grep “^-“|wc -l 或 find ./ -type f | wc -l
查看某文件夹下文件夹的个数,包括子文件夹里的。

ll | grep “^d” | wc -l

说明:

ls -l

长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等)

grep “^-”

这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d

wc -l

统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。

———————————————————————————————-

wc -l filename.txt 查看文件行数:使用换行符‘\n’作为行结束标志,实际是统计换行符个数;如果wc 统计行数时少一行(一般是windows文件):因为wc -l是按\n作为行结束符统计行数,所以最后一行如果没有\n的话会统计丢失,为什么linux下没有这样的问题?因为vim编辑器会自动在文件结尾加上\n,在加上文件结束符EOF。

wc -w 统计字数 ,一个字被定义为由空白、跳格或换行字符分隔的字符串

wc -L 打印最长行的长度,包含空格

———————————————————————————————-

Linux查看文件夹大小

du -sh * 查看当前文件夹or文件大小

du -s * | sort -rn 统计当前文件夹(目录)大小,并按文件字节大小排序

———————————————————————————————-

空格隔开三列文件,截取前面2列

cut -d ‘ ‘ -f1,2 r_jz_rdm1.txt >tmp.txt

去掉全是-1的行

grep -v “\-1 \-1” miss.txt > miss.2.txt

———————————————————————————————–

简单Makefile

all : hello another

hello : hello.cpp

g++ -o $@ $<

another : another.cpp

g++ -o $@ $<

make hello 的话只编译 hello.cpp

make another 的话只编译 another.cpp

Make 或 make all 的话会执行 hello.cpp 和 another.cpp 的编译命令

———————————————————————————————–

CC = g++

OBJ = hello.o

BIN = hello //要生成的可执行文件hello

AD_LIB = ./libhello.a //要生成的静态链接库libhello.a

all:$(BIN) $(AD_LIB) //all代表执行make的时候全部生成,没有all只会生成第一个 (hello)

all的位置在BIN 和 AD_LIB的下面

$(BIN): $(OBJ)

$(CC) -o $@ $^

hello.o: hello.cpp

$(CC) -c -g $<

$(AD_LIB):hello.o

ar -r $(AD_LIB) hello.o

.PHONY: clean

clean:

rm -f hello $(OBJ) $(AD_LIB)

———————————————————————————————-

Find 输出一个目录下包含子文件夹的Mp4文件列表

find /data1/daweizhang/TransAudio/VideoSeed/20141209/hot_favor_video -mindepth 1 -name “*.mp4” > list.txt

mindepth 是指定最小的遍历深度

find 20150526 -mindepth 3 -name “*.mp4″|wc -l 查找个数

Zip -r *.zip /data/daweizhang

Find 输出一个目录下dawei开头的不包含子文件夹的文件夹列表

find ./data_language/dawei* -maxdepth 0 >dawei.txt

———————————————————————————————-

linux —用uniq实现文件的并集和交集

经常有这样的需求:两个文本文件要求取重复的行或只取不重复的,简单的情况下用sort和uniq来处理是非常方便的:
利用现存两个文件,生成一个新的文件

1. 取出两个文件的并集(重复的行只保留一份)

2. 取出两个文件的交集(只留下同时存在于两个文件中的文件)

3. 删除交集,留下其他的行

1. cat file1 file2 | sort | uniq
2. cat file1 file2 | sort | uniq -d
3. cat file1 file2 | sort | uniq -u

———————————————————————————————-

静态库与动态库

将动态库文件打包成静态库文件命令:

ar -r filename.a *.so

将静态库解压缩为.so命令:

ar -x filename.a

windows下动态库为.dll后缀,在linux下为.so后缀,静态库在linux下为.a后缀

———————————————————————————————–

windows的回车换行符(CRLF),用dos2unix转换

原因是windows里面的\r\n,与linux的\n发生冲突,利用sed修改

第一种方法:Sed -i ‘s#\r##g’ ./a.sh

第二种方法:dos2unix a.sh

———————————————————————————————–

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

strings /lib/libc.so.1 | grep “version”

———————————————————————————————–

Gdb调试

Gdb ./test.sh

b test.cpp:100 (在test.cpp第100行设置断点)

r -LibList ./test_data/src_video_seed.txt -LibData ./test_data/t1.dat -LibFeaPath ./test_data/ -ProbeList ./test_data/prob_src.txt -LibStart 0 -LibEnd 0 (运行)

n 下一步

s 进入子函数

u 跳出循环

p 输出大小

l 显示源码

d 删除断点

c 跳至下一个断点

b 40 if (frame == 100) 条件断点

bt 查看堆栈的使用情况

i info 显示信息

gdb调用程序,在挂的地方,输入bt
顺序:
gdb 程序名称
r
等待挂掉,输入
bt

———————————————————————————————-

缺少动态库.so

./audio_test: error while loading shared libraries: libavcodec.so.56: cannot open shared object file: No such file or directory

Ldd audio_test 查看动态库是否全部安装成功

将ibavcodec.so考到当前目录下,然后增加一行export LD_LIBRARY_PATH=.

echo $LD_LIBRARY_PATH 显示

ldd audio_test 显示安装是否完成

———————————————————————————————

awk命令的基本格式:awk ‘awk程序语句’输入文件1 输入文件2

awk程序语句:条件类型1 {动作1} 条件类型2 {动作2}….

条件类型:支持&&、||、!等组合,也可为空

action为执行动作,比如print

awk打印特定格式:行号+整行数据+空格1

find /data/home/hadoop/ -name “*seed.jpg” | awk ‘{print NR” “$0″ 1″}’

NR代表正在处理的行号,$0代表整行,$1 代表第一个字段(第一列)

NF代表每一行($0)拥有的字段总数 BEGIN 起始位置 END结束位置

在文件列表中显示:行号+空格+列表

awk ‘{print NR” “$0}’ mp4.txt > new_mp4.txt

本行的第二个字段不为零,则打印此字段

awk ‘$2 != 0{print $2}’filename.txt > a.txt

计算第二个字段不为零的行数之和

awk ‘$2 != 0{i=i+1}END{print i}’ filename.txt

对一个txt文本随机排列每行数据

awk ‘BEGIN{10000*srand();} {printf “%s %s\n”, rand(), $0}’ file.txt | sort -k1n | awk ‘{gsub($1FS,””); print $0}’ > file.disorder
———————————————————————————————-

ls -a 显示隐藏目录

grep -r “…….” 循环查找

grep -nr “FunctionName” ./*.cpp 查找特定函数名位置

———————————————————————————————-

SVN 相关操作

增加文件到svn:svn add filename && svn ci filename -m “modify some parameter”

删除svn文件:svn delete filename && svn ci filename -m “with A repeat”

提交代码和注释:svn ci filename -m “modify some parameter”

下载代码到机器:svn co http://tc-svn.tencent.com/filepath/

更新代码: svn up

查看svn代码状态:svn st

“ ” 无修改

“A” 增加

“C” 冲突

“D” 删除

“I” 忽略

“M” 改变

“R” 替换

“X” 未纳入版本控制的目录,被外部引用的目录所创建

“?” 未纳入版本控制

“!” 该项目已遗失(被非 svn 命令删除)或不完整

“~” 版本控制下的项目与其它类型的项目重名

创建分支copy:

svn copy $TONG_YUAN_AUDIO/trunk $TONG_YUAN_AUDIO/branches/audio_xxxx -m “Create branch from trunk 2927”

其中:在.bashrc中加入下列两行,并且执行source ~/.bashrc

export TONG_YUAN_AUDIO=

“https://tc-svn.tencent.com/isd/isd_qzoneplatformdev_rep/QzonePhoto_proj”

移动一个文件或目录move:

svn move -m “Move a file” http://svn.red-bean.com/repos/foo.c 空格 http://svn.red-bean.com/repos/newfile/bar.c

每个文件夹下面有一个.svn目录,切记不要随便把其他地方的svn考到当前项目路径,否则会发生冲突(例如:cp * filepath)

svn 批量提交文件夹时,静态库和动态库不会提交,需要单独提交一次

———————————————————————————————-

标准输入:stdin(0) 标准输出:stdout(1) 标准错误输出:stderr(2)

1> 指标准信息输出路径(也就是默认的输出方式)
2> 指错误信息输出路径
2>&1 指将错误信息输出路径指定为标准信息输出路径(也就是都输出在一起)

>覆盖写 >>追加写

valgrind例子

/data1/daweizhang/Valgrind/bin/valgrind –leak-check=full -v –track-origins=yes

“./bin/audio_test” > valgrind.txt 2>&1

———————————————————————————————-

linux下ctrl 常用组合键

Ctrl+u 删除当前光标前面内容(undo)

Ctrl+k 删除当前光标后面内容

Ctrl+b 光标后退(back)

Ctrl+f 光标向前(forword)

Ctrl+a 光标移动至行首

Ctrl+e 光标移动至行尾(end)

Ctrl+d 删除光标所在单个字母(delete)

Ctrl+w 删除整个词(word)

Ctrl+y 在光标处粘贴剪切的内容

Ctrl+c 结束正在运行的程序

Ctrl+d 结束输入或退出shell

Ctrl+s 暂停屏幕输出【锁住终端】

Ctrl+q 恢复屏幕输出【解锁终端】

Ctrl+l 清屏,【是字母L的小写】等同于Clear

Ctrl+r 查找历史命令【输入关键字,就能调出以前执行过的命令】

———————————————————————————————–

source命令用法:
source FileName
作用:在当前bash环境下读取并执行FileName中的命令。
注:该命令通常用命令“.”来替代。

花括号{}扩展:

Echo {1..10}

1 2 3 4 5 6 7 8 9 10

i=1 j=10

eval echo {$i $j}

Mkdir -pv ./data{1..5}

Data1 data2 data3 data4 data5

———————————————————————————————–

[]扩展

cp 20150708_[1-1000].mp4 /data1/daweizhang/video

拷贝20150708_1.MP4至20150708_1000.MP4的全部视频到路径

———————————————————————————————–

计算1到100的连加之和:

echo {1..100} | sed “s/ /+/g” | bc

seq -s+ 1 100 | bc (-s 分隔符参数)

———————————————————————————————–

输出计算值

echo “scle=3;10/3″ |bc

———————————————————————————————–

去掉前导的目录部分后打印文件”名称”,如果指定的话,还可去掉尾随的”后缀”

basename /usr/local/lib/filname.mp4 -> filanme.mp4

basename /usr/local/lib/filename.mp4 .mp4 -> filename

———————————————————————————————–

一列数据,选出最大值,最小值,求和,求平均

1、求和
cat data|awk ‘{sum+=$1} END {print “Sum = “, sum}’

2、求平均
cat data|awk ‘{sum+=$1} END {print “Average = “, sum/NR}’

3、求最大值
cat data|awk ‘BEGIN {max = 0} {if ($1>max) max=$1 fi} END {print “Max=”, max}’

4、求最小值(min的初始值设置一个超大数即可)
cat data|awk ‘BEGIN {min = 999999} {if ($1<min) min=$1 fi} END {print “Min=”, min}’

———————————————————————————————–

linux个性化设置

步骤:
1. 编辑个人帐号/home/user/下的.bashrc文件(比如/home/yihan.zy/.bashrc)
2. 进行一些个性化的设置。文件中添加以下内容:
alias sa=”sudo -u admin -H” #自定义命令别名
alias setutf=”export LANG=zh_CN.utf8″ #调整系统为中文
alias setgbk=”export LANG=zh_CN.GB18030″
cd /home/admin/ #ssh登录后 直接进到此目录
———————————————————————-
echo $LANG 如果显示不是zh_CN.UTF-8,则增加以下内容切换为中文显示
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
3. 保存退出后,断开ssh,重新连接。.bashrc文件中的设置便能生效。
以上实例,在yihan.zy这个用户登录后,进入的默认路径即为:/home/admin
说明:
一般会在.bash_profile文件中显式调用.bashrc。登陆linux启动bash时首先会去读取~/.bash_profile文件,这样~/.bashrc也就得到执行了,你的个性化设置也就生效了。每次修改.bashrc后,使用source ~/.bashrc(或者 . ~/.bashrc)就可以立刻加载修改后的设置,使之生效。
——————————————————————————————–
安装打包好的vim 插件
来源:http://km.oa.com/group/471/articles/show/220728

先将mnet的secureCRT终端设置成utf8
cd ~
mkdir oldVIM
mv .vim* oldVIM

wget http://10.133.35.31/soft/vimIDE.tar.gz
tar zxvf vimIDE.tar.gz

cd vimIDE
tail -n 4 .bashrc >> ~/.bashrc
cp -rf .vimrc .vim ~/
(如果你发现出来的vim配色和顶部的图不一致可以执行 tail -n 4 .bashrc >> ~/.bash_profile ,bash_profile是交互login的时候自动运行,bashrc会调用bash_profile)
退出此机器,重新登录,再运行vim.

如果发现回车出现异常:<SNR>78_TriggerAbb(),则 grep -rn “TriggerAbb” ~/.vim

然后删除出现TriggerAbb的所有行

效果如下:


Linux下cp目录下的带隐藏文件的子目录

 

发表评论