大学里关于Linux_Fedora14的一些命令的学习(更新)

来源:互联网 发布:tvb直播软件apk 编辑:程序博客网 时间:2024/05/17 15:40
本人总结了下在大学里关于新手学习Fedora14 的一些命令,其中老师的讲课的一些实验很有参考价值.,本人用的WIN下的虚拟机vmware下的虚拟的linux,此文章适合新手学习,大神勿喷,如有过错,请各位指出.谢谢

1 实验一 系统信息的获取与配置
实验步骤:
0 打开vmware进入Fedora14 系统   用户选择其他, 输入root  密码123456
  应用程序 -》 系统工具 -》 终端   把终端拖到桌面上来




1 命令行方式获取系统相关的信息, 点击终端 
1.1 cpu          $ cat  /proc/cpuinfo 
1.2 mem          $ free      or  cat  /proc/meminfo 
1.3 disk         $ fdisk –l   
1.4 filesystem   $ df -h
1.5 网络         $ ifconfig    
                 $ ethtool   eth0 
1.6 显卡         $ lspci | grep VGA 
1.7 Shell版本    $ echo  $SHELL
1.8 内核版本     $ uname -a 
1.9 进程         $ ps  -aux 
1.10 负载        $ top d  1 


2 图形方式获取系统的相关信息
  应用程序-》系统工具-》 系统监视器   可以获取


3 网络IP配置
  系统 -》 管理 -》 网络  
  点击 Tab 硬件, 查看并确认 硬件网卡被系统所识别的硬件名字  (eth8)
  点击 Tab 设备, 系统所默认的两个网卡 eth1 与 eth7  其实是空设备, 可通过双击 eth1 , 点击硬件设备进行确认
  我们现在需要把 eth8 新建进去, 在 Tab 设备下,点击 新建 -》 以太网连接 -》 eth8 -》  静态IP设置 + DNS  -》 应用
  注意: 我们windows 的IP 掩码是 255.255.255.128, 所以 windwos 与 fedora14 的Ip 必须 保证或者都 <128  or >128  才能网络联通


  将无效设备eth1与eth7前面的选中 取消, 点击 文件 -》 保存  


  重启fedora将改动生效   系统-》关机—》重启 


 
4 重启后 $ping  物理机ipWinxp  能够ping通
         $ifconfig  能够看到eth8 的固定IP 设置, 注意如果ping不通的话,很有可能是Ip地址冲突, 需要 系统 -》 管理 -》 网络  重新修改 eth8 的Ip




5 进行物理机与虚拟机的文件传输
  在winxp 下
  点击图标 SSH Secure File Transfer  
  点击  Quick Connect   
  Host name:  linuxIp
  User Name:  root
  点击 connect  输入 密码 123456  
  然后就可以通过文件的拖拽进行文件的传输。




6  附加问题:fedora14 中 在登录界面默认是不允许root登录,请网上查询,我们需要修改哪些相关的配置文件,才实现了直接以root 登录。




2 实验二  熟悉linux的常用命令
实验步骤:
1 时间相关    
1.1  $ date      //显示当前时间
1.2  $ date   100118002012    //设置系统时间为 2012年10月01日18:00   格式如[MMDDhhmm[YYYY]]
1.3  $ date    // 确认修改成功
1.4  $ cal     //当月日历
1.5  $ cal  09 2013    //指定月的日历
1.6  $ cal  2013   
1.7  $ bc              //计算器
1.8  $ echo  $SHELL     
1.9  $ echo  "hello world" 
1.10 $ echo  $LANG 


2 文件与目录相关
2.1  $ cd  /root              //进入目录 root
2.2  $ mkdir  -p  quhp        //创建子目录 quhp
2.3  $ ll  -l                 //显示目录的文件与子目录
2.4  $ ls                     //同样显示,但是不同效果
2.5  $ cd  quhp                 
2.6  $ pwd                   
2.7  $ touch  test.txt       //创建文件 
2.8  $ gvim  test2.txt       输入一些字母后保持退出 
2.9  $ ll -l  
2.10 $ cat  test.txt        //显示文件内容
2.11 $ echo "hello everyone"  > test.txt       //写入内容
2.12 $ echo "hello everyone again"  >> test.txt  //append 内容
2.13 $ cat  test2.txt  >> test.txt                //将test2.txt内容 append 进 test.txt


2.14 $ cat /proc/cpuinfo    |  less    //分屏显示
2.15 $ cat /proc/cpuinfo    |  more    //同样分屏显示,不过不能前翻
2.15 $ cat /proc/cpuinfo    |  grep  cpu    // 过滤显示
2.16 $ cp  test.txt  quhp.txt               //文件复制
2.17 $ mv  quhp.txt  quhp2.txt              //文件移动


2.18 $ mkdir -p  /root/ludong 
2.19 $ cd  /root/ludong 
2.20 $ cp -r  /root/quhp   .       // 把目录quhp的所有文件跟子目录拷贝到ludong 目录下
2.21 $  rm   *.txt                 // 删除所有 后缀名为 txt 的文件
2.22 $  cd  ..                     // 回到上级目录
2.23 $ rm  -rf  ludong             // 删除整个字目录 ludong


2.24 $ head -n 10  /proc/cpuinfo   // 显示文件前10行
2.25 $ tail -n 20  /proc/cpuinfo   // 显示文件后20行






