mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
1093 文字
3 分
missing-semester-class01
2023-01-11

class01

シェル#

特徴#

プログラムを実行し、入力を与え、その出力を半構造化された方法で確認できます

使い方#

date # 显示时间
echo hello # 输入参数‘hello’并输出
echo "hello world"
echo $PATH # 输出环境变量¥PATH
# /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin

echo コマンドを実行すると、シェルは echo というプログラムを実行する必要があると判断し、$PATH 内にある : で区切られた一連のディレクトリから、その名前を持つプログラムを検索します。プログラムが見つかると、それを実行します。あるプログラム名が具体的にどのプログラムを指しているかを確認するには、which プログラムを使用できます。また、実行するプログラムのパスを直接指定することで、$PATH を使わずに実行することもできます。

シェル内での移動#

シェルにおけるパスは、複数のディレクトリを区切って並べたものです。Linux と macOS では /、Windows では \\ を区切り文字として使用します。/ はルートディレクトリです。

pwd # 获取当前路径
cd /home # 根目录下的home文件夹
cd ./home # 当前目录下的home文件夹
cd .. # 上级目录

一般に、パスを指定せずにプログラムを実行すると、そのプログラムは現在のディレクトリで実行されます。

ls # 查看目录文件
ls --help
ls -l /home
# drwxr-xr-x 4 root root 4096 11月 30 21:01 data

まず、この行の最初の文字 d は、data がディレクトリであることを示しています。続く9文字は、3文字ずつのグループ(rwx)に分かれています。それぞれ、ファイルの所有者root)、ユーザーグループroot)、そしてその他のすべてのユーザーが持つ権限を表します。- は、そのユーザーが該当する権限を持っていないことを示します。 上記の情報から、data フォルダーを変更(w)できるのはファイルの所有者だけだと分かります(たとえば、フォルダー内のファイルを追加または削除できます)。 あるフォルダーに入るには、そのフォルダーと親フォルダーに対する「検索」権限(「実行可能」権限の x で表されます)が必要です。フォルダーの内容を一覧表示するには、そのフォルダーに対する読み取り権限(r)が必要です。ファイルの場合も、各権限の意味は同様です。/bin ディレクトリ内のプログラムでは、最後のグループ、つまりその他のすべてのユーザーに x 権限が含まれている点に注目してください。これは、誰でもこれらのプログラムを実行できることを意味します。

mv test ./data/test.txt
cp test.c test01.c
mkdir test
man ls

プログラム間の接続#

シェル内のプログラムには、主に入力ストリームと出力ストリームという2つの「ストリーム」があります。プログラムが情報を読み取ろうとすると入力ストリームから読み取り、情報を表示すると出力ストリームへ書き込みます。通常、プログラムの入出力ストリームはどちらも端末につながっています。つまり、キーボードが入力、ディスプレイが出力として機能します。しかし、これらのストリームはリダイレクトすることもできます! 最も単純なリダイレクトは < file> file です。これらのコマンドを使うと、プログラムの入力ストリームと出力ストリームをそれぞれファイルへリダイレクトできます。

echo hello > hello.txt
cat hello.txt
cat < hello.txt
cat < hello.txt > hello2.txt
cat hello2.txt
ls -l / | tail -n1
curl --head --silent baidu.com | grep --ignore-case content-length | cut --delimiter=' ' -f2

rootユーザー#

アクセス拒否(permission denied) sudo

演習問題#

# 第二题
cd /tmp
mkdir missing
ls | grep missing
# 第三题
man touch
# 第四题
touch ./missing/semester
# 第五题
echo '#! /bin/sh' > ./missing/semester
echo 'curl --head --silent <https://baidu.com>' | tee -a ./missing/semester
cat ./missing/semester
# 第六题
./missing/semester
ls -l ./missing
# -rw-r--r-- 1 root root 62 1月 11 21:46 semester
# 该文件无x 运行权限
# 第七题
man chmod
# 第八题
chmod +x ./missing/semester
# 第九题
./semester | grep Date > ./last-modified.txt
cat last-modified.txt
共有

この記事が役に立ったときは、ぜひ他の人に共有してください!

missing-semester-class01
https://dreaife.tokyo/jp/posts/smart-shell-guide/
著者
dreaife
公開日
2023-01-11
ライセンス
CC BY-NC-SA 4.0

一部の情報は古い可能性があります

関連した投稿 スマート
1
UbuntuにOh My Zshとそのコンポーネントをインストールする
cs-base UbuntuにohMyZshとそのコンポーネントをインストールする手順は、まずzshとgitをインストールし、次にwgetを使用してohMyZshを導入します。続いて、powerlevel10kテーマと必要なプラグインをクローンし、.zshrcファイルを更新してテーマとプラグインを適用します。最後に、zsh-batやyou-should-useなどの追加プラグインをインストールし、システムを更新してすべてが正常に動作することを確認します。
2
UbuntuのNATを介してネットワークをルーターに転送する
cs-base Netplan設定の変更、IPフォワーディングの有効化、NAT転送の設定により、Ubuntuからルーターへネットワークを転送します。既存設定の消去、静的IPの設定、DHCPサービスのインストールと構成、ネットワーク共有の有効性の確認を行います。
3
CSAPP 第1章 コンピュータシステム漫遊
cs-base コンピュータシステムはハードウェアとシステムソフトウェアで構成され、プログラムのライフサイクル(作成、実行、出力、終了)を通じてアプリケーションを実行します。情報はビットとコンテキストから成り、プログラムはコンパイルシステムによって実行可能ファイルに変換されます。プロセッサは命令を読み取って実行し、高速化のためにキャッシュを利用します。OSはハードウェアを管理し、プロセスや仮想メモリなどの抽象を提供して並行・並列実行を支えます。抽象化は計算機科学の重要概念であり、仮想マシンはコンピュータ全体の抽象を提供します。
4
pandas.to_datetimeで異なる日時形式を扱う際に発生するエラーについて
cs-base pandasのto_datetime関数を使用する際、日付形式が混在しているとエラーが発生することがあります。formatパラメータを'mixed'に設定することで、形式不一致の問題を解決できます。サンプルコードでは、日付形式エラーを処理してdatetime形式へ正常に変換する方法を示しています。
5
Alibaba CloudでDocker+code-serverを設定してオンラインコンパイラを構築する
cs-base Dockerとcode-serverをインストールしてオンラインコンパイラ環境を構築する手順です。Dockerの導入、Alibaba Cloudミラーの設定、Nginxの起動、code-serverの導入と設定、C/C++のビルド環境構築を行い、最後にテストコードの実行に成功しました。

目次