1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

catやlsが存在しないときの暫定方法

Last updated at Posted at 2022-12-25

前提:catlsが使えない環境がある

dockerの一部のコンテナイメージ(k8sのetcdなど)では、catlsと言った基本的なコマンドすら存在しないということが起こりえます。

スクリーンショット 2022-12-24 23.38.22.png

catがない…

スクリーンショット 2022-12-25 1.03.37.png

lsもない…

ないなら作れば良いだけ

sh(Bourne shell)が起動しているなら絶対に使える 組み込みコマンド というものが存在します。
今回はshの組み込みコマンドだけを使用し、lscatを作ります。

lsを作る

まずはlsですが、これは簡単でecho *をエイリアスにするだけです。

alias ls="echo *"

オプションは何もないですが、とりあえずの確認ならこれで十分です。

スクリーンショット 2022-12-25 1.01.25.png

無事にlsでルートディレクトリの配下が見れるようになりました。

なお、出力結果を色つきにした時の記事もこちらにあるので、参考にどうぞ。

ディレクトリは青、ファイルが白で表示するlsコマンドを以下に記載しておきます。

.sh
function ls 
{ 
for i in *
do
  if [ -d $i ]
  then 
    echo -ne "\e[34m$i\e[m\t" # ディレクトリは青色
  else
    echo -ne "$i\t" # それ以外は白色
  fi
done
echo # 改行のためのecho
}

次はcatを作る

こちらは関数を使います。

function cat 
{
while read val
do
  echo $val
done
} < $1

valという変数にファイルの中身を1行ずつ入れて、echoで表示するだけです。

これを使えば、ファイルの中身を見ることができます。

スクリーンショット 2022-12-25 1.13.55.png

無事にファイルの中身を見ることができました。

オプションとかは全く再現していない最低限のコマンドの機能ですが、shの標準の機能だけで作ることができました。

まとめ

lsとかcatはshの機能だけで再現することが可能です。

なお、別の記事psコマンドも作っているので、こちらも参考にしてください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?