<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Linux - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ エキスパートの手によるプログラミングチュートリアル記事を幅広く掲載。ウェブ開発、データサイエンス、DevOps、セキュリティ、開発者としてのキャリアなどについて学びましょう。 ]]>
        </description>
        <link>https://www.freecodecamp.org/japanese/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Linux - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/japanese/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sun, 24 May 2026 19:36:50 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/japanese/news/tag/linux/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ sudo apt-get update と upgrade の違いとは？ ]]>
                </title>
                <description>
                    <![CDATA[ sudo apt-get update と sudo apt-get upgrade は、Debian や Debian ベースのディストリビューションでパッケージを最新の状態に保つために利用できるコマンドです。 これらのコマンドは Linux 管理者や DevOps に携わる人にとってはよく使うものですが、コマンドラインを頻繁に使用しない人でも知っておくと役に立ちます。 この記事では、これらのコマンドの動作や使用方法、よくある質問などについて解説します。 sudo apt-get update と sudo apt-get upgrade の違いは何ですか？ 主な違いは、sudo apt-get update  はディストリビューションのソフトウェアリポジトリやあらかじめ設定されたサードパーティリポジトリから、最新バージョンのパッケージの一覧を取得することです。つまり、それぞれのパッケージや依存関係の最新バージョンを確認するだけで、更新内容を実際にダウンロードしたりインストールすることはありません。 一方、sudo apt-get upgrade は、システム上の古くなったパ ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/sudo-apt-get-update-vs-upgrade-what-is-the-difference/</link>
                <guid isPermaLink="false">67864ebfd7aa1e04405877c0</guid>
                
                    <category>
                        <![CDATA[ Bash ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                    <category>
                        <![CDATA[ command ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Ubuntu ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ YUUSUKE OKAMOTO ]]>
                </dc:creator>
                <pubDate>Fri, 17 Jan 2025 23:04:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2025/01/gabriel-heinzer-4Mw7nkQDByk-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/sudo-apt-get-update-vs-upgrade-what-is-the-difference/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">sudo apt-get update vs upgrade – What is the Difference?</a>
      </p><p><code>sudo apt-get update</code> と <code>sudo apt-get upgrade</code> は、Debian や Debian ベースのディストリビューションでパッケージを最新の状態に保つために利用できるコマンドです。</p><p>これらのコマンドは Linux 管理者や DevOps に携わる人にとってはよく使うものですが、コマンドラインを頻繁に使用しない人でも知っておくと役に立ちます。</p><p>この記事では、これらのコマンドの動作や使用方法、よくある質問などについて解説します。</p><h2 id="sudo-apt-get-update-sudo-apt-get-upgrade-"><code>sudo apt-get update</code> と <code>sudo apt-get upgrade</code> の違いは何ですか？</h2><p>主な違いは、<code>sudo apt-get update</code> はディストリビューションのソフトウェアリポジトリやあらかじめ設定されたサードパーティリポジトリから、最新バージョンのパッケージの一覧を取得することです。つまり、それぞれのパッケージや依存関係の最新バージョンを確認するだけで、更新内容を実際にダウンロードしたりインストールすることはありません。</p><p>一方、<code>sudo apt-get upgrade</code> は、システム上の古くなったパッケージや依存関係の更新バージョンをダウンロードおよびインストールします。しかし、<code>sudo apt-get upgrade</code> を実行しても、古くなったパッケージが即座にアップグレードされるわけではありません。変更内容を確認してから、アップグレードを実行するかどうか判断できます。</p><h2 id="sudo-apt-get-update-"><code>sudo apt-get update</code> コマンドの使い方</h2><p>Debian ベースの Linux ディストリビューション (Debian、Ubuntu、Linux Mint、Kali Linux、Raspberry Pi OS など) で、ターミナルウィンドウを開きます。</p><p>ディストリビューションおよびターミナルの開き方によって、名称は異なる場合があります。例えば、Ubuntu や Linux Mint では、デフォルトで Gnome Terminal が利用されますが、アプリケーションメニューでは単に「ターミナル」として表示されることもあります。</p><p>ターミナル上のコマンドラインで <code>sudo apt-get update</code> と入力し、管理者パスワードを入力して、Enter キーを押します。</p><p>もし更新する項目がある場合、次のような出力が表示されます:</p><pre><code>kris@pihole:~ $ sudo apt-get update
Hit:1 https://ftp.harukasan.org/raspbian/raspbian bullseye InRelease
Get:2 https://download.docker.com/linux/raspbian bullseye InRelease [26.7 kB]
Get:3 http://archive.raspberrypi.org/debian bullseye InRelease [23.7 kB]       
Get:4 http://packages.azlux.fr/debian buster InRelease [3,989 B]               
Get:5 http://archive.raspberrypi.org/debian bullseye/main armhf Packages [282 kB]
Get:6 http://packages.azlux.fr/debian buster/main armhf Packages [3,418 B]
Fetched 340 kB in 4s (94.8 kB/s)     
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
3 packages can be upgraded. Run 'apt list --upgradable' to see them.
</code></pre><p>アップグレード可能なパッケージを確認したい場合は、<code>apt list --upgradable</code> を実行します:</p><pre><code>kris@pihole:~ $ apt list --upgradable
Listing... Done
libcamera0/stable 0~git20220426+18e68a9b-1 armhf [upgradable from: 0~git20220303+e68e0f1e-1]
raspi-config/stable 20220425 all [upgradable from: 20220419]
rpi-eeprom/stable 13.13-1 armhf [upgradable from: 13.12-1]
</code></pre><p>しかし、ディストリビューションのソフトウェアリポジトリに新しいバージョンのパッケージや依存関係がない場合、次のような出力が表示されます:</p><pre><code>kris@pihole:~ $ sudo apt-get update
Get:1 https://download.docker.com/linux/raspbian bullseye InRelease [26.7 kB]
Hit:2 https://ftp.harukasan.org/raspbian/raspbian bullseye InRelease           
Hit:3 http://packages.azlux.fr/debian buster InRelease                         
Hit:4 http://archive.raspberrypi.org/debian bullseye InRelease
Fetched 26.7 kB in 3s (8,789 B/s)
Reading package lists... Done
</code></pre><p>ここには、アップグレード可能なパッケージや <code>apt list --upgradable</code> を実行するよう指示するメッセージがありません。</p><p>ただし、メッセージがないことは、システム上に更新が必要なソフトウェアがないことを意味するわけではなく、単に既に最新のパッケージリストを取得済みということです。<code>sudo apt-get update</code> を何度も実行した可能性もあります。</p><p>いつでも <code>apt list --upgradable</code> を再度実行して、アップグレード可能なものがあるかどうか確認できます。</p><p>また、より新しい <code>sudo apt update</code> コマンドを使用することもできます。このコマンドは常にアップグレード可能なパッケージの数を示すか、すべてが最新状態であるというメッセージを表示します。</p><p><code>apt</code> と <code>apt-get</code> の違いに関する詳細な情報は、<a href="#what-s-the-difference-between-apt-get-and-apt">以下のセクションで確認できます</a>。</p><h2 id="sudo-apt-get-upgrade-"><code>sudo apt-get upgrade</code> コマンドの使い方</h2><p><code>sudo apt-get update</code> コマンドを実行した後、同じターミナルウィンドウで、<code>sudo apt-get upgrade</code> と入力し、必要に応じてパスワードを入力して Enter を押します。</p><p>すると、次のような出力が表示されます:</p><pre><code>kris@pihole:~ $ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.
Do you want to continue? [Y/n]
</code></pre><p>出力の最後に、アップグレードされるパッケージが表示されます。</p><pre><code>The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
</code></pre><p>取得する必要があるデータ量と、アップグレードされたパッケージがインストール後に使用するディスク容量が表示されます。</p><pre><code>Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.
</code></pre><p>最後に、アップグレードを続けるかどうかの確認メッセージが表示されます:</p><pre><code>Do you want to continue? [Y/n]
</code></pre><p>アップグレードを続行するには、<code>y</code>、<code>Y</code>、または <code>yes</code> を入力し、終了する場合は、<code>n</code>、<code>N</code>、または <code>no</code> を入力します。</p><p>アップグレードを終了することを選んだ場合、以下のような出力が表示されます:</p><pre><code>kris@pihole:~ $ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.
Do you want to continue? [Y/n] n
Abort.
</code></pre><p>アップグレードを続行することを選んだ場合の出力例:</p><pre><code>kris@pihole:~ $ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://archive.raspberrypi.org/debian bullseye/main armhf libcamera0 armhf 0~git20220426+18e68a9b-1 [548 kB]
Get:2 http://archive.raspberrypi.org/debian bullseye/main armhf raspi-config all 20220425 [30.3 kB]
Get:3 http://archive.raspberrypi.org/debian bullseye/main armhf rpi-eeprom armhf 13.13-1 [2,037 kB]
Fetched 2,616 kB in 3s (1,019 kB/s)   
Reading changelogs... Done
(Reading database ... 43496 files and directories currently installed.)
Preparing to unpack .../libcamera0_0~git20220426+18e68a9b-1_armhf.deb ...
Unpacking libcamera0:armhf (0~git20220426+18e68a9b-1) over (0~git20220303+e68e0f1e-1) ...
Preparing to unpack .../raspi-config_20220425_all.deb ...
Unpacking raspi-config (20220425) over (20220419) ...
Preparing to unpack .../rpi-eeprom_13.13-1_armhf.deb ...
Unpacking rpi-eeprom (13.13-1) over (13.12-1) ...
Setting up rpi-eeprom (13.13-1) ...
Setting up libcamera0:armhf (0~git20220426+18e68a9b-1) ...
Setting up raspi-config (20220425) ...
Processing triggers for man-db (2.9.4-2) ...
Processing triggers for libc-bin (2.31-13+rpt2+rpi1+deb11u2) ...
</code></pre><p>処理が完了すると、全ての古いパッケージと依存関係が更新されます。</p><p><code>sudo apt-get upgrade</code> コマンドの重要な点は、何も削除せずにアップグレードのみ行うことです。</p><p>例えば、アップグレードに新しい依存関係が必要な場合、<code>upgrade</code> コマンドは、新しい依存関係をダウンロードおよびインストールしますが、古い依存関係を削除することはありません。古い依存関係を削除するには、別のコマンドが必要です。新しいカーネルバージョンにアップグレードする際によく見られます。</p><p>アップグレード後に次のようなメッセージが表示された場合:</p><pre><code>The following packages were automatically installed and are no longer required:
  g++-8 gir1.2-mutter-4 libapache2-mod-php7.2 libcrystalhd3
Use 'sudo apt autoremove' to remove them.
</code></pre><p>提案通りに、<code>sudo apt autoremove</code> で不要なパッケージを削除することができます。</p><h2 id="sudo-apt-get-upgrade--1"><code>sudo apt-get upgrade</code> コマンドで追加のオプションを使用する方法</h2><p><code>sudo apt-get upgrade</code> コマンドには多くの追加のオプションまたはパラメータがありますが、その中でも注目すべきは <code>--dry-run</code> と <code>--yes</code> です。</p><h3 id="-dry-run-"><code>--dry-run</code> オプションの使用方法:</h3><p><code>--dry-run</code> (もしくは <code>-s</code> または <code>--simulate</code>) オプションは、アップグレード処理中に何が起こるかをシュミレーションしますが、システム上で何も変更しません:</p><pre><code>kris@pihole:~ $ sudo apt-get upgrade --dry-run
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Inst libcamera0 [0~git20220303+e68e0f1e-1] (0~git20220426+18e68a9b-1 Raspberry Pi Foundation:stable [armhf])
Inst raspi-config [20220331] (20220425 Raspberry Pi Foundation:stable [all])
Inst rpi-eeprom [13.12-1] (13.13-1 Raspberry Pi Foundation:stable [armhf])
Conf libcamera0 (0~git20220426+18e68a9b-1 Raspberry Pi Foundation:stable [armhf])
Conf raspi-config (20220425 Raspberry Pi Foundation:stable [all])
Conf rpi-eeprom (13.13-1 Raspberry Pi Foundation:stable [armhf])
</code></pre><p>繰り返しになりますが、Debian や Debian ベースのディストリビューションは非常に安定しています。一方で、このオプションは、アップグレード時の競合がないことを確認したい場合に便利です。</p><h3 id="-yes-"><code>--yes</code> オプションの使用方法:</h3><p><code>--yes</code> (または <code>-y</code> や <code>--assume-yes</code>) オプションは、安全であれば、全てのプロンプトに自動的に「はい」と回答します:</p><pre><code>kris@pihole:~ $ sudo apt-get upgrade --yes
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.
Get:1 http://archive.raspberrypi.org/debian bullseye/main armhf libcamera0 armhf 0~git20220426+18e68a9b-1 [548 kB]
Get:2 http://archive.raspberrypi.org/debian bullseye/main armhf raspi-config all 20220425 [30.3 kB]
Get:3 http://archive.raspberrypi.org/debian bullseye/main armhf rpi-eeprom armhf 13.13-1 [2,037 kB]
...
Processing triggers for libc-bin (2.31-13+rpt2+rpi1+deb11u2) ...
</code></pre><p><code>Do you want to continue? [Y/n]</code> は省略され、すべてのパッケージがアップグレードされます。</p><h2 id="-">よくある質問</h2><h3 id="sudo-apt-get-"><code>sudo</code> と <code>apt-get</code> とは？</h3><p><code>sudo apt-get update</code> および <code>sudo apt-get upgrade</code> というコマンドは、それぞれ <code>sudo</code>、<code>apt-get</code>、そして、<code>update</code> または <code>upgrade</code> の 3 つで構成されています。</p><p><code>sudo</code> は、"superuser do" の略で、管理者権限でプログラムを実行するためのコマンドです。</p><p>例えば、システムの再起動には管理者権限が必要です。このため、ターミナルで <code>reboot</code> コマンドを実行すると、次のようなエラーメッセージが表示されるかもしれません。</p><pre><code>Failed to set wall message, ignoring: Interactive authentication required.
Failed to reboot system via logind: Interactive authentication required.
Failed to open initctl fifo: Permission denied
Failed to talk to init daemon.
</code></pre><p>しかし、<code>sudo reboot</code> コマンドを実行し、管理者パスワードを入力すると、<code>reboot</code> コマンドが管理者権限で実行され、すぐにシステムが再起動されます。</p><p><code>apt-get</code> は、Debian および Debian ベースのディストリビューションでパッケージをインストールおよび管理するためのコマンドラインツールです。</p><!--kg-card-begin: html--><h3 id="what-s-the-difference-between-apt-get-and-apt"><code>apt-get</code> と <code>apt</code> の違いは？</h3><!--kg-card-end: html--><p><code>apt</code> は、Debian および Debian ベースのディストリビューションでアプリケーションをインストールおよび管理するための最新のツールです。</p><p><code>apt</code> と <code>apt-get</code> は互換性があり、<code>sudo apt update</code> と <code>sudo apt-get update</code> は、どちらもシステムパッケージを更新します。</p><p>主な違いとしては、<code>apt</code> の方が入力が簡単で出力がわかりやすく、パッケージのインストール中のプログレスバーなどユーザーフレンドリーな機能を含んでいることです。</p><p>この記事の多くの例では <code>apt-get</code> を使用していますが、個人的には <code>apt</code> を使用することをお勧めします。</p><h3 id="sudo-apt-get-update-sudo-apt-get-upgrade--1"><code>sudo apt-get update</code> と <code>sudo apt-get upgrade</code> は安全ですか？</h3><p>はい、Debian および Debian ベースのディストリビューションは、非常に安定しており、<code>update</code> と <code>upgrade</code> コマンドは安全に使用できます。これは、パッケージや依存関係、そしてディストリビューション自体の大規模なアップデートが年に一度か二度しかリリースされないからです。</p><p>欠点としては、最新のパッケージを使用したい場合は、Arch Linux などの最先端ディストリビューションとは異なり、追加の手間がかかることがあります。PPA を通じてサードパーティのリポジトリを設定したり、Snap や Flatpak などの別のパッケージングシステムを使用したり、自分でコンパイルする必要があるかもしれません。</p><p>とはいえ、少し古いソフトウェアによる安定性を重視する価値は十分にあると考えています。</p><h3 id="sudo-apt-get-update-sudo-apt-get-upgrade--2"><code>sudo apt-get update</code> と <code>sudo apt-get upgrade</code> を連続して実行できますか？</h3><p><code>sudo apt-get update</code> を実行して完了を待ってから、<code>sudo apt-get upgrade</code> を実行するのは、面倒ではないかと考えるかもしれません。</p><p><code>sudo apt-get update</code> と <code>sudo apt-get upgrade</code> の両方が比較的速く実行されるとはいえ、指令をまとめて実行し、数分後に確認する方が楽なことがあります。</p><p><code>&amp;&amp;</code> 演算子を使用すると、次のようにコマンドを連続して実行できます。</p><pre><code>sudo apt-get update &amp;&amp; sudo apt-get upgrade
</code></pre><p><code>&amp;&amp;</code> 演算子の重要なポイントは、演算子の後のコマンドが実行されるのは、前のコマンドが成功した場合だけということです。</p><p>上記の例を使用すると、<code>sudo apt-get upgrade</code> は <code>sudo apt-get update</code> が成功した場合にのみ実行されます。例えば、パッケージリストの更新中にネットワークの問題が発生した場合には、<code>sudo apt-get update</code> がスキップされます。</p><h3 id="sudo-apt-get-dist-upgrade-sudo-apt-full-upgrade-"><code>sudo apt-get dist-upgrade</code> と <code>sudo apt full-upgrade</code> とは？これらは安全に使用できますか？</h3><p><a href="https://askubuntu.com/questions/770135/apt-full-upgrade-versus-apt-get-dist-upgrade">StackOverflow のスレッド</a>によれば、これらのコマンドは、内部的には同じことを行います。つまり、古くなったパッケージをアップグレードし、必要に応じて賢くパッケージを削除します。</p><p>基本的には、<code>sudo apt-get upgrade</code> と <code>sudo apt autoremove</code> のコマンドを組み合わせたようなものです。</p><p>これらのコマンドを実行することは、ほとんどの場合安全なはずです。</p><p>しかし、私を含め多くの人が、<code>sudo apt-get update</code> と <code>sudo apt-get upgrade</code> を使用することを推奨しています。変更される内容を確認する機会が増えますし、<code>upgrade</code> は、パッケージを削除しないため、システムへの影響が少なくなります。</p><h2 id="-thanks_for_reading-sh"><code>./thanks_for_reading.sh</code></h2><p><code>sudo apt-get update</code> と <code>sudo apt-get upgrade</code> の説明が役に立ったと感じたら、ぜひ友人にシェアしていただき、より多くの人に知識を広めてください。</p><p>また、<a href="https://twitter.com/kriskoishigawa">Twitter</a> で感想をお聞かせいただけると嬉しいです。</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Linux でファイルやディレクトリを削除する方法 – フォルダとファイルを削除するコマンド ]]>
                </title>
                <description>
                    <![CDATA[ 著者: Shittu Olumide Linux でファイルやディレクトリを削除することは、すべてのユーザーが知っておくべき基本的な操作です。一見シンプルな操作に思えますが、実際には用途に応じたさまざまな削除方法があります。 この記事では、Linux でのファイルやディレクトリの削除方法について、手順を追ったガイドで解説します。ファイルやフォルダとその内容を削除するためのコマンドについても詳しく説明します。 Linux でファイルを削除する方法 ファイルの削除とは、ファイルシステムからそのファイルへの参照を取り除くことを指します。ファイル自体はすぐにはストレージデバイスから消えませんが、その領域は再利用できる状態としてマークされます。 Linux でファイルを削除する方法はいくつかあります。以下は一般的な削除方法です。 GUI ファイルマネージャの使用 ほとんどの Linux ディストリビューションには、グラフィカルインターフェイスを使用してファイルを削除できる GUI ファイルマネージャが付属しています。削除したいファイルに移動し、右クリックして「削除」または「ごみ箱に移動 ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/how-to-delete-a-file-or-directory-in-linux/</link>
                <guid isPermaLink="false">67864e7fd7aa1e04405877b9</guid>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                    <category>
                        <![CDATA[ command ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ YUUSUKE OKAMOTO ]]>
                </dc:creator>
                <pubDate>Fri, 17 Jan 2025 12:44:59 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2025/01/Shittu-Olumide-How-to-Delete-a-File-or-Directory-in-Linux---Command-to-Remove-a-Folder-and-its-Contents.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/how-to-delete-a-file-or-directory-in-linux/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Delete a File or Directory in Linux – Command to Remove a Folder and its Contents</a>
      </p><p>著者: Shittu Olumide</p><p>Linux でファイルやディレクトリを削除することは、すべてのユーザーが知っておくべき基本的な操作です。一見シンプルな操作に思えますが、実際には用途に応じたさまざまな削除方法があります。</p><p>この記事では、Linux でのファイルやディレクトリの削除方法について、手順を追ったガイドで解説します。ファイルやフォルダとその内容を削除するためのコマンドについても詳しく説明します。</p><h2 id="linux-">Linux でファイルを削除する方法</h2><p>ファイルの削除とは、ファイルシステムからそのファイルへの参照を取り除くことを指します。ファイル自体はすぐにはストレージデバイスから消えませんが、その領域は再利用できる状態としてマークされます。</p><p>Linux でファイルを削除する方法はいくつかあります。以下は一般的な削除方法です。</p><h3 id="gui-">GUI ファイルマネージャの使用</h3><p>ほとんどの Linux ディストリビューションには、グラフィカルインターフェイスを使用してファイルを削除できる GUI ファイルマネージャが付属しています。削除したいファイルに移動し、右クリックして「削除」または「ごみ箱に移動」を選択します。</p><h3 id="rm-"><code>rm</code> コマンドの使用</h3><p><code>rm</code> (remove) コマンドを使うことで、Linux 上のファイルやディレクトリを削除できます。<code>rm</code> コマンドを利用してファイルを削除するには、ターミナルで以下のコマンドを入力します。</p><pre><code>rm filename 
</code></pre><p><code>filename</code> には削除したいファイル名を指定してください。ファイルが書き込み保護されている場合や、削除するための権限がない場合には、削除の確認を求められます。</p><h3 id="shred-"><code>shred</code> コマンドの使用</h3><p><code>shred</code> コマンドは、ファイルを削除する前に、ファイルの内容を複数回上書きすることで、より確実に削除する方法です。この方法によって、削除されたファイルを復元するのが、難しくなります。</p><p><code>shred</code> コマンドを使うには、ターミナルで以下のコマンドを入力します。</p><pre><code>shred -u filename 
</code></pre><p><code>filename</code> には削除したいファイル名を指定してください。<code>-u</code> オプションは、上書き後にファイルを削除するように指示しています。</p><h3 id="trash-cli-"><code>trash-cli</code> コマンドの使用</h3><p><code>trash-cli</code> コマンドは、ファイルをすぐに削除するのではなく、ごみ箱に移動させることで、より安全に削除できます。<code>trash-cli</code> コマンドを使用するには、まず必要なパッケージをインストールする必要があります。</p><pre><code>sudo apt-get install trash-cli 
</code></pre><p>インストール後、以下のコマンドでファイルを削除できます。</p><pre><code>trash filename 
</code></pre><h2 id="linux--1">Linux でディレクトリを削除する方法</h2><p>Linux でディレクトリを削除するには、<code>rmdir</code> または <code>rm</code> コマンドを使用できます。<code>rmdir</code> コマンドは空のディレクトリを削除するのに使い、<code>rm</code> コマンドはディレクトリとそのディレクトリに含まれる全てのデータを削除します。</p><h3 id="rm--1"><code>rm</code> コマンドの使用</h3><p>以下は、<code>rm</code> コマンドを使って Linux でディレクトリを削除する手順です。</p><ol><li><strong>ターミナルを開く</strong>: Linux でディレクトリを削除するには、コマンドラインを利用する必要があります。キーボードで「Ctrl+Alt+T」を押すか、システムのアプリケーションランチャーで「terminal」を検索してターミナルを開きます。</li><li><strong>削除したいディレクトリに移動する</strong>: <code>cd</code> コマンドを使って、削除したいディレクトリに移動します。たとえば、削除したいディレクトリがホームフォルダ内の <code>my_directory</code> という名前の場合、<code>cd ~/my_directory</code> と入力して「Enter」を押します。</li><li><strong>ディレクトリの内容を確認する</strong>: ディレクトリを削除する前に、その内容を確認して正しいディレクトリを削除していることを確認するのが良いでしょう。<code>ls</code> コマンドを使ってディレクトリの内容を一覧表示します。たとえば、「ls」と入力して「Enter」を押すと、<code>my_directory</code> フォルダ内のファイルやフォルダが表示されます。</li><li><strong>ディレクトリとその内容を削除する</strong>: ディレクトリとその内容をすべて削除するには、<code>-r</code> オプション (再帰的削除) を付けた <code>rm</code> コマンドを使います。<code>rm -r my_directory</code> と入力して「Enter」を押します。削除の確認を求められるので、「y」と入力して「Enter」を押して確認します。</li><li><strong>ディレクトリが削除されたことを確認する</strong>: ディレクトリが削除されたことを確認するには、親ディレクトリの内容を表示するために <code>ls</code> コマンドを使います。たとえば、<code>my_directory</code> フォルダがホームフォルダ内にあった場合、<code>ls ~/</code> と入力して「Enter」を押します。<code>my_directory</code> フォルダはもう表示されないはずです。</li></ol><p>注意: <code>rm -r</code> コマンドを使用する際は、ファイルやディレクトリを復元できない形にて削除されるので、注意してください。</p><h3 id="rmdir-"><code>rmdir</code> コマンドの使用</h3><p>以下は、<code>rmdir</code> コマンドを使って Linux でディレクトリを削除する手順です。</p><ol><li><strong>ターミナルを開く</strong>: キーボードで「Ctrl+Alt+T」を押すか、システムのアプリケーションランチャーで「terminal」を検索してターミナルを開きます。</li><li><strong>削除したいディレクトリに移動する</strong>: <code>cd</code> コマンドを使って削除したいディレクトリに移動します。たとえば、削除したいディレクトリがホームフォルダ内の <code>my_directory</code> という名前の場合、<code>cd ~/my_directory</code> と入力して「Enter」を押します。</li><li><strong>ディレクトリを削除する</strong>: <code>rmdir</code> コマンドに続けてディレクトリの名前を入力します。<code>rmdir my_directory</code> と入力して「Enter」を押します。もし、ディレクトリが空でない場合には、エラーメッセージが表示され、削除は行われません。</li><li><strong>ディレクトリが削除されたことを確認する</strong>: ディレクトリが削除されたことを確認するには、親ディレクトリの内容を表示するために <code>ls</code> コマンドを使います。たとえば、<code>my_directory</code> フォルダがホームフォルダ内にあった場合、<code>ls ~/</code> と入力して「Enter」を押します。<code>my_directory</code> フォルダはもう表示されないはずです。</li></ol><h2 id="-">まとめ</h2><p><code>rm</code> コマンドはファイルを削除するためによく使われるコマンドであり、<code>rmdir</code> や <code>rm -r</code> または <code>rm -R</code> オプションはディレクトリを削除するために使用されます。この手順を追ったガイドに従うことで、Linux 上で効率的にファイルやディレクトリを削除できるようになります。</p><p>追加のヒント:</p><ol><li><code>rm</code> コマンドを <code>-r</code> または <code>-R</code> オプションと一緒に使う際は注意が必要です。ファイルやディレクトリを取り戻せない形で削除する可能性があります。</li><li>間違ったファイルやディレクトリを誤って削除しないよう、削除する前にファイル名やディレクトリ名を必ず再確認してください。</li><li>ファイルを削除するのに他の方法より時間がかかることがあるため、<code>shred</code> コマンドは必要な時だけ使用してください。</li><li>一部のファイルやディレクトリの削除には管理者 (root) 権限が必要な場合があるため、ファイルやディレクトリを削除する際のファイルの権限に気を付けてください。</li></ol><p><a href="https://www.twitter.com/Shittu_Olumide_" rel="nofollow">Twitter</a> または <a href="https://www.linkedin.com/in/olumide-shittu" rel="nofollow">LinkedIn</a> でつながりましょう。私の <a href="https://www.youtube.com/channel/UCNhFxpk6hGt5uMCKXq0Jl8A" rel="nofollow">YouTube</a> チャンネルにも登録できます。</p><p>プログラミングを楽しんでください！</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Bash スクリプトチュートリアル – 初心者向けの Linux シェルスクリプトとコマンドライン ]]>
                </title>
                <description>
                    <![CDATA[ Linux では、プロセスの自動化は shell スクリプトに大きく依存しています。shell スクリプトとは、一連のコマンドを含むファイルを作成し、まとめて実行できるようにすることを意味します。 この記事では、変数、コマンド、入力 / 出力、およびデバッグを含む bash スクリプトの基本から説明します。それぞれの例もあわせて見ていきます。 それでは始めましょう。🚀 目次  1. 事前準備  2. はじめに  * Bash スクリプトの定義  * Bash スクリプトの利点  * Bash shell とコマンドラインインターフェースの概要  3. Bash スクリプトの始め方  * コマンドラインから Bash コマンドを実行する方法  * Bash スクリプトの作成と実行方法  4. Bash スクリプトの基本  * ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/bash-scripting-tutorial-linux-shell-script-and-command-line-for-beginners/</link>
                <guid isPermaLink="false">6655a9337aebac04055b9be1</guid>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Bash ]]>
                    </category>
                
                    <category>
                        <![CDATA[ command ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Charlotte Stone ]]>
                </dc:creator>
                <pubDate>Fri, 12 Jul 2024 15:57:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2024/05/Copy-of-Cast-a-Function-in-SQL---Convert-Char-to-Int-SQL-Server-Example.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/bash-scripting-tutorial-linux-shell-script-and-command-line-for-beginners/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">https://www.freecodecamp.org/news/bash-scripting-tutorial-linux-shell-script-and-command-line-for-beginners/</a>
      </p><p>Linux では、プロセスの自動化は shell スクリプトに大きく依存しています。shell スクリプトとは、一連のコマンドを含むファイルを作成し、まとめて実行できるようにすることを意味します。</p><p>この記事では、変数、コマンド、入力 / 出力、およびデバッグを含む bash スクリプトの基本から説明します。それぞれの例もあわせて見ていきます。</p><p>それでは始めましょう。🚀</p><h2 id="-">目次</h2><!--kg-card-begin: markdown--><ol>
<li><a href="#pre-requisites">事前準備</a></li>
<li><a href="#introduction">はじめに</a></li>
</ol>
<ul>
<li><a href="#definition-of-bash-scripting">Bash スクリプトの定義</a></li>
<li><a href="#advantages-of-bash-scripting">Bash スクリプトの利点</a></li>
<li><a href="#overview-of-bash-shell-and-command-line-interface">Bash shell とコマンドラインインターフェースの概要</a></li>
</ul>
<ol start="3">
<li><a href="#how-to-get-started-with-bash-scripting">Bash スクリプトの始め方</a></li>
</ol>
<ul>
<li><a href="#how-to-run-bash-commands-from-the-command-line">コマンドラインから Bash コマンドを実行する方法</a></li>
<li><a href="#how-to-create-and-execute-bash-scripts">Bash スクリプトの作成と実行方法</a></li>
</ul>
<ol start="4">
<li><a href="#bash-scripting-basics">Bash スクリプトの基本</a></li>
</ol>
<ul>
<li><a href="#comments-in-bash-scripting">Bash スクリプトでのコメント</a></li>
<li><a href="#variables-and-data-types-in-bash">Bash における変数とデータ型</a></li>
<li><a href="#input-and-output-in-bash-scripts">入力と出力に関する Bash スクリプト</a></li>
<li><a href="#basic-bash-commands-echo-read-etc-">基本的な Bash コマンド (echo、read など)</a></li>
<li><a href="#conditional-statements-if-else-">条件文 (if / else)</a></li>
</ul>
<ol start="5">
<li><a href="#looping-and-branching-in-bash">Bash におけるループと分岐</a></li>
</ol>
<ul>
<li><a href="#while-loop">While ループ</a></li>
<li><a href="#for-loop">For ループ</a></li>
<li><a href="#case-statements">Case 文</a></li>
</ul>
<ol start="6">
<li><a href="#how-to-schedule-scripts-using-cron">cron を使用したスクリプトのスケジュール設定方法</a></li>
<li><a href="#how-to-debug-and-troubleshoot-bash-scripts">Bash スクリプトのデバッグとトラブルシューティング方法</a></li>
<li><a href="#conclusion">結論</a></li>
</ol>
<ul>
<li><a href="#resources-for-learning-more-about-bash-scripting">Bash スクリプトに関するさらなる学習リソース</a></li>
</ul>
<!--kg-card-end: markdown--><!--kg-card-begin: html--><h2 id="pre-requisites">事前準備</h2><!--kg-card-end: html--><p>このチュートリアルに従うには、次のアクセス権が必要です:</p><ul><li>コマンドラインにアクセスできる、実行可能な Linux のバージョン。</li></ul><p>Linux をインストールしていない場合や、まだ始めたばかりの場合は、<a href="https://replit.com/~">Replit</a> を介して簡単に Linux コマンドラインにアクセスできます。Replit はブラウザベースの IDE であり、数分で bash シェルにアクセスできます。</p><p>Windows システム上に Linux をインストールする方法として、WSL (Windows Subsystem for Linux) を使用することもできます。<a href="https://www.freecodecamp.org/news/how-to-install-wsl2-windows-subsystem-for-linux-2-on-windows-10/">そのためのチュートリアルはこちら</a>です。</p><!--kg-card-begin: html--><h2 id="introduction">はじめに</h2><!--kg-card-end: html--><!--kg-card-begin: html--><h3 id="definition-of-bash-scripting">Bash スクリプトの定義</h3><!--kg-card-end: html--><p>Bash スクリプトとは、bash プログラムによって一行ずつ実行されるコマンドのシーケンスを含むファイルのことです。これにより、特定のディレクトリへの移動、フォルダの作成、コマンドラインを使用したプロセスの起動など、一連の操作を実行することができます。</p><p>これらのコマンドをスクリプトに保存することにより、スクリプトを実行するだけで、同じ手順を何度も繰り返すことができます。</p><!--kg-card-begin: html--><h3 id="advantages-of-bash-scripting">Bash スクリプトの利点</h3><!--kg-card-end: html--><p>Bash スクリプトは、システム管理タスクの自動化、システムリソースの管理、および Unix / Linux システムでのその他のルーチンタスクを実行するための強力で多用途なツールです。シェルスクリプトの利点には以下のものがあります:</p><ul><li><strong>自動化</strong>: シェルスクリプトは繰り返しのタスクやプロセスを自動化でき、手動実行によるエラーのリスクを減らしながら時間を節約できます。</li><li><strong>移植性</strong>: シェルスクリプトは Unix、Linux、macOS、さらにはエミュレーターや仮想マシンを使えば Windows でも実行可能です。</li><li><strong>柔軟性</strong>: シェルスクリプトはカスタマイズ性が非常に高く、特定の要件に合わせて簡単に修正できます。他のプログラミング言語やユーティリティと組み合わせて、より強力なスクリプトを作成することも可能です。</li><li><strong>アクセシビリティ</strong>: シェルスクリプトは簡単に書ける上、特別なツールやソフトウェアを必要としません。どのテキストエディタでも編集でき、大部分のオペレーティングシステムには標準でシェルインタープリターが搭載されています。</li><li><strong>統合性</strong>: シェルスクリプトはデータベース、ウェブサーバー、クラウドサービスなど、他のツールやアプリケーションと統合でき、より複雑な自動化やシステム管理タスクを実行することができます。</li><li><strong>デバッグ</strong>: シェルスクリプトはデバッグが容易で、ほとんどのシェルにはデバッグおよびエラーレポートツールが内蔵されており、問題を迅速に特定して修正するのに役立ちます。</li></ul><!--kg-card-begin: html--><h3 id="overview-of-bash-shell-and-command-line-interface">Bash シェルとコマンドラインインターフェースの概要</h3><!--kg-card-end: html--><p>「シェル」と「bash」という用語は同じように使われることがありますが、二つの間には微妙な違いがあります。</p><p>「シェル」という用語は、オペレーティングシステムと対話するためのコマンドラインインターフェースを提供するプログラムを指します。Bash (Bourne-Again SHell) は最も一般的に使用される Unix / Linux シェルの一つで、多くの Linux ディストリビューションでデフォルトのシェルとなっています。</p><p>シェルやコマンドラインインターフェースは次のような見た目をしています:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2024/06/image-135.png" class="kg-image" alt="image-135" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2024/06/image-135.png 600w, https://www.freecodecamp.org/japanese/news/content/images/2024/06/image-135.png 1000w" sizes="(min-width: 720px) 720px" width="1000" height="532" loading="lazy"><figcaption>ユーザーからのコマンドを受け付け、出力を表示するシェル</figcaption></figure><p>上記の出力例では、<code>zaira@Zaira</code> がシェルプロンプトです。シェルが対話的に使用される場合、ユーザーからのコマンドを待っているときに <code>$</code> が表示されます。</p><p>シェルが root (管理権限を持つユーザー) として実行されている場合、プロンプトは <code>#</code> に変わります。スーパーユーザーのシェルプロンプトは次のような見た目です:</p><pre><code class="language-Bash">[root@host ~]#</code></pre><p>Bash はシェルの一種ですが、他にも Korn シェル (ksh)、C シェル (csh)、Z シェル (zsh) などのシェルがあります。各シェルにはそれぞれ独自の構文と機能がありますが、いずれもオペレーティングシステムと対話するためのコマンドラインインターフェースを提供するという共通の目的を持っています。</p><p><code>ps</code> コマンドを使用して、自分のシェルの種類を確認することができます:</p><pre><code class="language-Bash">ps</code></pre><p>私の環境では、以下のように出力結果されます:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2024/06/image-134.png" class="kg-image" alt="image-134" width="417" height="145" loading="lazy"><figcaption>シェルの種類の確認。私は Bash シェルを使用しています。</figcaption></figure><p>要約すると、「シェル (shell)」はコマンドラインインターフェースを提供する任意のプログラムを指す広義の用語であり、「Bash」は Unix / Linux システムで広く使用されている特定の種類のシェルです。</p><p>注意: このチュートリアルでは「bash」シェルを使用します。</p><!--kg-card-begin: html--><h2 id="how-to-get-started-with-bash-scripting">Bash スクリプトの始め方</h2><!--kg-card-end: html--><!--kg-card-begin: html--><h3 id="how-to-run-bash-commands-from-the-command-line">コマンドラインから Bash コマンドを実行する方法</h3><!--kg-card-end: html--><p>前述の通り、シェルプロンプトは以下のように表示されます:</p><pre><code class="language-Bash">[username@host ~]$</code></pre><p><code>$</code> マークの後に任意のコマンドを入力し、その出力をターミナルで確認できます。</p><p>一般的に、コマンドは以下の構文に従います:</p><pre><code class="language-Bash">command [OPTIONS] arguments</code></pre><p>基本的な Bash コマンドについていくつか説明しながら、その出力を見てみましょう。一緒に試しながら進めてください :)</p><ul><li><code>date</code>: 現在の日付を表示します。</li></ul><pre><code class="language-Bash">zaira@Zaira:~/shell-tutorial$ date
Tue Mar 14 13:08:57 PKT 2023</code></pre><ul><li><code>pwd</code>: 現在の作業ディレクトリを表示します。</li></ul><pre><code class="language-Bash">zaira@Zaira:~/shell-tutorial$ pwd
/home/zaira/shell-tutorial</code></pre><ul><li><code>ls</code>: 現在のディレクトリの内容を一覧表示します。</li></ul><pre><code class="language-Bash">zaira@Zaira:~/shell-tutorial$ ls
check_plaindrome.sh  count_odd.sh  env  log  temp</code></pre><ul><li><code>echo</code>: テキスト文字列や変数の値をターミナルに表示します。</li></ul><pre><code class="language-Bash">zaira@Zaira:~/shell-tutorial$ echo "Hello bash"
Hello bash</code></pre><p>コマンドのマニュアルは <code>man</code> コマンドでいつでも参照できます。</p><p>例えば、<code>ls</code> のマニュアルは以下のように表示されます:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2024/06/image-138.png" class="kg-image" alt="image-138" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2024/06/image-138.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2024/06/image-138.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2024/06/image-138.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2024/06/image-138.png 1890w" sizes="(min-width: 720px) 720px" width="1890" height="969" loading="lazy"><figcaption><code>man</code> コマンドを使用すると、コマンドの詳細なオプションを確認できます。</figcaption></figure><!--kg-card-begin: html--><h3 id="how-to-create-and-execute-bash-scripts">Bash スクリプトの作成と実行方法</h3><!--kg-card-end: html--><h3 id="--1">スクリプトの命名規則</h3><p>命名規則によれば、Bash スクリプトは <code>.sh</code> で終わります。ただし、<code>sh</code> の拡張子なしでも Bash スクリプトは正常に実行できます。</p><h3 id="shebang-">Shebang の追加</h3><p>Bash スクリプトは「シバン」<code>shebang</code> で始まります。Shebang は、hash <code>#</code> と bang <code>!</code> に続いて bash シェルのパスが書かれたものです。これはスクリプトの最初の行に書かれます。Shebang はシェルに対して、このスクリプトを bash シェルで実行するよう指示します。Shebang は単に bash インタープリターの絶対パスです。</p><p>以下は shebang ステートメントの例です:</p><pre><code class="language-Bash">#!/bin/bash</code></pre><p>次のコマンドを使用して、お使いの bash シェルのパス (上記の例とは異なる場合があります) を見つけることができます:</p><pre><code class="language-Bash">which bash</code></pre><h3 id="-bash-">最初の Bash スクリプトを作成する</h3><p>これから作成するスクリプトでは、ユーザーにパスの入力を促します。そして結果として、そのパスの内容を一覧表示します。</p><p>まず、<code>vi</code> コマンドを使用して、<code>run_all.sh</code> という名前のファイルを作成してください。他の任意のエディタを使用しても構いません。</p><pre><code class="language-Bash">vi run_all.sh</code></pre><p>ファイルに以下のコマンドを追加して保存してください:</p><figure class="kg-card kg-code-card"><pre><code class="language-Bash">#!/bin/bash
echo "Today is " `date`

echo -e "\nenter the path to directory"
read the_path

echo -e "\n you path has the following files and folders: "
ls $the_path</code></pre><figcaption>ユーザーが指定したディレクトリの内容を表示するスクリプト</figcaption></figure><p>スクリプトを行ごとに詳しく見てみましょう。同じスクリプトを、行番号付きで以下に示します。</p><pre><code class="language-Bash">  1 #!/bin/bash
  2 echo "Today is " `date`
  3
  4 echo -e "\nenter the path to directory"
  5 read the_path
  6
  7 echo -e "\n you path has the following files and folders: "
  8 ls $the_path</code></pre><ul><li>1 行目: シバン (<code>#!/bin/bash</code>) は Bash シェルのパスを指します。</li><li>2 行目: <code>echo</code> コマンドはバッククォートで囲まれた <code>date</code> を使用して、現在の日付と時刻をターミナルに表示します。</li><li>4 行目: ユーザーに有効なパスを入力してもらいます。</li><li>5 行目: <code>read</code> コマンドは入力を読み取り、変数 <code>the_path</code> に格納します。</li><li>8 行目: <code>ls</code> コマンドは変数に格納されたパスを取り、現在のファイルやフォルダを表示します。</li></ul><h3 id="bash-">Bash スクリプトを実行する</h3><p>スクリプトを実行可能にするために、次のコマンドでユーザーに実行権限を付与します:</p><pre><code class="language-Bash">chmod u+x run_all.sh</code></pre><p>ここでは、</p><ul><li><code>chmod</code> は現在のユーザー <code>u</code> のファイルの所有権を変更します。</li><li><code>+x</code> は現在のユーザーに実行権限を追加します。これにより、ファイルの所有者であるユーザーがスクリプトを実行できるようになります。</li><li><code>run_all.sh</code> は実行可能にしたいファイルです。</li></ul><p>以下の方法でスクリプトを実行できます:</p><ul><li><code>sh run_all.sh</code></li><li><code>bash run_all.sh</code></li><li><code>./run_all.sh</code></li></ul><p>それでは実際に動作する様子を見てみましょう🚀</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2024/06/run-script-bash-2.gif" class="kg-image" alt="run-script-bash-2" width="927" height="411" loading="lazy"></figure><!--kg-card-begin: html--><h2 id="bash-scripting-basics">Bash スクリプトの基本</h2><!--kg-card-end: html--><!--kg-card-begin: html--><h3 id="comments-in-bash-scripting">Bash スクリプトでのコメント</h3><!--kg-card-end: html--><p>Bash スクリプトのコメントは <code>#</code> から始まります。つまり、<code>#</code> で始まる行はコメントであり、インタープリターに無視されます。</p><p>コメントはコードのドキュメント化に非常に役立ち、他の人がコードを理解しやすくするためにも、コメントを追加するのは良い習慣です。</p><p>以下はコメントの例です:</p><pre><code class="language-bash"># This is an example comment
# Both of these lines will be ignored by the interpreter</code></pre><!--kg-card-begin: html--><h3 id="variables-and-data-types-in-bash">Bash における変数とデータ型</h3><!--kg-card-end: html--><p>変数を使用するとデータを保存できます。変数を使ってスクリプトのあらゆる場所でデータを読み取り、アクセスし、操作することができます。</p><p>Bash にはデータ型がありません。Bash では、変数は数値、個々の文字、または文字列を保存することができます。</p><p>Bash では、変数の値を以下のように使用および設定できます:</p><ol><li>直接値を割り当てる例:</li></ol><pre><code class="language-bash">country=Pakistan</code></pre><!--kg-card-begin: markdown--><ol start="2">
<li>コマンド置換を使用して、プログラムやコマンドの出力に基づいて値を割り当てる例。既存の変数の値にアクセスするには <code>$</code> が必要です。</li>
</ol>
<!--kg-card-end: markdown--><figure class="kg-card kg-code-card"><pre><code class="language-bash">same_country=$country</code></pre><figcaption><code>country</code> の値を新しい変数 <code>same_country</code> に割り当てる</figcaption></figure><p>変数の値にアクセスするには、変数名の頭に <code>$</code> を付け加えます。</p><figure class="kg-card kg-code-card"><pre><code class="language-bash">zaira@Zaira:~$ country=Pakistan
zaira@Zaira:~$ echo $country
Pakistan
zaira@Zaira:~$ new_country=$country
zaira@Zaira:~$ echo $new_country
Pakistan</code></pre><figcaption>変数に値を割り当てて値を表示する</figcaption></figure><h3 id="--2">変数の命名規則</h3><p>Bash スクリプティングにおける変数の命名規則は以下の通りです:</p><!--kg-card-begin: markdown--><ol>
<li>変数名は文字またはアンダースコア (<code>_</code>) で始める必要があります。</li>
<li>変数名には文字、数字、アンダースコア (<code>_</code>) を含めることができます。</li>
<li>変数名は大文字と小文字を区別します。</li>
<li>変数名にはスペースや特殊文字を含めることはできません。</li>
<li>変数の目的を反映した説明的な名前を使用します。</li>
<li><code>if</code>、<code>then</code>、<code>else</code>、<code>fi</code> などの予約キーワードを変数名として使用することは避けます。</li>
</ol>
<!--kg-card-end: markdown--><p>以下は Bash で有効な変数名の例です:</p><pre><code class="language-bash">name
count
_var
myVar
MY_VAR</code></pre><p>以下は Bash で無効な変数名の例です:</p><pre><code class="language-bash">2ndvar (variable name starts with a number)
my var (variable name contains a space)
my-var (variable name contains a hyphen)</code></pre><p>これらの命名規則に従うことは、Bash スクリプトをより読みやすく、メンテナンスしやすくするのに役立ちます。</p><!--kg-card-begin: markdown--><h3 id="input-and-output-in-bash-scripts">入力と出力に関する Bash スクリプト</h3><!--kg-card-end: markdown--><h3 id="--3">入力の収集</h3><p>このセクションでは、スクリプトに入力を提供するいくつかの方法について説明します。</p><ol><li>ユーザーの入力を読み取り、変数に格納する方法</li></ol><p><code>read</code> コマンドを使用してユーザーの入力を読み取ることができます。</p><pre><code class="language-bash">#!/bin/bash 

echo "What's your name?" 

read entered_name 

echo -e "\nWelcome to bash tutorial" $entered_name</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2024/07/name-sh.gif" class="kg-image" alt="name-sh" width="843" height="431" loading="lazy"></figure><!--kg-card-begin: markdown--><ol start="2">
<li>ファイルから読み取る方法</li>
</ol>
<!--kg-card-end: markdown--><p>このコードは、<code>input.txt</code> という名前のファイルから各行を読み取り、それをターミナルに出力します。while ループについては後ほど学びます。</p><pre><code class="language-bash">while read line
do
  echo $line
done &lt; input.txt
</code></pre><!--kg-card-begin: markdown--><ol start="3">
<li>コマンドライン引数を使う方法</li>
</ol>
<!--kg-card-end: markdown--><p>Bash スクリプトや関数では、<code>$1</code> は渡された最初の引数、<code>$2</code> は 2 番目の引数を表します。その後の数字も同様です。</p><p>下記のスクリプトは、コマンドライン引数として名前を受け取り、個別の挨拶メッセージを表示します。</p><pre><code class="language-bash">echo "Hello, $1!"
</code></pre><p>スクリプトに引数として <code>Zaira</code> を渡してみます。</p><figure class="kg-card kg-code-card"><pre><code class="language-bash">#!/bin/bash
echo "Hello, $1!"</code></pre><figcaption>スクリプト <code>greeting.sh</code> のコード</figcaption></figure><!--kg-card-begin: markdown--><p><strong>出力:</strong></p>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2024/07/name-sh-1.gif" class="kg-image" alt="name-sh-1" width="883" height="455" loading="lazy"></figure><h3 id="--4">出力の表示</h3><p>ここでは、スクリプトから出力を受け取るいくつかの方法について説明します。</p><ol><li>ターミナルへの出力:</li></ol><pre><code class="language-bash">echo "Hello, World!"
</code></pre><p>これは、ターミナルに「Hello, World!」というテキストを表示します。</p><!--kg-card-begin: markdown--><ol start="2">
<li>ファイルへの書き込み:</li>
</ol>
<!--kg-card-end: markdown--><pre><code class="language-bash">echo "This is some text." &gt; output.txt</code></pre><p>これは、「This is some text.」というテキストを <code>output.txt</code> という名前のファイルに書き込みます。なお、<code>&gt;</code> 演算子はファイルに既に内容がある場合、それを上書きします。</p><!--kg-card-begin: markdown--><ol start="3">
<li>ファイルへの追記:</li>
</ol>
<!--kg-card-end: markdown--><pre><code class="language-bash">echo "More text." &gt;&gt; output.txt</code></pre><p>これは、「More text.」というテキストを <code>output.txt</code> ファイルの末尾に追記します。</p><!--kg-card-begin: markdown--><ol start="4">
<li>出力のリダイレクト:</li>
</ol>
<!--kg-card-end: markdown--><pre><code class="language-bash">ls &gt; files.txt</code></pre><p>これは、現在のディレクトリ内のファイルを一覧表示し、その出力を <code>files.txt</code> という名前のファイルに書き込みます。この方法で任意のコマンドの出力をファイルにリダイレクトできます。</p><!--kg-card-begin: html--><h3 id="basic-bash-commands-echo-read-etc-">基本的な Bash コマンド (echo、read など)</h3><!--kg-card-end: html--><p>以下は、最もよく使われる Bash コマンドのリストです:</p><!--kg-card-begin: markdown--><ol>
<li><code>cd</code>: ディレクトリを別の場所に変更します。</li>
<li><code>ls</code>: 現在のディレクトリの内容を一覧表示します。</li>
<li><code>mkdir</code>: 新しいディレクトリを作成します。</li>
<li><code>touch</code>: 新しいファイルを作成します。</li>
<li><code>rm</code>: ファイルまたはディレクトリを削除します。</li>
<li><code>cp</code>: ファイルまたはディレクトリをコピーします。</li>
<li><code>mv</code>: ファイルまたはディレクトリを移動または名前を変更します。</li>
<li><code>echo</code>: テキストをターミナルに表示します。</li>
<li><code>cat</code>: ファイルの内容を連結して表示します。</li>
<li><code>grep</code>: ファイル内のパターンを検索します。</li>
<li><code>chmod</code>: ファイルまたはディレクトリの権限を変更します。</li>
<li><code>sudo</code>: 管理者権限でコマンドを実行します。</li>
<li><code>df</code>: 使用可能なディスク容量を表示します。</li>
<li><code>history</code>: 以前に実行したコマンドのリストを表示します。</li>
<li><code>ps</code>: 実行中のプロセスに関する情報を表示します。</li>
</ol>
<!--kg-card-end: markdown--><!--kg-card-begin: html--><h3 id="conditional-statements-if-else-">条件文 (if / else)</h3><!--kg-card-end: html--><p>条件を評価してブール値 (true または false) を返す式は、条件と呼ばれます。条件を評価する方法には、<code>if</code>、<code>if-else</code>、<code>if-elif-else</code>、およびネストした条件分岐があります。</p><!--kg-card-begin: markdown--><p><strong>構文:</strong></p>
<!--kg-card-end: markdown--><figure class="kg-card kg-code-card"><pre><code class="language-bash">if [[ condition ]];
then
	statement
elif [[ condition ]]; then
	statement 
else
	do this by default
fi</code></pre><figcaption>Bash の条件文の構文</figcaption></figure><p>論理演算子、AND <code>-a</code> および OR <code>-o</code>、を使用して、より詳細な比較を行うことができます。</p><figure class="kg-card kg-code-card"><pre><code class="language-bash">if [ $a -gt 60 -a $b -lt 100 ]</code></pre><figcaption>この文は、「a が 60 より大きい」かつ「b が 100 未満」という両方の条件が <code>true</code> であるかどうかをチェックします。</figcaption></figure><p>ここでは、ユーザーが入力した数値が正、負、またはゼロのいずれかを判定するために、<code>if</code>、<code>if-else</code>、および <code>if-elif-else</code> 文を使用する Bash スクリプトの例を見てみましょう。</p><figure class="kg-card kg-code-card"><pre><code class="language-bash">#!/bin/bash

echo "Please enter a number: "
read num

if [ $num -gt 0 ]; then
  echo "$num is positive"
elif [ $num -lt 0 ]; then
  echo "$num is negative"
else
  echo "$num is zero"
fi
</code></pre><figcaption>数値が正、負、またはゼロのいずれかを判定するスクリプト</figcaption></figure><p>最初に、スクリプトはユーザーに数値の入力を促します。次に、その数値が 0 より大きいかどうかを <code>if</code> 文でチェックします。もし数値が 0 より大きければ、スクリプトは数値が正であると出力します。当てはまらない場合、スクリプトは次の <code>if-elif</code> 文に進みます。ここで、スクリプトは数値が 0 より小さいかどうかをチェックします。もし数値が 0 より小さければ、スクリプトは数値が負であると出力します。最後に、もし数値が 0 より大きくも小さくもなければ、スクリプトは <code>else</code> 文を使用して数値がゼロであることを出力します。</p><p>実際に動作を見てみましょう🚀</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2024/07/test-odd.gif" class="kg-image" alt="test-odd" width="913" height="518" loading="lazy"></figure><!--kg-card-begin: html--><h2 id="looping-and-branching-in-bash">Bash におけるループと分岐</h2><!--kg-card-end: html--><!--kg-card-begin: html--><h3 id="while-loop">While ループ</h3><!--kg-card-end: html--><p>While ループは条件を確認し、条件が <code>true</code> の間ループします。ループの実行を制御するために、カウンター文を提供する必要があります。</p><p>以下の例では、<code>(( i += 1 ))</code> がカウンター文であり、<code>i</code> の値を増やします。このループはちょうど 10 回実行されます。</p><figure class="kg-card kg-code-card"><pre><code class="language-bash">#!/bin/bash
i=1
while [[ $i -le 10 ]] ; do
   echo "$i"
  (( i += 1 ))
done</code></pre><figcaption>10 回繰り返す While ループ</figcaption></figure><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2024/07/image-187.png" class="kg-image" alt="image-187" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2024/07/image-187.png 600w, https://www.freecodecamp.org/japanese/news/content/images/2024/07/image-187.png 630w" width="630" height="266" loading="lazy"></figure><!--kg-card-begin: html--><h3 id="for-loop">For ループ</h3><!--kg-card-end: html--><p><code>for</code> ループも、<code>while</code> ループと同様に、特定の回数だけステートメントを実行することができます。それぞれのループは構文と使用方法が異なります。</p><p>以下の例では、ループは 5 回繰り返されます。</p><figure class="kg-card kg-code-card"><pre><code class="language-bash">#!/bin/bash

for i in {1..5}
do
    echo $i
done</code></pre><figcaption>5 回繰り返す For ループ</figcaption></figure><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2024/07/image-186.png" class="kg-image" alt="image-186" width="580" height="150" loading="lazy"></figure><!--kg-card-begin: html--><h3 id="case-statements">Case 文</h3><!--kg-card-end: html--><p>Bash では、case 文を使用して、与えられた値をパターンのリストと比較し、最初にマッチしたパターンに基づいてコードブロックを実行することができます。Bash における case 文の構文は以下の通りです:</p><figure class="kg-card kg-code-card"><pre><code class="language-bash">case expression in
    pattern1)
        # code to execute if expression matches pattern1
        ;;
    pattern2)
        # code to execute if expression matches pattern2
        ;;
    pattern3)
        # code to execute if expression matches pattern3
        ;;
    *)
        # code to execute if none of the above patterns match expression
        ;;