3 其他
3.1 $ du -h  /root/quhp            // 目录大小
3.2 $ wc  /root/quhp/test.txt      // 文件行数
3.3 $ wc  -c  /root/quhp/test.txt  // 文件字节数
3.4 $ wc  -l  /root/quhp/test.txt 
3.5 $ wc  -w  /root/quhp/test.txt 
3.6 $ whereis  wc                  //
3.7 $ whereis  cat 
3.8 $ clear  
3.9 $ man  wc 
3.10 $ wc  -h 
3.11 $ wc --help 
3.12 $ man  cat 
3.13 $ info  cat
3.14 $ history     查看刚才的所有使用过的命令 


 
3 实验三  Linux文件与目录管理
实验内容:
 主要是熟悉一下常用参数的使用


实验步骤:
1 GUI界面创建用户 
  系统-》管理-》用户与群组 
   添加用户  ludong  密码 111111
   添加用户  test    密码 000000


2 GUI界面创建目录与文件
  双击 root 的主文件夹  -》 右键 创建文件夹 quhp  -> 双击进入  -》 右键 创建文件 test 


3 点击终端
  $ ll    //查看 目录quhp的权限  drwxr-xr-x
  $ ll  quhp    //查看 文件 test 的权限  -rw-r--r-- 


4 GUI界面修改目录权限
  回到 root 目录  —》 选中 文件夹 quhp  右键 属性 -》 权限 tab  
     有 所有者  群组  其他   +  文件夹访问 文件访问   分别对这些下拉菜单进行修改, 点击 关闭后, 回到步骤3  进行确认改变
  
5 GUI界面修改文件权限
  root 目录 -》 文件夹quhp -》 选中文件test   右键属性 -》 权限 tab
      所有者与群组都 改成 ludong, 都有读写权限    执行 打勾  点击 关闭
  $ ll quhp  注意文件 test 的权限 属主  甚至 颜色的变化


6 命令行修改目录与文件的权限
  $ cd    //goto root 
  $ ll    //看看quhp 的相关值  
  $ chmod -R  666  quhp     //把整个目录及其下的文件的权限都改成 rw-
  $ ll  
  $ ll  quhp  //确认 
  $ cd quhp 
  $ chmod 755  test   
  $ ll 
  $ chmod 644  * 
  $ ll 
 
7 命令行修改目录与文件的属主
  $ cd  //goto root 
  $ chown -R  test.test quhp   //把整个目录及其下的文件的属主改成 test.test
  $ ll 
  $ ll quhp    // 确认
  $ cd  quhp 
  $ chown  root.root  test  
  $ ll  


8 查看系统的根目录的结构
  $ cd  /root/quhp 
  $ cd  /
  $ ll     // 可以进入 dev  etc  var  各个目录下看看其子目录与文件    
  $ ll   /home    // 可以看到为 两个用户 ludong test 分别创建了 其工作目录
  $ cd -       
  $ pwd   // 应该回到之前的目录 /root/quhp 


9  mkdir -p  参数的使用
 $ cd 
 $ mkdir quhp    // 创建已经存在目录 报错
 $ ll            // 注意 quhp 的修改时间
 $ mkdir -p  quhp  // 无错返回, 且修改时间未变 
 $ mkdir quhp/quhp2/quhp3     // 报错
 $ mkdir -p  quhp/quph2/quhp3   //三级子目录成功创建


10 ls查看隐藏文件
 $ cd /root/quhp 
 $ ls      
 $ ls -l 
 $ ls -al   // 注意这三个显示的区别 
 $ ls -l   test     // 显示修改时间
 $ ls -lc  test     // 显示写入时间
  我们注意到因为在test 创建后我们对其内容一直没有写入,所以 修改时间时间就是当初的创建时间,但是在此过程中修改了文件属主与权限,所以 写入时间会变化。


11 cp -a 加属性  -r  递归复制
  $ cd    //goto root
  $ cp  -r  quhp  our    //把整个quhp目录内容复制到our 
  $ ls -l                //注意两个目录 quhp our  时间的变化,  our 的时间应该是当前时间, 同时请关注 两目录的权限与属性的不同
  $ ll  quhp 
  $ ll  our 
  $ cp -ar  quhp  our2   //在递归复制的同时进行属性复制
  $ ll                 // our2 与 quhp  目录一模一样
  $ ll our2  


12 mv 的文件改名+移动
  $ cd /root/quhp
  $ ll  
  $ touch  1.txt  2.txt  3.txt  4.txt  //同时创建4个空文件
  $ ll 
  $ mv  1.txt 2.txt  4.txt  quhp2     //三个文件移动到quhp2子目录
  $ ll 
  $ ll quhp2   
  $ mv 3.txt  quhp2/quhp3/5.txt       //移动+改名
  $ ll quhp2/quhp3
  $ cd quhp2   
  $ mv *.txt   quhp3                  //通配符移动
  $ ll quhp3                          //应该是 1 2 4 5 
  
13 rm 的默认与递归删除
  $ cd /root/quhp/quhp2/quhp3 
  $ rm 1.txt    // 需要确认后删除
  $ rm -f  2.txt    // 直接删除
  $ ll 
  $ cd ..    //返回quhp2 目录
  $ rm -rf  quhp3    //直接删除目录+文件


14 文件查看
  $ cd /root/quhp/
  $ cat /proc/cpuinfo  // 顺序一下显示
  $ tac /proc/cpuinfo  // 倒序一下显示
  $ cat -b  /proc/cpuinfo   // 空格不显示行号
  $ cat -n  /proc/cpuinfo   // 空格也显示行号
  $ cat /proc/cpuinfo  /proc/meminfo  /proc/meminfo /proc/cpuinfo   > test      // 把两个文件内容拼接重定向到 test文件中
  $ cat test test >> test      // 报错
  $ more  test     //一屏显示      
          Space: 向下翻一页
          Enter:  向下滚动一行
          /字符串: 向下查询关键字     /Huge  可以看到有Huge 的那行显示在屏幕的第一行
          q:           退出
  $ less test   // 在more 基础上可以向上
          PageDown  向下翻一页   
          PageUp  向上翻一页    
          ?字符串   向上查询关键字
 
