タグ

shell_scriptingに関するpipeheadのブックマーク (9)

  • cdの引数を絶対パスにしてコマンドヒストリに残す - ももいろテクノロジー

    cdの引数が相対パスのままコマンドヒストリに残って便利な例が思いつかないので、絶対パスでコマンドヒストリに残すようにする。 具体的には、以下のシェル関数を.bashrcに書く。 if [[ -n "$PS1" ]]; then cd() { command cd "$@" local s=$? if [[ ($s -eq 0) && (${#FUNCNAME[*]} -eq 1) ]]; then history -s cd $(printf "%q" "$PWD") fi return $s } fi いくつかの重要なポイントを以下に記す。 cdの定義を上書きしているが、このような場合中で普通にcdを呼ぶと再帰してしまうためcommand組み込みコマンドを使う。 "$@"の代わりに"$1"を使うことはできない。cdを引数なしで呼んだときホームディレクトリに移動しなくなってしまう。 cdの

    cdの引数を絶対パスにしてコマンドヒストリに残す - ももいろテクノロジー
  • 改行をしないECHO(コマンドプロンプト): むった~

    Linuxとかだとecho -nオプションで出来るらしいんだけど、コマンドプロンプトでも出来ないかと思って探してみた。

    pipehead
    pipehead 2010/06/12
    > SETに/pオプションでユーザ入力を待つわけだが、その入力をNULLデバイスからリダイレクトしてやれ!という感じらしい。
  • バッチファイルで、ECHO出力で改行なしで出力 - 雑多な日々

    バッチファイル内で、改行しないで、ECHOの出力を行う方法。 UNIX系でいうところの、 % echo -n 'Start...' ; echo 'End.' Start...End. というやり方。 調べてみると、ありました。 % SET /P X=Start...<NUL || ECHO End. 何をしているか、というと、環境変数Xに対し、「Start...」というプロンプトを表示して、ユーザに入力を促す、という処理を逆手に取って、入力は、NULデバイスから行う事により、来、プロンプトを表示し、入力待ちとなるところを、プロンプトの表示だけさせる、という、なんともな方法でした。 次の、ECHOにより、改行込で出力されますから、次の行への遷移も行える、というところです。 ちなみに、空行を出したい、というときは、 % ECHO. と、「ECHO」と「.」を、間を開けずに入力して、実行すれ

    バッチファイルで、ECHO出力で改行なしで出力 - 雑多な日々
    pipehead
    pipehead 2010/01/14
    > 空行を出したい、というときは、 % ECHO.
  • メモ帳:空のディレクトリを削除する1行バッチスクリプト

    One-line batch script to delete empty directories http://blogs.msdn.com/oldnewthing/archive/2008/04/17/8399914.aspx このために全体で260KBもあるプログラムは必要ない。このバッチファイルは、ちょうどすばらしいトリックを使っている: for /f "usebackq" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d" 私はこれをrdempty.cmdと名づけた。 これは長い間忘れられていたバッチでディレクトリツリーの各サブディレクトリを処理するのフォローアップである。その記事と同じテクニックを使っているが、列挙の順序を逆にするために「| sort /R」を通して結果を取得することでディレクトリを昇順ではなく降順で列挙している。親ディ

  • かんにんぐぺーぱー バッチファイルで設定ファイルを読み込む

    以前、バッチファイルから設定ファイルを読み込む方法が分からなくて諦めた・・ とかいう人生の先輩がいたので、ちょっと晒してみる。 例えば↓のような設定ファイルがあるとして・・ setting.conf user=hogeuser pass=hogepass Script FOR /F "tokens=1,2 usebackq delims==" %%a IN (`type "setting.conf"`) DO ( if %%a == user set user=%%b if %%a == pass set pass=%%b ) ↑これでファイルから読み込んで設定値を変数にいれる事ができる。 "delims="の値を変えればイコール以外でも区切る事ができる。 もっといい方法あるよ!とご存知の方がいらっしゃいましたら・・ ご教示ください

  • 環境変数の置換文字列に環境変数を使う。 - Windows Script Programming

    %環境変数:文字列1=文字列2% で「文字列1」や「文字列2」に環境変数を使うには、「文字列1」や「文字列2」を通常展開、全体を遅延展開します。 !環境変数:%文字列1%=%文字列2%! もし、「文字列1」や「文字列2」を遅延展開する必要があるとき、「文字列2」は遅延展開できます。 %環境変数:文字列1=!文字列2!% しかし、「文字列1」は遅延展開できません。 %環境変数:!文字列1!=文字列2% → NG 「文字列1」(と「文字列2」)を遅延展開するには、「文字列1」(と「文字列2」)を遅延展開、全体をCALL %%で遅延展開します。 CALL %%環境変数:!文字列1!=!文字列2!%% ただし、この場合の「文字列2」の遅延展開は、1パス目に行われるので、2パス目の通常展開時に評価されます。 「文字列2」が2パス目の通常展開時に評価されないようにするには、全体をCMD %%で遅延展開

    環境変数の置換文字列に環境変数を使う。 - Windows Script Programming
  • windows batのノウハウ - 知識共有 - Seesaa Wiki(ウィキ)

    [ 学問・理系 ] 知識共有 編集 履歴 添付 設定 新規ページ作成 メニュー Wiki内検索 最近更新したページ 2008-06-09 FrontPage 2008-06-01 ヴィクトリーガンダム 2008-05-25 ガンダム VS ガンダム 機体一覧 2008-05-24 ガンダム VS ガンダム 小技一覧 ガンダム VS ガンダム トップページ MenuBar1 ガンダム VS ガンダム データ インフラ 役立つコマンド一覧-インフラ編 2008-05-23 構造体のリストを引数に使った関数(侍) C 侍 2008-05-20 devcon ショートカット-インフラ編 windows batのノウハウ 2008-05-16 魔じしゃん MenuBar2 言語 2008-05-15 test Profile 最新コメント Menu タグ windows batのノウハウ finds

    pipehead
    pipehead 2008/05/20
    > forが呼ばれる直前の この時点でERRORLEVELに値0が入っていると for(....){ findstr "asd" foo.txt echo %ERRORLEVEL% ←例えfindstrがどんな結果でもERRORLEVELは0であり続ける }
  • 標準エラー出力をハンドルする - NTコマンドプロンプトの機能紹介

    対象プラットフォーム Windows XP VERSIONS Windows 2000 VERSIONS Windows NT VERSIONS 4.0 Windows NT VERSIONS 3.51 質問 route.exe のヘルプを見ようと思い、以下のように入力しましたが、画面が流れてしまい、コマンドラインのヘルプを見る事ができません。理由と対策を教えてください。 c:\> route | more 回答 直接の原因は, route.exe はコンソールへの出力を標準エラー出力に出力しているにもかかわらず, パイプ(|) を使って標準出力への出力を more コマンドに渡しているためです。 通常コマンドがコンソールに文字を出力する時は, 標準出力という仮想的なファイルに対して, 書き込みを行う事で実現していますが, 標準エラー出力という仮想的なファイルに対して出力を行ってもコンソー

    pipehead
    pipehead 2006/07/12
    2>, 2>&1
  • @IT:Windows TIPS -- Hint:whichコマンドを作る

    「%~$PATH:I」という表記方法を使うと、PATH変数の指すフォルダからファイルを検索させることができる。これを使ってwhichコマンドを実現してみる。 UNIXやLinux OSには、whichというコマンドがある。引数にコマンド名を与えると、そのコマンドが置かれている場所を表示するというコマンドである。ユーザーがあるコマンドを実行しようとすると、シェル(Windowsでいうところのコマンド・プロンプトのようなのもの)は環境変数PATHの指しているフォルダを順番に検索し(PATHには、複数のフォルダ名が「:」記号で区切られてセットされている)、最初に見付かったファイルを実行する。システムに同じ名前のコマンドが複数インストールされている場合、実行パスがたくさんある場合に、どこのフォルダにあるコマンド(実行ファイル)が実際に呼び出されているかを簡単に調べることができる。 ※UNIXにおけ

    pipehead
    pipehead 2003/07/26
    FOR コマンドの変数の修飾子の一覧あり〼
  • 1