タグ

Qiitaとshellに関するslay-tのブックマーク (9)

  • シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita

    シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の当の理由を知ると優れた文法が見えてくるShellScriptBashUNIXshellPOSIX はじめに シェルスクリプトの変数代入で = の前後にスペースを置くことができない理由は、検索すれば「プログラマーの君! 勘違いするな! シェルスクリプトでは読みやすさのためにスペースを置くな!! という話」のような記事がすぐに見つかります。記事に書いてあるとおり変数代入とコマンド呼び出しと区別がつかないからです。それは間違いではないんですが、私はもう少し説明が足りないと感じています。そこで今回は = の前後にスペースを置けない当の理由を解説したいと思います。 の前に皆さんにはこの話を読みながら、自分がシェルスクリプトの言語設計者だったとしたら、どういう言語仕様にするかを考えて欲しいです。なぜかと言うとシェルスクリプトの文

    シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita
  • シェルスクリプトの [ は /bin/[ と言ったり [ "x$var" = "xval" ] と書く人はオジサン - Qiita

    # Ubuntu 20.04 の bash での実行結果 # シェルから [ が何として見えているか $ type [ [ is a shell builtin # PATH から見つかる全ての [ コマンドを出力する # 補足 zsh では which がシェルビルトインコマンドで、シェルビルトイン版の [ も出力される $ which -a [ /usr/bin/[ /bin/[ $ type [[ [[ is a shell keyword # zsh では [[ をパターンとして認識してしまうのでダブルクォートが必要 $ type "[[" [[ is a reserved word ちなみに [ の外部コマンド版が /usr/bin/ と /bin/ の両方にあるのは Ubuntu 20.04 では /bin が /usr/bin へのシンボリックリンクになっているからです。Ub

    シェルスクリプトの [ は /bin/[ と言ったり [ "x$var" = "xval" ] と書く人はオジサン - Qiita
  • シェルスクリプトは ((i=i+1)) ではなく i=$((i+1)) で計算しなければいけない!という話 - Qiita

    count=0 max=5 while ((count < max)); do # (( 算術式 )) は条件文で使うものです count=$((count + 1)) # 計算したいだけなら算術式展開を使います echo "$count" done ついでに言うと (( 算術式 )) は POSIX シェルで規定されていません。bash、ksh、mksh、zsh では使えますが dash、yash などの純粋な POSIX シェルに近いシェルでは使えません。 なぜ? (( 算術式 )) を使って変数に値を代入したり変更することができますが、それだけのために使ってはいけません。if や while などの条件文とともに使うものです。 C 言語を使ってる人なら比較的見かける書き方だと思いますが、(( 算術式 )) で値を変えるというのは、以下のように評価するついでに値も変えちゃえと、短く書く

    シェルスクリプトは ((i=i+1)) ではなく i=$((i+1)) で計算しなければいけない!という話 - Qiita
  • シェルスクリプトの変数はダブルクォートしなければいけない!という話 - Qiita

    TL; DR 変数をダブルクォートしない使い方は上級者向けの危険な機能です! $@ と $*(または配列の全要素)をダブルクォートしない使い方は知る必要すらありません! ShellCheck を導入すれば誰でも簡単に正しい書き方がわかります!! 2021-08-21 補足 この記事は dash や bash などの POSIX シェルの一般的な動作を解説しており zsh のデフォルトとは異なります。記事の中でも説明していますが zsh の場合はシェルのオプションを変更することで POSIX 準拠の動作に変更することができます。zsh に関しては後半の「zsh に関する注意点」も参照してください。 はじめに プログラミング言語は、言語によって記号の意味が異なることがよくあります。クォーテーションマークはその一つです。C 言語ではシングルクォートは文字リテラル(一文字)を意味し文字列はダブルク

    シェルスクリプトの変数はダブルクォートしなければいけない!という話 - Qiita
  • 混沌を極めるWindowsのssh-agent事情 - Qiita

    どうしてこうなった。 何の話? WindowsでのSSH-AGENTとSSHの話です。 この記事での用語: SSHとssh, SSH-AGENTとssh-agent この記事では、SSH-AGENTと書いたときにはカテゴリとしてのSSHエージェントを意味します。 ssh-agentと書いたときには、実行プログラムとしてのssh-agentコマンドを意味します。 同様に、SSHと書いたときにはカテゴリとしてのSSHクライアントを意味します。 sshと書いたときには、実行プログラムとしてのsshコマンドを意味します。 SSH-AGENTって? SSH-AGENTは、秘密鍵での署名を代行1してくれるツールです。 SSH-AGENT に秘密鍵をロードしてしまえば、あとはパスワード(パスフレーズ)入力なしでSSH認証できる agent forward機能を使うことで、SSHした先でさらにSSHすると

    混沌を極めるWindowsのssh-agent事情 - Qiita
  • EmacsとWindowsと人生と - Qiita

    ハッカー向けのエディタといえばviかEmacsか、という時代があって、演習で触った大学のUnixワークステーションでターミナルのviはカーソルキーで移動できなくて、GUIで動いていたEmacsでは移動出来た。だからEmacsを使うことにした。 家にあるパソコンといえば、ふとした拍子にHDDがジジジという音を無限にたて始めて、その後フリーズしてしまう非力なWindowsマシンだったけど、それでもEmacsを諦める理由にはならなかった。無限のように長い再起動中の暗闇も、すぐにスワップするメモリも、平気だった。なにしろ、私はハッカーになりたかったのだ。 今日、EmacsはWindowsで使用することが出来る。日語もIMEも問題ない(パッチを当てた「日語版」を探す必要すらない)Vimmerたちが揶揄したメモリ使用量も15MB~200MB程度だ。VSCodeなどのElectronベースのエディタ

    EmacsとWindowsと人生と - Qiita
  • ShellでSeleniumを作る ~Shellnium~ - Qiita

    はじめに この記事はQiita夏祭り2020のイベントの1つ、パソナテックさんが開催している「〇〇(言語)のみを使って、今△△(アプリ)を作るとしたら」のテーマで投稿しています。 いやぁ良いお題ですよね。エンジニア心揺さぶられるし、景品も豪華だし、何よりちょっとワクワクしたので参加させていただきました。 今回は「ShellでSeleniumを作る ~Shellnium~」というお題でやっていきます。下記はShellniumで遊んでいるGIFです。 ブラウザの自動操作の模様をiTermの背景として鑑賞することができます。意味不明さがすごいですね。(透明度をいじってるとかではありません) いろんな言語でSeleniumは扱える Seleniumは皆さん御存知の通り、ブラウザの自動操作をするツールですね。 SeleniumはWebDriverを介してブラウザの自動操作を行っていくもので、php,

    ShellでSeleniumを作る ~Shellnium~ - Qiita
  • 🚀 プロンプトを超絶おしゃれにする Starship を紹介 - Qiita

    公式: https://starship.rs GitHub: https://github.com/starship/starship Starship はプロンプト(ターミナルに表示されるカレントディレクトリやユーザーの情報) のカスタマイズを行うプラグインのようなもので、特徴としては 公式より引用 Starship is the minimal, blazing fast, and extremely customizable prompt for any shell! The prompt shows information you need while you're working, while staying sleek and out of the way. Rustで作られているために高速に動くそうです。 インストール Macであればとても簡単に、

    🚀 プロンプトを超絶おしゃれにする Starship を紹介 - Qiita
  • よく使うディレクトリをブックマークする zsh のプラグイン - Qiita

    Qiita 見てたらこんな投稿を見つけた。 Zsh - よく作業するDirをBookmarkするshellスクリプト - Qiita だいたい、よく使うディレクトリに cd したいとき cd ~/work/project/ruby/web とか長い名前を打つのはめんどくさい。$CDPATH を通しておくっていう手もあるけど、タブで補完したときに候補がいっぱい出たりして微妙に便利じゃない。そんなときにこれを使えばディレクトリの移動が簡単になる。 ちょっと改良の余地があるというか、タブで補完できるようにしたらもっと便利になると思って、独立した zsh のプラグインとして書き直したので紹介する。 このプラグインでできること cd-bookmark というプラグインを作った。これをインストールすれば cd-bookmark というコマンドが使えるようになる。 こいつを使えばよく使うディレクトリに別

    よく使うディレクトリをブックマークする zsh のプラグイン - Qiita
  • 1