esac
</code></pre><figcaption>case 文の構文</figcaption></figure><p>ここでは、「expression」は比較したい値であり、「pattern1」、「pattern2」、「pattern3」などが比較対象にしたいパターンです。</p><p>二重のセミコロン ";;" は、各パターンに対して実行するコードブロックを区切ります。アスタリスク "*" はデフォルトのケースを表し、指定されたパターンのどれも一致しない場合に実行されます。</p><p>例を見てみましょう。</p><figure class="kg-card kg-code-card"><pre><code class="language-bash">fruit="apple"

case $fruit in
    "apple")
        echo "This is a red fruit."
        ;;
    "banana")
        echo "This is a yellow fruit."
        ;;
    "orange")
        echo "This is an orange fruit."
        ;;
    *)
        echo "Unknown fruit."
        ;;
esac
</code></pre><figcaption>case 文の例</figcaption></figure><p>この例では、「fruit」の値が「apple」であるため、最初のパターンが一致し、「This is a red fruit.」と出力するコードブロックが実行されます。もし "fruit" の値が代わりに "banana" であれば、2 番目のパターンが一致し、「This is a yellow fruit.」と出力するコードブロックが実行されます。そして、「fruit」の値が指定されたどのパターンにも一致しない場合は、デフォルトのケースが実行され、「Unknown fruit.」と出力されます。</p><!--kg-card-begin: html--><h2 id="how-to-schedule-scripts-using-cron">cron を使用したスクリプトのスケジュール設定方法</h2><!--kg-card-end: html--><p>Cron は、Unix 系オペレーティングシステムで利用可能なジョブスケジューリングの強力なユーティリティです。cron を設定することで、日次、週次、月次、または特定の時間ベースで自動ジョブを設定することができます。cron が提供する自動化機能は、Linux システム管理において重要な役割を果たします。</p><p>以下は cron をスケジュールするための構文です:</p><pre><code class="language-bash"># Cron job example
* * * * * sh /path/to/script.sh</code></pre><p>この <code>*</code> は、それぞれ分、時、日、月、曜日を表します。</p><p>以下は cron ジョブをスケジュールするいくつかの例です。</p><!--kg-card-begin: markdown--><table>
<thead>
<tr>
<th>スケジュール</th>
<th>説明</th>
<th>例</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>0 0 * * *</code></td>
<td>毎日真夜中にスクリプトを実行する</td>
<td><code>0 0 * * * /path/to/script.sh</code></td>
</tr>
<tr>
<td><code>*/5 * * * *</code></td>
<td>5 分ごとにスクリプトを実行する</td>
<td><code>*/5 * * * * /path/to/script.sh</code></td>
</tr>
<tr>
<td><code>0 6 * * 1-5</code></td>
<td>月曜日から金曜日の朝 6 時にスクリプトを実行する</td>
<td><code>0 6 * * 1-5 /path/to/script.sh</code></td>
</tr>
<tr>
<td><code>0 0 1-7 * *</code></td>
<td>毎月最初の 7 日間にスクリプトを実行する</td>
<td><code>0 0 1-7 * * /path/to/script.sh</code></td>
</tr>
<tr>
<td><code>0 12 1 * *</code></td>
<td>毎月 1 日の正午にスクリプトを実行する</td>
<td><code>0 12 1 * * /path/to/script.sh</code></td>
</tr>
</tbody>
</table>
<!--kg-card-end: markdown--><h3 id="crontab-">crontab を使用する</h3><p><code>crontab</code> ユーティリティは、cron ジョブを追加および編集するために使用されます。</p><p><code>crontab -l</code> は特定のユーザーに予定されているスクリプトのリストを表示します。</p><p><code>crontab -e</code> を使用して cron を追加および編集できます。</p><p><a href="https://www.freecodecamp.org/news/cron-jobs-in-linux/">他の記事で cron ジョブについて詳しく読む</a>ことができます。</p><!--kg-card-begin: html--><h2 id="how-to-debug-and-troubleshoot-bash-scripts">Bash スクリプトのデバッグとトラブルシューティング方法</h2><!--kg-card-end: html--><p>デバッグとトラブルシューティングは、どんな Bash スクリプトの作成者にとっても重要なスキルです。Bash スクリプトは非常にパワフルですが、エラーや予期しない動作が発生することもあります。このセクションでは、Bash スクリプトのデバッグとトラブルシューティングのためのいくつかのヒントやテクニックについて説明します。</p><h3 id="set-x-"><code>set -x</code> オプションを設定する</h3><p>Bash スクリプトをデバッグするための最も有用なテクニックの 1 つは、スクリプトの先頭で <code>set -x</code> オプションを設定することです。このオプションを設定すると、Bash はデバッグモードが有効になり、実行する各コマンドの先頭に <code>+</code> 記号を付けて端末に出力します。これは、スクリプト内でどこでエラーが発生しているかを特定するのに非常に役立ちます。</p><pre><code class="language-bash">#!/bin/bash

