20200214のLinuxに関する記事は8件です。

Linux or macのbashでコマンドラインの内容をマウスなしでコピペする方法

参考にした記事

  • Linux or macのbashでコマンドラインの内容をマウスなしでコピペする方法

https://saltiga.hatenablog.com/entry/2020/02/14/235139

コマンドラインの内容をコピーするのにマウスを使いたくない

catとかで出力した内容をそのままコピーしたい!!

Tmuxのコピーモードを使う

tmuxをインストール

以下のファイルを作成

~/.tmux.conf
set-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でヤンク可能。

他にいい方法があったらコメント欄で教えてください

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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/nvme0n1p2

Arch 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-firmware

fstab の作成

先程作成したパーティションが自動的にマウントされるように 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-8ja_JP.UTF-8 UTF-8 をアンコメントします。その後で local-gen スクリプトを実行することで実際にそのロケールが有効になります。

# local-gen

システムロケールを設定します。

/etc/locale.conf
LANG=en_US.UTF-8

必要に応じてフォントとキーボードレイアウトを設定しておきます。

/etc/vconsole.conf
FONT=sun12x22
KEYMAP=jp106

ホスト名

このコンピュータの名前を /etc/hostname に書き込んでください。

# echo your-hostname > /etc/hostname

同じ名前を /etc/hosts にも書き込みます。

/etc/hosts
127.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 -> ../../nvme0n1p1

Arch Linux を起動するローダーの設定を /boot/loader/entries 以下に追加します。Intel プロセッサを使用している場合は /amd-ucode.img/intel-ucode.img に置き替えてください。また、UUID には先程確認した / パーティションの UUID を指定してください。

/boot/loader/entries/arch.conf
title 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.conf
default 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/lo

IP アドレス

ネットワークの設定は 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-networkd

DNS

全ての名前解決を systemd 経由にするために以下のシンボリックリンクを作成します。

# ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

名前解決機能を提供する systemd-resolved サービスを有効にします。

# systemctl enable systemd-resolved
# systemctl restart systemd-resolved

SSH

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 pttkny

sudo の設定

/etc/sudoers の以下の行をアンコメントすることで wheel グループのユーザーが sudo を使用できるようになります。

/etc/sudoers
%wheel ALL=(ALL) ALL
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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とかで情報を見ると概要欄にリポジトリ追加用パッケージだよ的なことが書いてあるので気になる方は見てみてください

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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/nvme0n1p2

Arch 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-firmware

fstab の作成

先程作成したパーティションが自動的にマウントされるように 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-8ja_JP.UTF-8 UTF-8 をアンコメントします。その後で local-gen スクリプトを実行することで実際にそのロケールが有効になります。

# local-gen

システムロケールを設定します。

/etc/locale.conf
LANG=en_US.UTF-8

必要に応じてフォントとキーボードレイアウトを設定しておきます。

/etc/vconsole.conf
FONT=sun12x22
KEYMAP=jp106

ホスト名

このコンピュータの名前を /etc/hostname に書き込んでください。

# echo your-hostname > /etc/hostname

同じ名前を /etc/hosts にも書き込みます。

/etc/hosts
127.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 -> ../../nvme0n1p1

Arch Linux を起動するローダーの設定を /boot/loader/entries 以下に追加します。Intel プロセッサを使用している場合は /amd-ucode.img/intel-ucode.img に置き替えてください。また、UUID には先程確認した / パーティションの UUID を指定してください。

/boot/loader/entries/arch.conf
title 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.conf
default 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/lo

IP アドレス

ネットワークの設定は 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-networkd

DNS

全ての名前解決を systemd 経由にするために以下のシンボリックリンクを作成します。

# ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

名前解決機能を提供する systemd-resolved サービスを有効にします。

# systemctl enable systemd-resolved
# systemctl restart systemd-resolved

SSH

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 pttkny

sudo の設定

/etc/sudoers の以下の行をアンコメントすることで wheel グループのユーザーが sudo を使用できるようになります。

/etc/sudoers
%wheel ALL=(ALL) ALL
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Get absolute path of running process

$ ps -ef | grep containerd

root      8723  8715  0 12:26 ?        00:00:01 containerd

If 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
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

curl command show http status code in response ( #Linux #Shell )

curl -s --head http://example.com | grep HTTP
HTTP/1.1 200 OK

curl -s --head -X POST https://yahoo.com | grep HTTP
HTTP/2 301

Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/2983

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

curl コマンドで HTTP ステータスコードの レスポンスを確認する ( #Linux #Shell )

curl -s --head http://example.com | grep HTTP
HTTP/1.1 200 OK

curl -s --head -X POST https://yahoo.com | grep HTTP
HTTP/2 301

Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/2984

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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

まとめ

取り上げたコマンド自体は日頃から頻繁に利用しているものでしたが、オプションを指定したりすることで、もっと便利にファイル操作ができることを学びました。

これ以外のコマンドも全くオプション使えていないので、意識的に活用していきたいと思います。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む