You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
はじめに この記事では、2022年1月にリリースされたclapとclap_completeクレートを使って、シェルの補完スクリプトを生成する方法を紹介します。 clapはRustのコマンドライン引数パーサーです。 豊富な機能を備えており、Rustではデファクトスタンダートになっているライブラリです。 近年の他のプログラミング言語のコマンドライン引数パーサー——例えば、Pythonのargcomplete、clickやcleo、Goのgo-flags——同様に、補完スクリプトの生成に対応しています。 clapはBuilderパターンによるパーサーの構築が素の使い方ですが、バージョン3でderiveマクロによるパーサーの構築が安定化されました。 Builderパターンによるパーサーの構築——この機能はBuilder APIと呼ばれています——では、以下のようなコードでパーサーを記述します。構造
はじめに スーパーコンピュータシステムのファイル消失のお詫び 年末にこんなの↑が話題になったようで。 処理に時間がかかるシェルスクリプトの実行中に、そのスクリプトを上書きしたところ処理の途中から上書きした方のスクリプトの方が途中から動きだしてしまい、整合性が取れてないために大事故になったらしい 自分はそのときとっくに仕事納めして遊んでたので反応が遅れてるけど、今さらながらちょっとこの件について触れておいたほうがいいかもしれないので斜め上から言及しておく。つまり、外部要因によるスクリプト書き換えではなく、スクリプトが自分自身を書き換えながら動作を続ける例について。 自己追記FizzBuzz このFizzBuzzを解読したものを誰もポストしてくれないので、ウケなかったギャグを自分で説明する悲しさを感じつつ解説する。 n+=:; s=; : ${p=$(<$0)} [[ $n =~ ^(...)
課題編 シェルスクリプトで「あるグローバルな状態を変える操作を行い、その結果をチェックし、状態をもとに戻す」みたいなタスクをするときに「その結果をチェックし」のところでコマンドの終了ステータスを変数に入れて置きたいみたいなことがあります。例えば、次のようなコマンド操作です。 set -e # グローバルな状態を変える操作を行う git merge --no-ff --no-commit $main_branch || true # 結果をチェックしてexit codeを変数に入れる git diff --cached --exit-code --quiet ; code=$? # グローバルな状態をもとに戻す git merge --abort # 上位プロセスに結果を渡す exit $code スクリプト全体には set -e (コマンドが失敗するとシェルスクリプトが即座に終了する)を効
Pythonには対話的にプログラムを実行できるPythonシェルが備わっている。きっとPython学習の際に使ったことがあると思う。とはいえ学習用だけに限定するのは非常にもったいない。筆者は事あるごとに計算やカレンダー、フォルダを開いたりと、いろいろな用途に使っている。今回は、Pythonシェルを便利に使うアイデアを7つ紹介する。 Pythonシェルとは? そもそも、Pythonシェルとは何だろうか。Pythonをインストールすると一緒についてくる対話式実行環境のことだ。WindowsでPythonシェルを起動するには、スタートメニューから「Python3.x > IDLE」を実行するか、PowerShellを起動して「python3」とタイプすれば良い。macOSではターミナル.appを起動して「python3 」とタイプしよう。 Pythonシェルが起動すると「>>>」と表示されるので
TL; DR 変数をダブルクォートしない使い方は上級者向けの危険な機能です! $@ と $*(または配列の全要素)をダブルクォートしない使い方は知る必要すらありません! ShellCheck を導入すれば誰でも簡単に正しい書き方がわかります!! 2021-08-21 補足 この記事は dash や bash などの POSIX シェルの一般的な動作を解説しており zsh のデフォルトとは異なります。記事の中でも説明していますが zsh の場合はシェルのオプションを変更することで POSIX 準拠の動作に変更することができます。zsh に関しては後半の「zsh に関する注意点」も参照してください。 はじめに プログラミング言語は、言語によって記号の意味が異なることがよくあります。クォーテーションマークはその一つです。C 言語ではシングルクォートは文字リテラル(一文字)を意味し文字列はダブルク
対象 : このガイドは、初心者向けでも経験者向きでもある。幅広く(書いてあることは全て重要)、かつ明確で(多くのケースに対して具体的な例を付ける)、そして簡潔(他の場所で見つけられるような重要でないことや脱線したことは省く)であることをゴールにしている。各項目は、多くの場面において必須であるか、他の方法に比べて劇的に時間を節約してくれるだろう。 OS X用のものを除き、Linux向けの内容となっており、その多くは各種LinuxおよびMacOS(あるいはCygwin)でも使えるだろう。 インタラクティブなBashを使うことを想定しているが、多くの項目は他のシェルやBashのスクリプトでも使えるだろう。 (このリポジトリへ)組み込むメリットがあるのであれば、標準Unixコマンドやパッケージインストールコマンドも含める。 注意 : 1ページ内に収めるために、内容には暗黙的に書かれていることがある
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
Background Which Shell to Use Bash is the only shell scripting language permitted for executables. Executables must start with #!/bin/bash and minimal flags. Use set to set shell options so that calling your script as bash script_name does not break its functionality. Restricting all executable shell scripts to bash gives us a consistent shell language that’s installed on all our machines. In part
$ wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com
alias open="pwsh.exe /c start" pwsh.exe を入れてない人は alias open="powershell.exe /c start" すると、open foobar がいい感じに開かれる。 # explorer が開く open . # デフォルトブラウザが開く open https://example.com/ # jpg に関連付けられているビュアーで開かれる open ./foo.jpg
普段はsystemd経由で実行しているコマンドをCLIから実行したい、環境変数もsystemd経由で起動するときと同様にセットしたいのでenvfile(EnvironmentFile)をそのまま使いたいんだけどなんか微妙にやりにくくないか、と思って何度か調べたことがあるんだけど、あんまりうまい方法が検索結果に出てこない。 んだけど、あれ、これ簡単じゃん。(追記: これはごく単純なケースでしか動かなかった、後段参照) $ env $(cat myenvfile | grep -v '^#') target-commandenvfileをシェルスクリプトとして実行して追加された変数をなんとかexportすれば……みたいに考えてたけどenvコマンドで一発だった。変なコメントとか入ってると厄介だけど、こんな感じでいいのでは。ということでメモ。 空白を含む値の処理 まあいいやとスルーしてたけど値が空
iTerm2 may be integrated with the unix shell so that it can keep track of your command history, current working directory, host name, and more--even over ssh. This enables several useful features. Shell integration is compatible with zsh, bash, fish (2.3 and later), and tcsh. How To Enable Shell Integration This section describes the four ways to enable shell integration: Load it automatically. Us
こんにちは、hachi8833です。社内Slackで見かけたmorimorihogeさんの以下の書き込みで目から鱗が落ちました。 ~/.bashrcで何かを出力してしまうと、rsyncなどのsshパイプで問題が生じることがあるそうです。 参考: 知らないとrsyncでもハマるシェル初期化 - Qiita これをきっかけに、できるかぎり一次情報を元になるべく一般的になるようにまとめてみました。 シェルスクリプト(.bashrcや.bash_profileなども含む)はあまりに自由に書けてしまい、LinuxディストリビューションやmacOSによって作法がまちまちだったりするので、外してはいけないポイントがどこかを知りたかったのでした。 対象はbashとsh(Bourne Shell)に限定します。また、デスクトップGUIの設定ファイルについては最小限にとどめます。 bashのmanページ 元記
Introduction ============ The first public release of bash-5.0 is now available with the URLs ftp://ftp.cwru.edu/pub/bash/bash-5.0.tar.gz ftp://ftp.gnu.org/pub/gnu/bash/bash-5.0.tar.gz and from the master branch of the bash git repository (http://git.savannah.gnu.org/cgit/bash.git/log/) and the usual GNU mirror sites. Bash is the GNU Project's Bourne Again SHell, a complete implementation of the P
メールやチャットなど色々なところに通知が飛びます。 例えば会議が始まる前にチャットに通知したり、CircleCIがビルドを完了したらメールに通知したりしていますが、どちらも私が見に行かないといけません。 チャットを全然気にしていないタイミングで会議が始まったら通知を逃し、会議に行けない(遅れる)、といった結果が想定されます。 OSの機能で通知することで、私が気づく確率が上がるのではないかと思い調べていたところ見つけたのが今回紹介するAlerterです。 Alerter Alerter/Send User Alert Notification on Mac OS X 10.8 from the command-line. alerter is a command-line tool to send Mac OS X User Alerts (Notifications), which are
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く