set -x

# Your script goes here
</code></pre><h3 id="--5">終了コードを確認する</h3><p>Bash がエラーに遭遇すると、そのエラーの性質を示す終了コードが設定されます。直近で実行したコマンドの終了コードは、<code>$?</code> 変数を使用して確認できます。値が <code>0</code> の場合、成功を示し、それ以外の値はエラーを示します。</p><pre><code class="language-bash">#!/bin/bash

# Your script goes here

if [ $? -ne 0 ]; then
    echo "Error occurred."
fi
</code></pre><h3 id="echo-"><code>echo</code> 文を使用する</h3><p>Bash スクリプトをデバッグする別の有用なテクニックは、コード全体に <code>echo</code> 文を挿入することです。これにより、どこでエラーが発生しているかや変数に渡されている値を特定するのに役立ちます。</p><pre><code class="language-bash">#!/bin/bash

# Your script goes here

echo "Value of variable x is: $x"

# More code goes here
</code></pre><p><code>set -e</code> オプションを使用する</p><p>スクリプト内の任意のコマンドが失敗した場合にスクリプトを直ちに終了させたい場合は、<code>set -e</code> オプションを使用できます。このオプションにより、スクリプト内のどのコマンドが失敗しても Bash はエラーで終了し、スクリプト内のエラーを特定して修正することが容易になります。</p><pre><code class="language-bash">#!/bin/bash

