-- 命令基础 内部命令 --bash软件自带的命令 终端相当于bash的接口 终端 | shell(壳) bash ksh csh | 内核 man cd bash, :, ., [, alias, bg, bind, break, builtin, caller, cd, command, compgen, complete, compopt, continue, declare, dirs, disown, echo, enable, eval, exec, exit, export, false, fc, fg, getopts, hash, help, history, jobs, kill, let, local, logout, mapfile, popd, printf, pushd, pwd, read, readonly, return, set, shift, shopt, source, suspend, test, times, trap, true, type, typeset, ulimit, umask, unalias, unset, wait - bash built-in commands, see bash(1) 外部命令 --除了内部命令以外的都叫外部命令 ------------------------------ 命令帮助 man ls info ls ls --help help cd --只有内部命令才能用 ls /usr/share/man/ --man文档的位置 man的数字只是一个分类而已,不用太在意 ------------------------------------ 命令串讲 ls ls -l 或 ll ls -a ls -l -a 或 ls -a -l 或 ls -al 或 ls -la ls -S 按大小排 ls -t 按时间排 # which ls --查看ls命令路径和别名情况 alias ls='ls --color=auto' /bin/ls # dir --没色彩 # alias dir='dir --color=auto' --做个别名 # dir --有了 unalias dir --取消别名 -rw-r--r--. 1 root root 45012 Jul 14 07:32 install.log 第一位表示文件类型 - 普通文件 d 目录 p pipe管道文件 s socket文件 l 链接文件 b block块设备文件 c character字符型设备文件 ----------------------------- 文件查看有关的基础命令 cat head tail more less tac rev cat install.log more install.log --回车向下移一行,空格向下移一页,q键退出 less install.log --向上向下箭头可以移,page up 和page down键移页,q键退出 head install.log --看前十行 head -3 install.log --看前3行 tail install.log tail -3 install.log tail -f /var/log/messages --动态监控文件的末尾 小实验; 一个终端 tail -f /var/log/messages 另一个终端logger -t "任何信息" " 任何信息" 再观察第一个终端的变化 tac install.log --上下反 rev install.log --左右反 ----------------------------- 文件操作有关的命令 cd pwd mkdir touch cp mv rm # mkdir /test # cd /test # pwd /test # touch 1 # stat 1 File: `1' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 2883587 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2014-07-15 10:00:44.021608932 +0800 Modify: 2014-07-15 10:00:42.081858059 +0800 Change: 2014-07-15 10:00:42.081858059 +0800 block 块,操作系统块是一次IO的单位,系统块默认大小为4096字节;以后oracle里也会学到块的概念,oracle块默认为8192字节 inode 是文件系统给文件的一个编号,类似于文件的一个门牌号码 一个优化有关的问题: 块大好,还小好* 块大,一次IO数据量大,IO吞吐量大,空间浪费较多 块小,正好和块大相反 我想创建多个文件怎么做* 第一种:touch {1..10} 第二种seq 11 2 20 |xargs touch --seq产生一个序列, |符号是管道(表示把前面的结果传到后面) 第三种:写shell脚本做循环 cd 切换目录命令 cd ~ 或 cd --切换到当前用户家目录 cd - --切换到上一次的目录 . 代表当前目录 .. 代表上级目录 # pwd /test # cd /usr/share/man --绝对路径,相对根目录的路径 # cd ../usr/share/man/ --相对路径,相对当前目录的路径 cp 拷贝命令 cp 源 目标 对比下面这两条的区别 # cp /soft/rhel-server-6.3-x86_64-dvd.iso /test # cp /soft/rhel-server-6.3-x86_64-dvd.iso /test/ mv 重命名和粘贴命令 mv 1 2 --重命名 mv /soft/rhel-server-6.3-x86_64-dvd.iso /test/ 小实验: # ll -i 1 2883587 -rw-r--r--. 1 root root 0 Jul 15 10:56 1 # cp 1 2 # ll -i total 0 2883587 -rw-r--r--. 1 root root 0 Jul 15 10:56 1 2883588 -rw-r--r--. 1 root root 0 Jul 15 10:56 2 # mv 1 3 total 0 2883588 -rw-r--r--. 1 root root 0 Jul 15 10:56 2 2883587 -rw-r--r--. 1 root root 0 Jul 15 10:56 3 这个实验说明:cp一个文件,新文件有新的inode,mv 一个文件,innode不变(准确来说,是在同一个分区里mv才不变,不同分区还是会变) 批量重命名 # pwd /test # rm * -rf --此命令非常危险,用的时候一定要注意 # touch {1..100}.php 问题:把这100个.php结尾的文件重命名成.html结尾 # rename .php .html * rmdir rm 删除命令 rmdir只能删除空目录 rm能删除任何文件 rm -rf /test/ --r参数表示递归,f参数表示不用确认 小练习: 如何把/etc/skel/目录里以.开头的隐藏文件拷到/test/目录 nautilus /etc/skel/ --图形打开一个目录 # cp /etc/skel/* /test/ -rf --错误用法,*号不能代表隐藏文件 # cp /etc/skel/.* /test/ -rf --错误用法, .*也包括..,也就是会把上级目录的东西也拷过去 # cp /etc/skel/.[a-Z]* /test/ -rf --正确做法 ------------------------------------------- 管道 # stat 1 | tail -3 # tail -5 /etc/passwd |head -1 # cat /etc/passwd |wc -l # cat /etc/passwd |grep root |wc -l # cd /etc # grep root * --表示在当前目录的所有文件里查找有root关键字的行 # grep root * |cut -d":" -f1 |sort|uniq -c |sort -n -r --------------------------------------------- 重定向 0 标准输入 ----- 终端 --------标准输出 1 | | 错误输出 2 标准输入:指你键盘的输入,或者敲的命令 标准输出:指结果里正确的输出,可以用> 或者 1> 来重定向 错误输出:指结果里错误的输出,可以用 2> 来重定向 # ls 1 2 ls: cannot access 2: No such file or directory --错误输出 1 --正确输出,也就是标准输出 # ls 1 2 > /dev/pts/2 --把正确的重定向到/dev/pts/2,错误的还是会默认显示到屏幕 ls: cannot access 2: No such file or directory # ls 1 2 2> /dev/pts/2 --把错误的重定向,正确的显示到屏幕 1 # ls 1 2 &> /dev/pts/2 # ls 1 2 > /dev/pts/2 2>&1 --这两个写法都是正确和错误一起重定向 重定向的其它用法: # cat passwd.txt 123 123 # passwd < passwd.txt &> /dev/null --把root用户密码改成123.并且信息都扔掉(/dev/null类似一个黑洞设备) # mail -s "邮件主题" root < mail.txt --把mail.txt里的内容做为邮件正文重定向给这封邮件发给root用户 # echo 邮件正文 | mail -s "邮件主题" root --用管道的用法来实现发邮件 # echo abc > 123.txt --如果123.txt不存在,则创建123.txt,并内容修改为abc;如果123.txt文件存在,则只把原内容修改为abc # echo cba >> 123.txt --两个>符号,就是原内容不变,再追加新的内容 # cat > 123.txt <> 123.txt << HAHA --相比于上一条,这是追加内容,而且标记不一定要用EOF,只要前后一致成对出现就可以 > 333 > 444 > HAHA ------------------------------------------------------------------------------------- 文本编辑器 记事本 写字板 word gedit emacs vi/vim vi vim (增强版vi,现在基本各种linux版本都带有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 -- :%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 去掉每一行前的行号 :n(代表数字)+回车 直接把光标定位到n行 --:w 保存 (write) --:q 退出 (quit) --:wq 保存并退出 = shift+zz -- +! 表示强制保存或者退出 如果你希望vim打开时默认就有行号,可以这样做 # vim /etc/vimrc set number --在这个配置文件空的地方加上这一句就可以了 ------------------------------------------------------------------------- 虚拟化 rhel5里自带的虚拟机叫xen rhel6里自带的虚拟机叫kvm 商业的老大是vmware 我们这里先学会图形化来使用vmware的workstation版 安装方法 # chmod 755 VMware-Workstation-Full-8.0.2-591240.x86_64.bundle --对这个文件给执行权限 # ./VMware-Workstation-Full-8.0.2-591240.x86_64.bundle --用此命令执行安装 安装完后,启动它 # vmware & 创建一个虚拟的过程,见笔记里的截图 安装一个虚拟机,如果报不支持64位的话,请重启你的宿主机,在bios里把CPU选项的intel 虚拟化技术选项开启,重启后再来使用 关于vmware的删除 # vmware-uninstall --用此命令查看帮助 # vmware-installer -l Product Name Product Version ==================== ==================== vmware-workstation 8.0.2.591240 # vmware-uninstall -u vmware-workstation --用此命令可以卸载这个软件