桌面环境有  gnome     和   kde   这两种

ctrL+ alt + F1~F6   文字终端界面 tty

ctrl+alt+f7   图形终端


虚拟机   多加一个shift键


alt +F2  可以用命令打开程序
 <---gnome-terminal  
 <---konsole   


ctrl+shift+ 字母t键     是在一个终端上再多打开一个终端   pts
   alt+1  alt+2 alt+3  是分别在一号,二号,三号终端上快速切换


pts 和   tty的区别

 

------------------------------------------------------


        用户  
  |
  |
        bash  终端相当于是bash的接口和工具 cat /etc/shells
  |   bash-3.2-24.el5.i386.rpm
  |
     内核kernel   1,系统接口调用  www.kernel.org
  | 2,内存管理
  | 3,文件系统管理
  | 4,进程管理 
  | 5,硬件驱动
  |
      物理硬件

内部命令: bash 自带的命令


man cd
       bash,  :,  .,  [, alias, bg, bind, break,
       builtin, cd, command, compgen,  complete,
       continue,  declare,  dirs,  disown, echo,
       enable, eval, exec, exit, export, fc, fg,
       getopts, hash, help, history, jobs, kill,
       let, local, logout, popd, printf,  pushd,
       pwd,  read, readonly, return, set, shift,
       shopt,  source,  suspend,  test,   times,
       trap,  type, typeset, ulimit, umask, una-
       lias, unset, wait -  bash  built-in  com-
       mands, see bash(1)


外部命令: 安装外部软件所带的命令


man --注重于应用

info --注重于介绍

command -h
command --help

help command


[root@localhost etc]# ls /usr/share/man/


man1 普通用户可执行的命令和二进制文件
man2 系统核心调用的函数工具
man3 常用的一些函数与函数库
man4 设备文件的说明
man5 设置文件与一些其它格式的文件
man6 游戏相关
man7 协议有关,网络协议等
man8 管理员可操作的命令
man9 系统内核相关的文件


[root@li ~]# which ls
alias ls='ls --color=tty'
        /bin/ls
[root@li ~]# rpm -qf /bin/ls
coreutils-5.97-23.el5
[root@li ~]# rpm -ql coreutils-5.97-23.el5


================================


文件命令:

ls   列出目录的内容  同dos里的dir
ls -a 列出隐藏文件(就是以.开头的文件,包括.(当前目录)和..(上一层目录))
ls -l 详细列表
ls -l -a
ls -la
ls -ld /etc


ls /  --有颜色
/bin/ls / --没颜色 
dir /  --没颜色

--原因是ls 被做了别名
[root@li ~]# which ls
alias ls='ls --color=tty'
        /bin/ls

想自己做一个别名
# alias dir='dir --color'
# dir /    --就有颜色了

 

 ls -ld /root/
drwxr-x--- 27 root root 4096 Mar  4 10:17 /root/

文件类型   权限 链接数   拥有者 拥有组 大小 最后修改时间  文件名


 文件的分类:
  - 普通文件
  d 目录 directory
  l 链接文件 link
  p 管道文件 pipe
  b block文件,块设备 
  c 字符 character
  s 套接字文件socket  


用ls对一个目录大小由大到小进行排序列表 -S
按时间由最新时间到最老时间排序列表  -t


mkdir /test
cd /test

touch 1

touch {1,2,3}aa{4,5,6}bb{7,8,9}   --创建27个空文件
touch “{1,2,3}aa{4,5,6}bb{7,8,9}“   --创建1个空文件
---------------------

stat 1
Access: 2011-06-27 14:11:39.000000000 +0800
Modify: 2011-06-27 14:11:39.000000000 +0800
Change: 2011-06-27 14:11:39.000000000 +0800

touch 1  --再创建1,不会报“文件已经存在的错误"只是改变了文件的时间相关的属性

stat 1
Access: 2011-06-27 14:12:03.000000000 +0800
Modify: 2011-06-27 14:12:03.000000000 +0800
Change: 2011-06-27 14:12:03.000000000 +0800


touch {2..10} --创建2到10一共9个文件

touch {a..z}
touch {A..Z}
 

========================================================


目录命令:
pwd cd  mkdir rmdir 


[root@li /]# cd /var/mail/
[root@li mail]# pwd -P 
/var/spool/mail
[root@li mail]# pwd
/var/mail


[root@li mail]# ll -di /var/mail/
196459 drwxrwxr-x 2 root mail 4096 Jun 27 11:05 /var/mail/
[root@li mail]# ll -di /var/spool/mail/
196459 drwxrwxr-x 2 root mail 4096 Jun 27 11:05 /var/spool/mail/
--这两个目录在物理上属于同一个位置


cd

绝对路径  --相对于根目录的路径
相对路径  --相对于当前目录的路径

区分方法  --就看路径最左边是否有/

[root@li doc]# pwd
/usr/share/doc
[root@li doc]# cd /usr/share/doc/man-pages-2.39/  --绝对
[root@li doc]# cd man-pages-2.39/ --相对

cd ~ --cd到当前登录用户的家目录


mkdir  建一个空目录


链接数,目录默认为2(指的是.和..),文件默认为1;
 一个目录的链接数可以看成2+子目录数(但只有一层,也就是说子目录下的子目录不算)

mkdir aaa/aaa/aaa/aaa/aaa/aaa/aaa -p

 

rmdir   删除空目录(非空目录不能删除)


#!/bin/bash

mkdir {1..10000}
while true
do
        cd 1
        mkdir {1..10000}
done

 

=================================


阅读命令:

cat more less head tail

cat -n /etc/inittab  --空行也算一行
nl /etc/inittab  --空行不算 


more  翻页查看内容
 --回车向下翻行,空格向下翻页,q键退出

less    比more更灵活
 --方向键和page up,page down 都可以实现上翻下翻


head 默认显示文件的前十行

tail 默认显示文件的后十行


tail -50 /var/log/messages  --查看文件的最后50行
tail -f /var/log/messages    --动态监控文件的最后十行 

watch 接任何运行的程序,默认每两秒执行一次
watch -n 5 --指定每5秒监控一次

 

-------------------------------------

操作命令

cp mv rm


cp   源  目的 

[root@localhost ~]# cp /share/soft/iso/rhel-5.4-server-i386-dvd.iso /root/Desktop

-r   拷目录
-a   保留属性(拥有者,拥有组)


mv      移动,或者重命名
mv 目录不需要加-r参数,同时它会自动保留属性


--把所有的.html结尾的文件批量重命名为.php结尾的文件
touch {1..100}.html 

man rename --查看帮助

# rename .html .php *.html

 

 注意:   通配符 * 
把/etc/skel/目录下所有的文件目录(不包括skel这个目录)拷贝到一个空目录

错误一:因为目录下都是有.开头的隐藏文件
cp /etc/skel/* /test4  -r
cp: cannot stat `/etc/skel/*': No such file or directory


错误二:.*包含.. 也就是上一级目录,这样拷的话会把/etc/下的所有东西给拷过去
cp /etc/skel/.* /test4/ -r

 

rm  删除文件或目录

rm /test4/* -rf

[root@li test3]# rm $ORACLE_HOME/   -rf
--以root用户去删除的话,就相当于是删除/

  转义符

rm \{1\,2\}aa\{3\,4\}bb\{5\,6\}
rm 123\      --空格也需要转义


[root@localhost ~]# touch /test/1 23
[root@localhost ~]# ls /test/  
1     --23在当前目录
[root@localhost ~]# touch /test/1\ 23
[root@localhost ~]# ls /test/
1  1 23


--在目录内,把本目录删除的情况
[root@localhost test]# rm /test/ -rf
[root@localhost test]# ls /test
ls: /test: No such file or directory
[root@localhost test]# touch 1
touch: cannot touch `1': No such file or directory


===============================


管道 --一条命令完成不了的任务或者要多条复杂的命令来实现的任务,可以用管道来实现
   cat /etc/rc.sysinit |more   等于 more /etc/rc.sysinit
  cat /etc/rc.sysinit |grep  fi |wc -l
  grep root /etc/passwd |wc -l

 

重定向
  cat /etc/rc.sysinit |grep  fi |wc -l|cat >> /root/test/1 --追加
  echo aa > /root/test/1 --覆盖


用一条命令实现建立一个/root/test文件,并且写上内容为haha

[root@li /]# echo haha > /root/test
[root@li /]# cat /root/test
haha
[root@li /]# echo hehe > /root/test
[root@li /]# cat /root/test
hehe
[root@li /]# echo hoho >> /root/test
[root@li /]# cat /root/test
hehe
hoho
[root@li /]# sed -i '2s/hoho/hohohaha/' /root/test
[root@li /]# cat /root/test
hehe
hohohaha

把/etc/passwd里最后三行的内容给追加到/root/test
# tail -3 /etc/passwd >> /root/test

=============================================


# ps -ef |grep httpd | awk '{print $2}' |xargs kill -9


[root@localhost test]# ls /test/
1  1 23
尝试一:
[root@localhost test]# ls /test/* | rm -rf   --删除不了

尝试二:
[root@localhost ~]# ls /test/ | xargs rm -rf
[root@localhost ~]# ls /test/  
1  1 23
--删除不了,因为前面的结果里没有绝对路径,如果这条命令在cd /test目录之后再使用,结果就不一样了

尝试三:
[root@localhost ~]# ls /test/*
/test/1  /test/1 23
[root@localhost ~]# ls /test/* |xargs rm -rf
[root@localhost ~]# ls /test/  
1 23
--发现1\ 23这个文件没有删除掉,因为xargs不会帮你去转义

================================

一条命令把/etc下的所有.conf结尾的文件cp一份到/test目录下
cp /etc/*.conf /test/  --这样只能拷贝/etc/目录下一层的*.conf

find /etc -name "*.conf" -exec cp {} /test \;
--这样是把/etc/目录包括子目录下所有的*.conf拷到/test下


一条命令删除/tmp目录下有root关键字的文件
cd /tmp
rm *root* -rf

ls /tmp/*  |grep root |xargs rm -rf --在/tmp目录下不适用,因为ls /tmp/*得到的结果里因为有:符号


[root@localhost ~]# cd /tmp/
[root@localhost tmp]# ls  |grep root |xargs rm -rf


=======================

开机时  卡在启动sendmail服务时,一般就是主机名的问题。这种情况就只有等待,进去后把主机名对应好;
或者是输入用户名和密码登录系统慢
或者是进入系统后,打开终端或者firefox都很慢
--一般来说都是主机名的问题

hostname li.cluster.com  (xx.xx.com是FQDN,full qualified domain name)
vim /etc/hosts  --按I键进入插入模式
172.19.1.44     li.cluster.com --写上IP和主机名的对应
--写完后,按ESC键退出插入模式。按大写Z键两次 (如果没开大写灯,就shift+zz)就是保存退出

vim /etc/sysconfig/network
HOSTNAME=li.cluster.com  --这个一样得改


--如果主机名对应好之后,还是慢,那么检查一下/tmp目录里面是否有相关的文件
--仍然慢的话,就建议做下面的步骤:
rm /root/.gnome -rf
rm /root/.gnome2 -rf 

cd /tmp
rm *root* -rf

--做完上面的步骤后,reboot命令重启你的电脑

=============================================


一条命令把/etc下(不包含子目录)的所有.conf结尾的文件名保存到/root/Desktop/name文件里,要求使用一行输出


ls /etc/*.conf|xargs echo > /root/Desktop/name

 

一条命令把/etc下(不包含子目录)的所有.conf结尾的文件名保存到/root/Desktop/name2文件里,但要求名字的顺序是以文件从大到小排列的,要求一个名字一行

ls -S /etc/*.conf > /root/Desktop/name2

 

============================================================

vi
vim


--由两个不同的软件包所提供
[root@li /]# rpm -qf `which vi`
vim-minimal-7.0.109-6.el5
[root@li /]# rpm -qf `which vim`
vim-enhanced-7.0.109-6.el5

 

vi    vim (增强版vi,现在基本各种linux版本都带有vim)

cp /etc/passwd /tmp/
vim /tmp/passwd --现在打开,没有颜色,因为passwd不是在它应该在的路径,vim是可以区分出来的


vi   有三种模式:

1,一般普通模式:
2,编辑模式: i I o O a A r R
3,命令行模式:   : /  ?


移动相关:
 --ctrl+b 向上翻页  = page up
 --ctrl+f 向下翻页  = page down
 ctrl+d 向下移动半页
 ctrl+u 向上移动半页
 --G 移动到页末 =shift +g
 --gg 移动到页头
 --0 移动到行头 = home
 --$ 移动到行末  = end
 n(代表数字)+回车   向下移动N行  

 

删除,复制,粘贴
 x 向后删除一个字符 = delete
 X 往前删除一个字符 = backspace
 --dd 直接删除光标所在行 ndd  (n代表数字,删除n行)
 --yy 复制光标所在行 nyy (n代表数字,复制n行)
 --p 粘贴
 --u 回退上一次操作     按一次u只能回退一次
 ctrl+r 重做上一次操作


进入编辑模式:
 --i 当前insert
 I 行头insert
 a 向后一个字符insert
 A 行末insert
 --o 下一行insert
 O 上一行insert
 r 替换光标所在的字符
 R 从光标处向后一直替换
 --ESC 从编辑模式回退到一般模式

 

查找与替换:
 -- /word 查找单词      n  向下查找   N 向上查找
 -- :1,$s/old/new/g 从第一行到最后一行都用new替换old,g表示行里所有匹配的都替换
 -- :%s/old/new/g 从第一行到最后一行都用new替换old
   
 -- :n1,n2s/old/new/g     从n1行到n2行用new替换old
 -- :1,$s/old/new/gc 从第一行到最后一行都用new替换old,多加了一个c就可以要求用户确认哪些换哪些不换


--:set number    或者 : set nu   把每一行都加上行号
--:set nonumber  或者 : set nonu 去掉每一行前的行号

 

http://10.1.1.35/li@user1~/abc
http://10.1.1.35/li@user1~/abc
http://10.1.1.35/li@user1~/abc
http://10.1.1.35/li@user1~/abc
把上面四行替换成和下面这行内容
file:///172.19.1.120/abc

:1,$s/http\:\/\/10.1.1.35\/li@user1\~\/abc/file\:\/\/\
/172.19.1.120\/abc/g


:n(代表数字)+回车 直接把光标定位到n行

--:w 保存 (write)
--:q 退出 (quit)
--:wq 保存并退出    = shift+zz   = :x
-- +! 表示强制保存或者退出

:split 横分布局
:vsplit 竖分布局


--当两个终端同时打开的话,会产生一个.swap文件
如:你打开/tmp/passwd文件,会产生/tmp/.passwd.swap
解决方法是:直接删除掉它就可以了
rm /tmp/.passwd.swp

 

==============================================================


bash 的一些技巧补充

history 
!748  --直接执行histroy里显示的第748条命令

ctrl+shift+r 
(reverse-i-search)`':   匹配模式

!$ --代表上一条命令的后面部分


history -c --清除历史记录


多用TAB键