桌面环境有 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~/abchttp://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键
本文出自 “linuxart” 博客,请务必保留此出处http://linuxart.blog.51cto.com/686203/843845