京橋のバイオインフォマティシャンの日常

南国のビーチパラソルの下で、Rプログラムを打ってる日常を求めて、、Daily Life of Bioinformatician in Kyobashi of Osaka

ChatGPTの現状理解とR関数&パッケージ作成への活用

先日5月17日に、研究会でトークしたスライドです。

speakerdeck.com

  • ChatGPTの現状理解
    • OpenAI社について
    • ChatGPTとは?
    • GPT-3.5とGPT-4
    • フロンプトとは?
    • ChatGPTの得意なこと・苦手なこと(事例とTipsも)
  • R関数&パッケージ作成への活用
    • GPT API keyの取得
    • gptstudioパッケージを使って、RStudio上でChatGPTを使用する事例の紹介

【LINUX/Macの基本コマンド⑧】圧縮ファイルを解凍せずに、ファイル一覧やファイルの中身を閲覧するコマンドについて【zip/gz編】

はじめに

Linux/Mac環境では圧縮されたファイルの中身を閲覧するときに、 わざわざ、ファイル解凍をしなくても、中身を確認することができます。

ただし、圧縮形式によっては、 複数ファイルを一緒に圧縮できる形式(zipやtar.gzなど)であるのか、 1つずつのファイルごとに圧縮する形式(gzなど)であるのか が変わってきます。よって、ファイルの中身の表示され方も変わってきます。

圧縮ファイルを解凍すると、一時的にでも大きなファイルが生成されるので、 解凍しなくて確認できれば、その余分な生成を避けることができます。 知っていると、とても便利な方法です。

それでは、圧縮ファイルを解凍せずに、中身を見る方法を紹介していきます。

実行環境

M1 Mac環境で実行しています。

macOS Big Sur (バージョン11.5.2)
MacBook Air (M1, 2020)
チップ Apple M1
メモリ 16GB

まずは、ファイルを圧縮する

まずは、適当なテキストファイルを圧縮(zip/gz)します。

#ファイル内表示
cat test.txt

#hoge 1
#hoge 2
#hoge 3
#hoge 4
#hoge 5
#hoge 6
#hoge 7
#hoge 8
#hoge 9
#hoge 10

#zip圧縮: -rオプションで、ファイル名を指定する
zip -r test.zip test.txt

#gz圧縮: -kオプションで元ファイルを残す
gzip -k test.txt

#詳細表示
ls -lh

#-rw-r--r--@ 1 sas  staff    81B  1 18 18:10 test.txt
#-rw-r--r--@ 1 sas  staff    64B  1 18 18:10 test.txt.gz
#-rw-r--r--  1 sas  staff   203B  1 18 18:32 test.zip

zipとgzipコマンドを用いて、ファイル圧縮を行いました。 次に、これらのファイルを使って、解凍せず表示というのをやってみます。

解凍せずに、zipファイルに含まれるファイル一覧を表示する

まずは、zip圧縮ファイルを使って実行します。 ここでは、zipinfoあるいはunzip -Zコマンドを使うことで、 圧縮されたファイルに含まれるファイル一覧が表示できます。・

#ZIPファイル内の情報の表示
zipinfo -lht test.zip
#Archive:  test.zip
#Zip file size: 203 bytes, number of entries: 1
#-rw-r--r--  3.0 unx       81 tx       37 defN 23-Jan-18 18:10 test.txt
#1 file, 81 bytes uncompressed, 37 bytes compressed:  54.3%

#unzip実行
unzip -Z test.zip
#Archive:  test.zip
#Zip file size: 203 bytes, number of entries: 1
#-rw-r--r--  3.0 unx       81 tx defN 23-Jan-18 18:10 test.txt
#1 file, 81 bytes uncompressed, 37 bytes compressed:  54.3%

両コマンドで、表示結果は同じで、圧縮率まで表示されます。 今回の圧縮率は、54.3%となっていますね。

解凍せずに、gzファイルの中身を閲覧する

次に、gz圧縮ファイルを使ってやってみます。 gz圧縮形式だと、必ず1つずつファイル圧縮されているので、 この実行でファイルの中身(テキスト文)まで表示されます。

コマンドとしては、zcatgzip -dcあるいはgunzip -cを使います。

zcatは、「gzip」コマンドなどで圧縮された圧縮ファイルの中身を表示するときの専用コマンドですね。 ただ、Macの場合、zcatの代わりに、gzcatを使うみたいです。

それでは、実行してみます。

#(LINUX)圧縮ファイルの中身の表示
zcat test.txt.gz

#(Mac)圧縮ファイルの中身の表示
gzcat test.txt.gz
#hoge 1
#hoge 2
#hoge 3
#hoge 4
#hoge 5
#hoge 6
#hoge 7
#hoge 8
#hoge 9
#hoge 10

#gzipでの実行方法
gzip -dc test.txt.gz
#(省略)

#gunzipでの実行方法
gunzip -c test.txt.gz
#(省略)

gzipの-dcオプションは、展開と標準出力を意味します。 また、gunzipの-cオプションは、標準出力のみを実行します。

当然ながら、3つの方法とも、同じ出力結果となりますので、省略してます。

解凍せずに、gzファイルの中身を部分的に閲覧する

