五、linux命令篇
linux的命令是linux里面相当重要的部分,如果命令不能很好的掌握,那linux用起来真的比较麻烦阿,但是命令好像很不少阿,在命令行上按2次Tab键,你就可以看到有多少命令了,我看了下我这里是2312,这么多命令吗?那要记住这么多命令不是要把人给累死阿,那首先,这么多命令不是一定都经常用到,平时用的就那么一些,其次,我们还有重要的帮助命令可以帮助我们实现遇到要实现命令的时候有忘记怎么用时的问题了,2个帮助命令就是  man    和      info   
关机命令   shutdown   记得我第一用linux的时候,不会关机,我就按住power键关机,可笑吧,其实我是知道不能这么关的,但是我不知道应该怎么关阿,那现在知道了,要用shutdown来关了。等等,关机前是不是要做点什么阿,就这么直接关机?那我们知道linux是个真正的分时多用户多任务系统,如果我们关机了影响到别人的操作怎么办?那关机前是不是还要看看系统在做些什么,是不是有人还在用着这个系统?那怎么查询呢?如果要看当前有谁在线,我们可以用  who命令,如果要看网络的联机状态,可以用netstat -a命令,要查看后台执行的程序,可以执行 ps -aux命令。使用这些命令就可以了解主机当前的使用状态,就可以判断是否可以关机了。另外就是,通知在线用户关机的时间,可以让在线用户一定时间结束其工作。对了,关机的时候,系统会自动调用一个命令  sync,这个是什么命令呢,是数据同步写入磁盘命令,主要作用是将内存中尚未更新进硬盘的数据及时的写入。虽然系统会自动调用,但是我们最好还是多执行一次这个命令比较放心。shutdown属于系统管理员命令,我在这里就写一些例子就可以了。
/sbin/shutdown -h +10 ' I will shutdown after 10 mins'   
命令告诉大家会在10分钟后关机。
shutdown -h now    立刻关机
shutdown -h 20:30     在20:30的时候关机
shutdown -h  +10      在十分钟后关机
shutdown -r now       立刻重新启动
shutdown -r +30       在30分钟以后重启
shutdown -k now 'This system will reboot'
仅发出警告而系统不重启
在学习命令的时候,有个重要的概念,那就是路径。路径分为绝对路径和相对路径
绝对路径:路径的写法"一定是由根目录/写起"例如,/usr/local/doc
相对路径:路径最前面没有根目录/字样。例如,当前目录是usr  要进入其下的local,那就cd local即可。指的是相对于当前目录的路径。
关于路径,高手们说,如果是在编写程序shell scripts,务必使用绝对路径。这样可以避免很多问题的产生。
目录的相关操作及命令
1,特殊目录,特殊目录包括,  .   一个点,表示此层目录   ..   表示上一层目录
-  表示前一个目录   ~  表示当前用户身份所在的目录。
2,cd  (切换目录)   change  directory
例子:cd           只有cd  表示回到自己的家目录
cd  /var/bin    进入目录var下面的bin目录
cd  ..      返回上层目录
cd  ../test      操作前目录是home/test1  操作后进入目录home/test
3,pwd(显示当前所在的目录)    print working directory
例子:pwd       后面无参数,表示显示的是当前所在的目录
pwd  -P   显示被连接过的目录背后真是正确的目录
4,mkdir  (建立新目录)   make  directory
参数: -m 设置权限。直接设置或者说强行设置权限。
-p  建立目录递归
mkdir test   建立一个名为test的目录
mkdir  -p  test1/test2/test3  依次在当前目录下面分别建立几个目录
mkdir   -m 711 test2   建立有711权限的目录test2
5,rmdir  (删除空目录)remove  directory
rmdir   test3     删除空目录test3    非空则不能删除
rmdir  -p  test1/test2/test3   依次删除空目录test1  test2和test3
如果要删除非空目录,可以用  rm  -rf  test  即可
6,$PATH 路径变量
echo $PATH    显示当前设置的路径变量
PATH="$PATH":/root     添加/root进路径变量
另外个执行命令的方法是利用绝对路径,这个需要你对命令的路径很熟悉的情况下才行。但是有一点需要说明的是绝对路径发出的命令比用路径变量发出的命令正确的多,因为利用PATH只是搜索命令路径然后执行的,这其中就存在路径中多个相同命令的执行问题。
7,ls    (查看目录)  list
ls  /usr     查看usr下面的目录和文件
ls -d  /usr   仅查看usr下面的目录
ls -a /usr  列出全部目录和文件包括隐藏属性
ls -l /usr   单行列出文件或目录,并且详细显示属性和权限
8,cp  (复制)copy
cp命令的用途很多,除了单纯的复制之外,还可以建立连接文件(就是快捷方式),比较两个文件的新旧而予以更新,以及复制整个目录等等。
格式  cp  参数   源文件   目标文件
cp ~/.bashrc  bashrc    将家目录下面的.bashrc 拷贝生成bashrc
cp /var/log/wtmp  .     将/var/log/wtmp复制到当前目录下,后面的点不能忘记
cp -a /var/log/wtmp wtmp2  把文件的所有属性一起复制,用的参数-a
cp -u ~/.bashrc /tmp/bashrc  若~/.bashrc比 /tmp/bashrc新,则复制。通常用于备份。这个是-u的作用。
cp ~/.bashrc ~/.bash /tmp  将家目录的.bashrc和 .bash都复制到  /tmp下
cp这个命令的用法有很多,这里就简单的写到这里。
9,rm (删除文件或目录)  romove
rm -f bashrc    强制删除bashrc这个文件
rm -i bashrc     询问是否要删除,需要按y确认
rm -r test1/test2/test3    递归连续删除多个目录,依次删除test1 test2 test3目录
这里有个很有用的命令就是rm -rf 强制删除非空目录,这个命令用的时候,自己一定要清楚,要格外小心,因为他将强行删除目录总的所有内容包括这个目录本身。
10,mv (移动文件与目录,或者重命名)
mv test test2  命令将test改名为test2
mv a b test   命令将文件或目录a和b移动到test里面去
同样mv有-f  强制移动和-i   提示移动。另外他还有个-u的参数,是用来对比数据的新旧而决定是否需要移动。
11,basename  获取路径的文件名,常用在shell脚本里,这里就简单的举个例子
basename  /etc/sysconfig/network   命令执行后的结果是network   获取了这个路径中的文件名network   还有个命令是获取路径的目录名称。对应的命令是dirname   例如dirname  /etc/sysconfig/network   命令执行后的结果是/etc/sysconfig   同样这个命令也常用于shell脚本里
12,来一个查看文件内容命令的大集合
cat  由第一行开始显示文件内容,这个命令很有用处。
tac  从最后一样开始显示,
nl    显示的时候,输出行号,
more  一页一页地显示文件内容
less   可以翻页的一页一页地显示内容      这个命令最好在此类中常用,因为方便
head  只看前几行,默认前10行, head -n 20  file  显示file的前20行
tail     只看最后几行
od      以二进制方式读取文件内容
13,touch   修改文件时间与创建新文件 
一个文件在linux下会有三个时间属性  
mtime 修改时间(modification time):当该文件的 内容数据更改时,就会更新这个时间,内容数据指的是文件的内容,而不是文件的属性。
ctime  状态时间  (status time):当文件的状态也就是权限或属性更改时,就会更新这个时间。
atime  访问时间  (access time) 当 读取文件内容  时,就会更新这个读取时间。
touch aa     创建空文件aa
ls -l   --time=ctime /etc/man.conf   显示这个文件的状态时间
touch -d "3 days ago" aa      修改mtime和atime为3天前
touch  -t  0907021530 aa  修改aa的mtime和atime为2009/07/02的15:30
14,chgrp  更改所属用户组   change group
chgrp  test  aa.log   文件aa.log的用户组更改为 test
15,chown   更改文件拥有者  change  owner 还可以直接修改用户组的名称。如果要将目录下的所有子目录或者文件同时更改文件拥有者的话,直接加上-R的参数就可以了。
chown bin install.log  将install.log的文件拥有者改为bin
chown  root:root  install.log  将install.log的文件拥有者改为root并且所属组也改为root
16,chmod  更改文件属性。
chmod 777 .bashrc   将.bashrc的属性改变为属性全开
chmod u=rwx,go=rx .bashrc  将.bashrc文件的属性改为文件拥有者有rwx,组和其他用户的权限为rx
chmod a+w .bashrc    将 .bashrc的文件拥有者,组,其他用户的权限都加上w权限
chmod o-w .bashrc   将 .bashrc的其他用户对他的权限取消掉w权限