Chinaunix

标题: 写了3个Shell Scripting。麻烦帮忙看看!谢谢! [打印本页]

作者: cfu1    时间: 2009-01-31 03:50
标题: 写了3个Shell Scripting。麻烦帮忙看看!谢谢!
第一个是:

#!/bin/bash  
echo "a Display disk usage."
echo "b Display file usage for the current directory. "
echo "c Display all executing processes"
read option
echo "$option was been selected"
case $option in
a)
   df
   ;;
b)
   df .
   ;;
c)
   ps -u ced4033
   ;;
*)
esac


意思就是 出现 a b c 三个选项,然后让用户选择,输入a 的话就 显示 空间大小, b 的话就 显示当前目录  c 的话就显示所有exe 文件。
请大家看看我写的是否正确,反正运行没问题!


第二个是:

#!/bin/bash

filename=1
k=1000
until [ $filename = "0" ];do

        echo "Please enter the file name or press 0 to exit!"
        read filename

        if [ -e $filename ]; then
                size=`ls -l $filename | awk '{print $5}'`
              if [ $size = 0 ]; then
                echo "Supplied filename is an empty file"
              else
                echo "Size of supplied file name is $size bytes"
              fi
        else
                echo "Supplied file name does not exits in current directory"
        fi
done

查找文件名,如果文件名不存在,就显示文件不存在,如果存在,就显示文件的大小是 XXBytes, 一直到用户输入 0 才退出。


第三个是:

#!/bin/bash
      

for f in *.txt; do
            base=`basename $f .txt`
            mv $f $base.text
        done

重命名 所有 .txt.文件 为 .text文件。 苜蓿用 for loop。
作者: ynchnluiti    时间: 2009-01-31 04:29
1
df . 好像不是当前目录空间大小,有个du命令

2,3 如果文件名含空格的话会有问题
作者: cfu1    时间: 2009-01-31 04:51
原帖由 ynchnluiti 于 2009-1-31 04:29 发表
1
df . 好像不是当前目录空间大小,有个du命令

2,3 如果文件名含空格的话会有问题



请问老师,我应该如何更改?
我是初学者,还有3小时就要递交了。麻烦您赐教!
作者: cfu1    时间: 2009-01-31 05:03
第一个已经改完了。
2 , 3 题目 请赐教!
作者: ynchnluiti    时间: 2009-01-31 05:07
原帖由 cfu1 于 2009-1-31 05:03 发表
第一个已经改完了。
2 , 3 题目 请赐教!

用双引号
2
$filename -> "$filename"

3

  1. for f in *.txt; do
  2. base=`basename "$f" .txt`
  3. mv "$f" "$base.text"
  4. done
复制代码

作者: ynchnluiti    时间: 2009-01-31 05:14
另外
1
c)
   ps -u ced4033  这个不能显示所有exe 文件吧
2
输入0也会提示"Supplied file name does not exits in current directory"
作者: cfu1    时间: 2009-01-31 05:17
原帖由 ynchnluiti 于 2009-1-31 05:07 发表

用双引号
2
$filename -> "$filename"

3

for f in *.txt; do
base=`basename "$f" .txt`
mv "$f" "$base.text"
done



2 得更该方法,是把 哪个 Filename 加上双引号? 都加吗?
作者: cfu1    时间: 2009-01-31 05:18
原帖由 ynchnluiti 于 2009-1-31 05:14 发表
另外
1
c)
   ps -u ced4033  这个不能显示所有exe 文件吧
2
输入0也会提示"Supplied file name does not exits in current directory"




ced4033 是我的用户名,我就是在我的用户名的目录下面。
作者: cfu1    时间: 2009-01-31 05:23
原帖由 cfu1 于 2009-1-31 05:18 发表




ced4033 是我的用户名,我就是在我的用户名的目录下面。



他的要求是,显示所有可执行文件(.exe)吧。不包括 其他用户 的。 那就是只显示 我 的。
好象是这个意思。
作者: ynchnluiti    时间: 2009-01-31 05:26
原帖由 cfu1 于 2009-1-31 05:17 发表

2 得更该方法,是把 哪个 Filename 加上双引号? 都加吗?

是的。测试的时候输入特殊文件名试试(比如空文件名,含空格)
作者: ynchnluiti    时间: 2009-01-31 05:49
原帖由 cfu1 于 2009-1-31 05:23 发表
他的要求是,显示所有可执行文件(.exe)吧。不包括 其他用户 的。 那就是只显示 我 的。
好象是这个意思。

unix/linux下可执行文件不是指.exe
  1. ps -U $(whoami) u
复制代码

作者: kns1024wh    时间: 2009-01-31 21:21
原帖由 ynchnluiti 于 2009-1-31 05:49 发表

unix/linux下可执行文件不是指.exe

文件的权限位决定是否是可执行文件。
if [ -x filename ]; then

fi
作者: qzdmail    时间: 2009-02-01 11:24
不一定哦 ,如果 那个目录下挂在的是ntfs分区呢   可执行文件也是exe的哈




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2