続いて、ファイル内をすべて表示されると冗長なとき、 ファイルの一部分のみを表示させたくなります。

そこで、実行の際にheadやtailをパイプで組み合わせることで、 先頭から数行とか、最終行から数行とかを部分を切り取って表示することができます。

例えば、gz圧縮されたファイル内の先頭から4行のみを表示したい場合には、以下のように実行します。

#(Mac)gzcat実行
gzcat test.txt.gz | head -n 4
#hoge 1
#hoge 2
#hoge 3
#hoge 4

#gzip実行
gzip -dc test.txt.gz | head -n 4

#gunzip実行
gunzip -c test.txt.gz | head -n 4

ちなみに、gz圧縮されたファイル内の最終行までの4行を表示したい場合には、以下と実行します。

#(Mac)gzcat実行
gzcat test.txt.gz | tail -n 4
#hoge 7
#hoge 8
#hoge 9
#hoge 10

#gzip実行
gzip -dc test.txt.gz | tail -n 4

#gunzip実行
gunzip -c test.txt.gz | tail -n 4

「先頭から4行」、「最終行までの4行」というかたちで、それぞれ出力できました。

まとめ 

このやり方を知れば、zipやgz形式の圧縮ファイルが現れても、 中身が見えて、安心ですね。。www

参考資料

qiita.com

atmarkit.itmedia.co.jp

【LINUX/Macの基本コマンド⑦】df/duコマンドで、ディスクの空き容量・使用量を知ろう

はじめに

dfduという、2つのコマンドを紹介します。 ハードディスクの容量監視をする上で、重要なコマンドなので、ぜひ知っておこう。

dfコマンドはディスクの空き領域を知るコマンド、 一方で、duコマンドはディスクの使用量を出力するコマンドとなります。

各コマンドについて、オプションと具体的な実行例を紹介します。

実行環境

M1 Mac環境です。

macOS Big Sur (バージョン11.5.2)
MacBook Air (M1, 2020)
チップ Apple M1
メモリ 16GB

dfコマンドの実行例

dfコマンドを実行すると、ディスクの各空き領域のサイズを計算して表示してくれます。 オプションとしては、-lhくらいがお勧めです。lはローカルのみ、hはサイズに単位をつけます。

あと、dfコマンドは、副次的に、ハードディスク全体のサイズや各割り当ても知ることができます。個人的には、主にこっちの使い方が便利かもですね。

ではでは、dfの基本的な実行例は以下の通りです。

#基本的な使い方
df -lh

#Filesystem       Size   Used  Avail Capacity iused      ifree %iused  Mounted on
#/dev/disk3s1s1  228Gi   21Gi   49Gi    30%  553781 2393071179    0%   /
#/dev/disk3s6    228Gi  1.0Gi   49Gi     2%       1 2393624959    0%   /System/Volumes/VM
#/dev/disk3s2    228Gi  404Mi   49Gi     1%    1180 2393623780    0%   /System/Volumes/Preboot
#/dev/disk3s4    228Gi  616Mi   49Gi     2%     211 2393624749    0%   /System/Volumes/Update
#/dev/disk1s2    500Mi  6.0Mi  481Mi     2%       5    5119995    0%   /System/Volumes/xarts
#/dev/disk1s1    500Mi  7.5Mi  481Mi     2%      36    5119964    0%   /System/Volumes/iSCPreboot
#/dev/disk1s3    500Mi  648Ki  481Mi     1%      37    5119963    0%   /System/Volumes/Hardware
#/dev/disk3s5    228Gi  154Gi   49Gi    76% 1189578 2392435382    0%   /System/Volumes/Data
#/dev/disk2s1    5.0Gi  1.9Gi  3.1Gi    38%      60   52428300    0%   /System/Volumes/Update/SFR/mnt1
#/dev/disk3s1    228Gi   21Gi   49Gi    30%  553724 2393071236    0%   /System/Volumes/Update/mnt1

duコマンドの実行例

duコマンドは、フォルダ・ディレクトリごとにサイズを集計して出力します。 また、デフォルトなら、作業ディレクトリ、および全てのサブディレクトリの使用サイズを集計します。

実際、サブディレクトを含めて全て展開すると、 表示が冗長なので、-h -d 1あたりのオプションを用いてます。

-hは単位表示、-d 1は集計するディレクトリの深さを1階層のみにする設定です。

では、duの基本的な実行例は以下の通りです。

#基本的な使い方
du -h -d 1

#少し応用事例 with grep
du -h -d 1 | grep -v '[.]/[.]'

# 11G  ./Research
# 64M  ./Music
#248K  ./ResearchMap_skume
#509M  ./Pictures
#1.6G  ./mecab-ipadic-neologd
# 25G  ./Desktop
# 12G  ./Library
#  0B  ./Public
#860K  ./Movies
#  0B  ./Applications
#474M  ./Dropbox
#519M  ./Documents
#365M  ./Downloads
#797M  ./miniconda
# 53G  .

まとめ

dfとduコマンドの実行時の違いを解説しました。

dfとduは時々使いますが、 実際、どちらがどっちだったかよく不明になります。 とりあえず、両方とも実行します。。