您的位置:首页 > 运维架构 > Linux

Linux 常用命令使用总结

2013-01-02 02:24 661 查看
总结使用过的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' 可以。于是试试:

date -d 'yesterday' '+%F'


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

[b]42) wget下载ftp文件[/b]

wget ftp://username:password@127.0.0.1/filename.zip[/code] 
43)命令行下,将文件内容复制到系统剪切板

1. 安装xclip:

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、像黑客一样使用命令行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: