- 投稿日:2020-02-14T23:58:49+09:00
Linux or macのbashでコマンドラインの内容をマウスなしでコピペする方法
参考にした記事
- Linux or macのbashでコマンドラインの内容をマウスなしでコピペする方法
https://saltiga.hatenablog.com/entry/2020/02/14/235139
コマンドラインの内容をコピーするのにマウスを使いたくない
catとかで出力した内容をそのままコピーしたい!!
Tmuxのコピーモードを使う
tmuxをインストール
↓
以下のファイルを作成
~/.tmux.confset-option -g default-command "exec reattach-to-user-namespace -l $SHELL" setw -g mode-keys vi bind-key -T copy-mode-vi v send-keys -X begin-selection bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy" bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"↓
Ctrl+b+[ でコピーモードに入れる。
vimと同じようにカーソル移動、yでヤンク可能。
他にいい方法があったらコメント欄で教えてください
- 投稿日:2020-02-14T23:49:41+09:00
DeskMini A300 に Arch Linux をインストール
USB インストールメディアの作成
以下の手順を進める前に Arch Linux のインストールイメージ (.iso) をダウンロードします。
https://www.archlinux.jp/download/ミラーからインストールイメージを取得した場合、ファイルの署名検証が推奨されます。以下では OpenSSL を使用して SHA-1 ハッシュを計算しています。このハッシュ値が本家で公開されているハッシュと一致することを確認します。
% openssl sha1 /path/to/arch.iso SHA1(/path/to/arch.iso)= c71fdff7f793888d7f53aa5e0685602e3167825c
以下の手順はインストールメディア作成に使用する OS によって異なります。
MAC OS X
まず、USB デバイスの名前を確認します。
% diskutil list
Mac OS X では USB デバイスが自動的にマウントされます。この状態ではインストールイメージを書き込めないため、手動でアンマウントします。
% diskutil unmountDisk /dev/diskN
インストールイメージを書き込みます。
/dev/diskN
の代わりに/dev/rdiskN
を使用することで高速に転送できます。接頭辞のr
は raw モードを意味しています。% sudo dd if=/path/to/arch.iso of=/dev/rdiskN bs=1M
ライブ環境
Arch Linux のインストールメディアを書き込んだ USB デバイスをインストール対象のコンピュータに挿入し、この USB デバイスを起動ディスクとしてシステムを起動します。DeskMini A300 の場合は何も設定しなくても勝手に起動しました。
ロケール
最初にフォントとキーボードレイアウトの設定を行います。ここでの設定は永続化されるものではなく、必須ではありませんが、コンソールからの操作が続くため作業しやすい環境を整えておきましょう。
筆者の場合、4K テレビに HDMI 出力したこともあって、文字が小さすぎて何も読めなかったので適当に大きめのフォントに変更しました。また、日本語キーボードを使いたかったのでキーマップも変更しました。
# setfont sun12x22 # loadkeys jp106パーティション分割
ライブ環境から認識されているディスクの一覧を確認します。
# fdisk -lディスクの名前を確認したら、対象のディスクを指定してパーティションを作成します。UEFI ブート用の
/boot
パーティションについては一定のルールがあるため以下の指示に従って作成してください。それ以外のパーティションについてはファイルシステムもサイズも自由です。ここではファイルシステムとして ext4 を選択し、/
パーティションだけを作成しました。# parted /dev/nvme0n1 (parted) mklabel gpt (parted) mkpart ESP fat32 1MiB 513MiB (parted) set 1 boot on (parted) set 1 esp on (parted) mkpart primary ext4 513MiB 100% (parted) quitファイルシステムに応じた適切なユーティリティを使用して各パーティションをフォーマットします。
# fdisk -l Disk /dev/nvme0n1: 465.78 GiB, 500107862016 bytes, 976773168 sectors Device Start End Sectors Size Type /dev/nvme0n1p1 2048 1050623 1048576 512M EFI System /dev/nvme0n1p2 1050624 976773119 975722496 465.3G Linux filesystem # mkfs.fat -F32 /dev/nvme0n1p1 # mkfs.ext4 /dev/nvme0n1p2Arch Linux をインストールするため、パーティションをマウントしておきます。
# mount /dev/nvme0n1p2 /mnt # mkdir /mnt/boot # mount /dev/nvme0n1p1 /mnt/bootベースシステムのインストール
署名鍵の検証には日時が必要なので、NTP を使って時刻を同期しておきます。
# timedatectl set-ntp true次にパッケージを取得するミラーサーバーを指定します。
vim
などを使用して/etc/pacman.d/mirrorlist
を編集してください。距離的に近い日中韓の HTTP サーバーを上位に移動するのが良いでしょう。一般的に、都度接続が必要になる FTP よりもキープアライブを利用できる HTTP の方が高速とのことです。準備ができたら
pacstrap
スクリプトを使用して base パッケージと Linux カーネル、ファームウェアをインストールします。# pacstrap /mnt base linux linux-firmwarefstab の作成
先程作成したパーティションが自動的にマウントされるように
genfstab
コマンドを使用して/etc/fstab
を作成しておきます。# genfstab -U /mnt >> /mnt/etc/fstabシステムの設定
今までは USB インストールメディアのライブ環境を
/
としていました。以下のコマンドを実行すると、pacstrap
で Arch Linux をインストールした/mnt
以下が/
とて扱われるようになります。# arch-chroot /mntパッケージインストール
pacman -Syu
を使用して必要なパッケージをインストールします。以下にパッケージの例を示します。
Package Repository Description amd-ucode core AMD プロセッサ用のマイクロコード (ファームウェア更新) intel-ucode extra Intel プロセッサ用のマイクロコード (ファームウェア更新) openssh core SSH サーバーとクライアント pacman-contrib community pacman 関連のユーティリティ sudo core ユーザーが別のユーザーの権限でコマンドを実行するコマンド vim extra テキストエディタ zsh extra 高機能なコマンドシェル DeskMini A300 では AMD の Ryzen や Athlon を搭載しているはずなので
amd-ucode
をインストールします。intel-ucode
は不要です。Intel の CPU を搭載している場合は逆です。タイムゾーン
システムのタイムゾーンはシンボリックリンクで指定します。
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtimeハードウェアクロックを NTP で同期したシステムクロックに合わせます。ハードウェアクロックとはマザーボードに記録されている時刻のことで、システムがシャットダウンされている間も時計が動き続けます。次にシステムを起動したときにハードウェアクロックを読み込むことで自動的にシステムクロックが設定されます。
ここではハードウェアクロックにシステムクロックと同じ UTC 時間を記録します。自動的に生成される
/etc/adjtime
にハードウェアクロックが UTC 時間である旨が記載されています。# hwclock --systohc --utcロケール
/etc/locale.gen
を編集し、使用するロケールをアンコメントしてください。例えば、en_US.UTF-8 UTF-8
とja_JP.UTF-8 UTF-8
をアンコメントします。その後でlocal-gen
スクリプトを実行することで実際にそのロケールが有効になります。# local-genシステムロケールを設定します。
/etc/locale.confLANG=en_US.UTF-8必要に応じてフォントとキーボードレイアウトを設定しておきます。
/etc/vconsole.confFONT=sun12x22 KEYMAP=jp106ホスト名
このコンピュータの名前を
/etc/hostname
に書き込んでください。# echo your-hostname > /etc/hostname同じ名前を
/etc/hosts
にも書き込みます。/etc/hosts127.0.0.1 localhost 127.0.1.1 your-hostname ::1 localhostパスワード
root ユーザーのパスワードを設定します。
# passwdブートローダのインストール
EFI システムパーティションに systemd-boot をインストールします。
# bootctl --path=/boot install
/
パーティションの UUID を確認します。# ls -l /dev/disk/by-uuid total 0 lrwxrwxrwx 1 root root 15 Feb 14 22:01 5a534876-bb2f-4fd3-880e-9244235d42c3 -> ../../nvme0n1p2 lrwxrwxrwx 1 root root 15 Feb 14 22:01 1234-5678 -> ../../nvme0n1p1Arch Linux を起動するローダーの設定を
/boot/loader/entries
以下に追加します。Intel プロセッサを使用している場合は/amd-ucode.img
を/intel-ucode.img
に置き替えてください。また、UUID には先程確認した/
パーティションの UUID を指定してください。/boot/loader/entries/arch.conftitle Arch Linux linux /vmlinuz-linux initrd /amd-ucode.img initrd /initramfs-linux.img options root=UUID=5a534876-bb2f-4fd3-880e-9244235d42c3 rwブートローダーの設定ファイル
/boot/loader/loader.conf
を編集します。/boot/loader/loader.confdefault arch timeout 5 editor no
再起動
chroot 環境から抜けてコンピュータを再起動してください。USB デバイスを取り除いても先程のブートローダーからシステムを起動できるようになっているはずです。
# exit # umount -R /mnt # rebootネットワーク設定
ネットワーク・インタフェースの確認
以下のコマンドでネットワーク・インタフェースの名前を確認してください。
# /ls -l /sys/class/net total 0 lrwxrwxrwx 1 root root 0 Feb 14 22:01 enp2s0 -> ../../devices/pci0000:00/0000:00:01.7/0000:02:00.0/net/enp2s0 lrwxrwxrwx 1 root root 0 Feb 14 22:01 lo -> ../../devices/virtual/net/loIP アドレス
ネットワークの設定は systemd-networkd を使用して管理します。以下は DHCP を使用する場合の設定ファイルです。
/etc/systemd/network/wired-dhcp.network[Match] Name=enp2s0 [Network] DHCP=ipv4固定 IP アドレスを使用する場合は以下のようになります。
/etc/systemd/network/wired-static.network[Match] Name=enp2s0 [Network] Address=192.168.0.16/24 Gateway=192.168.0.1 DNS=8.8.8.8システムの起動時に systemd-networkd が自動的に実行されるようにしておきます。また、設定を反映するために一度サービスを再起動します。
# systemctl enable systemd-networkd # systemctl restart systemd-networkdDNS
全ての名前解決を systemd 経由にするために以下のシンボリックリンクを作成します。
# ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf名前解決機能を提供する systemd-resolved サービスを有効にします。
# systemctl enable systemd-resolved # systemctl restart systemd-resolvedSSH
SSH ログインを有効にしておきましょう。設定ファイルは
/etc/ssh/sshd_config
に存在しますが、設定を変更しなくても root 以外のユーザではログインできるため、設定の変更は後回しにしても良いでしょう。# systemctl enable sshd # systemctl restart sshdユーザー
全ての操作を root 権限で実行するのは非常に危険です。管理用のユーザーを作成し、root 権限が必要なときにだけ
sudo
を実行する運用を推奨します。ユーザーの追加
ユーザーの追加には
useradd
コマンドを使用します。伝統的に root 権限を取得できるユーザーグループの名称は wheel です。# useradd -m -G wheel -s /bin/zsh pttknysudo の設定
/etc/sudoers
の以下の行をアンコメントすることで wheel グループのユーザーがsudo
を使用できるようになります。/etc/sudoers%wheel ALL=(ALL) ALL
- 投稿日:2020-02-14T23:22:52+09:00
rpmとyumとリポジトリがピンとこなかったので調べてみた
つよつよエンジニアの方にお願い
間違ってるところがあれば優しくご指摘ください!
はじめに
rpm,yum,リポジトリの関係がいまいち分からなかったので調べてみました
自分的にはしっくりきてますrpm
パッケージをインストールしたりアンインストールしたりするツール
依存関係にあるパッケージをインストールしないyum
パッケージをインストールしたりアンインストールしたりするツール
rpmと違って依存関係にあるパッケージをインストールしてくれるyumリポジトリにあるパッケージをインストールできる
yumリポジトリにないパッケージはインストールできないパッケージをインストールするにはそのパッケージが保管されているyumリポジトリをシステムに追加する必要がある
そしてyumリポジトリを追加するには専用のパッケージをインストールする必要があるパッケージはyumリポジトリに保管されているのにパッケージをインストールするってどうゆうこと?と思うかもしれないけどどうやらリポジトリを追加する専用のパッケージがあるっぽい
パッケージには2種類あると考えるといい
種類1. リポジトリ追加用のパッケージ
種類2. 種類1以外のパッケージ「種類1以外のパッケージ」はyumリポジトリからしかインストールできないけど、「リポジトリ追加用のパッケージ」はyumリポジトリがなくてもrpmコマンドでインストールできる
yumリポジトリ
yumリポジトリを追加する = リポジトリの保管場所(url)を/etc/yum.repos.d/配下に記す ということ
リポジトリ追加用パッケージをシステムにインストールすることで/etc/yum.repos.d/配下に拡張子が.repoのファイルが作成される
.repoファイルの中身はこんな感じで複数のかたまりで構成されている
[リポジトリid]
name=リポジトリ名
base_url=リポジトリの保管場所[リポジトリid]
name=リポジトリ名
base_url=リポジトリの保管場所[リポジトリid]
name=リポジトリ名
base_url=リポジトリの保管場所この1つ1つのかたまりをサブリポジトリと呼ぶ
サブリポジトリはリポジトリID,リポジトリ名,リポジトリの場所(url)などで構成されている(最小構成はこの3つ)
サブリポジトリ毎に有効,無効を設定することができる
yum info パッケージ名 などでパッケージを探す時は有効になっているサブリポジトリの中から探している
まとめ
yumリポジトリを追加する時に
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm -y
のようにrpmパッケージをインストールしているのが意味不明だったけどリポジトリ追加用にパッケージがあると考えたら納得できる
rpm -qi mysql80-community-release-el7-3.noarch
とかで情報を見ると概要欄にリポジトリ追加用パッケージだよ的なことが書いてあるので気になる方は見てみてください
- 投稿日:2020-02-14T23:20:45+09:00
DeskMini A300 に Arch Linux をインストール
USB インストールメディアの作成
以下の手順を進める前に Arch Linux のインストールイメージ (.iso) をダウンロードします。
https://www.archlinux.jp/download/ミラーからインストールイメージを取得した場合、ファイルの署名検証が推奨されます。以下では OpenSSL を使用して SHA-1 ハッシュを計算しています。このハッシュ値が本家で公開されているハッシュと一致することを確認します。
% openssl sha1 /path/to/arch.iso SHA1(/path/to/arch.iso)= c71fdff7f793888d7f53aa5e0685602e3167825c
以下の手順はインストールメディア作成に使用する OS によって異なります。
MAC OS X
まず、USB デバイスの名前を確認します。
% diskutil list
Mac OS X では USB デバイスが自動的にマウントされます。この状態ではインストールイメージを書き込めないため、手動でアンマウントします。
% diskutil unmountDisk /dev/diskN
インストールイメージを書き込みます。
/dev/diskN
の代わりに/dev/rdiskN
を使用することで高速に転送できます。接頭辞のr
は raw モードを意味しています。% sudo dd if=/path/to/arch.iso of=/dev/rdiskN bs=1M
ライブ環境
Arch Linux のインストールメディアを書き込んだ USB デバイスをインストール対象のコンピュータに挿入し、この USB デバイスを起動ディスクとしてシステムを起動します。DeskMini A300 の場合は何も設定しなくても勝手に起動しました。
ロケール
最初にフォントとキーボードレイアウトの設定を行います。ここでの設定は永続化されるものではなく、必須ではありませんが、コンソールからの操作が続くため作業しやすい環境を整えておきましょう。
筆者の場合、4K テレビに HDMI 出力したこともあって、文字が小さすぎて何も読めなかったので適当に大きめのフォントに変更しました。また、日本語キーボードを使いたかったのでキーマップも変更しました。
# setfont sun12x22 # loadkeys jp106パーティション分割
ライブ環境から認識されているディスクの一覧を確認します。
# fdisk -lディスクの名前を確認したら、対象のディスクを指定してパーティションを作成します。UEFI ブート用の
/boot
パーティションについては一定のルールがあるため以下の指示に従って作成してください。それ以外のパーティションについてはファイルシステムもサイズも自由です。ここではファイルシステムとして ext4 を選択し、/
パーティションだけを作成しました。# parted /dev/nvme0n1 (parted) mklabel gpt (parted) mkpart ESP fat32 1MiB 513MiB (parted) set 1 boot on (parted) set 1 esp on (parted) mkpart primary ext4 513MiB 100% (parted) quitファイルシステムに応じた適切なユーティリティを使用して各パーティションをフォーマットします。
# fdisk -l Disk /dev/nvme0n1: 465.78 GiB, 500107862016 bytes, 976773168 sectors Device Start End Sectors Size Type /dev/nvme0n1p1 2048 1050623 1048576 512M EFI System /dev/nvme0n1p2 1050624 976773119 975722496 465.3G Linux filesystem # mkfs.fat -F32 /dev/nvme0n1p1 # mkfs.ext4 /dev/nvme0n1p2Arch Linux をインストールするため、パーティションをマウントしておきます。
# mount /dev/nvme0n1p2 /mnt # mkdir /mnt/boot # mount /dev/nvme0n1p1 /mnt/bootベースシステムのインストール
署名鍵の検証には日時が必要なので、NTP を使って時刻を同期しておきます。
# timedatectl set-ntp true次にパッケージを取得するミラーサーバーを指定します。
vim
などを使用して/etc/pacman.d/mirrorlist
を編集してください。距離的に近い日中韓の HTTP サーバーを上位に移動するのが良いでしょう。一般的に、都度接続が必要になる FTP よりもキープアライブを利用できる HTTP の方が高速とのことです。準備ができたら
pacstrap
スクリプトを使用して base パッケージと Linux カーネル、ファームウェアをインストールします。# pacstrap /mnt base linux linux-firmwarefstab の作成
先程作成したパーティションが自動的にマウントされるように
genfstab
コマンドを使用して/etc/fstab
を作成しておきます。# genfstab -U /mnt >> /mnt/etc/fstabシステムの設定
今までは USB インストールメディアのライブ環境を
/
としていました。以下のコマンドを実行すると、pacstrap
で Arch Linux をインストールした/mnt
以下が/
とて扱われるようになります。# arch-chroot /mntパッケージインストール
pacman -Syu
を使用して必要なパッケージをインストールします。以下にパッケージの例を示します。
Package Repository Description amd-ucode core AMD プロセッサ用のマイクロコード (ファームウェア更新) intel-ucode extra Intel プロセッサ用のマイクロコード (ファームウェア更新) openssh core SSH サーバーとクライアント pacman-contrib community pacman 関連のユーティリティ sudo core ユーザーが別のユーザーの権限でコマンドを実行するコマンド vim extra テキストエディタ zsh extra 高機能なコマンドシェル DeskMini A300 では AMD の Ryzen や Athlon を搭載しているはずなので
amd-ucode
をインストールします。intel-ucode
は不要です。Intel の CPU を搭載している場合は逆です。タイムゾーン
システムのタイムゾーンはシンボリックリンクで指定します。
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtimeハードウェアクロックを NTP で同期したシステムクロックに合わせます。ハードウェアクロックとはマザーボードに記録されている時刻のことで、システムがシャットダウンされている間も時計が動き続けます。次にシステムを起動したときにハードウェアクロックを読み込むことで自動的にシステムクロックが設定されます。
ここではハードウェアクロックにシステムクロックと同じ UTC 時間を記録します。自動的に生成される
/etc/adjtime
にハードウェアクロックが UTC 時間である旨が記載されています。# hwclock --systohc --utcロケール
/etc/locale.gen
を編集し、使用するロケールをアンコメントしてください。例えば、en_US.UTF-8 UTF-8
とja_JP.UTF-8 UTF-8
をアンコメントします。その後でlocal-gen
スクリプトを実行することで実際にそのロケールが有効になります。# local-genシステムロケールを設定します。
/etc/locale.confLANG=en_US.UTF-8必要に応じてフォントとキーボードレイアウトを設定しておきます。
/etc/vconsole.confFONT=sun12x22 KEYMAP=jp106ホスト名
このコンピュータの名前を
/etc/hostname
に書き込んでください。# echo your-hostname > /etc/hostname同じ名前を
/etc/hosts
にも書き込みます。/etc/hosts127.0.0.1 localhost 127.0.1.1 your-hostname ::1 localhostパスワード
root ユーザーのパスワードを設定します。
# passwdブートローダのインストール
EFI システムパーティションに systemd-boot をインストールします。
# bootctl --path=/boot install
/
パーティションの UUID を確認します。# ls -l /dev/disk/by-uuid total 0 lrwxrwxrwx 1 root root 15 Feb 14 22:01 5a534876-bb2f-4fd3-880e-9244235d42c3 -> ../../nvme0n1p2 lrwxrwxrwx 1 root root 15 Feb 14 22:01 1234-5678 -> ../../nvme0n1p1Arch Linux を起動するローダーの設定を
/boot/loader/entries
以下に追加します。Intel プロセッサを使用している場合は/amd-ucode.img
を/intel-ucode.img
に置き替えてください。また、UUID には先程確認した/
パーティションの UUID を指定してください。/boot/loader/entries/arch.conftitle Arch Linux linux /vmlinuz-linux initrd /amd-ucode.img initrd /initramfs-linux.img options root=UUID=5a534876-bb2f-4fd3-880e-9244235d42c3 rwブートローダーの設定ファイル
/boot/loader/loader.conf
を編集します。/boot/loader/loader.confdefault arch timeout 5 editor no
再起動
chroot 環境から抜けてコンピュータを再起動してください。USB デバイスを取り除いても先程のブートローダーからシステムを起動できるようになっているはずです。
# exit # umount -R /mnt # rebootネットワーク設定
ネットワーク・インタフェースの確認
以下のコマンドでネットワーク・インタフェースの名前を確認してください。
# /ls -l /sys/class/net total 0 lrwxrwxrwx 1 root root 0 Feb 14 22:01 enp2s0 -> ../../devices/pci0000:00/0000:00:01.7/0000:02:00.0/net/enp2s0 lrwxrwxrwx 1 root root 0 Feb 14 22:01 lo -> ../../devices/virtual/net/loIP アドレス
ネットワークの設定は systemd-networkd を使用して管理します。以下は DHCP を使用する場合の設定ファイルです。
/etc/systemd/network/wired-dhcp.network[Match] Name=enp2s0 [Network] DHCP=ipv4固定 IP アドレスを使用する場合は以下のようになります。
/etc/systemd/network/wired-static.network[Match] Name=enp2s0 [Network] Address=192.168.0.16/24 Gateway=192.168.0.1 DNS=8.8.8.8システムの起動時に systemd-networkd が自動的に実行されるようにしておきます。また、設定を反映するために一度サービスを再起動します。
# systemctl enable systemd-networkd # systemctl restart systemd-networkdDNS
全ての名前解決を systemd 経由にするために以下のシンボリックリンクを作成します。
# ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf名前解決機能を提供する systemd-resolved サービスを有効にします。
# systemctl enable systemd-resolved # systemctl restart systemd-resolvedSSH
SSH ログインを有効にしておきましょう。設定ファイルは
/etc/ssh/sshd_config
に存在しますが、設定を変更しなくても root 以外のユーザではログインできるため、設定の変更は後回しにしても良いでしょう。# systemctl enable sshd # systemctl restart sshdユーザー
全ての操作を root 権限で実行するのは非常に危険です。管理用のユーザーを作成し、root 権限が必要なときにだけ
sudo
を実行する運用を推奨します。ユーザーの追加
ユーザーの追加には
useradd
コマンドを使用します。伝統的に root 権限を取得できるユーザーグループの名称は wheel です。# useradd -m -G wheel -s /bin/zsh pttknysudo の設定
/etc/sudoers
の以下の行をアンコメントすることで wheel グループのユーザーがsudo
を使用できるようになります。/etc/sudoers%wheel ALL=(ALL) ALL
- 投稿日:2020-02-14T21:36:15+09:00
Get absolute path of running process
$ ps -ef | grep containerd root 8723 8715 0 12:26 ? 00:00:01 containerdIf there have many commands with name containerd, the result may let some annoyance.
If you want to know the full path of the process, can do this:
$ ls -al /proc/8723/exe lrwxrwxrwx 1 root root 0 Feb 14 12:26 /proc/8723/exe -> /usr/local/bin/containerd
- 投稿日:2020-02-14T14:10:41+09:00
curl command show http status code in response ( #Linux #Shell )
- 投稿日:2020-02-14T14:10:40+09:00
curl コマンドで HTTP ステータスコードの レスポンスを確認する ( #Linux #Shell )
- 投稿日:2020-02-14T12:34:21+09:00
Linux勉強会 第2回:ファイル操作
なに
株式会社Ancarでは、週に1度Linux勉強会を催しています。これまでプログラム書くことに興味あって、それメインでやってきたこともあり、Linuxの基礎的な知識が抜け落ちており..勉強しています。そういうこともあって、勉強会の内容は初心者向けです。
今回は「ファイル操作」をテーマに勉強会を行ったので、ファイル操作について、特に自分にとって勉強になった箇所を取り上げたいと思います。
ファイル操作
特殊なディレクトリ記号
パス指定を容易にするために、特殊なディレクトリ記号が用意されています。
普段から、
/
や.
、..
などは頻繁に利用しています。
特に勉強になったのは~-
や~ユーザー名
のオプションです。これは日頃全く活用できていませんでした。ディレクトリの移動
# 絶対指定で移動する $ cd /home/onukichi/qiita/test1/ $ pwd /home/onukichi/qiita/test1 # ホームディレクトリに移動する。 [cd ~] でも同じ $ cd $ pwd /home/onukichi # 直前のディレクトリに移動する。 これめちゃくちゃ便利だ、なんで使ってなかったんだ。 # [cd ~-] でも同じ # cd - のときは移動先ディレクトリの表示がある $ cd - /home/onukichi/qiita/test1 $ pwd /home/onukichi/qiita/test1 # 指定ユーザー(onukichi)のホームディレクトリに移動する $ cd ~onukichi $ pwd /home/onukichiファイル内容を表示する
普段、何気なくファイルの内容を表示する目的で
cat
を使用していましたが、オプションつけることで色々できるんですね..。$ cat test1 I'm Onukichi. $ cat test2 I'm Kid. #ファイルの連結もできる。ええ、そんなことできるのか..使ったことなかった # test1とtest2をファイル連結してtest3を作る $ cat test1 test2 > test3 # test3の内容を表示する $ cat test3 I'm Onukichi. I'm Kid. # 「-nオプション」で行番号付きで表示する $ cat -n test3 1 I'm Onukichi. 2 I'm Kid.ファイルの移動と名前変更をする
mv
コマンドも頻繁に利用していましたが、移動とともにファイル名変更できたり、複数ファイルを移動できるのが便利だなと思いました。$ ls test1 test2 test3 # 1個のファイルを qiita ディレクトリに移動、まあこれは基本 $ mv test1 ../../qiita/ # うん、ちゃんと移動されてる $ ls /home/onukichi/qiita/ test1 # 移動とともに名前を変更できる。これは知らなかった.. $ mv test2 ../../qiita/test2-1 # 移動して名前変更されてるかを確認。 $ ls /home/onukichi/qiita/ test1 test2-1 # 複数のファイルを移動、これもめっちゃ便利だ..! $ mv test1 test2-1 ../../qiita/textまとめ
取り上げたコマンド自体は日頃から頻繁に利用しているものでしたが、オプションを指定したりすることで、もっと便利にファイル操作ができることを学びました。
これ以外のコマンドも全くオプション使えていないので、意識的に活用していきたいと思います。