linux 完整学习资料:第一章 基本命令





分区要注意的是:

1,重装时一般只格式化/就可以了,(相当于windows只格C盘) ,所以把重要的业务(包括数据库,服务等)单独分区出来,  以后遇到系统崩溃时,只格/就可以了

2,/boot目录单独分出来,并且要分为第一个分区/dev/sda1,主要是为了支持大硬盘的问题

3, swap分区(交换分区)为内存的两倍大小为宜,如果内存大于4G,则还是只分4G给swap,类似windows里的虚拟内存

4,因为mbr(master boot record)里分区表只有64个字节的原因,所以只能保存四个分区,所以就出现了扩展分区的概念,我们可以分为三个主分区加一个扩展分区(3P+1E) 的方式,但要注意的是扩展分区要把多的分区全部分为扩展分区,否则那部分就浪费了。再要分的话就只能在扩展分区里再继续分逻辑扩展分区。分区数最大为15

5,分区时最好是连续从头往后分,不要跳着分,会可能造成尚观的视频不能看的情况(在尚观外就随便了)

6,分区大小一旦确定好后,装好系统后就不能更改分区大小,只能增删分区(逻辑磁盘组LVM除外)



/boot

/

swap


/vm

/soft  


MBR    512字节   446+64(分区表)+2



6416+16+16+164 primary

3 primary  + 1 extend ( 扩展分区内就可以分为N个逻辑扩展分区)



安装系统包时要注意的是:

1,装包多的话,装系统的时候慢,并且在实际的情况下认为越瘦的系统越跑得快,所以只装自己实际要用到的包

2,这里是学习环境,大家可以自由装包,注意重点要装的是  开发库和开发工具这两个组,还有语言方面(前面选的英文系统要装中文支持,前面选的中文系统要装英文支持)

3,包没装也没有关系,装好系统后还可以再装




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



比如:在windows上装一个QQ软件,可能就只在装一个盘的一个目录下(如D:\QQ) 那么qq里所有的东西全在这个目录下

而linux下装一个qq(rpm版),可能会分散到不同的地方;如qq这个命令在/bin下,配置文件在/etc下,链接库文件在/lib下,所以可以看出来linux的目录系统是按功能来分的


linux下也有把所有东西都安装到同一个目录下,但是这个目录的子目录一般也会有bin  etc  lib  等





linux  目录结构介绍




[root@station221 ~]# ls /

bin   etc   lost+found  mnt    opt   sbin     srv       tmp

boot  home  media       net    proc  selinux  sys       usr

dev   lib   misc        notes  root  share    tftpboot  var




/bin     存放的是系统可执行的二进制文件,简单理解为命令

/sbin 系统管理员可执行的二进制文件


/etc 存放的是配置文件



lost+found  分区下才会有这个目录,存放系统出错时遗失的碎片文件



/mnt  默认临时的挂载目录(mount)

/media  默认临时挂载media的目录

/misc 默认临时挂载目录



/opt 扩展软件包




/tmp     存放临时文件的目录

/boot    存放引导镜象的目录

initrd-2.6.18-164.el5.img     vmlinuz-2.6.18-164.el5


/home  用户家目录

管理员的家目录为/root

/root/anaconda-ks.cfg--记录安装系统的方式和分区和安装包等信息

/root/install.log--记录安装系统安装了哪些软件包,及其安装顺序


/root/Desktop--就是你的桌面




/proc  /sys 虚拟目录 ,它记录的是当前系统的各种动态信息和状态

cat /proc/cpuinfo--看CPU信息

cat /proc/meminfo--看内存信息


/selinux    高级安全管理--空则表示selinux被关闭


/usr  用户软件目录,用户装源码版的编译软件一般都会存放在此;类似根目录里普通用户的根


/dev      一切设备都是文件 device

/dev/sda     scsi   SATA  U盘

/dev/hdaIDE

/dev/cdrom     光盘

/dev/fd0软驱

/dev/lp打印机

/dev/mouse鼠标


/lib系统使用的函数库目录,程序运行过程中,会调用一些这里的库文件

类似windows里的.dll

ldd /bin/ls--查看ls命令要调用哪些库,如果里面任意一个库不能使用,则ls命令无法使用


/var    主要存放执行过程中经常变化的文件,比如说:日志,邮件

/var/lib  程序执行过程中,使用的数据文件放置的目录:比如:rpm包的数据库, 的locate查找的数据库等

/var/log  系统日志和各种服务日志存放的目录

/var/run  一般用来存放程序运行的pid

/var/spool/mail每个用户收邮件的目录




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


# locate *.iso--查找系统上以.iso结尾的文件



# mount /share/soft/iso/rhel-5.4-server-i386-dvd.iso /mnt/ -o loop


# ls /mnt   --查看iso里有哪些文件




光盘目录结构:   不同的版本或者不同的linux分发版都会有少许不同


[root@li ~]# ls /mnt/VT/ | wc -l

38

[root@li ~]# ls /mnt/ClusterStorage/ | wc -l