15 文件头部跟尾部的获取
 $ cd /root/quhp
 $ wc -l test   //获取文件行数  如 136 
 $ head -n 10  test    
 $ head -n -100  test    //显示头 36 行 
 $ head -n -100  test | wc -l    //确认就是36 
 $ tail -n 23  test 
 $ tail -n +100 test    //显示 后37行,因为包含第100行    
 $ tail -n +100 test | wc  -l  
 $ head -n 20 test | tail -n 10     //显示 10-20 行   
  


4 实验四  掌握linux的安装流程
实验步骤:
1  vmware 新建一个虚拟机
2 fedora-live-cd.iso  已经在E盘
3 开机后按照流程进行硬盘安装
   


5 实验五   掌握linux文件系统的常见命令
实验说明: 请大家仔细查看并确认每个命令的输出结果,否则实践的意义就不是很大
实验步骤:


1  程序的退出
   1.1 $ bc     
      输入 quit  自然退出 
   1.2 $ bc 
      在终端界面下,点击文件-》打开标签   新建一个标签, 在这个标签下输入
         $ps aux | grep bc   //查看第二列获得bc 的PID, 比如为 2608 
         $kill -9  2608         
      回到第一个标签下,可以看到 bc 这个进程已被杀死


   1.3 $ bc 
      输入 Ctrl+Z  强制退出


2  Od  显示非文本文件 
    $od  -t c    /bin/ls 
   Touch  创建不存在文件or 修改文件时间  -a  仅修改访问时间  -m 仅修改mtime
    $mkdir -p  test 
    $cd  test 
    $touch  1.txt    
    $ll       // 查看文件的最近修改时间
    $sleep  30   //休眠30秒 
    $touch  1.txt  
    $ll       // 可以看到文件的修改时间变化了


3  umask  003 进行权限的修改,003表示在当前基础上减去该值
   默认 文件  -rw-rw-rw
    默认 目录 drwxrwxrwx  
   $umask –S    //显示默认权限 u=rwx,g=rx, o=rx
   $umask        //数字显示 022 
   $ll  1.txt    //可以看到它的权限是 -rw-r--r--, 因为g与o的两个w已经被去掉了
   $cd ..       
   $ll          // 可以看到 test 的权限为 drwxr-xr-x   
   $umask  002 
   $mkdir -p  test2  
   $ll          //test2 的权限为 drwxrwxr-x   比test 多了个w 
   $cd test2 
   $touch 2.txt 
   $ll         // 2.txt 的权限为 -rw-rw-r--   也比 2.txt 多了个w


4  $whereis  ls 
   $locate   top   // 显示所有文件的绝对路径中有top 字符串的文件
   
        


5  find 
   -mtime n :n天之前的一天之内被更改的文件
   -mtime +n: n天之前(不含n天本身)被更改的文件
  -mtime –n: n天之内(含n天本身)被更改的文件
   -newer file: 列出比file 还要新的文件
  $find  /root  -mtime 0    // root 目录下当天修改过的文件    
  $find /etc  -newer  /etc/passwd     // etc 目录下比 passwd 还要新的文件


6 排序
  $cd /root/test 
  $cat /proc/meminfo  /proc/cpuinfo  /proc/cpuinfo  /proc/meminfo > test.txt
  $less test.txt 
  $sort  test.txt  > test_sorted.txt               //排序
  $less test_sorted.txt  
  $uniq  test_sorted.txt > test_uniqed.txt         //去冗
  $less test_uniqed.txt




  一条语句实现以上的功能
  $cat /proc/meminfo  /proc/cpuinfo  /proc/cpuinfo  /proc/meminfo | sort | uniq > test2.txt 
  $less test2.txt  