set -e

# Your script goes here
</code></pre><h3 id="-cron-">ログを確認して cron のトラブルシューティングを行う</h3><p>ログファイルを使用して cron のトラブルシューティングを行うことができます。スケジュールされたすべてのジョブについて、ログが保持されています。特定のジョブが意図通りに実行されたかどうか、ログを確認して検証することができます。</p><p>Ubuntu や Debian の場合、<code>cron</code> ログは次の場所にあります:</p><pre><code class="language-bash">/var/log/syslog</code></pre><p>他のディストリビューションでは場所が異なる場合があります。</p><p>cron ジョブのログファイルは次のようになっているでしょう:</p><figure class="kg-card kg-code-card"><pre><code class="language-bash">2022-03-11 00:00:01 Task started
2022-03-11 00:00:02 Running script /path/to/script.sh
2022-03-11 00:00:03 Script completed successfully
2022-03-11 00:05:01 Task started
2022-03-11 00:05:02 Running script /path/to/script.sh
2022-03-11 00:05:03 Error: unable to connect to database
2022-03-11 00:05:03 Script exited with error code 1
2022-03-11 00:10:01 Task started
2022-03-11 00:10:02 Running script /path/to/script.sh
2022-03-11 00:10:03 Script completed successfully</code></pre><figcaption>cron ログ</figcaption></figure><!--kg-card-begin: html--><h2 id="conclusion">結論</h2><!--kg-card-end: html--><p>この記事では、まずターミナルへのアクセス方法といくつかの基本的な Bash コマンドの実行方法を説明しました。また、Bash シェルの概要についても学びました。ループや条件分岐を使用したコードの分岐についても簡単に見てきました。最後に、cron を使用したスクリプトの自動化とそのトラブルシューティング手法についても述べました。</p><!--kg-card-begin: html--><h3 id="resources-for-learning-more-about-bash-scripting">Bash スクリプトに関するさらなる学習リソース</h3><!--kg-card-end: html--><p>Bash スクリプティングの世界をさらに深く掘り下げたい場合は、freeCodeCamp による Linux に関する 6 時間の動画講座をお勧めします。</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.49999999999999%;" class="fluid-width-video-wrapper">
            <iframe width="200" height="113" src="https://www.youtube.com/embed/sWbUDq4S6Y8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" title="Introduction to Linux – Full Course for Beginners" name="fitvid0"></iframe>
          </div>
        </div>
      </figure><p>このチュートリアルで学んだ中で一番好きなことは何ですか？また、この<a href="https://zaira_.bio.link/">プラットフォーム</a>で私とつながることもできます。📧</p><p>次のチュートリアルでお会いしましょう。楽しいコーディングを😁</p><p>バナー画像のクレジット: <a href="https://www.freepik.com/free-vector/hand-drawn-flat-design-devops-illustration_25726540.htm#query=programmer%20linux&amp;position=4&amp;from_view=search&amp;track=ais">Freepik</a> による画像</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Ubuntu で静的 IP を設定する方法 – Linux IP アドレスチュートリアル ]]>
                </title>
                <description>
                    <![CDATA[  ほとんどのネットワーク構成では、デフォルトでルーターの DHCP サーバーが IP アドレスを動的に割り当てます。システムの IP アドレスを常に同じにしたい場合には、静的 IP を使用するように強制することができます。 この記事でその方法を学びましょう。Ubuntu で静的 IP を設定する方法を二つ説明します。 静的 IP アドレスは、次のような状況で使用されます:  * ポートフォワーディングの設定  * FTP サーバー、ウェブサーバー、またはメディアサーバーなど、システムをサーバーとして設定する場合 前提条件: このチュートリアルに従うためには、次のものが必要です:  * Ubuntu のインストール、できれば GUI が使用できること  * システム構成ファイルを変更するための sudo 権限 コマンドラインで静的 IP を設定する方法 このセクションでは、静的 IP を設定するために必要なすべてのステップを詳しく見ていきます。 ステップ 1: 端末を起動する ショートカット Ctrl + Shift ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/setting-a-static-ip-in-ubuntu-linux-ip-address-tutorial/</link>
                <guid isPermaLink="false">6623a3a3b1c5a80479f68b82</guid>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Ubuntu ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Charlotte Stone ]]>
                </dc:creator>
                <pubDate>Thu, 02 May 2024 08:52:51 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2024/04/setting-static-ip-ubuntu.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/setting-a-static-ip-in-ubuntu-linux-ip-address-tutorial/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Setting a Static IP in Ubuntu – Linux IP Address Tutorial</a>
      </p><p><br>ほとんどのネットワーク構成では、デフォルトでルーターの DHCP サーバーが IP アドレスを動的に割り当てます。システムの IP アドレスを常に同じにしたい場合には、静的 IP を使用するように強制することができます。</p><p>この記事でその方法を学びましょう。Ubuntu で静的 IP を設定する方法を二つ説明します。</p><p>静的 IP アドレスは、次のような状況で使用されます:</p><!--kg-card-begin: markdown--><ul>
