2021-01-09 / 最終更新日時 : 2022-06-02 senooken OS スクリプト系言語でのシバンなしでの実行方法 概要以前,「シバンなしファイルでのスクリプト系言語のインタープリターの実行 – senooken.jp」を投稿した。こちらの内容では,以下2点の欠点があった。欠点POSIX準拠シェルが存在しないと実行不可能 (標準Win […]
2021-01-08 / 最終更新日時 : 2021-01-08 senooken OS sh/cmd.exe両対応スクリプトの作成方法 目次 概要 方法 注意点 結論 概要Windows 10にWSLが搭載されてから,Windows環境でbash (sh) を使うことが以前よりも増えてきた。 その他,Git for WindowsをインストールするとMS […]
2020-11-15 / 最終更新日時 : 2020-11-14 senooken program シェルスクリプトでの初回限定マッチ 概要シェルスクリプトで特定の文字列を検索する際に,初回だけマッチさせたいことがある。 例えば,同じ値が連続することがわかっている場合,1回目だけマッチさせて処理をそこで終了させたほうが効率がいい。 テキストのマッチはaw […]
2020-09-17 / 最終更新日時 : 2020-09-30 senooken program E437: terminal capability “cm” requiredの対処方法 概要GNU screenを起動した状態でsshで他のサーバーにログインすると,TERM環境変数にscreen.xterm-256colorが設定される。この状態で,vi/vimを起動したりgit logなどで端末機能を使 […]
2020-09-15 / 最終更新日時 : 2020-09-09 senooken program 利用可能な端末種別 (TERM) の判定方法 概要環境変数TERMに設定される端末種別はncursesなどのterminfoデータベースから設定される。 ncursesのバージョンなどによって,シェルで特定の端末種別が利用できないことがあったりする。例えば,xter […]
2020-04-08 / 最終更新日時 : 2020-03-15 senooken program 巨大ファイルの継続ダウンロード ISOファイルやSDKなど巨大ファイルのダウンロードが必要な場面がある。Webブラウザーでダウンロードすると途中で途切れてしまうことがある。そこで,巨大ファイルを継続ダウンロードする方法を整理した。結論としては,wget […]
2019-10-05 / 最終更新日時 : 2020-04-03 senooken Linux APTによるパッケージの部分アップグレード Ubuntu 18.04を使っており,パッケージの更新をapt upgradeコマンドにより行っている。しかし,何か月かに一回やる場合,パッケージの更新対象が多く,更新に時間がかかってしまう。また,apt upgrade […]
2019-07-07 / 最終更新日時 : 2021-01-02 senooken OS CMDからPowerShellを実行する4の方法 目次 導入 1.コマンド引数 2. 標準入力 3. ファイル 4. 単独ファイル 結論 導入コマンドプロンプト (CMD, cmd.exe) は機能が乏しく,Windowsで込み入った作業を行う場合に,PowerShel […]
2019-06-16 / 最終更新日時 : 2021-01-02 senooken program シバンなしファイルでのスクリプト系言語のインタープリターの実行 背景PHPを勉強しており,PHPの実行方法を調べていた。その中で,シェルスクリプトで実行する方法が目に映った。 いわゆるシバン (shebang, #!) を使った実行方法だ。この方法はその他のスクリプト系言語のインター […]
2018-06-20 / 最終更新日時 : 2020-09-09 senooken CLI インストール: ncurses | 端末操作の基本ライブラリー 端末に依存しないテキストユーザーインターフェイス (TUI) のAPIを提供するncurses (new curses) をソースコードからインストールする。ncursesは端末操作の実装に使われており,MariaDB, […]
2017-07-30 / 最終更新日時 : 2020-06-26 senooken program How to name a commands group in POSIX shell script シェルスクリプトで複数コマンド群に名前を付けてグループ化して可読性を向上させる方法について検討した。 命名グループ化の検討の概要 コマンドのグループ化には変数,関数,aliasの3種類の方法が存在。aliasは関数と複合 […]
2017-06-24 / 最終更新日時 : 2020-06-26 senooken program Solution for escaping '$' in completing variable on bash 4.2 bash 4.2系で作業しているときに,変数を経由してディレクトリにアクセスするときにタブキーで補完を行うと$がエスケープされてしまい,補完が効かなくなってしまった。この問題と対処方法を説明する。 Table of Co […]
2017-06-10 / 最終更新日時 : 2020-08-23 senooken program How to solve ‘Possible directory traversal hack attempt in ./file’ on lha command LHA形式のファイル(.lzh/.lha)をlhaコマンドで解凍しようとするとエラーが発生した。この問題の対処方法を記述する。 Reproduction 昔の配布元から[lha for unix verion 1.14i […]
2017-05-02 / 最終更新日時 : 2020-06-26 senooken program How to avoid errors with accessing $@ and $* after set -u in POSIX shell script ksh88やbash 2系など古いPOSIX規格に準拠したシェルで,set -u実行後に引数がない状態($# = 0)で@と*変数利用時の未定義エラーの回避方法を解説する。結論としては,今まで”$@”や”$*”としていた […]
2017-04-16 / 最終更新日時 : 2020-06-26 senooken program Solution for “/bin/sh: bad interpreter: Text file busy” after moving shell script from Windows to Linux シェルスクリプトをWindows 7からLinux(Fedora 19)にコピーなどで移動させて,その直後にシェルスクリプトを実行すると以下のエラーメッセージが表示されてしまい実行できなかった。 bash: ./shel […]
2017-01-01 / 最終更新日時 : 2021-01-16 senooken program What is shebang (#!/bin/sh) in POSIX shell script この記事はPOSIX原理主義Advent Calendarの13日目だ。シェルスクリプトに限らず,Perl,Python,Rubyといったスクリプト系言語において,プログラム(スクリプト)の1行目に以下のような記述をする […]
2016-12-27 / 最終更新日時 : 2020-03-29 senooken program POSIXシェルスクリプトでの日時とタイムゾーンの取得 この記事はPOSIX Advent Calendarの22日目だ。シェルスクリプトを作成した際に,作成日や更新日などの日時情報をスクリプト内や–helpなどに記述することがある。このときの日時の形式はどうすべきか?とい […]
2016-12-21 / 最終更新日時 : 2020-06-26 senooken program How to check if commands enabled in POSIX shell script #posixismadvent この記事はPOSIX原理主義Advent Calendarの17日目だ。POSIX原理主義を実践していくうえで,POSIX規格外のコマンドを使う場合は,交換可能性を担保しなければならない。 […]
2016-12-18 / 最終更新日時 : 2020-06-26 senooken program How to check if script executed as a command in POSIX shell script #posixismadvent この記事はPOSIX原理主義Advent Calendarの17日目だ。 POSIX原理主義のシェルスクリプトがコマンドとして実行されたか,dot(.)コマンドで読み込まれたかどうかを判定 […]
2016-12-15 / 最終更新日時 : 2020-06-26 senooken program How to initialize POSIX shell script #posixismadvent この記事はPOSIX原理主義Advent Calendarの15日目だ。POSIX原理主義によるシェルスクリプトの実行環境の最善と思われる初期化方法を解説する。結論としては,シェルスクリプ […]
2016-12-08 / 最終更新日時 : 2020-06-26 senooken program How to time a program in POSIX shell script この記事はPOSIX原理主義Advent Calendarの8日目だ。 POSIXに準拠した,プログラムの実行時間の計測方法を紹介する。結論としては,timeコマンドを使って以下のようにサブシェルで実行するのが最善と判断 […]
2016-12-05 / 最終更新日時 : 2020-08-23 senooken program Introduction of references about POSIXism (POSIX fundamentalism) #posixismadvent この記事はPOSIX原理主義Advent Calendarの5日目だ。 POSIX原理主義を実践していくうえで参考になる文献・書籍・ツールを紹介する。 POSIX原理主義とは何であるかにつ […]
2016-12-04 / 最終更新日時 : 2020-08-23 senooken program 献本レビュー:「Windows/Mac/UNIXすべてで20年動くプログラムはどう書くべきか」 #posixismadvent この記事はPOSIX原理主義Advent Calendarの4日目だ。2016-11-10に発売された,POSIX原理主義の実践に必要なテクニックが詰まった書籍「Windows/Mac/U […]
2016-12-01 / 最終更新日時 : 2020-08-23 senooken program What is POSIXism (POSIX fundamentalism)? #posixismadvent この記事はPOSIX原理主義Advent Calendarの1日目だ。 ここ1年ほどでPOSIX原理主義という考え方と,それを実践しているシェルショッカーという組織を知った。この記事では, […]
2016-10-23 / 最終更新日時 : 2020-08-23 senooken program Solution for garbled characters on GNU Screen GNU Screenを起動すると日本語などが文字化けするようになってしまった。この原因と解決策を記す。初めはxtermの文字エンコーディングが原因かと思ったが,よく調べていくと違った。GNU Screenの起動中だけ文字 […]
2016-10-23 / 最終更新日時 : 2020-06-26 senooken program How to check if command option is enabled in POSIX shell script シェルスクリプトで,コマンドのオプションが有効かどうかの判定方法を記す。 Table of Contents Introduction Method Coding Conclusion Introduction複数のマシ […]
2016-10-10 / 最終更新日時 : 2020-07-15 senooken program シェルスクリプトで指定回数 (N回) ループ シェルスクリプトで指定回数ループする方法を記す。 最終的に,awkを使った実装が高速で汎用的なので,ベストだと結論づけた。 N=10for i in $(awk “BEGIN{for(i=1; i<=$N; ++i […]
2016-08-25 / 最終更新日時 : 2020-06-26 senooken program How to check root user in POSIX Shell script シェルスクリプトなどで現在のユーザーがルートユーザー(root権限,管理者権限,スーパーユーザー,super user)であるかを判別する方法を記す。 例えば,システムやデバイスの操作を行いたい時には,sudoやsuコマ […]
2016-07-28 / 最終更新日時 : 2020-06-26 senooken program Solution for “xterm: Cannot use ‘bash’ as shell: No such file or directory” 会社のPCでxinitコマンドを実行してGUIを起動すると以下のメッセージが端末に表示されていた。xterm: Cannot use ‘bash’ as shell: No such file or directory特 […]
2016-07-01 / 最終更新日時 : 2020-02-23 senooken program How to extract column field in shell script シェルスクリプトで列フィールドの抽出方法をまとめた。シェルスクリプトでCSVなど一覧表やログファイルを処理していると,先頭や末尾のフィールドを取得したいときがある。いくつか方法があるのでまとめた。 結論は以下となった。記 […]
2016-06-10 / 最終更新日時 : 2020-06-26 senooken program How to use ShellScript file arguments in user defined function シェルスクリプトで,ユーザー関数でスクリプトファイルの引数を使う方法がわかったのでメモしておく。端的に結論を書くと,ユーザー関数の引数に$@を渡せばよい。シェルスクリプトの引数はスクリプトでよく使われるパラメーターだろう […]
2016-05-04 / 最終更新日時 : 2020-06-26 senooken program How to match grep command for all files including hidden files grepコマンドでドット(.)で始まる隠しファイルを含む全ファイルを検索対象にするには,以下のどれかの書式を使う。 grep -r “pattern” .[!.]* *grep -r “pattern” .* * –e […]
2015-10-31 / 最終更新日時 : 2020-06-26 senooken program Dynamic terminal title on bash, zsh, tmux ターミナルのタイトルを設定する。CygwinとかMSYS2とかgnome-terminalなどの端末を起動すると,ウィンドウのタイトルが表示される。既定だとターミナルのタイトルは起動してから変わらないのでもう少し有益な情 […]
2015-10-30 / 最終更新日時 : 2019-08-15 senooken program CygwinとMSYS2でのWindowsコマンドの文字化け対策 ターミナルの文字エンコーディングをUTF-8に設定したCygwinやMSYS2で,ipconfigなどのWindows標準コマンドを使いたいときがある。しかし,それをすると標準出力や標準エラー出力が文字化けする。この回避 […]
2015-10-21 / 最終更新日時 : 2020-06-26 senooken program Setting icon for MSYS2 shortcut MSYS2のショートカットにアイコンを設定した。設定手順を記す。 MSYS2をインストールすると,スタートメニューに[MinGW-w64 Win64 Shell]という名前でメニューが追加される。これを選択することで/m […]
2015-09-30 / 最終更新日時 : 2020-02-23 senooken program Bash Startup File Bashの起動時読み込みファイルについて記憶が曖昧だったのでしっかりまとめることにした。 用語・ファイル一覧 最初に登場する用語とファイルを整理する。シェルの起動時ファイルは以下の3種類に分類される。 ログインシェル:P […]
2015-05-31 / 最終更新日時 : 2019-09-19 senooken program nkfによる文字エンコーディング・改行コードのディレクトリ再帰的な一括変換 nkfコマンドを使って現在ディレクトリ以下のファイルを指定した文字エンコーディング・改行コードに一括変換する方法を記す。 日本語のテキストファイルを扱っていると,Shift_JISやCP932,EUF-JPといった文字エ […]
2014-12-23 / 最終更新日時 : 2020-08-23 senooken program Solution of grep: warning: GREP_OPTIONS is deprecated; please use an alias or script MSYS2のbashを起動すると以下の警告が表示されるようになった。 grep: warning: GREP_OPTIONS is deprecated; please use an alias or script .b […]
2014-09-12 / 最終更新日時 : 2020-08-23 senooken program Problem of HOME and END key in Vim on tmux tmuxを起動中にvimを起動してHOMEキーかENDキーを入力すると、なにかおかしい。この記事ではこの問題の現象と解決策を記す。 1 Problem tmuxを起動中にvimを起動してHOMEキーとENDキーを入力する […]
2014-09-11 / 最終更新日時 : 2020-02-24 senooken program Copy to clipboard in tmux on Linux, Cygwin, Mac Gnu screenからTmuxへターミナルマルチプレクサーの移行を進めている。移行に必要な作業はGnu screenでやっていたことの再現だ。 具体的には以下の内容を実現したい。 tmux起動時にzshを起動 クリップ […]
2014-09-10 / 最終更新日時 : 2020-06-26 senooken program tmuxの起動時にzshを起動 tmuxの起動時にzshコマンドが入っていればzshが起動するようにしたい。zshの起動時にtmuxを起動させるようにすることもできるけど,標準の環境は維持しておきたい。ログインシェルはbashで,tmuxが起動されてい […]
2014-09-04 / 最終更新日時 : 2021-01-01 senooken develop Gnu screen上のVim起動中に画面サイズ拡大後の:splitでクラッシュ 前から気になっていたこととして、Gnu screen上のVimで作業しているとファイルを閉じると同時にクラッシュしてGnu screenが強制終了される問題があった。ネットで探してもあまり事例がなかった。いい加減に気にな […]
2014-07-27 / 最終更新日時 : 2020-08-23 senooken program Solve conflict of zsh zaw plugin 前回の記事でzshのzawプラグインの問題が解決できたと思っていた。しかし,zaw-cdrの問題に遭遇した。試行錯誤の上,この問題も解決した。ここでzshのzawに関する問題と解決策について整理する。 まず,zshのza […]
2014-07-26 / 最終更新日時 : 2020-08-23 senooken program Cannot exit zsh zaw filter: search mode zshのプラグインzawをantigenによりインストールしてzshを起動すると,以下のようにfilter:の絞り込み検索の状態で起動する。C-gで解除しても即座にfilter:の状態に戻るためzshで操作できない。 f […]
2014-07-18 / 最終更新日時 : 2020-08-23 senooken program Auto linebreak in bash prompt 調べ物をしているとbashの設定が気になった。zshでもいいけど,bashしか使えない環境もあるのでこちらの設定を見なおした。zshのようにある階層以上になればプロンプトの現在ディレクトリの表示を2行にさせたかった。いろ […]
2014-05-11 / 最終更新日時 : 2020-08-23 senooken program zshでcd実行時のTAB補完の不要なディレクトリを無効化 zshでcdコマンドを実行していると関係ないディレクトリまで補完候補に表示されてイライラしてしまった。 例えば,configディレクトリに移動しようとすると以下のようにcolordというディレクトリまで補完表示されてしま […]
2014-05-10 / 最終更新日時 : 2020-08-23 senooken program zshが新しくインストールしたコマンドを認識しない問題への対処 新しいプログラムのインストールのために、以下の一連のコマンドによってプログラムをインストールすることがある。 ./configure make && make install しかし、zsh上でこの手順に […]
2014-04-12 / 最終更新日時 : 2020-08-23 senooken program ページャーでヘルプを見ようとするとESC [0mなどが表示される cygwinでヘルプを見ようとすると以下のようにESCだとか[0mだとか変な文字が表示されて画面が非常に見にくい。 原因を探ってみると、どうやら環境変数PAGERの値が問題だったようだ。 参考: Charle […]
2014-04-05 / 最終更新日時 : 2020-06-26 senooken program GNU Screenの起動時にシェルを指定 ~/.screenrc fileに以下を書く。 shell “/usr/bin/zsh” http://stackoverflow.com/questions/2888996/loading-zs […]
2014-01-05 / 最終更新日時 : 2019-08-21 senooken shell 空白入りパスにPATHを通す 参考: http://blogs.yahoo.co.jp/hhhappyyyymoto/41862313.html export PATH=”/cygdrive/c/Program Files/Sumatra […]
2014-01-04 / 最終更新日時 : 2020-08-22 senooken program zsh: locking failed for /home/`logname`/.zhistory: no such file or directory: reading anywa ログインシェルにzshを使っている。terminalを起動すると次のエラーメッセージが表示される。 zsh: locking failed for /home/`logname`/.zhistory: no such f […]
2013-12-07 / 最終更新日時 : 2020-08-23 senooken program CygwinでGNU screenを使ってターミナルの内容をクリップボードにコピー どうやらCygwinではカーソルを使って範囲を選択してコピーできないようで、今まではマウスでドラッグして選択して他のファイルに貼り付けたりしていた。効率が悪いと思ったので、どうにかキーボードだけでできないか調べた。gnu […]
2013-11-27 / 最終更新日時 : 2020-06-26 senooken program zshでGnu screen実行中のHome/Endキーの割り当てがおかしい 以前書いた「zshでHome/End/Delキーを設定 」でzsh上でのHome/End/Delキーの動作を設定した。しかし、zsh上でgnu screenコマンドを実行するとこれがうまく反映されていなかった。 […]
2013-11-22 / 最終更新日時 : 2020-08-22 senooken program zshでHome/End/Delキーを設定 zshでは標準では他のbash環境などで使えるHome/End/Delキーの入力に対応していない。.zshrcにキーマップを設定することでこの問題に対応する。 なお、CygwinとLinux環境とではキーの割り当てが異な […]
2013-10-15 / 最終更新日時 : 2020-08-23 senooken program lnコマンドでシンボリックリンクを相対パスで貼る lnコマンドはシンボリックリンク貼るときに頻繁に使うコマンド。以下のフォーマットで使用する。 ln -s 参照先 リンク 絶対パスで貼るときは何も困らない。相対パスで貼るときはややこしくて、「リンクの位置」を基準にして相 […]
2013-06-28 / 最終更新日時 : 2019-08-22 senooken program ディレクトリサイズを表示するコマンドdu du -ms directory でdirectoryのサイズを表示する。 -m: メガバイト表示 -k: キロバイト表示 -s: 引数のディレクトリの総計を表示 skydriveの容量の上限27GB間際なのでdropb […]
2013-04-16 / 最終更新日時 : 2020-08-23 senooken program Gnu screenの使い方 http://server-setting.info/blog/cygwin-gnu-screen-install.html 詳しい: http://www.ayu.ics.keio.ac.jp/~mukai/tips/ […]
2013-04-14 / 最終更新日時 : 2020-08-13 senooken program Gnu screenの自動起動とエラー対処 screenは作業するときに便利なので、bashの起動時に自動的に起動するように.bashrcに以下の内容を追記する。 if [ “WINDOW” = ” ]; then screen […]
2013-04-12 / 最終更新日時 : 2020-09-15 senooken program プロセスを全て終了 screenコマンドで複数のウィンドウを開いているとpty??というように大量にプロセスが発生してNo more PTYsというようなエラーが出た。プロセスを一個ずつkillしていくのはしんどいので、まとめてすべて削除し […]