#author("2024-11-11T16:43:16+09:00","default:ogiwiki","ogiwiki")
#author("2024-11-13T14:33:07+09:00","default:ogiwiki","ogiwiki")
*コマンドラインの基礎 [#rdaab3bd]

**準備 [#uec4830c]
Ubuntu(Linux)をWindows(WSL)上で動かす
-Windowsでは伝統的なコマンドプロンプト(cmd.exe)やPowerShellが最初から使えるが、機能と汎用性の面からWSL上でLinuxを使うのがおすすめ。
-Windowsの標準の機能になって簡単にインストールして使用できるようになった
--WSLとは: [[Windows Subsystem for Linux>https://learn.microsoft.com/ja-jp/windows/wsl/about]]
--Ubuntu: https://www.ubuntulinux.jp/

***Windowsターミナルのインストール [#qf516138]
-Microsoft Storeなどから[[Windows Terminal>https://apps.microsoft.com/store/detail/windows-terminal/9N0DX20HK701]]をインストールしておくと使い勝手が良い
--コマンドプロンプトもPowerShellもUbuntuもおなじ端末アプリでタブを切り替えて利用できる


***WSLとUbuntuのインストール [#ucd40159]
-[[WSL を使用して Windows に Linux をインストールする>https://learn.microsoft.com/ja-jp/windows/wsl/install]]
--Windowsターミナル(またはPowershell)を管理者権限で起動(アプリ->Windowsターミナル->管理者として実行)して下記をコピペ
 wsl --install

***Macでは [#b467ca17]
-[[Homebrew>https://brew.sh/index_ja]]をインストールしておく
 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"


***起動 [#wf3fed74]
-スタートメニューからUbuntuを起動
--またはWindowsターミナルでUbuntuのタブを開く
--またはVSCodeのターミナルでUbuntuを開く
---VSCodeのWSL拡張を入れておく
--Macの人は代わりにターミナルを起動

**最低限知っておきたいコマンド [#l2d4c3a9]

***はじめに [#qb199492]
-コマンドの使い方を確認するには
--コマンド --help で使い方
 less --help
--man コマンド でマニュアル
 man less

-便利な機能
--TAB補完
--ヒストリ(↑↓)

-やりたいことを[[ChatGPT>https://chat.openai.com/]]に聞いてみるのもよい。ググるより効率がいい。

***sudo 管理者権限で実行 [#pb95035b]
-新しいアプリをインストールしたり、OSをアップデートするときには管理者権限で実行する。
-sudo の後にコマンドを実行するとパスワードを聞いてくる(1回入れるとしばらくは聞かれない)
 sudo ls

-※毎回お決まりのアップデート(Windows updateみたいなの)
 sudo apt update
 sudo apt upgrade


***サンプルテキストのダウンロード [#n7bb0c44]

-wget :webからファイルをダウンロードするツール
--インストール
 sudo apt install wget
--インストール(Mac)
 brew install wget

-[[日本国憲法 JPConstitution.txt(UTF8)>https://www.dropbox.com/scl/fi/ahwe6wd78u3rusqy6j4yl/JPConstitution.txt?rlkey=cwnsj0vtj7e6nnl5je40qmd0m&dl=1]] ※下のコマンドをターミナルにコピペしてダウンロード
 wget "https://www.dropbox.com/scl/fi/ahwe6wd78u3rusqy6j4yl/JPConstitution.txt?rlkey=cwnsj0vtj7e6nnl5je40qmd0m&dl=1" -O JPConstitution.txt

-[[こころ kokoro.txt(Shift_JIS)>https://www.dropbox.com/s/r89ahi6goxy5a2c/kokoro.txt&dl=1]]
 wget "https://www.dropbox.com/s/r89ahi6goxy5a2c/kokoro.txt&dl=1" -O kokoro.txt

***ファイル操作関連のコマンド [#hba42de3]
-pwd :今いるディレクトリ(フォルダ)
-ls :ファイルリストの表示
-cd :今いるディレクトリから移動
-mkdir :ディレクトリの作成
-mv :ファイルの移動・リネーム
-cp :ファイルのコピー
-rm :ファイルの削除

-unzip :zipファイルの展開(解凍)
--インストール
 sudo apt install unzip
--インストール(Mac)
 brew install unzip

***テキスト処理関連のコマンド [#c0600481]
-echo :文字列を出力
-less :テキストファイルを1ページごとに表示
--head :テキストファイルの先頭を表示
--tail :テキストファイルの末尾を表示
-wc :行数・文字数等を表示
-cut :列の取り出し
-sort :並べ替え
-uniq :重複の削除・集計
-grep :検索(正規表現)
 grep '正規表現' ファイル
-sed :置換(正規表現)
 sed -e 's/検索文字列/置換文字列/g' ファイル名

-iconv :標準的な文字コード変換プログラム

-nkf :日本語向けの文字コード変換(自動認識、改行コード変換も)
--インストール
 sudo apt install nkf
--インストール(Mac)
 brew install nkf

***ファイルの確認 [#b257835b]
-中身を表示(qを押して終了)
 less JPConstitution.txt


-行数や文字数を表示
 wc JPConstitution.txt
 wc -m JPConstitution.txt


-文字コードの変換
 nkf -S -w8 kokoro.txt |less
 nkf -S -w8 -Lu --overwrite kokoro.txt

-正規表現を使った置換(ルビを取り去る)((最短一致は拡張正規表現-E指定が必要))
 sed -E -e 's/《.+?》//g;s/[#.+?]//g' kokoro.txt >kokoro2.txt
--プログラムとして保存しておいて実行も
---下記をremoveruby.sedとして保存
 s/《.+?》//g
 s/[#.+?]//g
次のように実行
 sed -E -f removeruby.sed kokoro.txt >kokoro2.txt

-正規表現で検索
 grep '読[まみむめもん]' kokoro.txt


***ターミナル上のテキストエディタ [#af7d367b]
-vi :昔からのエディタで癖が強い
-nano :割と普通(だけどショートカットキーが〃)

-code :VSCodeで開く((code - とすると標準入力を受け取ってくれる))
 ls|code -

***標準入出力とパイプ [#qfb28871]

-> :ファイルなどに処理結果を出力
->> :追加出力
->> :〃 追加出力
-< :ファイルなどから入力
-| :出力を次のコマンドにつなぐ

***WSL関連(Windows) [#h66c337b]
-Explorerのアドレスバーにwslと打つと、今いるフォルダをカレントディレクトリにしてUbuntuのターミナルが開く
-Explorerのアドレスバーにwsl(またはbash)と打つと、今いるフォルダをカレントディレクトリにしてUbuntuのターミナルが開く
-Explorerのアドレスバーに\\wsl$と打つとUbuntuのファイル(ルート)が開ける

-UbuntuのターミナルからWindowsのコマンドが呼べる

 explorer.exe 

-最近はLinuxのGUIアプリも動くようになった

 xeyes

-ゲーム([[上海>https://ja.wikipedia.org/wiki/%E4%B8%8A%E6%B5%B7_(%E3%82%B2%E3%83%BC%E3%83%A0)]])をインストールして実行

 sudo apt install gnome-mahjongg
 gnome-mahjongg


-アンインストール
 sudo apt remove gnome-mahjongg

***シェルスクリプト [#y28deed5]
コマンドを並べたテキストファイルを .shファイルにまとめる(バッチファイル)と上から順に実行していくプログラムになる

-「こころ」のShift_JISテキストをダウンロードしてUTF-8に変換したのち、フリガナを取り除いたものをkokoro2.txtとして保存し、その文字数を出力するスクリプト [[kokoro-wc.sh>https://www.dropbox.com/scl/fi/qbl4vk6ba7pahrxnv9xmq/kokoro-wc.sh?rlkey=g3p6q4o4bapsbjaupy1zb721f&dl=1]]

--中身
 wget "https://www.dropbox.com/s/r89ahi6goxy5a2c/kokoro.txt&dl=1" -O kokoro.txt
 nkf -S -w8 -Lu --in-place kokoro.txt
 sed -E -e 's/《.+?》//g;s/[#.+?]//g' <kokoro.txt >kokoro2.txt 
 wc -m kokoro2.txt

--サンプルのスクリプトをダウンロード
 wget "https://www.dropbox.com/scl/fi/qbl4vk6ba7pahrxnv9xmq/kokoro-wc.sh?rlkey=g3p6q4o4bapsbjaupy1zb721f&dl=1" -O kokoro-wc.sh

--次のようにして実行
 bash kokoro-wc.sh

--または shファイルに実行可能フラグを付けると直接実行できる
 chmod +x *.sh
 ./kokoro-wc.sh


-シェルスクリプトは変数や制御構文も使えてもっと本格的なことができるが以下略

**参考 [#z4efe01c]
-[[言語処理100本ノック>https://nlp100.github.io/ja/]]
-[[とほほのUnix/Linux入門>https://www.tohoho-web.com/wwwunix.htm]]
-[[とほほのBash入門>https://www.tohoho-web.com/ex/shell.html]]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS