LoginSignup
11
13

More than 5 years have passed since last update.

現場で使ったLinuxコマンド、Shellテクニックまとめ

Posted at

プログラマー歴は1年未満ですが、業務でLinuxを触ったり、
ShellScriptを実装することが多かったので、
そこで使ったコマンドやテクニック等をメモ代わりにまとめておきます。

■コマンド

・nkf -w test.txt
text.txtをエンコードをUTF-8で開くというコマンドになります。

test.txtがShift_jisで書かれていた場合、普通にcat test.txtをすると、
Linux上では通常文字化けしてしまいます。
そこで、nkfコマンドです。
オプションでエンコードを指定して開くことができます。
-wの場合はUTF-8です。

—overwriteを付けて、実行するとUTF-8で上書きされます。

・locate text.txt
text.txtをLinux上の全てのディレクトリの中から探してくれます。
基本的にfind / | grep text.txtよりも早いです。

詳細は分かっていませんが、
Linux上にデータベースを作り、そこから探すため早いらしいです。

テーブルにインデックスを貼ることで、検索スピードがあがるみたいなものだと考えています。

ただ、DBに登録されていないものは、検索することができませんし、
どのような基準や日程で登録されているのかが分かっていません。

現場のLinuxサーバーでは、割と早く登録されていたので、不自由なく使えていたのですが、
自宅のMacでは、検索されないファイルが多くあまり使えない印象を持っています。

■パイプ系

コマンド | grep
コマンド | xargs

左記のコマンドを標準入力で受け取り、何らかの処理を加えるやつ達です。
割と定番かもしれまれないですね。

ワンライナーの間で、良く使われるコマンドですね。

ex1)
find /home/hoge -mtime +3 ( -name "*.tsv" ) | xargs rm -f
上記はhogeディレクトリ配下で尚且つ、ファイル作成日時が3日前のtsvファイルを探しだし、
それを削除するという処理になります。

ex2)
history | grep find
上記は、historyコマンドで過去に使ったコマンドの一覧結果から「find」が書かれたもの標準出力で表示します。

■DB接続系(私が実装していたのはOracleなので、Oracleを例に出します)
sqlplus -s スキーマ名/パスワード@接続先のIPアドレス

ex1)
sqlplus -s スキーマ名/パスワード@接続先のIPアドレス << EOS
UPDATE
hoge
SET
nantoka_flg = 1
WHERE
id = $1
;
EOS

上記は、hogeテーブルのnantoka_flgを更新を引数で受けっとった値を条件に、
hogeテーブルを更新しています。
UPDATE文を読みこませるために、ヒアドキュメント(<<)を利用しています。

以上、よく使用していたのを思い出しながら、書いてみました。
ざっくりとしていますので、
次回は、一つのことを詳しく書くという感じで書いてみます。

という訳で、解釈や結果など恐らく間違いなどあると思います。
有識者の方には、指摘して頂けますと幸いです。

11
13
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
13