タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

Shell Scriptに関するhalohalolinのブックマーク (14)

  • xargs で標準入力が空だったら何もしない - Qiita

    find /hoge/fuga -ctime +30 -type f -print | xargs rm などしたときに、何もfindの条件にマッチしなかったら、単に引数なしのrmが実行され rm: missing operand Try `rm --help' for more information. となる。 こういったエラーを出したくない場合は、--no-run-if-empty を使って find /hoge/fuga -ctime +30 -type f -print | xargs --no-run-if-empty rm としてやると、findの結果が空の場合は、rmが実行されず、エラーも出ない。

    xargs で標準入力が空だったら何もしない - Qiita
    halohalolin
    halohalolin 2017/02/23
    シェルスクリプトにおいてxargs部分が空なので、「mv: ファイルオペランドがありません」等が出る場合、xargsにおいて--no-run-if-emptyオプションを利用する
  • コマンド:awk: UNIX/Linuxの部屋

    とすることで、ファイルサイズとファイル名の一覧が得られる。この例は、入力を空白で区切り、5番目と9番目の列を出力している。空白以外を区切りとしたければ、-F オプションを使えばよい。例えば `.' を区切り (フィールドセパレータという) としたければ

    コマンド:awk: UNIX/Linuxの部屋
    halohalolin
    halohalolin 2014/11/12
    検索や出力結果について|パイプを使ってawkより整形し出力する例
  • シェルスクリプト/文法/配列(連想配列) - yanor.net/wiki

    配列(連想配列) 初期化 ARR[0]=1 ARR[1]=2 ARR[2]=3 または ARR=(1 2 3) コマンドの結果を配列に格納する files=($(ls /tmp/)) 1つの要素を参照 echo ${ARR[0]} # => 1 echo ${ARR[1]} # => 2 echo ${ARR[2]} # => 3 全要素を参照 echo ${ARR[@]} # => 1 2 3 for a in ${ARR[@]}; do echo $a # => 1(2,3,...) done 配列の大きさ size=${#ARR[@]} # n = 3 ループの中で初期化 for i in 1 2 3; do n=${#ARR[@]} ARR[$n]=$i done echo ${ARR[@]} # => 1 2 3 配列に要素を追加(push) ARR1=(1 2 3) ARR1=

    halohalolin
    halohalolin 2014/11/12
    bash4.*以降なら、declare -A 変数 が使える、前のバージョンだと自分で変数ルールを作った擬似的な方法でハッシュを実装する必要がある。動的生成なら eval `echo ${LEFT}`=${RIGHT} も使う(事前に$LEFTと$RIGHTへそれぞれ値を用意)
  • bashで変数の値を変数名にする方法

    bashで変数の値を変数名にする方法を紹介します。 1.bashの間接参照を利用する bashでは「!」を使って間接参照することで、変数の値を変数名として利用することができます。 #!/bin/sh foo=hoge bar=foo echo ${!bar} これを実行すれば hoge と出力されます。 ただしFreeBSDやSolarisではこのテクニックは使えないようです。 よって、プログラムを他のOSに移植する可能性がある場合は次項のテクニックを使った方がよいでしょう。 2.evalを使った間接参照を利用する evalは変数を評価した後、引数の文字列をコマンドとして実行する機能があります。 evalを利用した間接参照で、変数の値を変数名として利用することができます。 #!/bin/sh foo=hoge bar=foo eval echo \"\$$bar\" これを実行すれば ho

    bashで変数の値を変数名にする方法
    halohalolin
    halohalolin 2014/11/12
    centosシェルスクリプトの場合、eval `echo ${LEFT}`=${RIGHT}
  • 【 複数の変数を連結する 】

    複数の変数を連結したい場合は,変数名を続けて記述する。たとえば,str1とstr2という変数の内容をつないでresult_strに代入したい場合は, $ srt1="Nikkei " $ str2="Linux" $ result_str=$str1$str2 ← 変数を繋げる $ echo $result_str Nikkei Linux

    【 複数の変数を連結する 】
    halohalolin
    halohalolin 2014/11/12
    シェルスクリプトで文字列の連結はそのまま次の変数などを書く、間に「+」とか「&」とか「.」等は書かない
  • 逆引きシェルスクリプト/if文の条件式でand, or, notを使う方法 - Linuxと過ごす

    2023-04-25 逆引きUNIXコマンド 逆引きUNIXコマンド/ターミナルで動作するビジュアルなストレージ使用容量確認コマンド 2022-12-12 Ubuntu/GUI操作のWakeOnLAN・gWakeOnLan Ubuntu 2022-12-05 Ubuntu/Ubuntu22.04でデスクトップのアイコンのサイズを変更する手順 2022-08-25 Xubuntu/画面が勝手にオフされる場合の対処方法 2022-08-11 Xubuntu 2022-07-26 Linux環境設定/Windowsネットワークの名前解決と共有フォルダアクセス方法 2022-07-25 Xubuntu/Thunarでssh(sftp)接続しファイルブラウズする手順 2022-07-20 ソフトウェア/デスクトップ/Plankの設定画面を表示する ソフトウェア/デスクトップ ソフトウェア 2022-

    halohalolin
    halohalolin 2014/11/12
    シェルスクリプトにおけるif文でNotを使いたいなら[ ! 条件式 ]
  • シェルスクリプトで空文字列かどうか調べる。 - masa.edw the ハバネロブリーダー

    シェルスクリプト(sh)で、ある変数が空文字列かどうかを調べるには、testコマンドの -n (Nonzero length) または -z (Zero length) を使う……と書いてあるんだけど、コツがいる。 if [ -n $HOGE ]; then echo "nonzero だよ。" fi ↑これはダメ if [ -n "$HOGE" ]; then echo "nonzero だよ。" fi これならOK。 要は、変数が文字列埋め込みされてないと上手く動かない。何故か?はよくわからない。(シェルに於ける変数の概念はどういうものなのか?) 真理表にまとめると、こんな感じ。 -n -z $UNDEFINED T T $ZEROLEN T T $NONZEROLEN T F "$UNDEFINED" F T "$ZEROLEN" F T "$NONZEROLEN" T F 検証用ス

    シェルスクリプトで空文字列かどうか調べる。 - masa.edw the ハバネロブリーダー
    halohalolin
    halohalolin 2014/11/12
    if [ -n "$HOGE" ]; thenで、$HOGEが存在するか調べる(Nonzero length)、空かどうかなら -z (Zero length)
  • シェルスクリプトでファイル存在確認 - fantasista_ikの日記

    bashの場合 「-e Liunx.txt」・・・Liunx.txtが存在しているか。 「-f Liunx.txt」・・・Liunx.txtが存在し、通常のファイルであるか。 「-r Liunx.txt」・・・Liunx.txtが存在し、読み取り可能であるか。 「-s Liunx.txt」・・・Liunx.txtのファイルサイズが0でなければ真。 - if [ ! -e Liunx.txt ]; then echo "Liunx.txtファイルがありません。" fi -

    シェルスクリプトでファイル存在確認 - fantasista_ikの日記
    halohalolin
    halohalolin 2014/11/12
    Linux.txtの存在を確認するなら、if [ ! -e Liunx.txt ]; then。ifと[の間等は必ず空白を空けること
  • 逆引きUNIXコマンド/複数パターン指定でgrepが遅い場合の対応 の編集 - Linuxと過ごす

    Site admin: IT SUPPORT SAKURA PukiWiki 1.5.2 © 2001-2019 PukiWiki Development Team. Powered by PHP 7.4.33. HTML convert time: 0.009 sec.

    halohalolin
    halohalolin 2014/11/12
    正規表現を使わない検索ならfgrepを使うことで微妙に早いこともある
  • 【 stat 】 ファイルの詳細な情報を表示

    ファイルの詳細な情報を表示する $ stat test.txt File: `test.txt' Size: 3029 Blocks: 16 IO Block: 4096 通常ファイル Device: fd00h/64768d Inode: 17662234 Links: 1 Access: (0744/-rwxr--r--) Uid: ( 500/ yoneda) Gid: ( 500/ yoneda) Access: 2007-11-07 18:42:22.000000000 +0900 Modify: 2007-08-26 17:26:24.000000000 +0900 Change: 2007-08-26 17:26:24.000000000 +0900

    【 stat 】 ファイルの詳細な情報を表示
    halohalolin
    halohalolin 2014/11/12
    ファイルの更新日時を取得するなら stat ファイル名 | sed -ne 's/^Modify: \([0-9]*-[0-9].-[0-9]. [0-9].:[0-9].:[0-9].\).*$/\1/p'
  • echoコマンドで改行やタブを扱うには@Linux bash : Mazn.net

    2009年01月06日21:36 echoコマンドで改行やタブを扱うには@Linux bash カテゴリdebianecho UNIX系OSでも最も有名な部類に入るコマンドechoは、引数の文字列や変数の中身を表示することができます。つまりCでいうprintf、JAVAでいうSystem.out.printlnみたいなものですね。 # echo "hoge" hoge 改行文字\nがあってもそのまま出力します。( 環境によっては、説明文は "\"  、コマンド例には"¥"と表示されますが、同じ文字です) # echo "hoge\nhoge" hoge\nhoge -eオプションによって\nは改行として扱われます。(これはbashの場合でDebianのdashの場合は最下位の追記を参照) # echo -e "hoge\nhoge" hoge hoge ただし、ここで一つ注意。ダブルクォー

    echoコマンドで改行やタブを扱うには@Linux bash : Mazn.net
    halohalolin
    halohalolin 2014/11/12
    シェルスクリプトのecho文は、うっかり-eオプションを付け忘れると"\n"を無視する
  • シェルスクリプトを書くときはset -euしておく - Qiita

    エラーがあったらシェルスクリプトをそこで打ち止めにしてくれる(exit 0以外が返るものがあったら止まるようになる)。「あっあれここでうまくいってないからデータ準備できてないのにあれあれっもうやめて!」ってなるのを防げる。 set -u 未定義の変数を使おうとしたときに打ち止めにしてくれる。Perlでいうuse strict 'vars';的なもの。 って気軽な気持ちで書いてしまって、「ん、やたら時間かかると思ったらスペルミスうわなにをするやめ」ってなるのを防げる。 一部だけ例外にしたい はてなブックマークのコメントより -e は command1 || command2 みたいなことが出来なくなるの使うことないな。-uは付けといて良いが。 確かにおっしゃるとおりですね。コマンドの失敗を考慮して書いている部分については(もしくはやたらexit 0以外するコマンドを呼ばないといけないときなど

    シェルスクリプトを書くときはset -euしておく - Qiita
    halohalolin
    halohalolin 2014/11/12
    冒頭に set -eu を付けることで思わぬ誤動作(エラーや未定義変数の仕様)による実行を防ぐ
  • シェルスクリプトでメール送信、「さようならnkf」編 - Qiita

    プログラムからメールを送信したいなーと思ったことありますよね。そんな時、どうやってますか? 何らかのプログラミング言語でメール送信用のライブラリーの使い方調べて組む? いやいや、そんなことしなくてもシェルスクリプト(と基的なコマンド)で送れますって。 必要なのはたったこれだけ メールを送信できるホスト (これ最重要) Bourneシェル(素のshでも、bashでもdashでもkshでもzshでも) sendmailコマンド(大抵は /usr/sbin あたりに入ってます) これだけあればOK。つまりPOSIX(UNIXで必須のもの)以外で必要なものはsendmailコマンドを備えた主要MTA(sendmail、Postfix、qmail、…)だけです。(nkfすら不要) 技術解説 ここからしばらくはどうやって送るかの技術解説ですが、解説すっ飛ばして出来上がったシェルスクリプトの使い方を教

    シェルスクリプトでメール送信、「さようならnkf」編 - Qiita
    halohalolin
    halohalolin 2014/11/12
    sendmailコマンドの解説
  • シェルスクリプト:N日前の日付の取得 - OKWAVE

    #/bin/sh DAY=$1 TIME=`date --date '"$DAY" day ago' +%Y%m%d` echo $TIME 上を実行しても$DAYが展開されず、 date: invalid date '"$DAY" day ago' と、dateコマンドがエラーを返してきます。 $DAYを展開させるためにはどうクォートすればいいのでしょうか?

    シェルスクリプト:N日前の日付の取得 - OKWAVE
    halohalolin
    halohalolin 2014/11/12
    シェルスクリプトで古い削除対象のログのファイル名を指定するなら DELETE_LOG_FILE="./log-"`date --date "$DELETE_LOG_DATE"' days ago' +%Y-%m-%d`".log"
  • 1