シェルについての質問ですが、
1、nkdir /a/$b/$b`date+'%Y'`
とディレクトリを作り
作成したディレクトリにファイルを移動したいのですが、
ディレクトリを作る際に、
/$bのしたに$bという名前のファイルしかでず、
うまく出来ません。

2、2つのファイル、a,bの差分をとるシェルを作りたいのですが、考えれば考えるほどどのような切り口で作ればよいか解らなくなっています。おそらくdiffコマンドを使うのでは?という所までは来ているのですが、その結果ファイルを使う必要があり、更に園ファイルを編集しなければならなく、訳がわからなくなっている状態です。

この2点、どちらかおわかりの方、どうかご教授のほどよろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

1.


> nkdir /a/$b/$b`date+'%Y'`
mkdir(ですよね?) では、2段階以上一度にディレクトリは作れません。
mkdir /a/$b
mkdir/a/$b/$b`date +'%Y'`
のように2回に分けてみてください。

2.
具体的にどのような差分を取り、どのように変更したいのでしょうか?
diff コマンドでは、オプション指定することで、いろいろな形式でファイルの差分を取ることが出来ますので、とりあえずテストデータを作って、
diff ファイルa ファイルb
diff -c ファイルa ファイルb
diff -u ファイルa ファイルb

などを実行してみてはどうでしょうか?
形式の種類についてはマニュアル(man diff) 等で見てください。
参考URL は GNU のdiff (linux では標準)のマニュアルです。
OSによっては、付属 の diff だともっと機能が少ない/異なるかもしれませんが、参考までに。

http://www.linux.or.jp/JM/html/gnumaniak/man1/di …

参考URL:http://www.linux.or.jp/JM/html/gnumaniak/man1/di …
    • good
    • 0

こんにちは。



1.mkdirコマンドの「-p」オプションを使用すれば多段階層のディレクトリが作成可能ですが。質問の意味を取り違えてるかも?です。
  ちなみにSolaris、HP-UXはOKでした。

2.はtailkuppaさんの回答で十分ですよね?あと、「cmp」コマンド等もありますが。「man」コマンドにてマニュアルを参照してみて下さい。
    • good
    • 0

> 1、nkdir /a/$b/$b`date+'%Y'`



このとおりだとすると、(nkdir は mkdir のタイプミスとしても)
date と + の間にスペースがありませんが、それが原因ではありませんか?

> 2、2つのファイル、a,bの差分をとるシェルを作りたいのですが、

こちらは意味が不明です。どういう入力に対して、どういう出力を得たいのですか?
diff a b > c
sed xxx c > d
とかですか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QURLで自分のディレクトリ名(~.co.jp/~taro)を別のディレクトリ名(~.co.jp/~hanako)で表示させる方法ありますか。

LHR8.0でapacheをつかって自分のHPを公開しています。コンテンツはtaro/ディレクトリ以下にありますのでブラウザのアドレス欄にはhttp://www.aaa.bbb.jp/~taroと表示されます。

この***/~taroを***/~hanakoというように別のディレクトリ名で表示させることはできますか。


ディレクトリ名から自分のHPとわからないようにしたいというのが動機です。

Aベストアンサー

root権限をお持ちなら、
mod_rewriteでURLを書き換えるなり、
httpd.conf内のDocumentRootを変えたり、Aliasを設定したり、
適当なフォルダへのsymbolic linkを作成するなり、
プロキシかました
――などの手がとれると思います。

Q【Cシェル】ファイルの切取り/挿入方法

Cシェル初心者です.
下記のようなファイルで"begin BBB"~"end"を切り取って(※(1))
いろいろ編集し、元のファイルの中に戻したい場合(※(2))の手順って
どのようにしたらよいでしょうか?

(1)切り取り方法の質問
 ($1==begin、$2==BBBからendまでの切り取り)
(2)編集後のファイルの挿入方法の質問。
 (ファイルの途中への挿入方法)

以上、2点のご教授よろしくお願いします。
尚、環境はSolalis2.6です。

%cat file.txt
begin AAA


  begin BBB
  ・
  ・
  end


end

Aベストアンサー

シェルのビルトインだけですか~あ。ちょっとしんどいかな。

(1)切り取りコマンド
#! /bin/csh -f
# 起動方法 cmd fname
# begin BBB から end までを fname で示されたファイルに出力する。

set FNAME = $1
set INPUT = $<
while ( "$INPUT" != "" )
 set CHECKBEGIN = `echo $INPUT | grep 'begin BBB'`
 if ( "$CHECKBEGIN" != "" )
  set FILEOUT
 endif
 if ( $?FILEOUT )
  echo $INPUT >> $FNAME
 endif
 set CHECKEND = `echo $INPUT | grep end`
 if ( "$CHECKEND" != "" )
  if ( $?FILEOUT )
   unset FILEOUT
  endif
 endif
 set INPUT = $<
end

(2)挿入コマンド
#! /bin/csh -f
# 起動方法 cmd fname
# begin BBB から end までを fname で示されたファイルで置き換える。

