タグ

shellに関するene0kcalのブックマーク (13)

  • 「Bash」をカスタマイズして、Linuxをより便利に使いこなそう

    第7回の今回は、Bashの仕組みを解説し、履歴管理やプロンプトをカスタマイズしてCLI環境を向上する方法を解説します。 はじめに どのようなアプリにも、個人用の設定というものが存在します。例えば、Webブラウザはフォントやカラーテーマ、タブの細かい挙動などを個人の好みに応じてカスタマイズできます。Linuxで使われる様々なツールもこうした例に漏れず、非常に柔軟なカスタマイズや機能拡張が可能です。有名なテキストエディタであるVimEmacsなどがその代表格で、そのカスタマイズの柔軟さと奥の深さは、想像を絶するものがあります*1。 *1: Emacsは一見テキストエディタのように見えますが、その実体はEmacs Lisp言語の実行環境です。Emacs Lisp言語で実装可能なあらゆる機能をエディタ上で実行できるため、無限の拡張性を持っています。そしてLinuxを使いはじめたばかりのユーザーは

    「Bash」をカスタマイズして、Linuxをより便利に使いこなそう
  • いい加減シェルスクリプトで [ $? -eq 0 ] や [ $? -ne 0 ] なんて エラー処理を書くのはやめよう! - Qiita

    はじめに [ $? -eq 0 ] や [ $? -ne 0 ] は冗長でデメリットしかありません。非常に多く見かける書き方ですが、1979 年に Bourne シェルが広く公開された時からこのようなコードは必要ありませんでした。実際に当時はこのような書き方は使われておらず、このような書き方をしなければならなかった歴史的な経緯などはありません。これはなぜか広まってしまった良くない書き方です。 優れたコードとは無駄がないシンプルなコードです。丁寧なコードとは無駄な処理を書くことではありません。[ $? -eq 0 ] や [ $? -ne 0 ] は書かないほうが、簡単で読みやすくわかりやすくなります。優れた文法を持つシェルは短いコードで正しく動作し、良い書き方は最短の時間と最小の手間で目的を達成することができます。コマンドのエラー処理を簡潔に書くことができるのが、シェル言語の優れている点の

    いい加減シェルスクリプトで [ $? -eq 0 ] や [ $? -ne 0 ] なんて エラー処理を書くのはやめよう! - Qiita
  • Bashを使いこなすための必須コマンド71選 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    Bashを使いこなすための必須コマンド71選 - Qiita
  • 名著「入門UNIXシェルプログラミング」の超詳細なレビューをしてみた(古い内容の訂正) - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに そりゃまあ 30 年も経てば古くなりますよ。「入門UNIXシェルプログラミング」は今もシェルスクリプトに関するオススメのとして名前が挙がる名著です。しかしこのは古いです。POSIX でシェルが標準化される以前ので、内容から判断するとおそらく 1990 年ぐらいの常識に基づいて書かれています。 古いから参考にならないと言うつもりはありません。しかしどれだけ優れたでも時間の流れには勝てません。良書であると思っているからこそ、古くなってしまった内容は訂正する必要があると考えています。なおシェルスクリプトに関する古いはこれ

    名著「入門UNIXシェルプログラミング」の超詳細なレビューをしてみた(古い内容の訂正) - Qiita
  • シェルスクリプトを書くときにいつもやるやつを調べた

    bash のシェルスクリプトを書くときに、いつも脳死で以下をやっている。(同僚が整備してくれたものをコピペしている) エディタなり CI で shellcheck をまわす set -euxo pipefail と冒頭に書く こんな感じ #!/bin/bash set -euxo pipefail いつまでもコピペではさすがにアレなので、意味を調べたメモ。 shellcheck koalaman/shellcheck: ShellCheck, a static analysis tool for shell scripts イケてない書き方に警告を出してくれる それぞれの警告にはエラーコード割り振られていてとても便利 エラーコードごとに正誤例、解説が書かれているのでわかりやすい SC1000 の例 CI もそうだし、エディタのプラグインも充実 しているのでとりあえず入れておくと良い set

    シェルスクリプトを書くときにいつもやるやつを調べた
  • 世の中のエンジニアのalias設定 - Qiita

    先日、同僚と「世の中のエンジニアはターミナルにどんなalias設定をしているんだろう?」という談義になったので、GitHub上の1000リポジトリのコードから調査してみました。 2019/04/10 コメントを元に微修正しました。コメントくださった方々、ありがとうございます。 2019/04/11 こんなのも書いてみました。 よく使われているvimrcの設定ランキング 2019/04/15 プラグイン版も書きました。よく使われているvimのプラグイン top20 aliasとは wikipediaより UNIXなどにおいてコマンドを別名で登録したもの。別名を登録するコマンド名。 長いコマンドやいつも利用するオプションを毎回入力するのは手間ですよね? ターミナルの設定ファイルにaliasを記述することで、別名として定義することが可能というわけです。 調査方法 GitHub APIを利用 do

    世の中のエンジニアのalias設定 - Qiita
  • シェルスクリプトを高級言語のような書き味に近づける Tips 集 | 創作メモ帳

    Bash は言わずと知れた歴史あるコマンド言語です。テキストにコマンドの羅列を記述するだけで、手軽にシェルスクリプトとして実行することができます。 シェルスクリプトの実体はシェルコマンドの羅列に過ぎませんが、手続き型プログラミング言語にあるような制御構文も備えています。変数や条件分岐、ループ、関数などです。これらを使えばシェルスクリプトでプログラミングも可能です。 もちろん、現代の一般的なプログラミング言語と比べると機能は限られます。他の言語には見られないシェルスクリプト特有の癖や記法も数多くあり、最近の言語に慣れている人ほど、つまずくポイントが多いです。 しかし、シェルスクリプトだからこその良さもあります。Bash は現在でも多くの OS で標準シェルとして採用されており、普段使っているシェルコマンドを書くだけで動かせる手軽さは何者にも代えがたいです。一度身につけておくと長く使えるお得な

    シェルスクリプトを高級言語のような書き味に近づける Tips 集 | 創作メモ帳
  • commandlinefu.comで見つけた便利・面白Linuxコマンド使用例 - もた日記

    commandlinefu.com コマンド使用例 ^foo^bar mount | column -t time read (ctrl-d to stop) echo "You can simulate on-screen typing just like in the movies" | pv -qL 10 mv filename.{old,new} diff <(sort file1) <(sort file2) !* !:- fc date -d@1234567890 ps awwfux | less -S bind -P mkdir -p work/{d1,d2}/{src,bin,bak} showkey -a ccze grep . filename > newfilename grep -Fx -f file1 file2 grep . * kill -9 $$ tail

    commandlinefu.comで見つけた便利・面白Linuxコマンド使用例 - もた日記
  • 原理原則で理解するbashの仕組み - Qiita

    はじめに 以前書いたエントリー、重大な脆弱性(CVE-2017-5932)で少し話題になったbash4.4の補完機能の便利な点で、bash4.4からでないとタブの補完機能のソート処理が制御できないという問題について、ソースコードレベルで調べた結果をまとめていたのですが、bashの実装そのものを深く掘り下げ過ぎてしまい、内容が膨大になったので、何回かに分けて書こうと思います。 今回はbashが起動されてからインタラクティブモードでキーボードの入力を待ち受けるまでのお話です。普段使っているbashがどのような処理を行っているのか一緒に覗いてみませんか? 検証ソースコード Bash version 4.1.0(1) release GNU bashの生誕 bashのプロセスが起動されるのはOSへのログイン時にユーザーのログインシェルがbashに設定されている場合、あるいはログイン後に明示的にba

    原理原則で理解するbashの仕組み - Qiita
  • Windowsのエクスプローラーからさくっとファイルのハッシュ値を調べる - 葉っぱ日記

    以下の内容を test.reg などのファイル名で保存し、regファイルをダブルクリックしてレジストリに結合する。 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\MD5] @="MD&5をコピー" [HKEY_CLASSES_ROOT\*\shell\MD5\command] @="cmd /c certutil -hashfile \"%1\" MD5|findstr -v \":\"|clip" [HKEY_CLASSES_ROOT\*\shell\SHA1] @="SHA&1をコピー" [HKEY_CLASSES_ROOT\*\shell\SHA1\command] @="cmd /c certutil -hashfile \"%1\" SHA1|findstr -v \":\"|clip"これで、ファ

    Windowsのエクスプローラーからさくっとファイルのハッシュ値を調べる - 葉っぱ日記
  • cdの引数を絶対パスにしてコマンドヒストリに残す - ももいろテクノロジー

    cdの引数が相対パスのままコマンドヒストリに残って便利な例が思いつかないので、絶対パスでコマンドヒストリに残すようにする。 具体的には、以下のシェル関数を.bashrcに書く。 if [[ -n "$PS1" ]]; then cd() { command cd "$@" local s=$? if [[ ($s -eq 0) && (${#FUNCNAME[*]} -eq 1) ]]; then history -s cd $(printf "%q" "$PWD") fi return $s } fi いくつかの重要なポイントを以下に記す。 cdの定義を上書きしているが、このような場合中で普通にcdを呼ぶと再帰してしまうためcommand組み込みコマンドを使う。 "$@"の代わりに"$1"を使うことはできない。cdを引数なしで呼んだときホームディレクトリに移動しなくなってしまう。 cdの

    cdの引数を絶対パスにしてコマンドヒストリに残す - ももいろテクノロジー
  • Linux標準教科書2.0.0を読んだ - rochefort's blog

    自分にはもう必要ないかもと思いながら積読状態だった Linux標準教科書 を読みました。 以外と知らないこともあり勉強になりました。 基礎大事。 shellのデバッグ(sh -x) : 9.8 デバッグ(P.177) 新人の頃shellを書きまくって、print debugしまくってた自分に教えてあげたい。 例として分かりにくいかもしれませんが、 -x をつけて実行すると コマンドや変数の中身を表示しながら実行してくれます。 sampleとしては若干見にくいかもしれないですが $ cat samle.sh while true do echo "Continue? (y/n)" read input case $input in n) break ;; y) continue ;; *) echo "Please input y or n." ;; esac done これを -x 付きで

    Linux標準教科書2.0.0を読んだ - rochefort's blog
  • 私が他人のシェルスクリプトから学んだこと | 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
  • 1