41

[root@li ~]# ls /mnt/Cluster | wc -l

34

[root@li ~]# ls /mnt/Server/ | wc -l

2294





Server   普通常用软件包

Cluster  集群软件包

ClusterStorage  集群存储软件包

VT  虚拟化  XEN  


images  引导映象文件

isolinux 引导有关


RPM-GPG-KEY-redhat-release   有时软件包不能装在你的系统上,可以导入这个key,就可以安装了



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



桌面环境有  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的区别






--在rhel6下

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


ctrl+alt+f1   图形终端





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



/root/anaconda-ks.cfg

/root/install.log





GNU Bourne-Again SHell


      用户

      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系统内核相关的文件



# ls /usr/local/haproxy/share/man/man1/haproxy.1

# cp /usr/local/haproxy/share/man/man1/haproxy.1 /usr/share/man/man1/

# man haproxy





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



文件命令:


ls   列出目录的内容同dos里的dir

ls -a 列出隐藏文件(就是以.开头的文件,包括.(当前目录)和..(上一层目录))

ls -l 详细列表

ls -l -a

ls -la

ls -ld /etc


用ls对一个目录大小由大到小进行排序列表-S

按时间由最新时间到最老时间排序列表-t



[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 /--有颜色

/bin/ls /--没颜色

dir /--没颜色


--原因是ls 被做了别名

[root@li ~]# which ls

alias ls='ls --color=tty'

       /bin/ls


想自己做一个别名

# alias dir='dir --color'

# dir /    --就有颜色了



# unalias dir   --取消别名





ls -ld /root/

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


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



文件的分类:

-普通文件

d目录directory

l链接文件link

p管道文件pipe

bblock文件,块设备

c字符character

s套接字文件socket  


常用颜色

普通文件黑色

目录  蓝色

压缩包  红色

.......



mkdir /test

cd /test



touch


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个空文件

touch 2 3   --创建一个2,同时又创建一个3

touch '2 3'  --创建一个 2空格3 的文件

touch {4..10}--创建4到10

touch {a..z}

touch {A..Z}



sequence 序列

seq 100  产生1到100的序列

# seq 1 2 100 |xargs touch--创建出1到100内的奇数文件





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




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




目录命令:

pwdcd mkdirrmdir


[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 直接加回车--cd到当前登录用户的家目录  




--下面这种是特殊情况,一般目录是没有的

# ll /var/mail--右边不加/ 列出连接

lrwxrwxrwx 1 root root 10 Jun  3 17:05 /var/mail -> spool/mail

# ll /var/mail/--右边加/  是列出所有内容

............




.和..的区别




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





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



阅读命令:


catmorelessheadtail



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

nl /etc/inittab --空行不算


tac /etc/inittab   --上下反着看


rev /etc/inittab   --左右反着看



more 翻页查看内容

--回车向下翻行,空格向下翻页,q键退出



关于退出:q,quit, exit,logout,bye,ctrl+d,EOF, ctrl+c



less    比more更灵活

--方向键和page up,page down 都可以实现上翻下翻


head默认显示文件的前十行


tail默认显示文件的后十行



# tail -5 /etc/rc.sysinit |head -1--查看倒数第五行



tail -50 /var/log/messages  --查看文件的最后50行

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


watch 接任何运行的程序,默认每两秒执行一次

watch -n 5--指定每5秒监控一次



# du -sh /share/weekend4/--计算一个目录里所有大小的总和

65M     /share/weekend4/




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



操作命令


cpmvrm



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


-r   拷目录

-a或者-p   保留属性(拥有者,拥有组,权限)



mv      移动,或者重命名

mv 目录不需要加-r参数,同时它会自动保留属性

当前目录下mv 只改变名字,不改变inode(也就是说在文件系统上的编号不变)(但如果mv到另一个目录,或者另一个分区的话,还是会改变inode)    



[root@li test5]# ll -i 11

11948646 -rw-r--r-- 1 root root 0 Feb 26 10:47 11

[root@li test5]# mv 11 111

[root@li test5]# ll -i 111

11948646 -rw-r--r-- 1 root root 0 Feb 26 10:47 111

[root@li test5]# mv 111 /tmp/111

[root@li test5]# ll -i /tmp/111

11948646 -rw-r--r-- 1 root root 0 Feb 26 10:47 /tmp/111

[root@li test5]# mv /tmp/111  /boot/111

[root@li test5]# ll -i /boot/111

6048 -rw-r--r-- 1 root root 0 Feb 26 10:47 /boot/111





rm  删除文件或目录


rm *.php  -rf


rm /test4/* -rf


[root@li test3]# rm $ORACLE_HOME/   -rf

--以root用户去删除的话,就相当于是删除/



rm {1..10} -rf

rm {a..z} -rf

rm *9 -rf



转义符


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




练习:

练习1:

--把所有的.html结尾的文件批量重命名为.php结尾的文件

touch {1..100}.html  


man rename--查看帮助



rename .html .php *.html


rename .php .aaa {50..80}.php





练习2:

注意:   通配符*  

把/etc/skel/目录下所有的文件目录(不包括skel这个目录)拷贝到一个空目录




错误一:因为目录下都是有.开头的隐藏文件

cp /etc/skel/* /test4  -r

cp: cannot stat `/etc/skel/*': No such file or directory



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

cp /etc/skel/.* /test4/ -r




练习3:把下面的除了2134之外的文件全删除

# ls

134dsafa464dsf  safwqtgdfgsd  sdfsadf  xzvz

2134            sdfsad34dga   sewrqwr



# rm *[a-z]* -rf





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



管道--一条命令完成不了的任务或者要多条复杂的命令来实现的任务,可以用管道来实现

cat /etc/rc.sysinit |more   等于 more /etc/rc.sysinit

cat /etc/rc.sysinit |grep  fi |wc -l

grep root /etc/passwd |wc -l

tail -5 /etc/inittab |head -1





重定向

cat /etc/rc.sysinit |grep  fi |wc -l|cat >> /root/test/1--追加

echo aa > /root/test/1--覆盖





输入输出流


默认的情况: 敲键盘 --------> 屏幕

  standard  input         standard  output




重定向


1,标准输入(stdin);代码为0,使用<  或者  <<--默认设备就是键盘

2,标准输出(stdout);代码为1,使用>  或者 >>或1 > 或 1 >>--默认设备是屏幕

3, 错误输出(stderr);代码为2,使用 2> 或者 2>>   --默认设备也是屏幕




标准输入 -->命令-->标准输出--->  设备/文件

 |

 |

错误输出

设备/文件



# cat passwdfile

123

123

# useadd user1

# passwd user1 < passwdfile--把本来要用键盘输入两次密码的标准输入换成了从一个文件里读取内容(文件内容当成了标准输入)

Changing password for user user1.

New UNIX password: BAD PASSWORD: it is WAY too short

Retype new UNIX password: passwd: all authentication tokens updated successfully.



# passwd user1 < passwdfile 1> /dev/pts/2--标准输出重定向给pts/2,错误输出默认输给当前终端屏幕

# passwd user1 < passwdfile 2> /dev/pts/2--错误输出重定向给pts/2,标准输出默认输给当前终端屏幕




# passwd user1 < passwdfile > /dev/null 2>&1

--修改了密码,并把所有标准和错误的都重定向给 黑洞设备/dev/null了(也就是信息不保留)  ;  2>&1是一个写法




EOF  end of file符号




[root@web test4]# cat test

sdfsafas

sfdsaf



[root@web test4]# cat > test

aaaaaa

bbbbbb

EOF

--这里没有使用<<EOF ,那么EOF不能结束,需要使用ctrl+d来结束

[root@web test4]# cat test

aaaaaa

bbbbbb

EOF



问题:写脚本去替代一个文件里的所有内容


# cat test --原来的文件及内容

111


# vim 1.sh--使用vi写一个脚本,内容如下


#!/bin/bash


cat > test << EOF

222

333

444

EOF


# sh 1.sh--使用sh命令执行这个脚本


# cat test--执行完后,test文件就被完全替换了

222

333

444




比较下面两句,都是用ctrl+d来结束

# cat >> /root/test << EOF

# cat > /root/test << EOF






后面的<< EOF 在命令行时可以不加。写脚本时加上,增强可读性


--EOF符号也可以换成任意的字母标记,但前后一定要对应;如下


cat > test << ABC

222

333

444

ABC



--针对test文件的替换

# cat test

222

333

444


# sed -i 's/3/5/' test  --所有行的第一个3替换成5

# sed -i '2s/3/5/' test  --第2行的第一个3替换成5

# sed -i '3s/4/6/g' test   --第3行的所有4替换成6

# sed -i '3s/6/7/2' test    --第3行的第2个6替换成7



#sed -i 2d test --删除第二行

# sed -i 1accc test --把ccc这个内容做为第二行插入进去






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




NFS服务



# mii-tool eth0

eth0: negotiated 100baseTx-FD flow-control, link ok


# /etc/init.d/network restart--重启网络服务


# ifconfig eth0 |head -2--查看你的IP


# ping 172.16.2.35  --测试是否能ping通我



# showmount -e 172.16.2.35    --如果这一步不能成功,先执行一下/etc/init.d/rpcbind restart

Export list for 172.16.2.35:

/share/yum  *

/yum        *

/share/iso  *

/share/soft *



# mount 172.16.2.35:/share/iso /mnt



# cp /mnt/rhel63-64.iso /soft

# cp /mnt/rhel-5.4-server-i386-dvd.iso /soft



# mount 172.16.2.35:/share/soft/ /misc/

# cp -r /misc/VMware-workstation/vmware-workstation-8.0.0/ /soft





--拷贝完成后,一定记得使用ll命令比较一下大小

--拷完之后umount /mnt   和  umount /misc








你可能感兴趣的:(linux)