<li>ポートフォワーディングの設定</li>
<li>FTP サーバー、ウェブサーバー、またはメディアサーバーなど、システムをサーバーとして設定する場合</li>
</ul>
<!--kg-card-end: markdown--><p><br><strong>前提条件:</strong></p><p>このチュートリアルに従うためには、次のものが必要です:</p><!--kg-card-begin: markdown--><ul>
<li>Ubuntu のインストール、できれば GUI が使用できること</li>
<li>システム構成ファイルを変更するための <code>sudo</code> 権限</li>
</ul>
<!--kg-card-end: markdown--><h2 id="-ip-">コマンドラインで静的 IP を設定する方法</h2><p>このセクションでは、静的 IP を設定するために必要なすべてのステップを詳しく見ていきます。</p><!--kg-card-begin: markdown--><h3 id="1">ステップ 1: 端末を起動する</h3>
<!--kg-card-end: markdown--><p>ショートカット <code>Ctrl + Shift + t</code> を使用して端末を起動できます。</p><!--kg-card-begin: markdown--><h3 id="2">ステップ 2: 現在のネットワークに関する情報をメモする</h3>
<!--kg-card-end: markdown--><p>設定に適切な変更を加えるために、現在の IP アドレス、サブネットマスク、およびネットワークアダプター名が必要です。</p><p>利用可能なアダプターとそれぞれの IP 情報の詳細を見つけるために、以下のコマンドを使用してください。</p><pre><code class="language-Bash">ip a</code></pre><p>出力は以下のようになります:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/japanese/news/content/images/2024/04/image-14.png" class="kg-image" alt="image-14" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2024/04/image-14.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2024/04/image-14.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/2024/04/image-14.png 1250w" sizes="(min-width: 720px) 720px" width="1250" height="514" loading="lazy"></figure><p>私のネットワークでは、現在のアダプターは <code>eth0</code> です。ただし、あなたのシステムでは異なる場合があります。</p><!--kg-card-begin: markdown--><ul>
<li><strong>現在のネットワークアダプター名をメモする</strong></li>
</ul>
<!--kg-card-end: markdown--><p>現在のアダプターが <code>eth0</code> であるため、以下の詳細が関連しています。</p><pre><code class="language-Bash">6: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:df:c3:ad brd ff:ff:ff:ff:ff:ff
    inet 172.23.199.129/20 brd 172.23.207.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fedf:c3ad/64 scope link
       valid_lft forever preferred_lft forever</code></pre><p>現在の IP アドレス <code>172.23.199.129</code> は動的に割り当てられていることを思い出しましょう。ネットマスクには <code>20</code> ビットが予約されています。ブロードキャストアドレスは <code>172.23.207.255</code> です。</p><!--kg-card-begin: markdown--><ul>
