用了很久的linux,总是记不全所有命令,在此做个总结,为初学者提供一个入门的文档,也方便自己日后查询。
1. 基本命令
1.1 echo
[root@emma_test_server bin]# echo hello world hello world
当然,也可以用于打印一些系统变量,需要在变量名称前面加“$”,最为常见的即为PATH:
[root@emma_test_server bin]# echo $PATH /usr/java/jdk1.6.0_31/bin:/usr/java/jdk1.6.0_31/jre/bin:/usr/local/rvm/gems/ruby-1.9.2-p290/bin:/usr/local/rvm/gems/ruby-1.9.2-p290@global/bin:/usr/local/rvm/rubies/ruby-1.9.2-p290/bin:/usr/local/rvm/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin
[root@localhost conf]# PATH="$PATH":/root
1.2 ls
[root@emma_test_server bin]# ls -al total 8100 drwxr-xr-x 2 root root 4096 Aug 26 2011 . drwxr-xr-x 27 root root 4096 May 28 02:34 .. -rwxr-xr-x 1 root root 8992 Aug 28 2008 alsacard
在ls后面加文件名,则会只显示该文件的信息
[root@emma_test_server bin]# ls -l vi -rwxr-xr-x 1 root root 632912 Jun 12 2009 vi
1.3 cp, rm,mv
1.4 查看文件内容的命令
1. 5 查看文件类型:
[root@emma_test_server conf]# file httpd.conf httpd.conf: ASCII English text
1. 6 用户与权限:
username:groupname filename。
- 当建立文件时:(-rw-rw-rw)-(-----w--w-)== (-rw-r--r--)
- 当建立文件夹时:(drwxrwxrw)-(-----w--w-)== (drwxr-xr-x)
[root@emma_test_server conf]# umask
0022
[root@emma_test_server conf]# umask -S
u=rwx,g=rx,o=rx
我们可以看到,默认情况下,系统会自动mask掉文件的对于组成员和其他人的w属性。当然,我们也可以设置umask,如命令umask 002。
1.7 文件查找:
- which命令可以用于查找可执行文件
[root@emma_test_server conf]# which httpd /usr/sbin/httpd
- whereis和locate命令可以用于快速查找文件,但由于读取的是数据库,而不是扫描硬盘,所以可能会读取到已经删除了的文件,因为数据库不会实时更新。默认每天执行一次。也可以手动更新,用updatedb命令。
- find命令可以扫描硬盘,查找文件,但是比较耗时。用法为:find [PATH] [option] [action]。最常用的方法如下:
[root@emma_test_server conf]# find /usr/local/apache2/ -name httpd.conf -exec ls -l {} \; -rw-r--r-- 1 root root 18974 Nov 15 08:29 /usr/local/apache2/conf/httpd.conf -rw-r--r-- 1 root root 13346 Nov 5 10:45 /usr/local/apache2/conf/original/httpd.conf [root@emma_test_server conf]# find /usr/local/apache2/ -name httpd.conf /usr/local/apache2/conf/httpd.conf /usr/local/apache2/conf/original/httpd.conf [root@emma_test_server conf]# find /usr/local/apache2/ -size +10000k /usr/local/apache2/htdocs/emma-2011-09-28.log /usr/local/apache2/htdocs/emma-2011-09-27.log /usr/local/apache2/htdocs/emma-2011-12-28.log /usr/local/apache2/htdocs/emma-2011-09-09.log /usr/local/apache2/htdocs/emma-2011-09-12.log /usr/local/apache2/htdocs/emma-2011-10-27.log /usr/local/apache2/htdocs/emma-2011-11-18.log /usr/local/apache2/htdocs/emma-2011-10-28.log /usr/local/apache2/htdocs/emma-2011-11-04.log /usr/local/apache2/htdocs/emma-2011-10-21.log /usr/local/apache2/logs/access_log
1.8 文件链接:
1. 9 文件压缩:
- -c创建压缩文件
- -x解压缩文件
- -z用gzip压缩
- -j用bzip2压缩
- -v在压缩过程中显示被压缩的文件
- -f后面直接接压缩后的文件名
一般来说,压缩的时候用 tar -czvf EmmaDeploy.tar.gz EmmaDeploy;解压缩的时候用tar -zxvf EmmaDeploy.tar.gz
[root@emma_test_server mm]# history 10 1001 cd /usr/local/mm 1002 ls 1003 vim relin_deploy.py 1004 export 1005 locate -a 1006 locale -a 1007 export 1008 ulimit -a 1009 history 1010 history 10
可以用!!来执行上一条执行过的命令,当然,我们一般用方向键就可以实现同样的功能:
[root@emma_test_server mm]# !! history 10 1002 ls 1003 vim relin_deploy.py 1004 export 1005 locate -a 1006 locale -a 1007 export 1008 ulimit -a 1009 history 1010 history 10 1011 history 10
2. 文字处理中的命令:
- 一般模式,在使用vim source之后进入vim编辑器所处的模式,左下角没有INSERT字样
- 编辑模式,在使用i,a等按钮进入编辑模式,左下角会显示INSERT字样,可以插入字符
- 命令行模式,按下:,/,?之后进入命令行模式。
- h,j,k,l表示上下左右移动光标
- gg移动到第一行
- nG表示移动到第n行,n为数字
- G表示移动到最后一行
- n加回车,向下移动n行,n为数字
- 搜索:/word,向下搜索word字符串,?word,向上搜索字符串。n下一个,N上一个
- 删除:x删除后一个字符,X删除前一个字符,dd删除一行,ndd向下删除n行,d1G 删除光标到第一行的数据,dG删除光标到末尾的数据
- 复制:yy复制一行,nyy复制n行,y1G 复制光标到第一行的数据,yG复制光标到末尾的数据
- 粘帖:p粘帖到下一行,P粘帖到上一行
- :w写入文件,:q退出文件,:q!强行退出
3. Shell的使用中另一些常用命令:
[root@chn-setemma /usr/local/tongban/logs]# env ICU_DATA=/usr/local/emma_weibo_crawl/3rdParty/ICU/icu/data/SOLARIS/ DB2INSTANCE=db2admin MANPATH=:/opt/compilers/man TOMCAT_HOME=/usr/local/web-socket/tomcat
set打印除了环境变量外的所有变量。
[root@chn-setemma /usr/local/tongban/logs]# echo $$ 23559
export 变量名,将变量变为环境变量,那么子程序就可以使用该变量。注意此处的环境变量的意思是让子进程可以访问,export之后,该变量就会被保存到父进程的内存中,而子进程可以访问父进程的内存。但是与父进程平行的另一个用户的shell不能访问export出来的变量。另外,命令行数据的变量,甚至于环境变量都是针对此次登录的时候可见,一旦注销,所有的变量都会消失。因此,对于一些在每次登录的时候都需要的环境变量来说,需要将它们写在启动配置文件里面。
系统配置文件:/etc/profile, /etc/bashrc, /etc/profile.d/*.sh, 用户配置文件:~/.bash_profile, ~/.bash_login, ~/.profile, ~/.bashrc。如果需要所有用户都是用的变脸最好声明在/etc/profile中,而只有自己使用的变量声明在~/.bashrc中。
[root@emma_test_server mm]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 40960
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 40960
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
此处需要介绍一下Linux的小命令操作符"`",这个是键盘1左边的那个键。在两个`之间的命令作为一个子命令会被独立运行并传回结果。例如:最常用的就是`date --date="2 days ago" +%Y%m%d`放在另一个命令中间来获取时间,起一个小命令的作用
4. 管道相关:
- tee: ls -l /home | tee ~/homefile | more. tee可以在不改变原来的输出的情况下,重定向另一个输出文件。
- wc:ls -l /home | wc 用与计算行数
- sort:cat /etc/passwd | sort -t ':' -k 3:-t后面接的是分隔符,-k后面接的是分割之后根据第几个field进行排序
- uniq:cat /etc/passwd |sort | uniq:uniq表示重复的数据只显示一次
- cut:echo $PATH | cut -d ':' -f 5: 将结果进行分割,-d后面接分隔符,-f后面接要取得几个field
- grep:搜索命令