タグ

shellに関するdecoy2004のブックマーク (55)

  • Big Sky :: Windows ユーザは cmd.exe で生きるべき。

    [D] Windowsはターミナルがダメだから使えないってのは過去の話? 基的にはいい感じに見えますが、いくつか問題は発覚してます。 http://blog.drikin.com/2015/01/windows-2.html 僕は Cygwin よりも msys2 が好きです 理由は最後の方に書きます。 cygwin は windows 上に完全な POSIX を提供するのが目的であって、msys2 は native な windows アプリケーションをビルドするのが目的なのでゴールが違うのよね。そして僕は全て cygwin で染められるのが好きじゃ無い。それだけの話です。 — mattn (@mattn_jp) April 10, 2016 もちろん msys2 を POSIX 環境としても使いますが、一番の目的は cmd.exe から Windows ネイティブなアプリケーションを

    Big Sky :: Windows ユーザは cmd.exe で生きるべき。
    decoy2004
    decoy2004 2016/04/11
    『システムのプロパティから設定する環境変数 PATH は、自分が思っている以上に他のプログラムに影響を与えてしまいます。』 今は Cygwin 使っている。 msys2 は使ったことない。
  • xmllint で xml をディレクトリみたいにcdして辿る - それマグで!

    xmllint は便利ですね。XMLファイル中をコンソール出来る。んですね XML をbashみたいに使えたらイイなと思ってた ず〜〜っっと思ってた。XMLってツリー構造だから、cd したりファイルシステムみたいにたどれたらイイなと思った。 xmllint 調べたら --shell というシェルオプションを見つけて歓喜したわ。 --shell オプション xmllint --shell http://takuya-1st.hatenablog.jp/rss シェルプオプションを使うと cd したり、pwd 出来たり便利すぎる。 やってみたらこんな感じ xmllint --shell http://takuya-1st.hatenablog.jp/rss rss > du rss channel title link description lastBuildDate docs genera

    xmllint で xml をディレクトリみたいにcdして辿る - それマグで!
  • 【たのしいな】様々なコマンド達を何も考えずにつないで遊ぶ - Qiita

    きっかけ matsuya-generator-rubyが、cowsayコマンドと組み合わせるとシュールこの上ない。 pic.twitter.com/gxaudeU377 — ぐれさん (@grethlen) 2015, 12月 6 もっと色々やってみたい。 あれ?Shell Script Advent Calendar 2015の22日目の枠残ってるじゃん。 じゃあやろう。 環境 Mac OSX Yosemite 10.10.5の端末上で実施。 zshを使って動作確認してますが、多分bashでも動きます。

    【たのしいな】様々なコマンド達を何も考えずにつないで遊ぶ - Qiita
  • プリキュアで学ぶワンライナーWebスクレイピング - Qiita

    「確かに人事にはLinuxができる人が欲しいとは言ったが、まさか顔合わせでcurlとgrepでプリキュア全員の名前を端末で出力するような奴が来るとは思わなかった。」 — ぐれさん (@grethlen) 2014, 10月 21 クローラー/Webスクレイピング Advent Calendar 2015の7日目です。 IT企業を志望する就活生の方々は「FizzBuzzで100まで数えろ」とか「素数を表示しろ」とかいきなり言われても、得意な言語でならサクッと実装できるスキルは身につけておきたいですね。いつ面接で聞かれるかわかりません。 そして当然のごとく「プリキュア全員表示しろ」と言われても対応できるようにしておくべきでしょう。文字列処理、Webスクレイピングの基が身についているかどうかがこの問い一つでわかります。面接で既に出題された方も少なくないのでは? そこで、いくつかのアプローチでW

    プリキュアで学ぶワンライナーWebスクレイピング - Qiita
  • コマンドとコマンドをつなぐ糊 - Qiita

    $ bash --version GNU bash, version 4.3.30(1)-release (x86_64-apple-darwin14.0.0) パイプ (pipe) commandA | commandB 正式にはPipeline。|&でも動く(2019/03/16補足: |& では標準出力と標準エラー出力を次のプロセスの標準入力につなぎます)。 $ man bash より Pipelines A pipeline is a sequence of one or more commands separated by one of the control operators | or |&.

    コマンドとコマンドをつなぐ糊 - Qiita
  • bashのプロセス置換機能を活用して、シェル作業やスクリプト書きを効率化する - 双六工場日誌

    @hirose31 さんが「シェルスクリプトでハマった件→【募】ステキな回避方法」でお題を出されていて、それに回答してみました。 その内容はリンク先を見てもらうとして、回答の中で使ったbashのプロセス置換について書かれた記事をあまり見ないので、回答で使ったプロセス置換のことをエントリにしてみたいと思います。 最初に注意点ですが、プロセス置換の機能は、bashやzsh*1の機能でPOSIX互換の機能ではありません。そのため、使用時には、対応していないシェルでは使えませんし、bashで使う場合も /bin/sh ではなく /bin/bash を明示的に指定する必要があります。たとえば、プロセス置換を使ったスクリプト「script.sh」に対して"$ bash script.sh" というコマンドは成功しますが、"$ sh script.sh" というコマンドは失敗します。この辺りの違いは「/

    bashのプロセス置換機能を活用して、シェル作業やスクリプト書きを効率化する - 双六工場日誌
    decoy2004
    decoy2004 2015/12/18
    『パイプでつないだ場合、「ループ内で変数を変更してもそれがメインシェルの変数に反映されない」という問題に引っかかります。』 加工してから diff に入力するために使ってる。
  • そのシェルスクリプトもうちょっとシンプルに書けそう Tips集(Golf/シェル芸ではない) - Qiita

    Shell Script Advent Calendar 2015 4日目 の投稿です。 以前から自分用にメモしていたものを文字起こししました。 はじめに 仕事でシェルを使い始めて3年くらい経ちました。 途中、pythonruby でスクリプト作ったり、ちょっと zsh に浮気したりしましたが、なんだかんだで今も Bash を使うことが多いです。 この3年間、スーパーシェル芸人(@ebanさん)にご教授頂いたり、Golfしたり(@ebanの影響)、シェル芸勉強会に参加したり(@ebanの影響)してきました。 そんな3年間のまとめとして、シェルスクリプト初めましてだった3年前の私に向けたTips集を書いてみました。 趣旨 各項目ごとに、まず初心者(過去の私がやってた)あるある実装を例示して、その次に、より良さげな実装を例示する構成としています。 実行環境 OS Mac OS X Yos

    そのシェルスクリプトもうちょっとシンプルに書けそう Tips集(Golf/シェル芸ではない) - Qiita
  • bashシェルスクリプトの記述の仕方に関するメモ書き - Qiita

    はじめに bashシェルスクリプトの記述の仕方に関するメモ書きです。 ファイル入出力やパイプライン処理を中心に シェルが得意なのはファイル入出力やパイプライン処理なので、複雑な構文はできるだけ使わず、これらの使用を中心としたコードを書きます。 PATH コマンドごとにフルパスを変数に格納するなどは手間なので、必要な環境変数$PATHをexportしておきます。 それでも必要な場合はフルパスを変数に格納しておきます。 標準出力、標準エラー出力のリダイレクト 標準出力(1)、標準エラー出力(2)はデフォルトは画面になっています。 それ以外にエラーメッセージを定義する場合、標準エラー出力(2)にリダイレクトします。

    bashシェルスクリプトの記述の仕方に関するメモ書き - Qiita
  • uniqコマンドで覚えておきたい使い方6個 | 俺的備忘録 〜なんかいろいろ〜

    uniqコマンドは、Linux/UNIXで使用される、重複した行を圧縮して出力してくれるコマンドだ。 今回は、このコマンドについて覚えておきたい使い方についてを紹介する。 1.基的な使い方 基的には、以下のように使用することで標準出力の内容から重複行を圧縮して表示させることが出来る。 [root@test-centos7 ~]# cat /test/test3.txt aaaaa aaaaa aaaaa bbbbb bbbbb bbbbb bbbbb bbbbb ccccc ccccc [root@test-centos7 ~]# cat /test/test3.txt | uniq aaaaa bbbbb ccccc この時注意したいのが、「連続していない行」の場合は圧縮しないという点だ。 たとえば、以下のような状態でuniqコマンドを実行しても、重複した行は残ってしまう。 [roo

  • シェル、ターミナル、コンソール、コマンドライン - Qiita

    いろいろ混同されがちなやつ。筆者もまったく混乱してないとは主張しがたい。 この記事は初版を2014年1月に書きはじめ、いまのバージョンを2015年4月頃に書いてたけど、擬似端末/仮想コンソールあたりの理解が怪しいのでお蔵入りになってました。ので、そのあたりの説明は微妙。 コマンドライン(command-line) 文字でコマンドを打ち込んで操作するインターフェイスのこと。 シェル(shell) 人間様がOSを操作するためのインターフェイスのこと。貝のようにOSの核(カーネル)を守ってるからシェルと呼ぶんだって噂。 大別すると コマンドラインシェル と グラフィカルシェル がある。 Unixシェル UNIXやUNIX-likeなOSで利用されるコマンドラインシェル。現代ではGNU BashやZ Shellなどが知られる。 Shellにもいくつかの系統があるが、主にBシェル(Bourne Sh

    シェル、ターミナル、コンソール、コマンドライン - Qiita
  • ローカルのシェルスクリプトをリモート実行する - どこでも見れるメモ帳

    はじめに 「ほぼ」同じ構成のサーバがN台あって,それぞれに対して同じスクリプトを実行したい。このときスクリプトはひとつに集約したい(=各サーバにスクリプト配置したくない)。こういうときって、どうするのが定番なんだろう・・・— Kensho (@ni66ling) February 14, 2015 ローカルのスクリプトをリモートで実行したいけどどうやれば?という話. どうやるのが定番なのか?は結局わかっていないが,一応できるにはできたのでメモ. やりかた sshコマンドにパイプでローカルのスクリプトを引き渡す.*1 $ cat [local_script.sh] | ssh [user]@[host] bash 補足: ローカルにおける変数をリモートスクリプト内で使うには プロセス置換*2を用いる. $ param="local" $ cat <(echo -e "param=\"${pa

    ローカルのシェルスクリプトをリモート実行する - どこでも見れるメモ帳
  • 大きなテキストファイルをawkで処理するときにcatで投げ込むのと、ファイル読み込みするのどっちが速いか比較 - カメニッキ

    追記が増えたので整理 経緯 2.5GBのテキストファイルを加工する必要があり、①vimで開いて加工→vim死亡②sublime textで開いて加工→sublime text死亡となったため、awkを用いて以下の様なコマンドを実行した。 $ cat sample.txt | awk '$5 ~ /((26|27|28|29|30)\/Jun|(01|02|03)\/Jul)/{ print }' > result.txt すると 「catいらなくね?」と指摘 さらにMATSUMOTO, Ryosuke (@matsumotory) | Twitter < 「キャッシュに入れて高速化してるんかと思った」 とコメントをもらいました。ので、どっちが速いかの検証です。 注意 加工の目的はログファイルからある期間だけの行を抜き取りたい 正規表現がいけてないのは気にしない 比較 awkにファイル指定す

    大きなテキストファイルをawkで処理するときにcatで投げ込むのと、ファイル読み込みするのどっちが速いか比較 - カメニッキ
  • bash で ls 結果を配列に入れる - Qiita

    --quoting-style=shellを指定すると必要に応じて'でクォートしてくれるため、 スペースや特殊文字に気を使わなくてよくなります。 動作考察 内部的には大体こんな感じで動作しているようです。 file name1、file name2というファイルがある場合。 ① 初期状態 eval ARRAY=("$(ls --quoting-style=shell)") ② プロセス置換 eval ARRAY=('file name1' 'file name2') ③ evalによる再評価 ARRAY=('file name1' 'file name2') 気になる場合はset -xvして追いかけてみてください。 補足 「必要に応じて」と書きましたが「ファイル名にスペースはアスタリスクなど、特殊な文字が入っていた場合」 と考えれば良いと思います。 そのあたりの曖昧さが気に入らない場合、-

    bash で ls 結果を配列に入れる - Qiita
  • spark: シェルスクリプトで棒グラフ表示

    B! 251 0 0 0 GitHubで面白そうなシェルスクリプトを探してる時に見つけた Spark by holman について。 数値を棒グラフ上に表示してくれるスクリプトです。 Spark 使用例 Spark Spark は数値群を引数に与えるか標準入力で与えてあげると その数値群を棒グラフに変換してくれるシェルスクリプトです。 インストールはGitHubのレポジトリ から直接sparkというスクリプトファイルを取ってきてPATHの通った所に入れるか、 MacであればHomebrewで $ brew install spark でsparkコマンドが使えるようになります。 使い方は非常にシンプルで $ spark 0 20 40 60 80 100 ▁▂▃▅▆█ こんな感じで数値を与えるとそれを棒グラフにしてくれます。 インプットに使える数字は少数も使えますが、 実際に使われる際には

    spark: シェルスクリプトで棒グラフ表示
  • 本当は使いたいけど使わないBashのTIPS - Qiita

    当は使いたいんだけどねー 仕事だとベンダーのUNIXサーバーが多いのでbashがなかったりします。 HP-UXとかマジに死んで欲しい。Solaris11は大好きです。 環境 CentOS 6.5 bash version 4.1.2 LINENO変数とFUNCNAME変数 当にbashが羨ましい。HP-UXAIXも何故bashを標準で搭載してくれないのだろう。 #!/bin/bash func1() { echo ${FUNCNAME}:${LINENO} } sub1() { echo ${FUNCNAME}:${LINENO} } func1 sub1

    本当は使いたいけど使わないBashのTIPS - Qiita
  • shellのtrapについて覚え書き - Qiita

    trap コマンドとは 実行中のプロセスに対するシグナルを検知し、指定された処理を返すコマンドです。 ・・・と、言ってもよくわからないと思います。 特に「シグナル」。 シグナル とは 実行中のプロセスに対して、特定のイベントを通知するために送出されるものです。 よく使用されるのは、プロセスを終了するためのシグナルである SIGINT や SIGKILL です。 シグナル送出に良く利用するのは、kill コマンドと、ショートカットで利用する Ctrl + C ではないでしょうか。 上記のコマンドは、プロセスの強制終了などで利用した事があると思います。 上記の強制終了の kill コマンドは、オプションで -9 を指定しています。 -9 は SIGKILL を意味し、指定したプロセスに対し強制終了のシグナルを送出します。 プロセスがこのシグナルを送られると、どんな状態であろうと強制終了させられ

    shellのtrapについて覚え書き - Qiita
  • シェル芸 - アンサイクロペディア

    シェル芸 (- げい) とは、現代においてもっとも過激と目されるCLIワンライナー原理主義の一派。武田久美子を教祖とし、夏になると信者は女も男も老いも若きも貝がらビキニで海辺をホーミタイする危険な思想である。 起源[編集] シェル芸の発祥は古く、なつやすみの感想文や学部レポートの執筆時に文字数稼ぎをねらった学生たちが、「~と考えられるが~つまり~とはいえ~」と、順接・逆接の接続詞を多用して一文を長引かせたことに由来する。 このようなデキの悪い学生が大学に進学し、UNIX系OSを触らせられると「パイプでコマンドつないだりxargs使うとカッコよくね?」と厨二病を発症してしまい、そのまま研究室に居座ったりすることでさらに悪化するとシェル芸信者となる。 現在[編集] GUIを搭載したLinuxディストリビューションのような似非UNIXの普及により、シェル芸はいったん廃れたかに見えた。しかし、20

    シェル芸 - アンサイクロペディア
    decoy2004
    decoy2004 2015/04/21
    絶対試すなよ!
  • Linux・UNIXのbashで使えるhistoryコマンドの実行結果に日時(タイムスタンプ)を出力させる | 俺的備忘録 〜なんかいろいろ〜

    LinuxやUNIXでbashを利用しているならば、historyコマンドにお世話になっている人も多いだろう。 そんなhistoryコマンド、デフォルトでは基的にコマンドの実行時間は記録されない。 test@ubuntu-server:~$ history | tail -10 368 screen 369 vim .screenrc 370 screen 371 ls -la 372 screen 373 vim .screenrc 374 screen 375 history | tail -10 376 clear 377 history | tail -10 test@ubuntu-server:~$ そんなhistoryコマンドの実行結果でタイムスタンプを出力させる場合は、「.bash_rc」に以下の一行を追記する。 これで、追記以後のログインからコマンドの実行時間を記録するよ

    decoy2004
    decoy2004 2015/04/20
    『shopt -s histappend # 「.bash_history」への記録方式を追記にする』
  • bashスクリプトで子プロセスを全部殺すイディオム - Qiita

    シェルスクリプトでバックグラウンドで子プロセスを動かしている場合、何も考えずに書くと元のプロセスを殺しても子プロセスが残ってしまいます。例えばこんな風に書くと:

    bashスクリプトで子プロセスを全部殺すイディオム - Qiita
  • 黒い画面で1秒未満のスリープを行うには - Qiita

    追記 実はフツーのsleepコマンドで出来た コメント欄で教えて頂いたように、今どきのLinuxOSXや他のUnix(自分はNetBSDで確認)でも小数点以下を指定することで1秒未満のスリープが出来ました。 追記ここまで やり方 PerlのTime::HiResのスリープを使えば、小数点以下の秒の指定ができる。 これをワンライナーで以下のように書けば、コマンドラインで1秒未満のスリープができる。

    黒い画面で1秒未満のスリープを行うには - Qiita