7 比较
  $cd /root
  $mkdir old
  $mkdir new 
  $cp -a  test/*   old/
  $cp -a  test/*   new/
  $diff  old new      // 比较两目录
  $gvim   new/test2.txt      //分别删除某行、增加某新行、修改某行  
  $diff   old/test2.txt new/test2.txt   //分别确认 上述三个修改操作的 比较结果
  $mv    new/test2.txt  new/test3.txt 
  $diff  old  new   




8 通过ps 与grep 查看现在的活跃进程
   $ps aux
   $ps aux  | less
   $ps aux  | grep usr   // 过滤并显示带有 usr 字符串的行\
   $ps aux  | grep usr | grep 21    // 再次过滤




9  查看系统支持的文件系统类型 
  $ cd /lib/modules/2.6.35...fc14.i686/kernel/fs 
  $ ls 


10  查看proc 文件系统  
   $ cd /proc
   $ ls     其中数字目录是进程号PID, 里面是每个进程的具体信息, 下面我们具体看一下


   打开一个新标签, 输入命令 $ top d 1  
   在另一个标签下   
    $ ps  aux | grep top   获得该进程的PID 如 2875 
    $ cd /proc/2875      // 进入该PID目录 
    $ ls 
    $ cat cmdline       // 可以看到该PID的命令是什么 
    同理可以看到该进程的其他的信息,比如 内存,cpu io  等,大家可以查看一下这些相关的文件
   


11 $cat /etc/fstab 
   可以看到 /  /boot  /swap  等分区的文件系统,以及对应的分区设备
   去百度搜素 关键字 fstab  确认一行中每列的具体意义




12  问题: 需要获取当前机器的eth8 d IP(192.168.23.189) 并进一步获取Ip的网段前缀(192.168.23.) 
   $ifconfig
   $ifconfig  eth8
   $ifconfig  eth8 | grep "inet addr" 
   $ifconfig  eth8 | grep "inet addr"  | gawk '{print $2}'  
   $ifconfig  eth8 | grep "inet addr"  | gawk '{print $2}'  | cut -c6-20 
   $ifconfig  eth8 | grep "inet addr"  | gawk '{print $2}'  | cut -c6-16 








 6 实验六  熟悉linux磁盘相关的命令
实验内容:
1 在虚拟机上添加一个新盘
2 fdisk 查看大小,并分区
3 mkfs 做成 ext3 的文件系统
4 mount 挂载起来  使得可以使用
5 使用time 计时比较dd 与 cp 的差别


实验步骤:
1  通过vmware 对linux 增加一个SCSI磁盘 sdb  10G
2  启动linux, root+123456 进入系统
3  查看已经挂载起来的文件系统的使用情况 /dev/sda1  /dev/sda2 的详细情况
   $  df -h 


4  显示 sda sdb 两块磁盘的详细信息
   $  fdisk -l 


5  在sdb上创建一个3G的分区 sdb1  
   $  fdisk  /dev/sdb     
   m for help  p for print  n for add   w for save   
   输入n 回车; 输入p 回车 选择primary ; 输入1 回车 确认 分区号 ; 输入 起始位置,直接回车; 输入分区大小 +3068M 回车;
   输入p 回车确认创建成功; 输入w 回车 将磁盘信息写回


6  给sdb1 加上标签,并确认  (不用做)
   $e2label  /dev/sdb1  “ludong”
   $dumpe2fs  /dev/sdb1 | less   


7  采用dd 命令测试并记录 sdb1 分区的读写性能   分别读写2G
   $  time dd if=/dev/sdb1 of=/dev/null  bs=1M  count=2048
       记录分区读测试所得时间为 time_read_dd = ?    
   $  time dd if=/dev/zero  of=/dev/sdb1 bs=1M  count=2048
       记录分区写测试所得时间为 time_write_dd = ?


8  把分区sdb1 格式化成ext3 文件系统
   $  mkfs.ext3  /dev/sdb1
   
9  把分区挂载到指定目录下
   $  mkdir –p /mnt/name  
   $  mount  /dev/sdb1  /mnt/name   


10  查看新挂载的分区 ,注意其大小变化, 因为其格式化文件系统占用了一些磁盘空间
   $ df –h   


11 采用dd命令在指定目录下创建一个大小为2G的文件,并记录时间
   $  time  dd if=/dev/zero of=/mnt/name/test.img  bs=1M  count=2048 
        记录文件写测试所得时间 time_write_file = ?


12 采用相关命令查看文件test.img 的大小
  $  cd /mnt/name  
  $  ll –h   
  $  du –h 


13  采用cp命令测试对该文件的读性能,并记录时间
   $ time cp /mnt/name/test.img  /home/
       记录文件读测试所得时间 Time_read_file = ?       


14  测试环境清理
  $  rm  -rf  /home/test.img 
  $  umount  /mnt/name 
  $  df -h     确认umount成功
  $  fdisk /dev/sdb 
   输入d回车, 删除sdb1  输入w回车,写入磁盘 
  $  fdisk -l     确认分区删除成功




实验结果:
   记录并输入 dd + cp 的两个项目的读写数据, 共四个值 




7 实验七 了解与掌握磁盘分区的自动挂载
实验步骤:
0.   虚拟机配置,添加一个SCSI磁盘 sdb  大小10G
1.   在sdb上创建两个分区   
     $fdisk  /dev/sdb 
        n  p  1   +2048M  
        n  p  2   +3068M
        w


2.   对两个分区格式化
     $mkfs -t  ext3   /dev/sdb1
     $mkfs -t  ext4   /dev/sdb2


3.   创建两个挂载目录
     $mkdir -p   /test1
     $mkdir -p   /test2


4.   对/etc/fstab 进行备份
     $cp  /etc/fstab   /etc/fstab.bak  




5.   编辑/etc/fstab,  在后面加入两行,使得这两个分区能够在随着开机而自动挂载
     $gvim  /etc/fstab 
        /dev/sdb1               /test1                  ext3    defaults        1 2
/dev/sdb2               /test2                  ext4    defaults        1 2
     保存退出
     这里注意:
注意: 前三列分别是 设备名、挂载点、文件系统格式, 每行除了最后一列以空格间隔以外,其余都是以Tab分开


7     重启机器
      $reboot


8     开机后
      $df  -h    //可以看到开机后,sdb的两个分区都实现了自动挂载






8 实验八 了解与掌握特殊设备loop与swap
实验步骤:
0 虚拟机配置,添加一个SCSI磁盘 sdb  大小10G
1 创建大文件
    #dd if=/dev/zero  of=/home/loopdev bs=1M  count=512 
   if = input file  
   of = output file 
   bs = block size 
   count   数量
    #ll –h  /home/loopdev 


2 格式化
   #mkfs –t ext4  /home/loopdev 
  挂载
   # mount –o loop /home/loopdev  /mnt 
   #df -h


3 在loop设备上再创建loop设备
  #dd if=/dev/zero  of=/mnt/loopdev2 bs=1M  count=256   
  #mkfs –t ext4  /mnt/loopdev2 
  #mkdir  -p  /mnt2
  # mount –o loop /mnt/loopdev2  /mnt2 
  #df -h  


4 在mnt2 的目录下新建一个大文件,查看并确认两个loop设备的空间变化
  #dd if=/dev/zero  of=/mnt2/bigfile bs=1M  count=100 
  #df -h  


5 创建swap设备 
  #fdisk  /dev/sdb  
     n  p   1   +3068M     //创建sdb1
     t    修改系统ID  
     1
     82   改成swap的ID     //从linux分区切换成swap设备
     w
  #partprobe              //让内核更新分区表
  #mkswap   /dev/sdb1     构建swap格式


6  挂载上
   # free
   #swapon   /dev/sdb1 
   #free 


7  #swapon –s  列出目前使用的swap设备有哪些?


8 同样可以使用文件构建swap
  # dd if=/dev/zero bs=/tmp/swap  bs=1M count=128M 
  #mkswap  /tmp/swap 
  #swapon /tmp/swap 


9 卸载swap设备
  # swapoff /tmp/swap 
  # swapoff /dev/sdb1    //关掉swap 
  # free 
   




9  实验九  认识与学习Bash
注意使用tab键补齐命令与文件


1  shell 的相关配置文件
   #cat   /etc/shells    
   #more /etc/passwd 
   #ll  /bin/*sh        //显示相关shell,可以看到 sh 已经是bash 的一个链接文件了


2  #cd
   #mkdir -p  testbash ; cd  testbash
   #pwd 
   #cat /proc/cpuinfo > test.txt  ;  cat /proc/meminfo >> test.txt 
   #more  test.txt 
   #mkdir -p shell ; cp test.txt shell/test.bak ; \   (这里输入个回车)
    ls -al  shell 
   
3  查看bash的内置命令
   #type -t  ll
   #type -t  cd
   #type -t  mkdir 
    
4  学习通配符
   #touch  1.txt  a1.txt  aa.txt abb.txt  bbb.date  abz.dd 
   #ls -l  [0-9]* 
   #ls -l  [a-z]*.txt 
   #ls -al *.??
   #ls *[a][b]*
   #ls *[!z]* 
   #rm -rf a*.txt 
   #rm -rf  *.*  
      
5  别名
   #alias
   #alias lm='ls -al'
   #touch aaa ; rm  aaa   //会显示提示,询问是否删除?
   #alias rm='rm -f' 
   #touch aaa
   #lm   
   #rm aaa    //不再提示,直接删除 
   #lm 
   
   #unalias  lm
   #alias 


6  cd /e<Tab>sys<Tab>c<Tab>ne<Tab>-<Tab>
   cd $HOME 
   cd $HOME/testbash 


7  管道的再学习
   #head -n 20  /etc/passwd | tail -n 10   
   #cat /proc/meminfo  /proc/cpuinfo  /proc/cpuinfo  /proc/meminfo > test.txt
   #less test.txt 
   #sort  test.txt  > test_sorted.txt               //排序
   #less test_sorted.txt  
   #uniq  test_sorted.txt > test_uniqed.txt         //去冗
   #less test_uniqed.txt




  一条语句实现以上的功能
   #cat /proc/meminfo  /proc/cpuinfo  /proc/cpuinfo  /proc/meminfo | sort | uniq > test2.txt 
   #less test2.txt     


8  历史记录
   #history 
   #history  30 
   #上下键
   #!!:  执行最近一次使用的命令;
   #!n:  其中 n 为一个具体的数字,表示执行在命令历史记录中的第 n 个命令;
   #!s:  其中 s 为一个字符串,表示执行命令历史记录中以该字符串开头的最近的一个命令。


9  #env 查看常见环境变量说明
   #set  查看所有变量






10  实验十  Bash的环境变量


1 变量的显示: echo 
# echo $PATH    或者   
# echo ${PATH}


2 变量的设置:   注意空格报错
# var1=“lang is $LANG”    
# var2=‘lang is $LANG’      //注意区分 
# set  
# env  | grep var   


3 变量的取消
#unset var2 
#echo $var2
#echo $var1
#var1="dir is $HOME"
#var2='dir is $HOME'
#export var1  
#env | grep var1
#su  quhp 
#echo $var1    //因为export 所以有值 
#echo $var2    //为空 
#su  


#关闭当前终端, 再打开一个终端 
#echo $var1
#echo $var2   //应该均为空




4 环境变量的配置文件
#uname -a 
#uname -r 
#version='uname -r'
#version="$version"" in ludong "
#echo $version 


#ls -l `locate crontab`



#关闭当前终端,再打开一个终端
#
#echo $version   //应该为空
#cd 
#cp .bash_profile  .bash_profile.bak 
#vim .bash_profile 
   version=`uname -r`
  :wq


#source .bash_profile   //让其立刻生效,否则只能注销重现登录才能生效 
#echo $version 



同样的道理,需要把 rm -i   改成 rm -f 
#cd
#cp .bashrc  .bashrc.bak 
#vim  .bashrc
   光标移动到rm 那行 
   alias rm='rm -f'
   :wq 
#source .bashrc 
#alias 
#touch aaa ; rm aaa   
 




11 实验十一  熟悉与掌握编辑器vim
1 进入工作目录
#cd 
#mkdir -p  testvi; cd testvi 


2 编辑一个C程序
#vim hello.c 
   #include <stdio.h>
   #include <stdlib.h>
   int main(int argc, char* argv[])
   {
printf("This is only hello world in linux!\n");
        return 0;
   }
   保存退出 :wq 
#gcc -g -o hello  hello.c 
#./hello      //执行该命令


3 熟悉末行模式
#cat  /proc/cpuinfo  /proc/meminfo /etc/passwd > test.txt 
#vim +3  test.txt 


:set nu           //显示行号
:/cpu             //搜素关键字 cpu      
:$                //光标移动到最后一行
:0                //光标移动到第一行
:set nonu         //取消行号 
:w  test2.txt     // 另存为


4 vim 的环境变量设置
vim  hello.c 
:set all            // 显示目前所有环境参数
:set                //显示与系统默认不同的设置参数
:set  autouindent   //自动缩排
:syntax on         //显示语法检查
:set bg=dark       // 注释颜色不同
;wq




5 在命令行模式整行编辑
#vim test.txt 
光标移动到第五行
dd     // 删除当前行  
d3d    // 删除当前3行
y3y    // 复制当前3行
光标移动到某行
p      // 把刚才的复制内容粘贴 
.      // 重复刚才的命令
u      // undo 取消刚才操作




6
滚屏
(1)[Ctrl+U]组合键
(2)[Ctrl+D]组合键
分页
 (1)[Ctrl+F]组合键
 (2)[Ctrl+B]组合键
状态命令
  [Ctrl+G]




7  推出vim
接着刚才的操作, test.txt 仍然处于打开状态
ZZ   保存退出


#vim test.txt 
:w  test2.ccc   // 另存为 test2.ccc
:wq              // 保存退出
:q!              // 不保存强制退出
 
8  熟悉gvim   vim 的图形版本
#gvim  test.txt 
可以有选择的把2-7 做一遍,完全兼容vim
再了解一下其图形化的相关界面、按钮、菜单
 
 


12 实验十二  学习shell 脚本编程
请参照课件 Linux07-Linux Shell  编程
把它里面的案例全部自己手动实现一遍!
重点放在 分支结构 与 循环结构 的编写格式与用法上。


两点注意:
一 如果 vim 实在不会用,请改用gvim
二 只写用到的代码,注释, path 等请不要浪费时间






13  实验13  用户与群组
实验重点: 用户批量添加与删除的脚本实现
实验步骤:




0 mkdir -p  testuser; cd testuser




1 命令行用户的创建、密码 与删除
 #useradd  linux 
 #passwd   linux
    交互式连续两次输入密码 123456 
 #more  /etc/passwd 
 #more  /etc/shadow   应该在最后一行能看到已经成功创建


 #userdel  -r linux   删除
 #more  /etc/passwd   确认删除


2 熟悉 passwd 命令的 stdin 参数
 #useradd  ludong 
 #useradd  ludong2 
 #passwd   ludong     输入123456 
 #passwd   ludong2    输入123456
 #echo 654321 | passwd --stdin  ludong2    修改ludong2 的密码
 #su  ludong    从root 切换到 ludong  不需要密码
 #su  ludong2   再从 ludong 切换到 ludong2   需要输入密码
    输入  654321   应该成功进入, 说明密码已经成功修改


 #su            再回到root 




3 熟悉 cut与xargs 
  #finger  root
  #finger  ludong  ludong2 
  #cut -d':'  -f1  /etc/passwd    回车符分隔显示所有用户
  #cut -d':'  -f2  /etc/passwd 
  #cut -d':'  -f4  /etc/passwd    显示不同的列
  #cut -d':'  -f1  /etc/passwd | xargs -n 1  finger      显示所用用户信息


4 熟悉 pwunconv and pwconv  
  #more  /etc/passwd 
  #more  /etc/shadow   这两个文件都存在,且 passwd 的第二列密码显示为 x
  #pwunconv           两个文件合二为一 
  #cat /etc/shadow   文件已经不存在 
  #cat /etc/passwd   第二列直接就是密码的密文 
  #pwconv            再把这两个文件分开 
  #cat /etc/passwd  
  #cat /etc/shadow   这两个文件又恢复原状


5 采用 newusers 批量创建用户 
 5.1  #groupadd  -g 800  linux2012
 5.2  #gvim  student.txt 
t001001:x:801:800::/home/t001001:/bin/bash
t001002:x:802:800::/home/t001002:/bin/bash
t001003:x:803:800::/home/t001003:/bin/bash
t001004:x:804:800::/home/t001004:/bin/bash


 5.3  #gvim passwd.txt
t001001:t001001
t001002:123456
t001003:123456
t001004:123456  


  5.4 #newusers  < student.txt


  5.5 #pwunconv   
      #chpasswd  < passwd.txt
      #pwconv


  5.6 #cat /etc/passwd  
      #cat /etc/shadow    确认四个用户已成功创建


6  利用 xargs  与userdel 组织 删除 刚才创建的用户
   #cut -d':' -f1 student.txt  
   #cut -d':' -f1 student.txt  | xargs -n 1  userdel -r 
   #cat /etc/passwd    确认四个用户已成功删除




7 利用 useradd  与 passwd --stdin  批量创建用户脚本
 7.1  #gvim  account1.sh
#!/bin/bash 
if [ ! -f "$1" ]; then
echo "$1 no exist!"
exit 1
fi
usernames=`cat $1`
for username in $usernames 
do
useradd $username
echo $username | passwd --stdin  $username 
done


exit 0       


 7.2 #gvim std.txt
std001
std002
std003
std004


  7.3 #chmod +x *.sh 
      #./account1.sh   std.txt    成功创建std001-004, 可去 /etc/passwd 确认 
      #./account1.sh   std.txt2   报告 该文件不存在 
      #./account1.sh


  7.4  #gvim  delaccount1.sh
#!/bin/bash


if [ ! -f "$1" ]; then
echo "$1 no exist!"
exit 1
fi
usernames=`cat $1`
for username in $usernames
do
echo "$username will be deleted!"
userdel -r  $username
done


exit 0  
  


   7.5  #chmod +x *.sh
#./delaccount1.sh  std.txt   将这四个用户删除




8 再次利用 xargs  与userdel 组织 删除 刚才创建的用户
  #./account1.sh   std.txt    再次成功创建std001-004
  #cat std.txt | xargs -n 1  userdel -r   成功删除


9  获取数字长度的小脚本
 #gvim test1.sh
#!/bin/bash 


num=$1
count=${#num}


echo "$num have $count "
exit 0


  #chmod +x *.sh
  #./test1.sh  23 
  #./test1.sh  999 
  #./test1.sh  12345678




10 获取某字符串指定子串的小脚本
  #gvim test2.sh
#!/bin/bash 


nu=0123456789
nu2=$nu


nu=${nu:$1:$2}


echo "$nu2 : from $1 and  $2 count is $nu"
exit 0




 #chmod +x *.sh
 #./test2.sh  1 2 
 #./test2.sh  0 4 
 #./test2.sh  2 3 


11 最后一个集大成的脚本, 只需要输入 四个产生 前缀、位数、首位、数量 就可以批量创建 
 #gvim  account2.sh
#!/bin/bash 


accountfile="user:passwd"


if [ -f "$accountfile" ]; then
mv $accountfile "$accountfile"`date +%Y%m%d`
fi


touch "$accountfile"


read -p "qianzhui: "  username_start 
read -p "weishu: "  nu_nu
read -p "star num: " nu_start
read -p "shuliang: " nu_amount


nu_end=$(($nu_start+$nu_amount-1))


for((i=$nu_start;i<=$nu_end;i++))
do
  nu_len=${#i}
nu_diff=$(($nu_nu-$nu_len))
if [ "$nu_diff" != "0" ]; then
nu_nn=00000000000
nu_nn=${nu_nn:1:$nu_diff}
fi


account="$username_start""$nu_nn""$i"
echo "$account":"$account" >> $accountfile
done


cat "$accountfile" | cut -d':' -f1 | xargs -n 1 useradd 


pwunconv
chpasswd < "$accountfile"
pwconv


echo "OK"


exit 0




      #chmod +x *.sh 
      #./account2.sh  要输入4个值, 示例如下, 可以自行确定,注意不要太多,否则比较耗时 
ludonglinux
3
1
10
      
      #cat /etc/passwd    确认




12  利用 xargs  与userdel 组织 删除 刚才创建的用户
   #cut -d':' -f1 user:passwd  | xargs -n 1  userdel -r 
   #cat /etc/passwd   确认四个用户已成功删除




14  实验14 考试环境的熟悉
实验步骤
1 在FC14 上进行 网络IP配置
  系统 -》 管理 -》 网络  
  点击 Tab 硬件, 查看并确认 硬件网卡被系统所识别的硬件名字  (eth8)
  点击 Tab 设备, 系统所默认的两个网卡 eth1 与 eth7  其实是空设备, 可通过双击 eth1 , 点击硬件设备进行确认
  我们现在需要把 eth8 新建进去, 在 Tab 设备下,点击 新建 -》 以太网连接 -》 eth8 -》  静态IP设置 + DNS  -》 应用
  注意: 我们windows 的IP 掩码是 255.255.255.128, 所以 windwos 与 fedora14 的Ip 必须 保证或者都 <128  or >128  才能网络联通


  将无效设备eth1与eth7前面的选中 取消, 点击 文件 -》 保存  
  
  打开终端   #service  network restart  
  如果报错说明Ip地址冲突, 需要 系统 -》 管理 -》 网络  重新修改 eth8 的Ip


  #history  100 > history  
  #cd .. 
  #tar -zcvf  install.tgz  install/* 
  #scp install.tgz   root@192.168.23.141:/root/    注意: 192.168.24.141 是教师用机的 fc14 机器 
   需要输入密码 




2 确认教师用机Fc14 的IP  如 192.168.23.51    要拷贝到 /root/linux/ 目录下


3 注意做的时候 以 学号+姓名全拼 替换  20121213quhaiping 


  #mkdir -p   20121213quhaiping 
  #cd  20121213quhaiping
  #ls  -l  
  #ll
  #touch  test.txt
 
  #cp  /etc/fstab  . 
  #gvim test.sh 
  #chmod +x  *.sh


  #cp /etc/passwd   . 
  #cp /etc/shadow  .


  #history 200  > history


  #cd  ..
  #tar –zcvf   20121213quhaiping.tgz  20121213quhaiping/*  
  #scp  20121213quhaiping.tgz root@192.168.23.51:/root/linux/
     输入yes  密码 123456 


4 到教师用机上确认tar 包传送成功 




15  实验15  软件包的安装
实验步骤:
1  在windowsxp 上安装程序 SSHSecureShellClient-3.2.9  
   
2 在FC14 上进行 网络IP配置
  系统 -》 管理 -》 网络  
  点击 Tab 硬件, 查看并确认 硬件网卡被系统所识别的硬件名字  (eth8)
  点击 Tab 设备, 系统所默认的两个网卡 eth1 与 eth7  其实是空设备, 可通过双击 eth1 , 点击硬件设备进行确认
  我们现在需要把 eth8 新建进去, 在 Tab 设备下,点击 新建 -》 以太网连接 -》 eth8 -》  静态IP设置 + DNS  -》 应用
  注意: 我们windows 的IP 掩码是 255.255.255.128, 所以 windwos 与 fedora14 的Ip 必须 保证或者都 <128  or >128  才能网络联通


  将无效设备eth1与eth7前面的选中 取消, 点击 文件 -》 保存  
  
  打开终端   #service  network restart  
  如果报错说明Ip地址冲突, 需要 系统 -》 管理 -》 网络  重新修改 eth8 的Ip




 
3  #mkdir -p /root/install 
   #ping  物理机ipWinxp  能够ping通


4  进行 winxp 与 Fc14 的文件传输    
 
   在winxp上  cmd   ping  fc14ip  能够ping通, 假设fc14ip 为 192.168.22.95
   双击 SSH Secure File Transfer Client 图标 , 进去该界面, 点击 Quick Connect, 输入
   Host Name:  192.168.22.95 
   User Name:  root
   在connect 后, 输入 Password:  123456 
  
   之后就可以 通过 文件的拖拽 进行 两个机器间 的文件传输了
   把 相关的rpm 与tgz  从winxp 传送到 fc14  的指定目录 /root/install




5  之后就是在fc14 上进行操作  
   #cd  /root/install  


6  首先以tar 包方式安装  sqlite-autoconf-3071300.tar.gz
   #tar -zxvf sqlite-autoconf-3071300.tar.gz  
   #cd sqlite-autoconf-3071300 
   #ls               // 注意 Makefile 文件 目前不存在
   #less  INSTALL  
   #less README    //查看这两个文件内容,一个是 如何安装的,另一个是 软件信息说明 
   #./configure   
   #ls
   #less Makefile    
   #make
   #make install      
   
7  再做一个 安装数据库rrd, 这是一个configure 不成功的示例


   #tar zxvf rrdtool*
   #cd rrdtool-*
   #./configure --prefix=/usr     
   NOTE: 我们的虚拟机会在这里报错,告诉你某个库函数没有安装,并且给出了下载网址,为了节省时间,下面的步骤就没有必要进行了!
   #make 
   #make install
   #which rrdtool
   #ldconfig  # make sure you have the new rrdtool libraries linked.        
   
8  查看并确认rpm 命令的使用
   #man rpm 




9  我们对gvim 对应的rpm 包进行相关的查询操作
 
  #whersis ls          // 报告说明在/bin/ls  , 可以任选之前使用过的命令
  #rpm -qf /bin/ls 


  首先找到gvim 对应哪个rpm包
  #whereis gvim
  #rpm -qf /usr/bin/gvim       查找该文件属于哪个rpm    输出是 vim-X11*   
 
  #rpm  -q  vim-X11
  #rpm  -qi  vim-X11  
  #rpm  -ql  vim-X11
  #rpm  -qR  vim-X11 
  #rpm  -qa                   列出所有已经安装的rpm包
  #rpm   -qa  | grep vim 
  #rpm   -qa | grep bash 
  #rpm   -qa | grep gcc 




10  rpm 包的验证
  #rpm  -V  vim-X11 
  #mv  /usr/bin/gvim  /usr/bin/gvim.bak 
  #rpm  -V   vim-X11 
  #rpm  -Vf  /usr/bin/gvim
  


11  rpm  包的删除
  #rpm  -e  vim-X11
  #rpm  -e  sysstat
   
  确认删除成功了没? 
  #gvim   应该报告找不到
  #rpm  -qa | grep  vim-X11


12  yum 的使用之一 : 只下载不安装, 第一次使用时会比较慢
  #yum -y install yum-downloadonly 
  #yum -y install vim-X11    --downloadonly  --downloaddir=/root/install 
  #yum -y install sysstat    --downloadonly  --downloaddir=/root/install 
  
  其中vim-X11  是gvim 对应的rpm 包
      sysstat  是用于系统性能测试的rpm 包


  这两个包都应该下载到 /root/install 目录中了    




13 确认我们系统装了对应的rpm没有? 
  #rpm -qa | grep sysstat 
  #rpm -qa | grep vim 
  #gvim    // 报错说没有该命令
  #sar     // 也没有


14 安装 sysstat  与  vim-X11  
  #rpm -ivh  sysstat-*.rpm  
  #rpm -ivh  vim-X11*.rpm     


  再次确认我们系统安装成功了没? 
  #rpm -qa | grep sysstat 
  #rpm -qa | grep vim    


  查看对应的命令的具体位置
  #whereis gvim 
  #whereis sar 


  --force 的使用
  #rpm  -ivh  vim-X11*.rpm    应该报错,说已经安装过了
  #rpm  -ivh  vim-X11*.rpm  --force   强制安装  成功! 


15 yum 的使用之二: 理清依赖关系,把所有的关联包一次全部安装,有时会比较耗时,请不要傻傻等待,利用这段时间并行做下面的内容
  首先看一下相关的配置文件
  # cat /etc/yum.conf 
  # cd /etc/yum.repos.d
  # ls    通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用 
  # cat fedora.repo 


  
  #yum check-update     检查有哪些可更新的rpm包
  #yum install mplayer  安装mplayer,同时自动安装相关的软件
  #yum -y install licq    注意体验 -y 参数的好处
  #yum -y install  licq*  注意体验 * 通配符的好处,它能够把licq的所有包都装进来
   删除licq包,同时删除与该包有倚赖性的包
  #yum remove licq   注:同时会提示删除licq-gnome,licq-qt,licq-text,非常方便






16 测试命令sar 的使用
  # sar -u  2   查看cpu的使用情况
  # sar -u  2 0  以2s为监控获取cpu的信息
  # sar -d  5    这是看磁盘
  # sar -d 5 0   这是磁盘性能的间隔获取     










  

原创粉丝点击