set FNAME = $1
set INPUT = $<
while ( "$INPUT" != "" )
 set CHECKBEGIN = `echo $INPUT | grep 'begin BBB'`
 if ( "$CHECKBEGIN" != "" )
  set EXCHANGE
 endif
 if ( $?EXCHANGE )
  if ( ! $?FILEOUT )
   cat $FNAME
   set FILEOUT
  endif
 else
  echo $INPUT
 endif
 set CHECKEND = `echo $INPUT | grep end`
 if ( "$CHECKEND" != "" )
  if ( $?EXCHANGE )
   unset EXCHANGE
  endif
 endif
 set INPUT = $<
end

試してはいません。
空白が連続していると正しく出力できませんが、とりあえず。
どちらも標準入力から読みますから
cmd fname < original_file
のように起動して下さい。

シェルのビルトインだけですか~あ。ちょっとしんどいかな。

(1)切り取りコマンド
#! /bin/csh -f
# 起動方法 cmd fname
# begin BBB から end までを fname で示されたファイルに出力する。

set FNAME = $1
set INPUT = $<
while ( "$INPUT" != "" )
 set CHECKBEGIN = `echo $INPUT | grep 'begin BBB'`
 if ( "$CHECKBEGIN" != "" )
  set FILEOUT
 endif
 if ( $?FILEOUT )
  echo $INPUT >> $FNAME
 endif
 set CHECKEND = `echo $INPUT | grep end`
 if ( "$CHECKEND" !=...続きを読む

Q"Xm/XForm.h:そのようなファイル、ディレクトリはありません"って?

X-Windowプログラムで本にあったプログラムをそのまま写して
gcc ファイル名 -lX11 -lXm -lXim -lXt
でコンパイルをしようとしたら
Xm/XForm.h:そのようなファイル、ディレクトリはありません
Xm/XLabel.h:そのようなファイル、ディレクトリはありません
Xm/XPushB.h:そのようなファイル、ディレクトリはありません
Xm/XText.h:そのようなファイル、ディレクトリはありません
Xm/XRowColumun.h:そのようなファイル、ディレクトリはありません
Xm/XCascadeB.h:そのようなファイル、ディレクトリはありません
Xm/XMessageB.h:そのようなファイル、ディレクトリはありません
というメッセージがでてきました。
これをコンパイルさせるにはどうしたらいいのですか?
ちなみに関係があるのかわかりませんがその本はX11R4でプログラムを作成したと書いてありました。
わたしの環境はKondoraで、X11R6というのが入っているようです。
今、プログラムを組むのにコンパイルすら通らないのでまったく進みません。
私はぜんぜん無知の初心者なのでよろしければ詳しく教えてください。
お願いします。

X-Windowプログラムで本にあったプログラムをそのまま写して
gcc ファイル名 -lX11 -lXm -lXim -lXt
でコンパイルをしようとしたら
Xm/XForm.h:そのようなファイル、ディレクトリはありません
Xm/XLabel.h:そのようなファイル、ディレクトリはありません
Xm/XPushB.h:そのようなファイル、ディレクトリはありません
Xm/XText.h:そのようなファイル、ディレクトリはありません
Xm/XRowColumun.h:そのようなファイル、ディレクトリはありません
Xm/XCascadeB.h:そのようなファイル、ディレクトリはあり...続きを読む

Aベストアンサー

Xm は、#1の方のご回答の通り、OSF/Motif という商用のXツールキットです。
が、世の中には LessTif というフリーの OSF/Motif 互換のツールキットがあります。
LessTif については、参考URLをご参照下さい。
私は Linux のことは良く知りませんが、
もしかするとパッケージが用意されているかもしれません。

参考URL:http://www.lesstif.org/

Q/homeディレクトリなどのユーザ情報関連ファイルのコピーについて

お世話になります。

現在、Aというサーバー(Linux)が稼動しているとします。
新たにBというサーバー(Linux)を作成し、
Aサーバーのユーザ情報関連(/homeディレクトリや/etc/passwdなど)を、
Bサーバーにも同じように設定したいんですが、
一番、手軽な方法は何でしょうか?

個人的には、rsyncでAサーバーの/homeディレクトリ以下をBサーバーにコピーすればいいのかな?と思っているのですが、いかがでしょうか?
また、ユーザ情報をコピーする際、
/homeディレクトリ、/etc/passwd、/etc/group、/etc/shadow
をコピーすればよろしいのでしょうか?
その他、必要なファイル・ディレクトリがあれば
教えてください。

よろしくおねがいします。

Aベストアンサー

ユーザ情報だけなら/home/、/etc/passwd、/etc/group、/etc/shadow、/etc/gshadow、/var/spool/mailくらいですね。
(場合によっては/var/wwwも)

いちばん簡単な方法は。。。なれてる方法かなぁ~
一時的にHDDつないでcpしても良いし、ftpでも良いし。
私ならバックアップもかねて/etc/、/home/、/var/をtarで固めてftpで送るかな。
(rsyncあまり使わないので)

Aベストアンサー

find DIR -type f -user taro | xargs chown apache

DIRは「あるディレクトリ」のことです。
DIR内にサブもディレクトリがあり、そのサブディレクトリ内のファイルを対象にしたくないときには、findに「-maxdepth 1」オプションを付けてください。このオプションを付けなければ、DIR内のサブディレクトリを再帰的に処理します。


このカテゴリの人気Q&Aランキング

おすすめ情報