<li><strong>サブネットをメモする</strong></li>
</ul>
<!--kg-card-end: markdown--><p>サブネットマスクの詳細は、以下のコマンドを使用して見つけることができます。</p><pre><code class="language-Bash">ifconfig -a</code></pre><p>あなたのアダプターに対する出力を探して、注意深く読んでください。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2024/04/image-15.png" class="kg-image" alt="image-15" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2024/04/image-15.png 600w, https://www.freecodecamp.org/japanese/news/content/images/2024/04/image-15.png 948w" sizes="(min-width: 720px) 720px" width="948" height="236" loading="lazy"><figcaption>IP は <code>172.23.199.129</code>、サブネットマスクは <code>255.255.240.0</code> です。</figcaption></figure><p>クラスとサブネットマスクに基づくと、私のネットワークの使用可能なホスト IP 範囲は、<code>172.23.192.1</code> から <code>172.23.207.254</code> までです。</p><p>サブネット分割は広範なトピックです。サブネット化や使用可能な IP 範囲に関する詳細は、<a href="https://www.freecodecamp.org/japanese/news/subnet-cheat-sheet-24-subnet-mask-30-26-27-29-and-other-ip-address-cidr-network-references/">この記事</a>を参照してください。</p><!--kg-card-begin: markdown--><h3 id="3">ステップ 3: 設定変更を行う</h3>
<!--kg-card-end: markdown--><p><a href="https://netplan.io">Netplan</a> は、最新の Ubuntu バージョンのデフォルトのネットワーク管理ツールです。Netplan の設定ファイルは YAML を使用して書かれ、拡張子は <code>.yaml</code> で終わります。</p><p>注意: 構成ファイル内のスペースに注意してください。これらは構文の一部です。適切なインデントがないと、ファイルが正しく読み取られません。</p><!--kg-card-begin: markdown--><ul>
<li><code>/etc/netplan</code> にある <code>netplan</code> ディレクトリに移動する</li>
</ul>
<!--kg-card-end: markdown--><p><code>ls</code> で <code>/etc/netplan</code> ディレクトリの中身を確認します。</p><p>ファイルが見当たらない場合は、作成することができます。名前は何でもかまいませんが、慣例としては <code>01-</code> から始まり <code>.yaml</code> で終わるようにします。数字は、複数の設定ファイルがある場合に優先度を設定します。</p><p>ファイル名 <code>01-network-manager-all.yaml</code> を作成しましょう。</p><p>ファイルにこれらの行を追加しましょう。ここから段階的にファイルを構築します。</p><figure class="kg-card kg-code-card"><pre><code class="language-Bash">network:
 version: 2</code></pre><figcaption>01-network-manager-all.yaml</figcaption></figure><p>Netplan 構成ファイルの最上位ノードは、<code>version: 2</code> を含む <code>network:</code> マッピングです (これはネットワーク定義バージョン 2 を使用していることを意味します)。</p><p>次に、全体のネットワークを制御する renderer を追加します。デフォルトでは renderer は <code>systemd-networkd</code> ですが、私たちは <code>NetworkManager</code> に設定します。</p><p>私たちのファイルは次のようになります:</p><pre><code class="language-Bash">network:
 version: 2
 renderer: NetworkManager</code></pre><p>次に、<code>ethernets</code> を追加し、先ほどステップ 2 で調べたネットワークアダプター名を参照します。他にも <code>modems:</code>、<code>wifis:</code>、または <code>bridges:</code> などのデバイスタイプがサポートされています。</p><figure class="kg-card kg-code-card"><pre><code class="language-Bash">network:
 version: 2
 renderer: NetworkManager
 ethernets:
   eth0:</code></pre><figcaption>01-network-manager-all.yaml</figcaption></figure><p>静的 IP を設定しようとしているので、このネットワークアダプターには IP アドレスを動的に割り当てたくありません。よって、<code>dhcp4</code> を <code>no</code> に設定しましょう。</p><figure class="kg-card kg-code-card"><pre><code class="language-bash">network:
 version: 2
 renderer: NetworkManager
 ethernets:
   eth0:
     dhcp4: no</code></pre><figcaption>01-network-manager-all.yaml</figcaption></figure><p>次に、ステップ 2 でメモした特定の静的 IP を、私たちのサブネットと使用可能な IP 範囲に基づいて指定します。それは <code>172.23.207.254</code> でした。</p><p>次に、ゲートウェイを指定します。これは IP アドレスを割り当てるルーターまたはネットワークデバイスです。私の場合は <code>192.168.1.1</code> です。</p><figure class="kg-card kg-code-card"><pre><code class="language-Bash">network:
 version: 2
 renderer: NetworkManager
 ethernets:
   eth0:
     dhcp4: no
     addresses: [172.23.207.254/20]
     gateway4: 192.168.1.1</code></pre><figcaption>01-network-manager-all.yaml</figcaption></figure><p>次に、<code>nameservers</code> を定義します。ここに DNS サーバーやセカンダリ DNS サーバーを定義します。ここでは、第 1 の値は Google のプライマリ DNS サーバーである <code>8.8.8.8</code>、第 2 の値は Google のセカンダリ DNS サーバーである <code>8.8.4.4</code> にします。これらの値は、あなたの要件に応じて異なる場合があります。</p><figure class="kg-card kg-code-card"><pre><code class="language-Bash">network:
 version: 2
 renderer: NetworkManager
 ethernets:
   eth0:
     dhcp4: no
     addresses: [172.23.207.254/20]
     gateway4: 192.168.1.1
     nameservers:
         addresses: [8.8.8.8,8.8.8.4]</code></pre><figcaption>01-network-manager-all.yaml</figcaption></figure><!--kg-card-begin: markdown--><h3 id="4">ステップ 4: 変更を適用してテストする</h3>
<!--kg-card-end: markdown--><p>変更を永続的に適用する前に、まず変更をテストすることができます。次のコマンドを使用します:</p><pre><code class="language-Bash">sudo netplan try</code></pre><p>エラーがなければ、この設定を適用するかどうか尋ねられます。</p><p>最後に、コマンド <code>ip a</code> を使用して変更をテストします。そうすると、静的 IP が適用されていることがわかります。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2024/04/image-17.png" class="kg-image" alt="image-17" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2024/04/image-17.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2024/04/image-17.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/2024/04/image-17.png 1187w" sizes="(min-width: 720px) 720px" width="1187" height="540" loading="lazy"><figcaption>静的 IP が適用されました。</figcaption></figure><h3 id="gui-ip-">GUI を使用して静的 IP を設定する方法</h3><p>Ubuntu の GUI / デスクトップを介して静的 IP を設定するのは非常に簡単です。以下が手順です:</p><!--kg-card-begin: markdown--><ul>
<li><code>settings</code> を検索する</li>
<li>変更したいインターフェースに応じて、Network または Wi-Fi タブをクリックする</li>
<li>インターフェース名の横にある歯車アイコンをクリックしてインターフェースの設定を開く</li>
<li>IPV4 タブで「Manual (手動)」を選択し、静的 IP アドレス、ネットマスク、ゲートウェイを入力する</li>
<li><code>Apply</code> ボタンをクリックする</li>
</ul>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2024/04/image-16.png" class="kg-image" alt="image-16" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2024/04/image-16.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2024/04/image-16.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/2024/04/image-16.png 1098w" sizes="(min-width: 720px) 720px" width="1098" height="802" loading="lazy"><figcaption>Ubuntu デスクトップを使用して静的 IP を手動で設定します。</figcaption></figure><!--kg-card-begin: markdown--><ul>
<li>コマンド <code>ip a</code> を使用して確認する</li>
</ul>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/japanese/news/content/images/2024/04/image-18.png" class="kg-image" alt="image-18" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2024/04/image-18.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2024/04/image-18.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/2024/04/image-18.png 1187w" sizes="(min-width: 720px) 720px" width="1187" height="540" loading="lazy"><figcaption>GUI を介して静的 IP が更新されました。</figcaption></figure><h2 id="-">結論</h2><p>この記事では、Ubuntu で静的 IP を設定する 2 つの方法をカバーしました。この記事が役立つことを願っています。</p><p>このチュートリアルから学んだ中でお気に入りのことは何ですか？<a href="https://twitter.com/hira_zaira">X / Twitter</a> で教えてください！</p><p>他の投稿は<a href="https://www.freecodecamp.org/news/author/zaira/">こちら</a>で読むことができます。</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Linux シンボリックリンクのチュートリアル: シンボリックリンクの作成・解除方法 ]]>
                </title>
                <description>
                    <![CDATA[ シンボリックリンクとは、Linux においてコンピューター上にある他のファイルやフォルダを指し示す働きを持つファイルです。英語では symlink とも呼ばれ、Windows におけるショートカットとよく似ています。 Linux/UNIX OS のリンクの種類として、ハードリンクに対してシンボリックリンクを「ソフトリンク」と呼ぶ人もいます。 ソフトリンクとハードリンクの違い ソフトリンクはショートカットとよく似ており、任意のファイルシステム上にある他のファイルやディレクトリを指し示します。 ハードリンクも同様に、ファイルやフォルダを指すショートカットではありますが、異なるファイルシステム上にあるファイルやフォルダを指すことはできません。 では、シンボリックリンクを作成、解除する手順を見ていきましょう。またリンク切れとはどういう状態かと、それを削除する方法も解説します。 シンボリックリンクの作成方法 シンボリックリンクを作成する構文は次のとおりです。 ln -s <リンク対象のファイルまたはフォルダのパス> <作成するリンクのパス> ln がリンクのコマンドです。-s フ ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/symlink-tutorial-in-linux-how-to-create-and-remove-a-symbolic-link/</link>
                <guid isPermaLink="false">6409d8b05ba18905807bfbba</guid>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ まつだようこ ]]>
                </dc:creator>
                <pubDate>Thu, 09 Mar 2023 13:09:16 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2023/03/5f9c9b4f740569d1a4ca2b02.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/symlink-tutorial-in-linux-how-to-create-and-remove-a-symbolic-link/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Symlink Tutorial in Linux – How to Create and Remove a Symbolic Link</a>
      </p><p>シンボリックリンクとは、Linux においてコンピューター上にある他のファイルやフォルダを指し示す働きを持つファイルです。英語では symlink とも呼ばれ、Windows におけるショートカットとよく似ています。</p><p>Linux/UNIX OS のリンクの種類として、ハードリンクに対してシンボリックリンクを「ソフトリンク」と呼ぶ人もいます。</p><h2 id="-">ソフトリンクとハードリンクの違い</h2><p>ソフトリンクはショートカットとよく似ており、任意のファイルシステム上にある他のファイルやディレクトリを指し示します。</p><p>ハードリンクも同様に、ファイルやフォルダを指すショートカットではありますが、異なるファイルシステム上にあるファイルやフォルダを指すことはできません。</p><p>では、シンボリックリンクを作成、解除する手順を見ていきましょう。またリンク切れとはどういう状態かと、それを削除する方法も解説します。</p><h2 id="--1">シンボリックリンクの作成方法</h2><p>シンボリックリンクを作成する構文は次のとおりです。</p><pre><code class="language-shell">ln -s &lt;リンク対象のファイルまたはフォルダのパス&gt; &lt;作成するリンクのパス&gt;
