サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
都知事選
hydrocul.github.io
cp コマンド 2016/04/27 ファイルをコピーするコマンド。別のホストにファイルをコピーするにはrsyncを使う。コピーではなく移動させるにはmvを使う。 install というよく似たコマンドもある。installコマンドはコピーしながら、コピー先のファイルのパーミッションやオーナーを設定できる。 root権限でソフトウェアをインストールするときによく使われるらしい。 基本的な使い方 2016/03/18 その1: ファイルを別ファイル名にコピー $ cp src.txt new.txt 別のディレクトリにも $ cp src.txt foo/new.txt その2: ファイル名そのままに別のディレクトリにコピー foo といディレクトリがすでに存在するとして、その中にコピー $ cp src.txt foo ディレクトリが存在しない場合はその1のパターンになって、foo という
Go言語 (golang) 2015/02/16 stringsパッケージのRepeat関数を使う。 package main import "fmt" import "strings" func main() { str := "abc" fmt.Println(strings.Repeat(str, 3)); // => abcabcabc } Scala 2016/11/12 Signature: def StringLike#*(n: Int): String 例 println("abc" * 3); // => abcabcabc Groovy 2014/10/24 例 println "abc" * 3 // => abcabcabc PHP 2013/11/26 例 echo str_repeat("abc", 3) // => abcabcabc str_repeat 関
ファイルの中身を1行ずつテキスト処理するには Go言語 Java Scala PHP Python Ruby Perl sh Go言語 (golang) 2015/06/18 Scanner を使う例 import "bufio" import "fmt" import "os" func main() { var fp *os.File var err error if len(os.Args) < 2 { fp = os.Stdin } else { fp, err = os.Open(os.Args[1]) if err != nil { panic(err) } defer fp.Close() } scanner := bufio.NewScanner(fp) for scanner.Scan() { line := scanner.Text() // lineはstring型で
diff コマンド 2016/07/23 2つのテキストファイルの差分を抽出するコマンド。 2つのファイルの内容が一致しているかどうかをチェックする目的でも使える。 編集前のファイルをバックアップしておけば、編集後のファイルとバックアップとをdiffすることで、編集した箇所を確認できる。まあ、そんなことしなくても git や svn などのバージョン管理を使っていれば、差分は確認できるが。 diffコマンドをブラウザで使えるウェブアプリもあるようだ。 テキスト比較ツール difff《デュフフ》 http://difff.jp/ 基本的な使い方 2016/07/19 2つのファイル名を引数で渡すと、差分が標準出力される。 $ diff -u foo.txt bar.txt 片方のファイル名として - と書くと、標準入力が使われる。 $ foocmd | diff -u - bar.txt
grep コマンド 2017/01/04 ファイルや標準入力から正規表現でマッチする行を探し出すコマンド。 ログファイルの中から特定のログを探し出したり、ソースコードのコード検索したり、いろいろな目的で使う。 ※ grepよりも高速に検索できる ack-grep などもある。 ※ Perlには同じ名前のgrepという関数がある。 ※ git管理下のディレクトリの場合には git grep も便利。 基本的な使い方 2016/01/25 grep [オプション...] パターン [ファイル...] パターンを最後に書きたい場合は以下のように -e で明示的にパターンを指定する。 grep [オプション...] [ファイル...] -e パターン ファイルを指定しないと標準入力をパターンマッチングする。 私がソースコード一式のディレクトリの中から特定の単語を探すときには、再帰的に検索、かつ行番
ls コマンド 2016/07/22 ディレクトリの中のファイル一覧を出力するコマンド。 Windowsでいうところのdirコマンド。 ディレクトリを再帰的にたどって表示したい場合はfindコマンドを使う。 JavaやRubyなどの中でファイル一覧を取得する方法は ディレクトリの中のファイル一覧を取得する方法 参照。 CentOSだと以下のようにalias設定されているかも。 alias ll='ls -l --color=auto' 2>/dev/null alias l.='ls -d .* --color=auto' 2>/dev/null alias ls='ls --color=auto' 2>/dev/null インストール 2016/03/17 Coreutilsというパッケージに入っているので、CentOSにもUbuntuにも始めから入っている。 オプション 2016/10
date コマンド 2021/01/24 現在の時刻を取得したり、設定したりするコマンド。OSが刻んでいる日時がずれている場合は、root権限でこのコマンドを使って正しい日時を設定する。 時刻の表示フォーマットを指定することもできる。 「30日後は何日か?」などの簡単な日時の計算もできる。 現在日時ではなく、処理にかかる時間を測定するにはtimeコマンドを使う。 基本的な使い方 2021/01/22 # 現在の日時を表示 $ date # 現在の日時をUTCで表示 $ date -u # フォーマットは + で始まる書式で指定 $ date "+%Y%m%d-%H%M%S" # 24時間後の日時を表示 $ date -d tomorrow # -d の代わりに --date でも同じ $ date --date tomorrow # 30日後の日付を表示 date "+%Y/%m/%d"
jq コマンド 2021/01/18 JSON形式のデータをカラーで見やすく表示したり、データを抽出したりするコマンド。 例 $ echo '{"name": "taro", "age": 30, "sex": "male"}' | jq . { "sex": "male", "age": 30, "name": "taro" } インストール 2021/01/18 Ubuntuでは sudo apt install -y jq (Ubuntu 20.04 で確認) CentOSでは sudo yum install -y jq (CentOS 8 で確認) 基本的な使い方 2014/10/17 JSON全体を表示。 $ echo '{"name": "taro", "age": 30, "foo": ["abc", "def"], "bar": {"あ":10, "い":20}}' |
watch コマンド 2016/04/15 コマンドを一定の時間ごとに実行して結果を端末にスクロールさせずに固定で表示してくれるコマンド。 例 ## `ls -al` を1秒ごとに実行 $ watch -n 1 ls -al -n1 のようにつなげてもよい。-n0.1 で0.1秒ごとに実行になる。 0.1秒よりも細かい精度では指定できない気がする。 オプション 2016/04/15 -c 色表示に対応してくれる。 -d 変化した部分を強調して表示される。 -e コマンドがエラー終了したらそれ以降はコマンドを実行しない -g コマンドの出力に変化があったらwatchを終了する -n <秒数> 実行間隔を指定する。nと数字の間はスペースがなくてもよい。 -t 普通は1行目にwatchの情報として実行間隔や実行しているコマンドを表示しているが、 このオプションを付けると、非表示になる。 -c,
sqlite3 コマンド 2014/02/02 SQLiteのデータベースファイルを操作するコマンド。 以下のコマンドで、SQLを実行できる。 sqlite3 ファイル名 SQLステートメント SQLだけでなく、インタプリタで実行できるいろいろなコマンドも指定できる。 例 # ダンプする sqlite3 ファイル名 .dump インタプリタ 2013/09/05 SQLを省略すると、mysqlコマンドなどと同じくSQLiteのSQLインタプリタが起動する。 sqlite3 ファイル名 すると、 sqlite> というプロンプトが表示されて、以下のようなコマンドが実行可能になる。 テーブル一覧を確認 sqlite> .tables SQLを実行 sqlite> select * from テーブル名; テーブル定義を確認 sqlite> .schema テーブル名 ダンプ sqlite> .
hydroculのメモ hydroculのメモ 目次 コマンドの使い方(Linux) プログラミング言語の比較 シェルスクリプト ブログ NumPy / pandas 数学関係のノート 未分類 このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。 スポンサーリンク コマンドの使い方(Linux) プログラミング言語の比較 シェルスクリプト ブログ NumPy / pandas 数学関係のノート 未分類
末尾呼び出し最適化 (Tail Call Optimization) C言語, C++ 2013/10/08 末尾の関数コールの最適化はしてくれない。 Go言語 (golang) 2015/02/24 末尾の関数コールの最適化はしてくれない。 Goで再帰使うと遅くなりますがそれが何だ | YAMAGUCHI::weblog 2015/02/24 http://ymotongpoo.hatenablog.com/entry/2015/02/23/165341 Java 2013/10/08 末尾の関数コールの最適化はしてくれない。 Scala 2014/06/16 末尾再帰のループへの変換などへの最適化ができる場合は、コンパイラが自動でそのようにしてくれる。 末尾再帰以外の末尾関数呼び出しの最適化してくれない。JVMの仕様上、難しい。 @scala.annotation.tailrec アノ
文字列の配列(リスト)を特定の文字列で連結するには (implode / join / mkString) 2015/05/18 文字列を要素とする配列(リスト)を特定の文字または文字列で連結して、全体で1つの文字列を生成する方法。 Go言語 import "strings" strings.Join(sl, ",") Scala lst.mkString(",") PHP implode(",", $arr) Python ",".join(lst) Ruby arr.join(",") Perl join(",", @arr) JavaScript arr.join(",") 関連 逆に文字列を特定の文字で分割するには Go言語 (golang) 2015/02/22 stringsパッケージのJoin関数を使う。 package main import "fmt" import "s
ps コマンド 2017/02/19 動いているプロセスの一覧を見るコマンド。 私がよく使うオプションは aux。 例 $ ps aux メモリ使用量を表すVSZやRSSの列の単位は、キロバイト。1000バイトなのか1024バイトなのか知らんが。 あとは、特定のPIDを持つプロセスがなんのコマンドなのかを調べるために、PIDだけを指定する。 $ ps 13051 CPU占有率は、いまこの瞬間のCPU占有率ではなく、プロセスごとにそのプロセスが起動してからの平均のCPU使用率である。リアルタイムな状況を見るにはtopコマンドのほうがよい。 Java(JVM)のプロセスを見るにはjpsコマンドも使える。 HOWTO プロセスの親子関係をツリーで表示するには 2013/10/08 $ ps auxf f がツリーで表示させるオプション。 -> pstree 特定の名前のプロセスをすべてkillす
ワンライナー 2015/03/19 ちょっと込み入ったことをしたいときに、コマンドラインに直接1行だけのプログラムを書いて、その場で実行しちゃうやつ。 シェルスクリプトでシンボリックリンクからリンク先を取得するには -> シンボリックリンクのリンク先を取得する 1秒ごとに処理を永久に繰り返すには 2013/04/24 while : ; do date; sleep 1; done URLエンコード / URLデコード 2015/03/19 エンコードの例 # URLエンコード echo あ | ruby -r cgi -ne 'puts CGI.escape $_.chomp' | tr "\n" " " | sed 's/ /%0D%0A/g' 最後の tr "\n" " " | sed s/ /%0D%0A/g は改行を %0D%0A に変換するためのもの。 または # URLエンコ
デバッグのためにオブジェクトの中身を表示させるには (dump) Go言語 (golang) 2015/07/23 fmt.Printf などの書式付き出力で %#v という書式を使うと、ダンプされる。 import fmt fmt.Printf("%#v\n", obj) PHP 2016/03/31 var_dump 関数 | PHP Manual http://php.net/manual/ja/function.var-dump.php var_export 関数 | PHP Manual http://php.net/manual/ja/function.var-export.php print_r 関数 | PHP Manual http://php.net/manual/ja/function.print-r.php var_export は循環参照を扱うことができない。循環
文字列の前後の空白を削除するには (strip / trim) 2015/06/23 文字列の前や後ろにある空白を削除する方法の、プログラミング言語別のメモ。言語によってメソッド名/関数名が trim だったり strip だったり。 Go言語 strings.TrimSpace(str) Java str.trim() Scala str.trim PHP trim($str) Smarty(PHP) {$str|trim} Python str.strip() Ruby str.strip Perl # $str自体を書き換える $str =~ s/\A\s*(.*?)\s*\z/$1/; Go言語 (golang) 2015/02/16 stringsパッケージのTrimSpace関数を使う。 package main import "fmt" import "strings" fu
hydroculのメモ > プログラミング言語の比較 > 集合(セット) > 集合(セット)から配列(リスト)に変換するには (toArray / toIndexedSeq / toSeq / toIterable / toList / list) 集合(セット)から配列(リスト)に変換するには (toArray / toIndexedSeq / toSeq / toIterable / toList / list) 2015/03/20 集合から配列に変換する方法。 Java 2016/08/09 java.util.Set から配列に変換する例 String[] arr = new String[st.size()]; st.toArray(arr); Signature: E[] Set<E>.toArray(E[] arr) java.util.Set から java.util.L
zip / unzip コマンド 2013/10/14 zip形式の圧縮ファイルを扱うコマンド。 lzh形式の圧縮ファイルの場合はlhaコマンドを使う。 tar形式のファイルの場合はtarコマンドを使う。 インストール 2016/02/13 Ubuntuではzip, unzipというパッケージに入っている。(Ubuntu 13.10, 15.10 で確認) $ sudo apt-get install zip unzip パスワード付きのZIPの作成・解凍 2011/02/27 パスワード付きのZIPの作成(圧縮)または解凍をコマンドで行うには -P オプションを使う。 $ zip -P «パスワード» «ZIPファイル名» «圧縮対象ファイル» $ unzip -P «パスワード» «ZIPファイル名» ただし、コマンドラインにパスワードを与えると、履歴やpsコマンドでわかってしまうので
base64 コマンド 2016/03/02 標準入力のデータをBASE64でエンコードまたはデコードして標準出力するコマンド。デフォルトではエンコードする。オプション -d を付けるとデコードする。 $ base64 foo.dat # エンコード $ base64 -d foo.txt # デコード ファイル名を渡さないか - をパラメータにすると標準入力を処理する。 エンコード済みのデータの改行位置がおかしかったりしてうまくデコードできない場合は以下のようにtrコマンドで削除をするとよい。 $ cat src.txt | tr -d '\n' | base64 -d | dst.txt opensslコマンドでもBASE64をエンコード/デコードできる。 PHP、Python、PerlなどでBASE64を取り扱うには BASE64でエンコード・デコードするにはも参照。 BASE64の
関数/メソッドから複数の値を返すには(多値返却) 2015/02/03 関数は普通は返り値を1つだけ返すか、1つも返さない(C言語のvoidなど)ものが多い中、プログラミング言語によっては複数の値を関数から返すことができる。 返すことができる言語でも、配列で返すというのは個人的にはとても気持ち悪い。 Scalaのタプルで返す仕組みは扱いやすい、と感じるが、静的型付けか動的型付けかの違いか。 C言語 / C++ 2015/01/13 簡単に複数の戻り値を返す方法はなさそう。 値を受け取る専用の変数をポインタで引数として渡して、関数からは結果をポインタの指す先に書き込むことができる。このポインタを複数受け渡しすれば結果的に複数の結果を受け渡すことができる。 Go言語 2016/01/09 普通に関数から多値を返却できる。 package main import "fmt" func main(
Java 配列 2015/01/12 長さが0かどうかで判定する。 if (arr.length == 0) { System.out.println("empty"); } else { System.out.println("not empty"); } java.util.List 2015/04/25 Signature: boolean List<E>#isEmpty() 例 if (lst.isEmpty()) { System.out.println("empty"); } else { System.out.println("not empty"); } Scala 2016/12/04 ListクラスなどにisEmptyとその逆のnonEmptyメソッドが存在する。 Signature: def Seq[A]#isEmpty: Boolean http://www.sca
wget コマンド 2017/02/20 HTTPアクセスをしてコンテンツをファイルに保存するコマンド。 curlでも同じようなことができるが、 curlと違ってリンクをたどりながら再帰的にたくさんのファイルをダウンロードすることができる。 ローカルに保存するときのファイル名は、1ファイルだけのダウンロードの場合は、 URLからドメイン名やディレクトリ名を削ったものになる。再帰的にダウンロードする場合はドメイン名のディレクトリが作成される。 GNU Wget Manual http://www.gnu.org/software/wget/manual/wget.html GNU Wget 1.9 Manual 日本語 (1.9は結構古いバージョン) http://www.bookshelf.jp/texi/wget/wget-ja.html ※wgetの最新バージョンは2015年3月リリー
hydroculのメモ > コマンドの使い方(Linux) コマンドの使い方(Linux) 目次 awk コマンド base64 コマンド cat コマンド cp コマンド crontab コマンド curl コマンド cut コマンド date コマンド diff コマンド du コマンド echo コマンド find コマンド git コマンド grep コマンド head コマンド incrontab / incron コマンド jhead コマンド join コマンド jq コマンド less コマンド lftp コマンド lha コマンド ls コマンド lscpu コマンド md5sum コマンド mecab コマンド mkdir コマンド mktemp コマンド mosh コマンド mv コマンド netstat コマンド nkf コマンド nl コマンド od コマンド o
文字列に変数・式を埋め込むには 2015/05/01 文字列リテラルの中で変数展開をする方法。これができない言語では、sprintfのようなものを使うしかないかもしれない。 PHP "http://$host/$path" "${str}_foo" "Hello, {$arr[1]}!" Ruby "http://#{host}/#{path}" "Hello, #{arr[1]}!" Perl "http://$host/$path" "Hello, $arr[1]!" PHP 2015/08/13 "" で囲む文字列リテラルやヒアドキュメントでは中に変数を埋め込むことができる。 例 "http://{$host}/{$path}" 配列の要素への参照もそのまま埋め込むことができる。 $arr = array(10, 20, 30); $map = array('a' => 100, '
less コマンド 2014/01/26 テキストファイルの中身をターミナル上でスクロールしながら閲覧できるコマンド。表示中はスペースで下にスクロール、b で上にスクロールできる。 オプション 2017/01/28 -F 行数が短くて位置画面に収まる場合は less がすぐに終了する。 --help ヘルプ表示 -i 検索モードでキーワードをすべて小文字で入力した場合に、大文字小文字の区別をしない。 検索キーワードに大文字が混ざっていた場合にはこのオプションをつけていても大文字小文字を区別する。 -N 行番号を表示する。(cat でこれに相当するのは -n) -r エスケープシーケンスなどのバイナリをエスケープシーケンスとして解釈せずに、 そのまま出力される。 -R 色のエスケープシーケンスをそのとおりに解釈して 色付きで表示する。 色以外のエスケープシーケンスは解釈せず、 そのまま出力さ
hydroculのメモ > 数学関係のノート > プログラマのための数学勉強会のノート プログラマのための数学勉強会のノート このページはプログラマのための数学勉強会を聴講したときの個人的なノートである。 目次 第1回プログラマのための数学勉強会のノート (イントロダクション) 第2回プログラマのための数学勉強会のノート (計算機での浮動小数点数 / 極限・微分) 第3回プログラマのための数学勉強会のノート (連続性・微分可能性・極値・ロルの定理 / テイラーの定理 / 関数の変化と微分係数 / 差分法 / 多変数関数の微分法) 第4回プログラマのための数学勉強会のノート (多変数関数の微分法 / 方程式の数値解法) 第7回プログラマのための数学勉強会のノート (行列とベクトルの概要 / 行列とベクトルの応用 / 連立一次方程式) 第8回プログラマのための数学勉強会のノート (行列式・逆行
awk コマンド 2015/06/22 1つ以上のスペースで区切られた複数列のテキストデータをごにょごにょ処理するときに便利なツール。四則演算だとかもできる。 例えば以下のようなテキストファイルがあった場合、 1 2 3 4 以下のコマンドを実行すると awk '{print $1 * $2;}' foo.txt # または cat foo.txt | awk '{print $1 * $2;}' 以下のように出力される。 2 12 区切り文字はデフォルトで1つ以上のスペースやタブが使えるみたい。スペースやタブが間にいくつ連続していても1つの区切りとみなされる。 ただ、awkの文法をなかなか覚えられず、なにかやりたいときにはPerlのワンライナーでも同じことができるので、自分はPerlを使ってしまいがち。 HOWTO コンマ区切り(CSV)で処理するには 2014/08/10 -Fオプショ
hydroculのメモ > プログラミング言語の比較 プログラミング言語の比較 目次 制御構文 関数・メソッド 型とクラス 例外処理 論理型 (boolean) 数値型 文字列 配列(リスト) 集合(セット) 連想配列(マップ/ハッシュ/ディクショナリ) タプル 日付と時刻 変数/定数 入出力・ファイル操作 JSON プロセス管理 その他 このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。 スポンサーリンク プログラミング言語の比較 制御構文 関数・メソッド 型とクラス 例外処理 論理型 (boolean) 数値型 文字列 配列(リスト) 集合(セット) 連想配列(マップ/ハッシュ/ディクショナリ) タプル 日付と時刻 変数/定数 入出力・ファイル操作 JSON プロセス管理 その他
次のページ
このページを最初にブックマークしてみませんか?
『https://hydrocul.github.io/』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く