タグ

Shellscriptとshellscriptに関するretletのブックマーク (44)

  • ディレクトリ構造を保ったまま欲しいファイルだけをコピーする方法 - yokojiの日記

    eclipseでandroid SDKのソースコードを参照する方法 それ1行でできるよ!そう、Linuxならね。 というわけでandroidのソースコードからjavaファイルだけ抜き出してandroid SDKの下に置いてみる。 コマンド $ find {src_root}/ -name "*.java" -print0 | xargs -0 cp --parents -t {sdk_root}/platforms/android-X/src/ Linuxの人は以上。 Macの人は、BSD系のcpコマンドに--parentsオプションがないのでGNU版をインストールする必要がある。 Mac HomebrewでCoreutilsをインストール $ brew install coreutils cpコマンドだけをGNU版と置き換えたい人は.zshrcに以下を記述 alias cp="gcp"

    ディレクトリ構造を保ったまま欲しいファイルだけをコピーする方法 - yokojiの日記
  • ex

    実用的なシェルスクリプト 実用的なシェルスクリプトでよく利用される機能について, 実験し理解しよう. 入出力制御 エラー処理 関数 コマンドライン処理 練習問題 作業の前に, bash マニュアル を開いておこう. 入出力制御 コマンドの入出力を制御するために,リダイレクトがある. 基的なリダイレクトは次の通り: コマンド < ファイル : ファイルから入力する. コマンド << 区切文字列 : ヒアドキュメント.区切文字列が入力されるまで入力を続ける. コマンド > ファイル : ファイルへ出力する.ファイルの元の内容は書き換えられる. コマンド >> ファイル : ファイルへ追加する.ファイルの元の内容の後に出力が追加される. 出力リダイレクト(出力および追加)では,後述のように, 標準エラー出力を取り扱うためのものも用意されている. また,今回は詳しく紹介しないが,入出力制御には,

  • 【 終了コード 】

    コマンドやシェル・スクリプトなどを実行し終えると,終了状態を表す終了コードを返してくる。多くの場合は正常終了した場合に「0」,異常終了した場合に「1」を終了コードとして返す。たとえば,コピーを考えてみよう。コピーが正常に終了すると,

    【 終了コード 】
  • if 文と test コマンド | UNIX & Linux コマンド・シェルスクリプト リファレンス

    if 文と test コマンド if 文とは? if 文とは、与えられた条件式が真のときのみ処理を行い、それ以外の場合は処理をスキップする、などといった場合に使用される条件分岐処理である。 条件式には一般的に test コマンドを用いるが、ls コマンドや grep コマンド等の他のコマンドを用いても構わない。 if 文は条件式に指定されたコマンドの終了ステータスを判定し分岐を行う。終了ステータスが「0」の場合は真、その他の場合は偽となる。 if 文 タイプ 1

    if 文と test コマンド | UNIX & Linux コマンド・シェルスクリプト リファレンス
  • 無効なURLです

  • find -exec で複数行のコマンドを実行する - それマグで!

    -exec を複数個書く 複数行のコマンドを実行するには、execを複数個掛けば( ・∀・)イイ!! find ./ -type f -exec echo ファイル:{} \; -exec echo cat {} \; 分かりやすく複数行に分けて書けばナイス find ./ -type f -name '*.html' \ -exec echo {} \; \ -exec echo head -n 5 {} \; \ -exec head -n2 {} \; \ コレで完璧ですね。 2016-06-07 追記 curly brace を使った 複数行のコマンド実行はよくわからなかった find -exec { echo {} } \; ## 出来ない・・・なぜだ その他の方法と参考資料 xargs は個別ファイルへ書き出すリダイレクトのパイプが使えない → for を使う - それマグで!

    find -exec で複数行のコマンドを実行する - それマグで!
  • 簡素なif文は一行で書く - 半径5メートル

    自分用のツールなど規約のないものなら、処理文の短い分岐は一行で書いたりします。 #!/bin/sh target=./hoge.txt if [ -f ${target} ]; then rm -f ${target} ;fi 追記:(2/4) コメント欄でもっとcoolな書き方を教えていただきました。ありがとうございます! [ -f $target ] && rm -f $target 追記:(2/13) こんなのもありなんですね。まるで三項演算子みたい。 [ $hoge = $foo ] && echo "true" || echo "false"

    簡素なif文は一行で書く - 半径5メートル
  • 【FreeBSD】シェルスクリプトでファイルを日付毎のディレクトリに分けて保存する

    対象プラットフォーム: FreeBSD 8.x (下記手順を2014/05/01にFreeBSD 8.4-RELEASEで確認済み) はじめに デジカメで撮影した画像ファイルを整理する際、撮影した日付ごとにディレクトリを作成し、その中に画像ファイルを保存している方も多いと思います。 このページでは、シェルスクリプトでファイルのタイムスタンプを判別し、それを同じ日付の付いたディレクトリに整理して保存する方法について説明します。 いきなり答え いきなり答えですが、以下のようなシェルスクリプト2つで上記の目的を達成することが出来ます。 #!/bin/sh binary_path=`dirname ${0}` source=${1} destination=${2} if [ -z ${source} ] then echo "Source is not specified, operation

  • [ヅ] bashでファイルに連番を振って一括リネームするワンライナー (2011-10-10)

    ディレクトリ内のデタラメな *.jpg と *.jpeg ファイルをこんな感じでまとめてリネーム。 $ ls aaa.txt asdf.jpg poiuy.jpg qwer.jpg sngk38.jpeg $ i=1; for f in *.jpg *.jpeg; do g=000$i.jpg; mv $f hoge_${g:(-8)}; i=$((i+1)); done $ ls aaa.txt hoge_0001.jpg hoge_0002.jpg hoge_0003.jpg hoge_0004.jpg ナンバリングの処理は、数値演算構文の $((数値演算式)) を利用して i=$((i+1)) という記述で i を数値としてインクリメント。 リネーム後ファイル名の生成部分は、g=000$i.jpg と ${g:(-8)} の部分。 g=000$i.jpg で、4桁にするために i が

  • 使いやすいシェルスクリプトを書く

    できればシェルスクリプトなんて書きたくないんだけど,まだまだ書く機会は多い.シェル芸やワンライナーのような凝ったことではなく,他のひとが使いやすいシェルスクリプトを書くために自分が実践していることをまとめておく. ヘルプメッセージ 書いてるシェルスクリプトが使い捨てではなく何度も使うものである場合は,体を書き始める前に,そのスクリプトの使い方を表示するusage関数を書いてしまう. これを書いておくと,後々チームへ共有がしやすくなる.とりあえずusage見てくださいと言える.また,あらかじめ書くことで,単なるシェルスクリプトであっても自分の中で動作を整理してから書き始めることができる.関数として書くのは,usageを表示してあげるとよい場面がいくつかあり,使い回すことができるため. 以下のように書く. function usage { cat <<EOF $(basename ${0})

  • シェルスクリプトを書くときに気をつける9箇条 - Qiita

    最新の類似投稿としてシェルスクリプトのコーディングルール2014も併せてどうぞ。 2014/10/09追記 ぼくがシェルスクリプトを書くときに気にしていること、過去の失敗で書き留めたことを忘れないために。 1. グローバル変数は大文字 PATH や HOME など、環境変数が大文字なので、エクスポートする変数を大文字で書くという習慣は一般的であるような気がしますが、エクスポートする変数を抱えるシェルスクリプトを作成する機会が稀なので。 グローバル変数は大文字 ローカル変数は小文字 エクスポートする変数も大文字 関数内からグローバル変数にアクセスする場合がありますが、やはり区別していると、可読性が増すような気がするのでお勧めです。 2. awk を知る Unix 上にて文書処理をするときに、数多くのフィルタコマンド(grep、cut、tr、head、sort、uniq、sed、awk、wc、

    シェルスクリプトを書くときに気をつける9箇条 - Qiita
  • シェルスクリプトでパイプを判断する - Qiita

    Unix の基的考え方のひとつに「フィルタとして振る舞う」というものがあります。標準入力から入力をして何らかの処理を行い、標準出力に出力を行うように設計されているコマンドを フィルタ と呼びます。フィルタ・コマンドそれ自身は単純な機能しか持っていませんが、これを | (バーティカルバー)で結びつけることでフィルタを部品のように扱い、大きな機能をもったコマンドとして機能させることが出来ます。 (例)

    シェルスクリプトでパイプを判断する - Qiita
  • 私が他人のシェルスクリプトから学んだこと | Yakst

    私はシェルスクリプトの大ファンで、他人のスクリプトから面白い方法を学ぶのが大好きだ。最近、SSHサーバの2要素認証を簡単にするためのauthy-sshスクリプトに出会った。このスクリプト群を見まわしていて、みんなと共有したいたくさんのクールなことを見つけた。 出力に色付けする 出力文字列を、成功した時は緑に、失敗した時は赤に、警告は黄色に色づけしたいと思うことはたくさんあるだろう。 NORMAL=$(tput sgr0) GREEN=$(tput setaf 2; tput bold) YELLOW=$(tput setaf 3) RED=$(tput setaf 1) function red() { echo -e "$RED$*$NORMAL" } function green() { echo -e "$GREEN$*$NORMAL" } function yellow() { e

    私が他人のシェルスクリプトから学んだこと | Yakst
  • find/xargsを使ったファイル・ディレクトリ名の一括置換/一括作成コマンド一覧

    業務で楽するためのUNIXテクニック集 ファイル・ディレクトリ名の一括置換/一括作成 この記事は2008年~2009年頃に翔泳社で連載していた「業務で楽するためのUNIXテクニック集」の原です。 はじめに この連載では、UNIX系OSをコマンドライン上から効率よく利用するために知っておくべきテクニックや、便利な小技を紹介していきます。 今回は、第0回、第1回で紹介したfind/xargsコマンド、シェルの変数展開、制御構造を利用した「ファイル・ディレクトリ名の一括置換」に関するテクニックを紹介します。 また、「ファイルやディレクトリの一括作成方法」「シンボリックリンクの作成方法」に関するテクニックも紹介します。「ファイル名の置換」テクニックを検証する際の、コマンド確認環境構築にご利用ください。 関連記事 シェル制御構造と正規表現の基礎 grepを使った便利なコマンド一覧 find/xar

    find/xargsを使ったファイル・ディレクトリ名の一括置換/一括作成コマンド一覧
  • 自動バックアップ運用(tar+GnuPG+rsync/ftp) - Fedoraで自宅サーバー構築

    Linuxサーバー内データの自動バックアップを行う。 ここでは、誤操作等によるファイル削除や破壊に備えて、サーバー内データをtarコマンドで1ファイルにまとめてbzip2形式(gzip形式よりも圧縮率が高い圧縮形式)に圧縮してバックアップ先ディレクトリへ退避しておき、指定により、退避したバックアップを管理者以外が参照できないようにGnuPGコマンドで暗号化できるようにする。また、サーバーのハードディスク故障に備えて、バックアップファイルを別のWindowsクライアントへ転送しておく。 なお、通常クライアントマシンはサーバーのように常時稼動しているわけではないので、クライアント立ち上げ時に自動でrsyncコマンドまたはftpコマンドでサーバー側からバックアップを取得するようにする。 [root@fedora ~]# vi backup.sh ← バックアップスクリプト作成 #!/bin/ba

  • unixlife.jp

    This domain may be for sale!

  • シェルスクリプトでftp転送 - 半径5メートル

    シェルスクリプトでftp転送する処理のサンプル。メモ。 #!/bin/sh DATE=`date '+%Y%m%d'` tar cvfz ${DATE}.tar.gz ./hoge ftp -ivn 192.168.11.11 << __END__ user username password bin # バイナリ転送モード passive # パッシブモードoff cd /foo/var put ${DATE}.tar.gz quit __END__ファイル転送時にはascii/binaryの転送モードに注意です。 例えば、tar.gzファイルの転送で、転送先で解凍しようとしてこんな感じにメッセージが出て tar: 次のヘッダをスキップします tar: アーカイブに廃れた base-64 ヘッダが含まれています gzip: stdin: invalid compressed data--

    シェルスクリプトでftp転送 - 半径5メートル
  • ftp tar cron で自動ネットワーク・バックアップ

    Landscape トップページ | < 前の日 2003-11-30 2003-12-01 次の日 2003-12-02 > Landscape - エンジニアのメモ 2003-12-01 ftp + tar + cron で自動ネットワーク・バックアップ 当サイト内を Google 検索できます * ftp + tar + cron で自動ネットワーク・バックアップこの記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Linux] [ftp] [バックアップ] ftp コマンドには、標準入力から読ませたデータに好きなファイル名を付けてアップロードする機能がある。これを利用してネットワークバックアップスクリプトを作成する。スクリプトを毎日 cron で回せば、リモートマシンに毎日バックアップを自動で ftp アップロードすることができる。 - ftp + tar

  • シェルスクリプトでFTPの実行結果を取得するには

    No.1です。補足拝見しました。 直接ftpコマンドの戻り値では実行結果が判断できないので、私が以前に携わっていたプロジェクトでは、FTPサーバが出すエラーコードをgrepでハンドリングしていました。 FTPはコマンドの結果を「行頭に3桁の数字」で出力する仕様になっており、putもgetも送受信が成功した場合は226が出力されるので、 ftp -nv < ftpCom.txt > ftpLog.txt 2>&1 を例えにとると、このコマンドを実行した後に、 grep ^226 ftpLog.txt > /dev/null if $? ne 0 then echo "FTPでエラーが発生しました" >> logfile exit 1 fi みたいなことをしていました。grep の引数 ^226 は行頭が226から始まる行を検索、という意味で、grepでマッチする行があった場合は0が戻り値とな

    シェルスクリプトでFTPの実行結果を取得するには
  • シェルスクリプト(sh, bash) Tips集

    sh, bash, csh, tcsh でのテクニックや小ネタなど。 すぐ忘れてしまうのでサンプルコードを集めたメモを作りました。基的に環境はLinuxという前提で書いていますが、SolarisやFreeBSDの話も時々混じります。 あるディレクトリから、n日前からm日前までに作られたファイルを全て列挙したい findコマンドのmtimeオプションを使えば良い。ファイル名が返るので、それをxargs(1)で受け取ってお好きなコマンドで処理する。mtimeには+-で日数を指定し、プラスは「より前(より古い)」、マイナスは「より後(より新しい)」を意味する。ゼロが前後24時間を意味するので、前日のファイルは -1 ではなく -0 であることに注意。 またオプションとして -type f と指定することにより、ディレクトリやシンボリックリンクを除外して通常ファイルのみを選択することができる。