</code></pre><p><code>ln</code> がリンクのコマンドです。<code>-s</code> フラグはソフトリンクを作成するように指定します。<code>-s</code> の代わりに <code>-symbolic</code> と入力しても構いません。</p><p>デフォルトでは、<code>ln</code> コマンドはハードリンクを作成します。その次の引数は「リンクしたい対象のファイルまたはフォルダのパス」です。(つまりショートカットを作成したいファイルまたはフォルダです。)</p><p>そして最後の引数は「作成するリンク (ショートカット) 自体のパス」です。</p><h2 id="--2">ファイルへのシンボリックリンクの作成方法 (コマンド例)</h2><pre><code class="language-shell">ln -s /home/james/transactions.txt trans.txt
</code></pre><p>上記のコマンドを実行すると、<code>trans.txt</code> で <code>/home/james/transactions.txt</code> にアクセスできるようになります。<code>trans.txt</code> に加えた変更はすべてオリジナルのファイルにも反映されます。</p><p>上記のコマンドでは、リンクファイル <code>trans.txt</code> がカレントディレクトリに作成されることに注意してください。次のようにしてリンクファイルをフォルダ内に作成することもできます。</p><pre><code class="language-shell">ln -s /home/james/transactions.txt my-stuffs/trans.txt
</code></pre><p>この場合、<code>my-stuffs</code> という名前のディレクトリがすでにカレントディレクトリになければなりません。該当するディレクトリがない場合はエラーが発生します。</p><h2 id="--3">フォルダへのシンボリックリンクの作成方法 (コマンド例)</h2><p>上記と同様に、次のコマンドを使用します。</p><pre><code class="language-shell">ln -s /home/james james
</code></pre><p>このコマンドは、<code>james</code> という名前のシンボリックリンクフォルダを作成します。ここには <code>/home/james</code> の中身が含まれます。このリンクフォルダでの変更はすべてオリジナルのフォルダにも反映されます。</p><h2 id="--4">シンボリックリンクの削除方法</h2><p>意図せず元ファイルを削除してしまわないように、シンボリックリンクを削除する前にはそのファイル / フォルダが本当にシンボリックリンクかどうか確認したいのではないかと思います。</p><p>確認方法の一例がこちらです。</p><pre><code class="language-shell">ls -l &lt;シンボリックリンクと思われるファイルのパス&gt;
</code></pre><p>ターミナルでこのコマンドを実行すると、指定したファイルのプロパティが表示されます。実行結果の一文字目が小文字の L ('l') で始まっていれば、そのファイル / フォルダはシンボリックリンクです。</p><p>また、行の終わりに矢印 (-&gt;) と、シンボリックリンクが指す先のファイル / フォルダも表示されます。</p><p>シンボリックリンクを削除する方法は二種類あります。</p><h3 id="unlink-">unlink を使用してシンボリックリンクを削除する方法</h3><p>構文は次の通りです。</p><pre><code class="language-shell">unlink &lt;シンボリックリンクのパス&gt;
</code></pre><p>この処理が成功すると、シンボリックリンクが削除されます。</p><p>シンボリックリンクがフォルダを指している場合でも、'/' は付けないようにしてください。'/' を付けると Linux が対象のパスをディレクトリとみなしてしまいますが、<code>unlink</code> はディレクトリを削除できないためです。</p><h3 id="rm-">rm を使用してシンボリックリンクを削除する方法</h3><p>ここまで見てきたように、シンボリックリンクは元ファイル (フォルダ) を指し示す単なるファイル (フォルダ) です。その関係を解除するには、リンクファイルを削除すれば良いのです。</p><p>つまり、構文は次の通りです。</p><pre><code class="language-shell">rm &lt;シンボリックリンクのパス&gt;
</code></pre><p>例:</p><pre><code class="language-shell">rm trans.txt
rm james
</code></pre><p>ただし <code>rm james/</code> と実行するとエラーが発生するので注意してください。これは Linux が 'james/' をディレクトリとみなしてしまい、ディレクトリを削除するには <code>r</code> や <code>f</code> などのオプションが必要になるためです。しかしこれは私たちが実行したい処理内容ではありません。シンボリックリンクはフォルダを指しているかもしれませんが、ここで削除したいのは名前だけです。</p><p><code>unlink</code> ではなく <code>rm</code> を使う利点は、通常のファイルを削除する場合と同じように、複数のシンボリックリンクを一度に削除できることです。</p><h2 id="--5">リンク切れの検出、削除方法</h2><p>シンボリックリンクが指している先のファイルやフォルダが削除されたり、パスが変更されたりすると、リンク切れが発生します。</p><p>例えば 'transactions.txt' が <code>/home/james</code> から <code>/home/james/personal</code> に移動されると、先ほど作成した 'trans.txt' のリンクが壊れてしまいます。そしてこのリンクにアクセスしようとすると 'No such file or directory' というエラーが発生します。このリンクの中身が存在しないためです。</p><p>リンク切れを見つけた場合、リンクファイルは簡単に削除できます。壊れたシンボリックリンクは次のコマンドで見つけることができます。</p><pre><code class="language-shell">find /home/james -xtype l
</code></pre><p>このコマンドは、<code>james</code> ディレクトリ内 (ファイル、ディレクトリ、サブディレクトリ) にある壊れたシンボリックリンクを一覧表示します。</p><p>次のように <code>-delete</code> オプションを渡すと、そのリンクが削除されます。</p><pre><code class="language-shell">find /home/james -xtype l -delete
</code></pre><h2 id="--6">まとめ</h2><p>シンボリックリンクは Linux/UNIX OS の興味深い機能です。</p><p>そのままではアクセスし辛いファイルやフォルダを参照しやすくするために、使いやすいシンボリックリンクを作成することができます。使い慣れてくると、どのように機能するか直観的に理解できるようになり、ファイルシステムを効率よく管理できるようになるでしょう。</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Linux の LS コマンドについて – ディレクトリの中のファイルをリストアップする方法 + オプションフラグ ]]>
                </title>
                <description>
                    <![CDATA[ 1970 年代における Unix の創造以来、数多くのオペレーティングシステムが Unix を土台にしています。多くのオペレーティングシステムが衰退する一方で、生き残りに成功したものもあります。 Linux は最もポピュラーな Unix ベースのオペレーティングシステムのひとつです。それはオープンソースであり、世界中の多くの産業で使用されています。 Linux オペレーティングシステムの素晴らしい機能の一つに、コマンドラインインターフェース (CLI) があります。CLI はユーザーがシェル (shell) からコンピュータと対話することを可能にします。Linux のシェルは REPL (Read - 入力, Evaluate - 評価, Print - 出力, L oop - ループ) 環境です。そこでユーザーはコマンドを入力でき、シェルはそれを実行し結果を返します。 ls コマンドは 多くの Linux コマンドのひとつで、ユーザーが CLI を通してファイルやディレクトリをリストアップするのに用いられます。 この記事では、ls コマンドと日常の中で必要となるいくつかの重要 ]]>
                </description>
                <link>https://www.freecodecamp.org/japanese/news/the-linux-ls-command-how-to-list-files-in-a-directory-with-options/</link>
                <guid isPermaLink="false">61dba700c6ab600507251744</guid>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Manabu Matsumoto ]]>
                </dc:creator>
                <pubDate>Mon, 07 Feb 2022 23:45:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/japanese/news/content/images/2022/01/article-banner-7.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文:</strong> <a href="https://www.freecodecamp.org/news/the-linux-ls-command-how-to-list-files-in-a-directory-with-options/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">The Linux LS Command – How to List Files in a Directory + Option Flags</a>
      </p><p>1970 年代における Unix の創造以来、数多くのオペレーティングシステムが Unix を土台にしています。多くのオペレーティングシステムが衰退する一方で、生き残りに成功したものもあります。</p><p>Linux は最もポピュラーな Unix ベースのオペレーティングシステムのひとつです。それはオープンソースであり、世界中の多くの産業で使用されています。</p><p>Linux オペレーティングシステムの素晴らしい機能の一つに、コマンドラインインターフェース (CLI) があります。CLI はユーザーがシェル (shell) からコンピュータと対話することを可能にします。Linux のシェルは REPL (<strong>R</strong>ead - 入力, <strong>E</strong>valuate - 評価, <strong>P</strong>rint - 出力, <strong>L</strong>oop - ループ) 環境です。そこでユーザーはコマンドを入力でき、シェルはそれを実行し結果を返します。</p><p><code>ls</code> コマンドは 多くの Linux コマンドのひとつで、ユーザーが CLI を通してファイルやディレクトリをリストアップするのに用いられます。</p><p>この記事では、<code>ls</code> コマンドと日常の中で必要となるいくつかの重要なフラグについて詳しく説明します。</p><h2 id="-">前提条件</h2><ul><li>ディレクトリとファイルを備えたコンピュータが用意されている</li><li>Linux のディストロの中の一つをコンピュータにインストール済みである</li><li>CLI 操作の基礎知識</li><li>あなたの笑顔 :)</li></ul><h2 id="linux-ls-">Linux の ls コマンド</h2><p>Linux や他の Unix ベースのオペレーティングシステムにおいて、<code>ls</code> コマンドはファイルやディレクトリをリストアップするのに用いられます。</p><p>GUI で<em>ファイルエクスプローラー</em>または<em>ファインダー</em>の中を操作するように、<code>ls</code> コマンドを用いてカレントディレクトリのすべてのファイルやディクトリをデフォルトではリストアップでき、さらにコマンドラインを通してそれらと対話することができます。</p><p>ターミナルを起動して <code>ls</code> と入力し、この動作を確認してください:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-20-at-9.40.29-PM-3.png" class="kg-image" alt="Screenshot-2020-08-20-at-9.40.29-PM-3" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/01/Screenshot-2020-08-20-at-9.40.29-PM-3.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/01/Screenshot-2020-08-20-at-9.40.29-PM-3.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/01/Screenshot-2020-08-20-at-9.40.29-PM-3.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-20-at-9.40.29-PM-3.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1277" loading="lazy"></figure><h2 id="--1">オプションを用いてディレクトリ内のファイルをリストアップする方法</h2><p><code>ls</code> コマンドはいくつかのフラグ (オプションとしても知られています) を受け付けます。 これは、ターミナル内でファイルやディレクトリがリストアップされる方法を変化させるために、情報を追加します。</p><p>言い換えると、フラグは <code>ls</code> コマンドの動作を変化させます:</p><pre><code> ls [フラグ] [ディレクトリ]
