总结使用过的Linux命令。
(LINUX常用命令总结:http://linux.chinaitlab.com/special/linuxcom/ )
1)查看某一文件夹大小,并排序。(du,sort命令结合)
例如当前文件夹是 .cache
$ du --max-depth=3 -h | sort -hr
680M .
657M ./tracker
17M ./abrt/spool/ccpp-2012-09-08-21:12:57-1942
17M ./abrt/spool
17M ./abrt
5.2M ./Kingsoft
3.6M ./Kingsoft/wpp/http
3.6M ./Kingsoft/wpp
1.7M ./Kingsoft/wps/http
1.7M ./Kingsoft/wps
852K ./ibus
768K ./wallpaper
684K ./ibus/bus
92K ./ibus/libpinyin
72K ./ibus/pinyin
注: du - estimate file space usage (详见man du)
sort - sort lines of text files (详见man sort)
2)显示某一列。(cut命令)
$ date
Wed Jan 2 10:22:52 CST 2013
$ date | cut -d' ' -f5
10:23:33
3)目录下查找某一文件。(tree、grep)
$tree | grep -C 5 "busybox"
4)在文件中用grep进行多关键字查找 (grep)
$ grep -E "open|create" fcntl.h
注意:使用正则表达式的知识,其中 ‘|’表示或的意思。
5)解决中文乱码
$ convmv -f gbk -t utf-8 -r --notest *
(从gbk 改变到 utf-8 , 进入子目录更改, 更正文件名。)
6)制作gif图片
$ convert -delay 0 相片-00{16..23}* -loop 0 test.gif
(注意: {16..23} 代表 16 17 18... 23 这个用法很便捷。)
7)截屏快捷键
fedora下,按下Prt Sc能对整个屏幕截屏; Shift + Prt Sc能自定义截屏
8)用 tr 命令删除空格
cat tmp | tr -d " " >tmp2
9)忘记加sudo了怎么办?
比如你输入了一个很长的命令,结果提示Permission Denied。是不是很郁闷。
比较简便方法是: sudo !!
!!表示上一次输入的命令。
或者按向上键,回到刚才输入的命令,然后CTRL + a , 光标是不是移动到了命令的前面?然后在输入sudo即可。
参考
10)用awk统计当前文件夹普通文件的总大小
ls -l | awk 'BEGIN {bytes=0};{if($1~/^-.*/) bytes+=$5};END {print bytes}'
11)统计一个文件夹中的文件行数(包含子文件夹) find xargs wc参考
find . -type f -name "*" | xargs wc -l
上面代码的问题是,如果文件名或文件夹名中含有空格会出错,修订版:
find . -type f -name "*" -print0 | xargs -0 wc -l
不够这样的结果会包含每个文件的行数信息。总行数显示在最后,如果只想显示总行数,可以这样:
( find ./ -name '*.php' -print0 | xargs -0 cat ) | wc -l
12)A "live" view of a logfile on Linux
http://www.howtogeek.com/howto/ubuntu/a-live-view-of-a-logfile-on-linux/
tail -f XXX.log
这样,如果XXX.log文件有新内容,也能及时显示在屏幕上。
13) 删除文件夹的两种方法
1. rm -rf dir
2. find . -name dir -type d -delete
13.5) 得到文件每一行的最后一个字符
1. sed 's=.*\(.\)$=\1=' file
2. awk '{print substr($NF,length($NF),1)}' inputfile
14) 查找某个目录下指定日期 的文件
如查找 20120228 12:00:01 创建的文件
法1: 先touch -t 一个 20120228 12:00:00 file1 和一个 20120228 12:00:02file2然后再用find的newer
touch -t 201202281200.00 file1
touch -t 201202281202.00 file2
find path -newer file1 ! -newer file2 -exec -ls -l {} \;
参考: http://blog.sina.com.cn/s/blog_685454170100jgef.html
法2: 使用ls awk
ll path | awk -F' ' '{ if( $6~'^2' && $7==28 ) print $0}'
15) 察看文件的时间戳、指定时间戳
stat file
touch -t file
16) getconf : 察看系统限制
$ getconf -a 显示所有
$ getconf -a | grep PATH
PATH_MAX 4096
_POSIX_PATH_MAX 4096
PATH /bin:/usr/bin
CS_PATH /bin:/usr/bin
17) cp:
打开覆盖文件提示 (强烈建议添加!)
打开~/.bashrc 添加如下内容:
alias cp='cp -i'
复制文件夹, 使用 -r 选项
cp -r ./servercode ./backup
18) netstat : 察看某个端口被谁占用
netstat -lpnt | grep
19) 使用shell来解码
echo $'\xe6\x9b\xbc\xe8\xb0\xb7'
输出: 曼谷
20) 删除指定文件外的文件
ls | grep -v hello.c | xargs rm -rf
会删除当前文件夹下的所有文件,除了hello.c
21) cmatrix
类似黑客帝国
22) 查看一个包里面有什么
rpm -ql python
q代表查询 l代表list,类似ls的-l
23) 哪个包提供了vim(或其他程序)
rpm -qf `which vim`
24)) 查看一个包都有哪些依赖包
yum deplist gcl
Reducing the yum deplist output to just list package names
$ yum deplist $(rpm -q gcl) | awk '/provider:/ { print $2 }'|sort|uniq
yum deplist gcl 2>/dev/null | awk '/provider:/ {print $2}' | sort |uniq
25) 查看XX由哪个包提供
yum whatprovides gcc
当然有的时候我们会猜测包名就是gcc,但是有的时候并不灵验。这时就可以用whatprovides来查询了。
26) 快速使用http方式共享目录
#进入需要共享的目录后运行:
python -m SimpleHTTPServer
#其它电脑使用http://ip:8000 来访问
#自定义端口为8080:
python -m SimpleHTTPServer 8080
很方便。
27)如何多线程下载
sudo apt-get install axel
axel -n 5 http://xxx.xxx.xxx.xxx/xxx.zip
或者
lftp -c "pget -n 5 http://xxx.xxx.xxx.xxx/xxx.zip“
测试了一下,比wget快。
28) 查看文件中间的第五行(含)到第10行(含)的内容
sed -n '5,10p' /var/log/apache2/access.log
29)查找关于xxx的命令
apropos xxx
man -k xxx
30) 统计当前目录下占空间最大的前10名文件或目录
du -sm * | sort -nr | head -10
31) 显示农历
#sudo apt-get install lunar
date '+%Y %m %d %H' |xargs lunar --utf8
32) 从命令行通知桌面消息
#sudo apt-get install libnotify-bin
notify-send "hello world"
33) linux screen
34)bash的extglob暨如果让bash支持文件名上的正则
需求
一个日志目录,里头存着很多 00, 01, 02 ... 31 的日期目录,如何列示出00到12号之间的所有目录?也就是说,如何在文件名上面,使用正则?
解法
shopt -s extglob
ls -al +(0[0-9]|1[0-3])
说明
bash only (?)
平时shell的通配符,只是通配语义,不是正则语义
加上这个 extglob 之后,才能是正则语义
语法格式是 +正则
35) 向某个终端发信息
获得要接收信息的终端
$ tty
/dev/pts/23
在另一个终端发送信息
$ echo `pwd` >/dev/pts/23
好吧,记住 every thing is a file
36) 获得昨天的日期
date '+%F' 取今天的日期,格式是:YYYY-MM-DD。读了一会儿 date(1),发现可以用 -d 'STRING' 选项获取任意日期的日子。不过,STRING 的内容没有文档,就猜,估计 -d 'yesterday' 可以。于是试试:
37) 你知道吗?
$ ^>^|
意思是把上一个命令中的'>'换成'|'再执行一次。
更多内容
38) Pipe to/from Clipboard
sudo apt-get install xclip
alias xclip="xclip -selection c"
date | xclip
可以把alias那一句写入 ~/.bashrc中。
39)lsof
察看打开的文件
察看哪些进程打开了Tag.py
$ lsof Tag.py
$ lsof .Tag.py.swp
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vim 4067 hongjincao 7u REG 8,7 16384 1450740 .Tag.py.swp
发现直接察看Tag.py没有输出,可能是vim使用.swp文件作为缓存吧。
然后查看该进程在哪个tty
$ ps aux | grep 4067
1000 4067 0.0 0.1 159892 9772 pts/23 S+ 11:54 0:00 vim Tag.py
1000 4280 0.0 0.0 13616 944 pts/11 S+ 12:00 0:00 grep --color=auto 4067
结果现实,该进程的tty是:pts/23
40) 统计代码行数 cloc
41) 统计当前文件夹下大小最大的10个文件(夹)
ls -S
删除他们(因为文件名中可能有空格,-Q可以用双引号将文件名包含起来)
ls -SQ | xargs rm -rf
42) wget下载ftp文件
wget ftp://username:[email protected]/filename.zip
sudo apt-get install xclip
2. 例如将文件file的内容copy至剪贴板,用于应用程序间拷贝
cat file | xclip -selection clipboard
详情见:http://stackoverflow.com/questions/5130968/how-can-i-copy-the-output-of-a-command-directly-into-my-clipboard
44) add user to sudoer
http://www.codeweblog.com/add-user-to-sudoer-list/
45) 查看图片的命令
eog x.jpg
(eog : eye of gnome)
======================一些好的文章=======================
1、yum how to
2、Ubuntu Skill
3、Copying and Sharing Files
4、how to become a hacker
5、how to ask question in a smart way
6、教堂与集市
7、unix 演绎
8、职业规划一家谈
9、像黑客一样使用命令行