Linuxコマンドメモ
この記事は最終更新日から1年以上が経過しています。
芽萌丸プログラミング部@programming
投稿日 2019/10/28
更新日 2022/3/27 ✏

Linuxコマンドメモ

個人的に忘れやすいけどよく使うLinuxコマンドのメモです。(適時更新)

目次

検索

ファイル名を検索

## カレントディレクトリ配下で "hoge.txt" というファイルを検索:
$ find . -name "hoge.txt"

ファイル名を再帰的に検索

## カレントディレクトリ配下で "hoge.txt" というファイルを再帰的に検索:
$ find ./* | grep "hoge.txt"

特定の文字列が含まれるファイルを検索

## カレントディレクトリ配下で "hoge" が含まれるtxtファイルを検索:
$ grep -r "hoge" --include=*.txt ./
## 'require("fs")' または "require('fs')" を含む.jsファイルを再帰的に検索。
## 
## ただし、以下のディレクトリまたはファイル名を無視:
##  + node_modules ディレクトリ
##  + bundle.js なsuffixのファイル 
##
## NOTE: sオプションでエラーメッセージは無視。
grep -rs --regexp="require(\(\"\|'\)fs\(\"\|'\)" --include=*.js --exclude=*bundle.js --exclude-dir=node_modules ./

圧縮と解凍

zipコマンド版

zip圧縮:

# zip圧縮:
$ zip -r mydir.zip mydir/
# またはパスワード付きでzip圧縮:
$ zip -r -e mydir.zip mydir/
Enter password: ここでパスワードを入力
Verify password: ここでパスワードを再入力

zipの中身を確認:

# zip圧縮ファイルの中身を確認:
$ unzip -l mydir.zip

zip解凍:

# zip圧縮ファイルを解凍:
$ unzip mydir.zip

tarコマンド版

tar.gz圧縮:

# tarでgzip圧縮 (czオプション):
$ tar czfv mydir.tar.gz mydir/

tar.gzの中身を確認:

# gzip圧縮ファイルの中身を確認 (tzオプション):
$ tar tzfv mydir.tar.gz

tar.gzを解凍:

# gzip圧縮ファイルを解凍 (xzオプション):
$ tar xzfv mydir.tar.gz

NOTE:tarコマンドは複数のファイルを一つにまとめるコマンドです。gzipコマンドではフォルダを圧縮できないため、tarコマンドにczオプションを付けることで、フォルダを一旦一つのファイルにまとめてからgzip圧縮を行っています。

gzip圧縮されたテキストファイルを直接読む

$ zcat ./access.log.1.gz | less

リモートコピー

リモートへアップロード

ローカルのhoge.txtをsshでリモートサーバへアップロード:

$ scp -i ~/.ssh/secret.key hoge.txt user@remotehost:/tmp/hoge.txt
# もしくは:
$ rsync -avz --progress -e 'ssh -i ~/.ssh/secret.key' ./hoge.txt user@remotehost:/tmp/hoge.txt

リモートからダウンロード

$ scp -i ~/.ssh/secret.key user@remotehost:/tmp/hoge.txt ./hoge.txt
# もしくは:
$ rsync -avz --append-verify --progress -e 'ssh -i ~/.ssh/secret.key' user@remotehost:/tmp/hoge.txt ./hoge.txt

TIP:rsyncコマンドに--append-verifyオプションを付けることで、万が一途中で通信が途切れてしまっても同じコマンドを叩けば途中からダウンロードを再開できます。

Bluetooth

Bluetoothでファイル送信

ターミナルからBluetooth経由でファイル送信を参照。

ディスク

マウントポイント確認

$ findmnt 
TARGET                                SOURCE         FSTYPE          OPTIONS
/                                     /dev/nvme0n1p1 ext4            rw,relatime,errors=remount-ro,data=ordered
├─/sys                                sysfs          sysfs           rw,nosuid,nodev,noexec,relatime
│ ├─/sys/kernel/security              securityfs     securityfs      rw,nosuid,nodev,noexec,relatime
│ ├─/sys/fs/cgroup                    tmpfs          tmpfs           ro,nosuid,nodev,noexec,mode=755
│ │ ├─/sys/fs/cgroup/systemd          cgroup         cgroup          rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd
│ │ ├─/sys/fs/cgroup/memory           cgroup         cgroup          rw,nosuid,nodev,noexec,relatime,memory
│ │ ├─/sys/fs/cgroup/devices          cgroup         cgroup          
...

ディスクの空き容量等を確認

$ df -Th

Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  3.8G     0  3.8G   0% /dev
tmpfs          tmpfs     778M  9.3M  769M   2% /run
/dev/xxxxxxxp1 ext4      230G  151G   68G  70% /
...

or

$ findmnt -D
SOURCE         FSTYPE            SIZE   USED  AVAIL USE% TARGET
udev           devtmpfs          3.8G      0   3.8G   0% /dev
tmpfs          tmpfs           777.6M   9.3M 768.4M   1% /run
/dev/nvme0n1p1 ext4            229.1G 188.5G  28.9G  82% /
...

特定ディレクトリのディスク使用サイズを確認

$ du -sch ~/ダウンロード/

15G /home/user/ダウンロード/
15G 合計

ディスク使用サイズの大きいフォルダTOP5を表示

カレントディレクトリ直下でディスク使用サイズの大きいフォルダTOP5を表示:

$  du -hs * | sort -rh | head -5

14G var
5.8G  home
1.5G  usr
926M  lib
156M  boot

ディスク使用サイズの大きいファイルorフォルダTOP5を表示

カレントディレクトリ配下でディスク使用サイズの大きいファイルorフォルダTOP5を表示:

$ find -type f -exec du -Sh {} + | sort -rh | head -n 5

4.7G  ./most/large/folder
45M ./hoge/foo.txt
44M ./bar
27M ./baz/aaa.txt
17M ./baz/bbb.txt

音声・動画データ操作

音声・動画データをトリミング

## 12.34〜56.78秒までの動画データを抽出: (wavファイルなどの音声データにも対応)
$ ffmpeg -i input.mp4 -ss 00:00:12.34 -to 00:00:56.78 -strict -2 output.mp4

音声・動画データを結合

## 1. 結合したいメディアファイルのリストを作成:
$ echo "file 'input1.mp4'
file 'input2.mp4'
" > mylist.txt
### 2. ffmpegでリストを指定して結合:
$ ffmpeg -f concat -i mylist.txt -strict -2 output.wav

芽萌丸プログラミング部
芽萌丸プログラミング部@programming
プログラミング関連アカウント。Web標準技術を中心に書いていきます。フロントエンドからサーバサイドまで JavaScript だけで済ませたい人たちの集いです。記事は主に @TanakaSoftwareLab が担当。