ヌルコマンドでシェルスクリプトの変数が空の場合に特定の値を代入させる
シェルスクリプトを書いていると、特定の変数の値が空(NULL)の時はデフォルト値を代入する処理を行う必要が出てくる事がある。 そんなときは、ヌルコマンドで変数が空の時はデフォルト値を代入するように記述すると良いだろう。 変数の値が空の時にデフォルト値を代入する場合は、以下のように記述する。 : ${変数:=デフォルト値}...
View ArticleLinuxのzip/unzipコマンドで覚えておきたい使い方11個
Linuxでzipファイルを扱う際、欠かせないのがzip/unzipコマンド。 今回は、このコマンドについて覚えておきたい使い方について紹介しておく。 1.基本的な使い方 基本的には、zipファイルとして圧縮もしくは解凍する際は以下のようにコマンドを実行する。 zip 作成するZIPファイルPATH 圧縮対象PATH ... # 圧縮時 unzip 解凍するZIPファイルPATH # 解凍時...
View Articleシェルでグルーピングを利用してリダイレクトを一発で行う
リダイレクトで、複数のコマンドの実行結果を同じファイルに書き出したいとき、1コマンドに対し1リダイレクトの処理を書くと結構面倒くさい。 そんなときは、グルーピング({}で実行するコマンドを囲む)してリダイレクトを行うと良いだろう。 [root@test-centos7 ~]# { echo "aaaaaa"; > echo "bbbbb"; > echo "ccccc"; }...
View Articleシェルスクリプトで『getopts』を使ってオプションの処理を行わせる
仕事などでシェルスクリプトを作っていると、引数としてオプションを付与させるようなスクリプトを作りたくなる事がある。 そういったオプション関係の処理を簡単に行えるのが、今回紹介する『getopts』コマンドだ。仕事でスクリプトを組んでいれば、一度は利用するだろう。 このコマンドを利用することで、オプションを付与させるタイプのシェルスクリプトを簡単に作成することが可能になる。...
View Article年末に第20回シェル芸勉強会に参加してきました(復習)
年末の2015年12月26日、第20回シェル芸勉強会に参加してきました。 で、その際の備忘録として、どんな感じで問題を解いていったか残しておくことにする。 なお、問題・解答などなどはこちらにあるので、お題用のファイルのダウンロード(github)含めまず参照。 Q1(各ファイルごとに最大の値を抽出)...
View ArticleLinuxで複数ファイルをリネームして一括コピーする
仕事で、大量にあるファイルの一部分のみをリネームしてコピーを行いたい事があったので、その備忘。 イメージとしては、以下のようなファイルがあって、それの一部、例えば以下の例だとhostname_aaa_*をhostname_bbb_*へリネームコピーしたい、といった具合。 [root@localhost work]# ls -la /work 合計 32 drwxr-xr-x. 2 root root...
View ArticleLinuxの標準出力の内容を複数のプロセスに渡す
Linuxで、標準出力の内容をそのまま複数のプロセスに渡したい時がある。 そんなときは、teeコマンドを用いると良いだろう。 コマンド | tee >(コマンド1) >(コマンド2) .... | コマンドN もしくは コマンド | tee >(コマンド1) >(コマンド2) ... 1 > /dev/null...
View ArticleLinuxのpingコマンドの出力結果にタイムスタンプを付与する
Linuxでpingコマンドを打ち続けていると、どの時間帯では疎通が取れていたのに、この時間帯からは疎通が取れなくなった、というような情報が欲しい事がある。 だが、残念ながら現時点ではpingのオプションにタイムスタンプを追記するような機能は無い。。。というと嘘になって、「-D」というオプションがあるにはあるんだけど。。。UNIX時刻で表示するようなのだ。 [root@localhost ~]#...
View ArticleUNIX/Linuxでコマンドのexitコードを反転させる
仕事で、正常終了時にコマンドのexitコードを0に、異常終了時には1にしたいとの話があり、やり方ってなんか無いのかな?と調べたので、その備忘。 やり方は簡単で、単に対象のコマンド実行時に頭に「!」をつけるだけだ。 ! exitコードを反転させたいコマンド 実際に、lsコマンドで試してみよう。 [root@localhost ~]# # 存在するファイルをlsで指定(exitコードは0)...
View ArticleLinux/UNIXのコンソール上で10進数⇔16進数変換を行う
ふと、コンソール上で10進数⇔16進数の変換を行う方法ってどんなものがあるのか、と思ったので、少し調べてみることにした。 とりあえず、以下の2つの手法が簡単に変換でき、おすすめだ。 1.echo+bcで対応する echo+bcの組み合わせで、うまいこと変換させることが出来る。 ●10進数→16進数 echo "obase=16; 10進数"|bc ●16進数→10進数 echo...
View Articleawkでデリミタ(区切り文字)を複数指定する
awkでデリミタ(区切り文字)を複数指定する場合は、「[](カギカッコ)」で囲ってやる事で-Fで指定することができる。 例えば、以下の例だと「,」と「-」で列を区切るように指定している。 awk -F'[:-]' '{…}' [root@localhost ~]# cat /tmp/test.file aaaaa,111-11,super,66666661...
View ArticleLinux/UNIXでCUIからファイルの分割(+圧縮)保存を行う
諸事情があって、圧縮したアーカイブファイルを分割して補完しておく必要が出たので、その備忘。 といっても、そんな大した事やるわけではなく、昔からあるsplitコマンドでの手法。 Linux/UNIXの場合は、splitコマンドを使えばいい。 以下のようにコマンドを実行することで、ファイルを圧縮しながら分割保存させることが出来る。 tar czvf - /アーカイブ化するディレクトリ | split...
View Articlesedで指定した行の先頭・末尾に文字列を追記する
sedで、指定した行(特定の文字列から始まる行など)の先頭や末尾に文字列を追記するには、置換対象に正規表現で先頭(^)もしくは末尾($)を指定すればいい。 ●指定行の先頭に文字列を追加する場合 sed '/文字列/s/^/追加文字列/g' 対象ファイル # 文字列を検索して行を指定 sed '◯s/^/追加文字列/g' 対象ファイル # 行番号を直接指定 [root@test-node ~]#...
View ArticleLinux/UNIXで文字列から特定部分(右から・左から何個、〇〇~〇〇まで)を抜き出すコマンド
ちょっとしたスクリプトを作っていた際、文字列の抜き出しを多様する処理があったので忘れないように残しておく。 ●左から◯文字 cut -c [開始文字(個数)]-[終了文字(個数)] [root@test-node ~]# # 例:左から1文字目~4文字目 [root@test-node ~]# echo abcdefghijk | cut -c 1-4 abcd [root@test-node...
View Article覚えてると案外便利なBashのリダイレクト・パイプの使い方9個
なんとなしにBashのリダイレクトとパイプについて調べてたので、後から確認しやすいようにまとめてみることにする。 1.ファイルへのリダイレクト 基本的な使い方。コマンドの実行結果をファイルにリダイレクトする事で、上書きや追記をさせることが出来る。 これについては、UNIX系OSに慣れていない人でもよく知っている事だろう。...
View Articlewgetコマンドで覚えておきたい使い方16個
wgetコマンドといえば、webからファイルをダウンロードしたりする際によく利用するコマンドだ。 今回は、このwgetコマンドについて覚えておきたい使い方をまとめてみる事にする。 1.基本の使い方 基本的には、以下のようにオプション無しでコマンドを実行することで、Web上のファイルをダウンロードする。 ダウンロードしたファイルはカレントディレクトリに同じ名前で保存される。 wget...
View Articlecurlコマンドで覚えておきたい使い方12個
Webスクレイピングを行う際に重宝するcurlコマンド。 今回は、このコマンドで覚えておくと便利な使い方についてをまとめてみる。 1.基本的な使い方 基本的には、以下のようにコマンドを実行することでHTTPリクエストを実施し、その内容を標準出力に出してくれる。 curl http://対象のURL 2.ファイルに出力する...
View Articlewcコマンドで覚えておきたい使い方3個
wcコマンドといえば、Linux/UNIXで使える行数やバイト数を数えるのに使えるコマンドだ。 今回は、このwcコマンドで覚えておきたい使い方についてをまとめてみる。 1.基本の使い方 基本的には、以下のように用いる事でファイルの改行数、単語数、バイト数を表示する。 wc ファイルPATH [root@test-node work]# wc /tmp/test 50 120 1270...
View ArticleLinuxでバックグラウンドジョブをフロントに戻す
Linuxでバックグラウンド実行させているプロセスを、フォアグラウンドに戻したい時もあるだろう。 そんなときは、「fg」コマンドを用いる。 [root@BS-PUB-MONITOR-01 ~]# nohup ping 8.8.8.8 & [1] 14841 nohup: 入力を無視し、出力を `nohup.out' に追記します [root@BS-PUB-MONITOR-01 ~]#...
View Article『reptyr』コマンドでLinuxで現在動作中のプロセスを接続中のセッションに紐付ける
Linuxで、すでにバックグラウンドや他のターミナルで動作中のプロセスの管理を今接続しているセッションに紐付けたい時もあるだろう。 そんな時は、今回紹介する『reptyr』コマンドを用いる事で、現在のセッションでプロセスを動作させる事が出来るようになる。 1.インストール まずはインストール。 以下のコマンドでインストールを行う。 ●RHEL系の場合 yum install -y...
View Article