</code></pre><blockquote>追記: <strong>コンテンツ</strong>という言葉は、リストアップされる<strong>ファイルまたはディレクトリ</strong>という意味で、記事の至る所に用いられますが、実際のファイル／ディレクトリの内容ではありません。</blockquote><h3 id="--2">現在のワーキングディレクトリ内のコンテンツをリストアップする</h3><p><code>ls</code> コマンドを入力すると、現在のワーキングディレクトリのコンテンツをリストアップします:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-20-at-9.40.29-PM-4.png" class="kg-image" alt="Screenshot-2020-08-20-at-9.40.29-PM-4" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/01/Screenshot-2020-08-20-at-9.40.29-PM-4.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/01/Screenshot-2020-08-20-at-9.40.29-PM-4.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/01/Screenshot-2020-08-20-at-9.40.29-PM-4.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-20-at-9.40.29-PM-4.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1277" loading="lazy"></figure><h3 id="--3">別のディレクトリ内のコンテンツをリストアップする</h3><p><code>ls [ディレクトリへのパスをここに記入する]</code> コマンドを入力すると、別のディレクトリのコンテンツをリストアップします:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-20-at-10.32.52-PM.png" class="kg-image" alt="Screenshot-2020-08-20-at-10.32.52-PM" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/01/Screenshot-2020-08-20-at-10.32.52-PM.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/01/Screenshot-2020-08-20-at-10.32.52-PM.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/01/Screenshot-2020-08-20-at-10.32.52-PM.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-20-at-10.32.52-PM.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1277" loading="lazy"></figure><h3 id="--4">ルートディレクトリ内のコンテンツをリストアップする</h3><p><code>ls /</code> コマンドを入力すると、ルートディレクトリのコンテンツをリストアップします:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-20-at-10.46.10-PM.png" class="kg-image" alt="Screenshot-2020-08-20-at-10.46.10-PM" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/01/Screenshot-2020-08-20-at-10.46.10-PM.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/01/Screenshot-2020-08-20-at-10.46.10-PM.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/01/Screenshot-2020-08-20-at-10.46.10-PM.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-20-at-10.46.10-PM.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1277" loading="lazy"></figure><h3 id="--5">親ディレクトリ内のコンテンツをリストアップする</h3><p><code>ls ..</code> コマンドを入力すると、一つ上のレベルの親ディレクトリのコンテンツをリストアップします。二つ上のレベルのコンテンツに対しては <code>ls ../..</code> を入力します:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-20-at-10.48.22-PM.png" class="kg-image" alt="Screenshot-2020-08-20-at-10.48.22-PM" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/01/Screenshot-2020-08-20-at-10.48.22-PM.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/01/Screenshot-2020-08-20-at-10.48.22-PM.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/01/Screenshot-2020-08-20-at-10.48.22-PM.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-20-at-10.48.22-PM.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1277" loading="lazy"></figure><h3 id="-home-user-">ユーザーのホームディレクトリ内のコンテンツをリストアップする (/home/user)</h3><p><code>ls ~</code> コマンドを入力すると、ユーザーのホームディレクトリ内のコンテンツをリストアップします:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-20-at-10.51.19-PM.png" class="kg-image" alt="Screenshot-2020-08-20-at-10.51.19-PM" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/01/Screenshot-2020-08-20-at-10.51.19-PM.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/01/Screenshot-2020-08-20-at-10.51.19-PM.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/01/Screenshot-2020-08-20-at-10.51.19-PM.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-20-at-10.51.19-PM.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1277" loading="lazy"></figure><h3 id="--6">ディレクトリだけをリストアップする</h3><p><code>ls -d */</code> コマンドを入力すると、ディレクトリだけをリストアップします:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-21-at-12.53.05-PM.png" class="kg-image" alt="Screenshot-2020-08-21-at-12.53.05-PM" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/01/Screenshot-2020-08-21-at-12.53.05-PM.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/01/Screenshot-2020-08-21-at-12.53.05-PM.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/01/Screenshot-2020-08-21-at-12.53.05-PM.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-21-at-12.53.05-PM.png 1622w" sizes="(min-width: 1200px) 1200px" width="1622" height="1084" loading="lazy"></figure><h3 id="--7">サブディレクトリと一緒にコンテンツをリストアップする</h3><p><code>ls *</code> コマンドを入力すると、ディレクトリのコンテンツにサブディレクトリのコンテンツを含めてリストアップします:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-21-at-1.07.54-PM.png" class="kg-image" alt="Screenshot-2020-08-21-at-1.07.54-PM" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/01/Screenshot-2020-08-21-at-1.07.54-PM.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/01/Screenshot-2020-08-21-at-1.07.54-PM.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/01/Screenshot-2020-08-21-at-1.07.54-PM.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-21-at-1.07.54-PM.png 1622w" sizes="(min-width: 1200px) 1200px" width="1622" height="1084" loading="lazy"></figure><h3 id="--8">再帰的にコンテンツをリストアップする</h3><p><code>ls -R</code> コマンドを入力すると、すべてのファイルとディレクトリを、付随するサブディレクトリを含め最下層までリストアップします:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-09-01-at-9.04.56-AM.png" class="kg-image" alt="Screenshot-2020-09-01-at-9.04.56-AM" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/01/Screenshot-2020-09-01-at-9.04.56-AM.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/01/Screenshot-2020-09-01-at-9.04.56-AM.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/01/Screenshot-2020-09-01-at-9.04.56-AM.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-09-01-at-9.04.56-AM.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1277" loading="lazy"></figure><blockquote>多くのファイルがある場合は、各ディレクトリのすべての単一ファイルを出力し終わるまでにとても長い時間がかかります。そのかわりに、次のようにしてディクトリをコマンドに挿入することで指定できます: <code>ls Downloads -R</code></blockquote><h3 id="--9">コンテンツをサイズと一緒にリストアップする</h3><p><code>ls -s</code> コマンドを入力すると (<strong>s</strong> は小文字です) 、ファイルまたはディレクトリをサイズと一緒にリストアップします:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-21-at-12.30.19-PM.png" class="kg-image" alt="Screenshot-2020-08-21-at-12.30.19-PM" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/01/Screenshot-2020-08-21-at-12.30.19-PM.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/01/Screenshot-2020-08-21-at-12.30.19-PM.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/01/Screenshot-2020-08-21-at-12.30.19-PM.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-21-at-12.30.19-PM.png 1622w" sizes="(min-width: 1200px) 1200px" width="1622" height="1084" loading="lazy"></figure><h3 id="--10">コンテンツをロングフォーマットでリストアップする</h3><p><code>ls -l</code> コマンドを入力すると、ディレクトリのコンテンツの以下の項目を表の形式でリストアップします:</p><ul><li>コンテンツのパーミッション</li><li>ハードリンク数</li><li>所有者</li><li>所有グループ</li><li>バイトで表したサイズ</li><li>コンテンツの最終変更日／時間</li><li>ファイルまたはディレクトリの名前</li></ul><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-20-at-10.52.37-PM.png" class="kg-image" alt="Screenshot-2020-08-20-at-10.52.37-PM" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/01/Screenshot-2020-08-20-at-10.52.37-PM.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/01/Screenshot-2020-08-20-at-10.52.37-PM.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/01/Screenshot-2020-08-20-at-10.52.37-PM.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-20-at-10.52.37-PM.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1277" loading="lazy"></figure><h3 id="--11">コンテンツを読み易いファイルサイズを含んだロングフォーマットでリストアップする</h3><p><code>ls -lh</code> コマンドを入力すると、ファイルやディレクトリを上記と同様の表の形式でリストアップしますが、それぞれのファイル／ディレクトリのサイズの表示が異なります:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-21-at-12.14.33-PM.png" class="kg-image" alt="Screenshot-2020-08-21-at-12.14.33-PM" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/01/Screenshot-2020-08-21-at-12.14.33-PM.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/01/Screenshot-2020-08-21-at-12.14.33-PM.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/01/Screenshot-2020-08-21-at-12.14.33-PM.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-21-at-12.14.33-PM.png 1622w" sizes="(min-width: 1200px) 1200px" width="1622" height="1084" loading="lazy"></figure><p>ファイルやディレクトリのサイズが 1024 バイトより大きい場合にはバイト (B)、メガバイト (MB)、ギガバイト (GB)、テラバイト (TB) 表記でリストアップされることに注意してください。</p><h3 id="--12">隠れたコンテンツと一緒にコンテンツをリストアップする</h3><p><code>ls -a</code> コマンドを入力すると、隠しファイルや隠しディレクトリを含めたコンテンツをリストアップします。Linux では、<code>.</code> から始まるものはすべて隠しファイルと認識されます:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-21-at-11.12.26-AM.png" class="kg-image" alt="Screenshot-2020-08-21-at-11.12.26-AM" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/01/Screenshot-2020-08-21-at-11.12.26-AM.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/01/Screenshot-2020-08-21-at-11.12.26-AM.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/01/Screenshot-2020-08-21-at-11.12.26-AM.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-21-at-11.12.26-AM.png 1622w" sizes="(min-width: 1200px) 1200px" width="1622" height="1084" loading="lazy"></figure><h3 id="--13">隠れたコンテンツを含めてコンテンツをロングフォーマットでリストアップする</h3><p><code>ls -l -a</code>、<code>ls -a -l</code>、<code>ls -la</code>、もしくは <code>ls -al</code> のいずれかのコマンドを入力すると、隠しファイルや隠しディレクトリを含めたコンテンツを追加の情報と一緒に表の形式でリストアップします:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-21-at-12.17.01-PM.png" class="kg-image" alt="Screenshot-2020-08-21-at-12.17.01-PM" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/01/Screenshot-2020-08-21-at-12.17.01-PM.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/01/Screenshot-2020-08-21-at-12.17.01-PM.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/01/Screenshot-2020-08-21-at-12.17.01-PM.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-21-at-12.17.01-PM.png 1622w" sizes="(min-width: 1200px) 1200px" width="1622" height="1084" loading="lazy"></figure><h3 id="--14">コンテンツをリストアップし日付と時間でソートする</h3><p><code>ls -t</code> コマンドを入力すると、最終変更日／時間で降順 (値の大きいものから小さいもの) に整列させたファイルやディレクトリのリストを表示します。</p><p>次のようにして <code>-r</code> フラグを追加することで整列する順番を逆にすることもできます: <code>ls -tr</code>:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-21-at-12.20.09-PM.png" class="kg-image" alt="Screenshot-2020-08-21-at-12.20.09-PM" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/01/Screenshot-2020-08-21-at-12.20.09-PM.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/01/Screenshot-2020-08-21-at-12.20.09-PM.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/01/Screenshot-2020-08-21-at-12.20.09-PM.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-21-at-12.20.09-PM.png 1622w" sizes="(min-width: 1200px) 1200px" width="1622" height="1084" loading="lazy"></figure><h3 id="--15">コンテンツをリストアップしファイルサイズでソートする</h3><p><code>ls -S</code> (<strong>S</strong> は大文字です) コマンドを入力すると、ファイルサイズで降順 (値の大きいものから小さいもの) に整列させたファイルやディレクトリのリストを表示します。</p><p>次のようにして <code>-r</code> フラグを追加することで整列する順番を逆にすることもできます: <code>ls -Sr</code>:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-21-at-12.20.38-PM.png" class="kg-image" alt="Screenshot-2020-08-21-at-12.20.38-PM" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/01/Screenshot-2020-08-21-at-12.20.38-PM.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/01/Screenshot-2020-08-21-at-12.20.38-PM.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/01/Screenshot-2020-08-21-at-12.20.38-PM.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-08-21-at-12.20.38-PM.png 1622w" sizes="(min-width: 1200px) 1200px" width="1622" height="1084" loading="lazy"></figure><h3 id="--16">コンテンツをリストアップし、その結果を単一ファイルへ出力する</h3><p><code>ls &gt; output.txt</code> コマンドを入力すると、<code>ls</code> コマンドの出力を <code>output.txt</code> ファイルの中へ写します。<code>-la</code> などの前述のフラグはどれも使用できます — ここでのキーポイントは、結果はコマンドラインに表示されず、ファイルの中へ出力されることです。</p><p>その後で必要に応じてファイルを使用することができますし、<code>cat output.txt</code> と入力することでファイルの内容をコマンドラインに出力できます:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-09-01-at-9.12.59-AM.png" class="kg-image" alt="Screenshot-2020-09-01-at-9.12.59-AM" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/01/Screenshot-2020-09-01-at-9.12.59-AM.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/01/Screenshot-2020-09-01-at-9.12.59-AM.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/01/Screenshot-2020-09-01-at-9.12.59-AM.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-09-01-at-9.12.59-AM.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1277" loading="lazy"></figure><h1 id="--17">結び</h1><p>必要に応じてファイルとディレクトリを一覧表示するための他のコマンドやその組み合わせがたくさんあり、それらを探索することもできます。ここでひとつ覚えておくべきことは、一度に複数のコマンドを組み合わせる機能です。</p><p>隠しファイルや隠しディクトリを含めコンテンツをロングフォーマットでリストアップし、ファイルサイズでソートしたいという場面を想像してみてください。入力するコマンドは <code>ls -alS</code> となります。これは <code>ls -l</code>、<code>ls -a</code>、<code>ls -S</code> を組み合わせたものです。</p><p>コマンドを忘れてしまったりすべきことがわからなくなった場合は、<code>ls --help</code> または <code>man ls</code> を入力することでヘルプを表示できます。これにより <code>ls</code> コマンドが受け入れられるすべてのオプションと一緒にマニュアルが表示されます:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-09-01-at-9.57.37-AM.png" class="kg-image" alt="Screenshot-2020-09-01-at-9.57.37-AM" srcset="https://www.freecodecamp.org/japanese/news/content/images/size/w600/2022/01/Screenshot-2020-09-01-at-9.57.37-AM.png 600w, https://www.freecodecamp.org/japanese/news/content/images/size/w1000/2022/01/Screenshot-2020-09-01-at-9.57.37-AM.png 1000w, https://www.freecodecamp.org/japanese/news/content/images/size/w1600/2022/01/Screenshot-2020-09-01-at-9.57.37-AM.png 1600w, https://www.freecodecamp.org/japanese/news/content/images/2022/01/Screenshot-2020-09-01-at-9.57.37-AM.png 2000w" sizes="(min-width: 1200px) 1200px" width="2000" height="1244" loading="lazy"></figure><p>お読みくださいましてありがとうございました!</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
