nasec blog

プログラミングやPCについての覚え書き
SEARCH
PROFILE
北陸で働くSIer。主にWEB系。
効率化と情報共有を常に模索中。。
音ゲーが好きです。
好奇心旺盛で興味のあるものは何でも飛びつきます!
RECOMMEND
CATEGORIES
ARCHIVES
RECENT COMMENT
  • mkdirで作成したディレクトリに作成と同時に移動する
    h41k4 (04/22)
  • とぅ
    h41k4 (04/22)
  • mkdirで作成したディレクトリに作成と同時に移動する
    totoro (03/30)
  • Xperiaでファイルのダウンロードに失敗する
    h41k4 (12/14)
  • Xperiaでファイルのダウンロードに失敗する
    きむら (12/14)
  • Xperiaでファイルのダウンロードに失敗する
    h41k4 (12/01)
  • Xperiaでファイルのダウンロードに失敗する
    きむら (12/01)
  • 指定したデバイス、パス、またはファイルにアクセスできません。適切なアクセス許可がない可能性があります。
    ゆう (03/16)
  • ネットマーブル(チョコマ)のパズル「ボタン」
    Yero (03/12)
RECENT TRACKBACK
  • 指定したデバイス、パス、またはファイルにアクセスできません。適切なアクセス許可がない可能性があります。
    プレサーチ (11/19)
ブログパーツ
フィードメーター - nasec blog
OTHERS
SPONSORED LINKS
みんなのブログポータル JUGEM
スポンサーサイト

一定期間更新がないため広告を表示しています

| - | | - | - |
mkdirで作成したディレクトリに作成と同時に移動する
mkdirで作成したディレクトリにすぐに移動したい場合、1回のコマンドで実行するには

mkdir test && cd test

と打ち込みます。

でも、それでは面倒なので、シェルスクリプトを作成することにしました。
ソースはこのような感じです。

#!/bin/bash

mkdir $1 && cd $1

$1はシェルスクリプトに渡された引数を表しています。
引数の数に応じて$1〜$9を割り当てます。

これに実行権限を与えて、実行します。

chmod u+x test
./test hogehoge

あれ…?
実行してみても、mkdirコマンドはきいているようですが、cdができていません。
これは、
シェルプロンプトにコマンド名を叩き込んで実行すると、
子シェル(sh,cshなど)が新たに作られて、その子シェルがスクリプトを実行する。
で、スクリプトが終わるとその子シェルもろとも消えて親シェルに戻ってくる。
だから、シェルスクリプト内でcdしたり、環境変数をセットしても、その影響は
子シェルの中にとどまって、スクリプト終了と共に消えてなくなる。

ためだそうです。

これを解決するには、
source test hogehoge
と、ソースコマンドで実行する。または、
. ./test hogehoge
と、.(ドット)の後に実行ファイルを続けると、cdしてくれるようになります。

これで大体は出来たのですが、コマンドが冗長なので、aliasに登録しておきます。
viで.bashrcを開き、
# User specific aliases and functions
の下に
alias mkcd='source スクリプトへのパス'
と記述します。

mkcd フォルダ名

と入力すると、フォルダ作成と移動を同時にしてくれるようになります。

参考
シェルスクリプト総合@LINUX Part3
http://pc11.2ch.net/test/read.cgi/linux/1184077033/
| Linux | 13:50 | comments(2) | trackbacks(0)