$ ls -FC /foo dir1/ file1 dir2/ file2 $ myls /foo dir1/ dir2/ file1 file2 |
#!/bin/sh #引数を受け取る ps=$1 #エラーメッセージを定義 ER="USAGE: myls [dir] " #引数が2以上だったら if [ $# -ge 2 ] ; then echo "Warning!! Too Many Arguments" echo $ER echo "-----shell exit" #スクリプトを終了 exit fi #ディレクトリを指定していなかったらカレントディレクトリを代入 if [ -z $ps ] ; then ps="./" fi #psがディレクトリだったら if [ -d $ps ] ; then #fileにls -1でリストを代入、 file=`( cd $ps ; ls -1 )` #リストを一つずつ見ていく for koo in $file do #ディレクトリーだったら変数dirに代入 if [ -d "${ps}/$koo" ] ; then dir="$dir $koo/" else #ファイルだったら変数filに代入 if [ -f "${ps}/$koo" ] ; then fil="$fil $koo" fi fi done echo "--------------dir---------" #表示色を変更 echo -n "^[[31m" #dirの中身を表示 for bbb in $dir do echo $bbb done #色を初期化 echo -n "^[[00m" echo "--------------file-------" #色を変更 echo -n "^[[37m" for aaa in $fil do echo $aaa done #色の初期化 echo -n "^[[00m" #引数がファイルだったらls -lで詳細を表示 else if [ -f $ps ] ; then echo "caution!! $ER" echo "" echo `ls -l $ps` echo "" echo "--------shell exit" exit else #ディレクトリでもファイルでもなかったらエラーメッセージを表示して終了 if ( [ ! -d $ps ] || [ ! -f $ps ] ) ; then echo "" echo "Warning!! No Such File or Directory!" echo $ER echo "----------shell exit" exit fi fi fi #emacsで^[を入力するにはCq+escを使う |
[j03040:~/works/jikn/report4] j03040% myls --------------dir--------- dir1/ dir2/ dir3/ --------------file------- kdkd lr mylower myls myls.sh mylsuza mymv myupper sum55 test.eps test2.eps |
#!/bin/sh #エラーメッセージを定義 ER="usage : myupper [file name]" #引数を順番に読み込む for f do #引数がNULLだったらエラーメッセージを表示して終了 if ( [ -z $f ] ) ;then echo "Warning! To few Arguments!" echo "--------exit" exit else #引数がディレクトリだったらエラーメッセージを表示して終了 if ( [ -d $f ] ) ; then echo "$f is not file" echo $ER echo "----shell exit" exit fi fi #引数がファイルだったら大文字変換の処理 if ( [ -f $f ] ) ; then #変数eにtrで大文字に変換した結果を代入 e=`echo $f | tr "[a-z]" "[A-Z]"` echo "$f ---> $e" #mvでファイル名変更 mv $f $e else #引数がファイルぢゃなかったらエラーメッセージを表示して終了 echo "---No Such File---" echo $f echo "--------------------System exit" exit fi done |
#!/bin/sh #エラーメッセージを定義 ER="usage : mymv [file Argument] [file name]" #引数が2以下だったらエラーメッセージを表示して終了 if [ $# -lt 2 ] ; then echo "-----Argument Error!-----" echo $ER exit fi #toarに変換後の拡張子を代入 toar=$1 #引数を一つずらす shift list="" #引数を順番に読み込む for koko do #指定されたファイルが無かったらエラーメッセージを表示して終了 if [ ! -f $koko ] ; then echo "$koko is not found!" echo "-------shell exit" exit else #ファイルが存在したらlistに代入 list="$list $koko" fi done for file in $list do #ファイルから拡張子を抜き出す ar=`expr "$file" : ".*\.\(.*\).*"` #tofileに拡張子を変更したファイル名を代入する tofile=`basename $file $ar`$toar #ファイル名変換確認 while [ 1 ] do echo -n "$file -----> $tofile rename?(yes/no) " #キーボードから文字を受け取る read yn #受け取った文字に応じて処理する case $yn in #yes/yとだったらファイル名を変更して終了 yes|y) mv $file $tofile break ;; #no/nだったら何もせずに終了 no|n) break ;; #それ以外の文字だったら繰り返す *) echo "please enter yse or no" continue ;; esac done done |
[j03040:jikn/report4/dir1] j03040% ls lr* myupper* sum55* [j03040:jikn/report4/dir1] j03040% myupper lr sum55 lr ---> LR sum55 ---> SUM55 [j03040:jikn/report4/dir1] j03040% ls LR* SUM55* myupper* [j03040:jikn/report4/dir2] j03040% ls mymv* test.ps test2.ps [j03040:jikn/report4/dir2] j03040% mymv eps *.ps test.ps -----> test.eps rename?(yes/no) y test2.ps -----> test2.eps rename?(yes/no) h please enter yse or no test2.ps -----> test2.eps rename?(yes/no) n [j03040:jikn/report4/dir2] j03040% ls mymv* test.eps test2.ps |