【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【25卒向け】AI×バーチャル面接の募集を開始いたしました!

【25卒向け】AI×バーチャル面接の募集を開始いたしました!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【Linux】「ll」はコマンドじゃないよ

皆様こんにちは。
暑い日でもお腹に布団がないと安心できない、システムソリューション部所属のなかです。

インフラ環境を構築・運用する方はLinuxを触る機会が高いかと思います。
※勿論、UnixやWindowsオンリーの環境も当然ながら存在しております。

その中で、一番使うコマンドはやはりファイルを一覧確認する「ls」コマンドじゃないかなと思うのですが、
「ls」コマンドの上位互換的な用途として「ll」を使う方も多いと思います。

今回の記事は、
「ll」はコマンドじゃないよ、使えない事もあるからある程度これが何なのかは知っておくほうが良いよ!」

という「割りと大した話ではないけど、たまに知らない人がいる事なので説明したい」というスタンスの記事となります。

実行環境

【解説用】
●Linux環境群

「OS:Ubuntu 20.04.5 LTS (WSL2環境)」
・Shell:Bash
・ロケールを日本語に変更

「OS:CentOS7.9(2009) (WSL2環境)」
・Shell:Bash

【余談用】
●Windows環境
・OS:Windows11 (バージョン:21H2)
・Shell:コマンドプロンプト
・言語設定を日本語に変更

「ll」は”一般的には”「ls -l」の「alias」

「ll」はコマンドではなく、特定コマンドの別名として登録・定義された「alias」という物で、例えるならショートカットです。

一般的に「ls -l」の短縮版として認識・利用されているものかと存じます。

aliasコマンドで確認する

alias コマンドについて軽く説明します。

これは「alias」を一時的に登録するための物で、シェルであるBashの組み込みコマンドです。
Linuxのコマンドではないため、違うシェルの場合では同名の物が存在しなかったり挙動が違う場合があるので注意しましょう。

※あくまで一時的、再起動を行うと消えますので永続的に登録する場合はシェルの設定ファイルに書き込む必要があります。

引数なしでこのコマンドを入力すると、現在設定されている「alias」が確認できます。

●CentOS7.9(2009)
$ alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

このようにCentOS7のデフォルトの状態では「ll」とは「ls -l --color=auto」のことを指している事がわかります。

最近の一般的なディストリビューションのデフォルトだと、「ll」が最初から設定されている事が多いです。
そのために勘違いされる事がありますが「コマンド」ではなく「alias」ということは認識しておくと良い思います。

そんな細かい事を認識した方が良い理由

A1.本番環境によっては「alias」が設定されていない事がある

「alias」が設定されていることで、作業者の想定しないコマンドが実行されることを危惧しているのか
「alias」が一切登録されていない環境が存在している事があります。
※そもそも、ディストリビューションやバージョンによってデフォルトで登録されていない事もあります。

その際に普段使っているコマンドとオプションを把握していないので手間取るのは問題ですし、
「ll」が「alias」である事を知らずに使えない事で困惑する人はたまにいるようですので覚えておくと良いでしょう。

A2.作業手順書には書けない事がある

作業手順書におけるお作法は各企業の文化や現場での運用ルールによって様々ではあるかと思いますが、
一般的には相対パスでの記述を避けたりするのと同様に、「alias」で設定した別名は使わないことが多いかと思います。

特に相対パスは「rm」コマンド使用時に大きな事故の元になりやすいので言わずもがなではありますが、

「alias」は環境によって設定の有無が違いますしディストリビューションによってもデフォルトの内容が違うので、共通言語として手順書に使用するのは避けるのが無難です。

A3.ルールはなくても注意される事はある

A2.の回答と似た内容ですが、筆者は超新人の頃に「ll」を手順書に書いて「それは alias なので手順書に使うのはやめよう」と当時の上長から注意された事があります。

文化や慣習的に「それはないだろ」という考えの方もいらっしゃいます。

ただ、この記事では絶対に使用するなという訳ではなく「環境によって意味合いの変わる alias だと認識しておきましょう」というスタンスです。

ディストリビューションによっては登録された定義が違う

「共通言語として手順書に使用するのは避けるのが無難です。」と書きましたが、これは文字通り定義が違う場合が存在するからです。

●Ubuntu 20.04.5 LTS
$ alias | grep ll
alias ll='ls -alF'
●CentOS7.9(2009)
$ alias | grep ll
alias ll='ls -l --color=auto'

筆者も記事を書くにあたっての調べるまで知らなかったことですが、
上記のようにubuntu 20.04.5 LTSでは「ls -alF」であり、「-a」隠しファイルと「-F」タイプ識別子を表示するようになっています。

なので、このディストリビューションしか使っていない環境で、例えばaliasだと知らずに「ll」に馴染みすぎていると
別のサーバーを触ったときに「-a」と「-F」のオプションがない「ll」を使って「隠しファイルがでない……」と悩んでしまうこともあるかもしれません。

実際「ll」そのものに大きな影響力がある訳ではないのですが、「不確定な物を手順書に使わないほうが良い」といえそうな例え話です。

余談:WindowsのPowerShellでのalias

Linuxだけでなく、WindowsのPowerShellにもaliasは存在しており、しかもデフォルトで一般的なUNIX系コマンドが使えるように設定されています。

UNIX コマンド/PowerShell コマンドレット
cd   →  Set-Location
ls    →  Get-ChildItem

参考文献:https://learn.microsoft.com/ja-jp/powershell/scripting/learn/shell/using-aliases?view=powershell-7.4

上記のような形で、cdを打つとPowerShellで対応するコマンドレットである「Set-Location」が実行されます。

※PowerShellにおいては「コマンド」ではなく「コマンドレット(Cmdlet)」と呼びますのでご注意ください。

まとめ

以上となります。

筆者は「ll」警察という訳ではなく「普段から使用していると、気が付かないことがある」「普段から使うものについて考えよう」
と己を振り返った際に思いついたのが今回の内容です。

あらゆるコマンドは意外と便利なオプションがあったり、
意外な使い方ができたりする物なので皆様も「ll」をキッカケに色々と見直してみると面白いかもしれませんね。

長文となりましたが、ここまで読んで頂きありがとうございました!

参考資料

alias(1p) - Arch manual pages (Archwiki)
https://man.archlinux.org/man/core/man-pages/alias.1p.en

エイリアスの使用(Microsoft:PowerShell 公式ドキュメント)
https://learn.microsoft.com/ja-jp/powershell/scripting/learn/shell/using-aliases?view=powershell-7.4

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
15
読み込み中...
15 票, 平均: 1.00 / 115
26,687
X facebook はてなブックマーク pocket
【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【25卒向け】AI×バーチャル面接の募集を開始いたしました!

【25卒向け】AI×バーチャル面接の募集を開始いたしました!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

この記事をかいた人

About the author

なか とも

2022年ビヨンドに中途入社
システムソリューション部所属
LPIC-3 304とAWS SAAを一応は持っています
普段の飲み物が牛乳とコーラと紅茶の3択しかない