English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Linux ファイルとディレクトリの管理

私たちはLinuxのディレクトリ構造が木構造であることを知っています、最上位のディレクトリはルートディレクトリです /。

他のディレクトリはマウントすることで木に追加することができ、マウント解除することで削除することができます。

このチュートリアルを始める前に、絶対パスと相対パスとは何かを知っておく必要があります。

  • 絶対パス:
    パスの書き方、ルートディレクトリから / 書き始めます、例えば: /usr/share/doc このディレクトリ。

  • 相対パス:
    パスの書き方、以下のように / 書き始めます、例えば、 /usr/share/doc に移動する必要があります /usr/share/man の下では、以下のように書くことができます:cd ../man これが相対パスの書き方です。

ディレクトリ処理の一般的なコマンド

次に、一般的なディレクトリ処理コマンドをいくつか見てみましょう:

  • ls(英語全称:list files): ディレクトリおよびファイル名をリストアップ

  • cd(英語全称:change directory):ディレクトリを切り替え

  • pwd(英語全称:print work directory):現在のディレクトリを表示

  • mkdir(英語全称:make directory):新しいディレクトリを作成

  • rmdir(英語全称:remove directory):削除空のディレクトリ

  • cp(copy fileの略称): ファイルやディレクトリをコピーします

  • rm(removeの略称): ファイルやディレクトリを削除します

  • mv(move fileの略称): ファイルやディレクトリを移動するか、ファイルやディレクトリの名前を変更します

以下を使用できます man [コマンド] 各コマンドの使用方法のドキュメントを表示するには、例えば:man cpを使用します。

ls(ディレクトリ一覧表示)

Linuxシステムでは、lsコマンドが最もよく実行されるコマンドです。

语法:

[root@www ~]# ls [-aAdfFhilnrRSt] ディレクトリ名
[root@www ~]# ls [--color={never,auto,always}] ディレクトリ名
[root@www ~]# ls [--full-time] ディレクトリ名

オプションと引数:

  • -a  :すべてのファイルを表示し、隠しファイル(.で始まるファイル)も含みます(常用)

  • -d  :ディレクトリ自体のみを表示し、ディレクトリ内のファイルデータは表示しません(常用)

  • -l  :長データ形式で表示し、ファイルの属性と権限などが含まれます;(常用)

ホームディレクトリのすべてのファイル(属性と隠しファイルを含む)を一覧表示します

[root@www ~]# ls -al ~

cd(ディレクトリ切り替え)

cdはChange Directoryの省略形で、作業ディレクトリを変更するコマンドです。

语法:

 cd(相対パスまたは絶対パス)
# mkdirコマンドを使用してwを作成します3codeboxディレクトリ
[root@www ~]# mkdir w3codebox
# 絶対パスを使用してwに切り替えます3codeboxディレクトリ
[root@www ~]# cd /root/w3codebox/
# 相対パスを使用してwに切り替えます3codeboxディレクトリ
[root@www ~]# cd ./w3codebox/
# は自分のホームディレクトリに戻ることを示し、つまり /rootディレクトリ
[root@www w3codebox]# cd ~
# は現在の上のディレクトリに移動することを示し、つまり /rootの上のディレクトリを意味しています;
[root@www ~]# cd ..

次に数回操作してみると、cdコマンドがよく理解できるでしょう。

pwd(現在のディレクトリを表示)

pwd は Print Working Directory の省略形、現在のディレクトリを表示するコマンドです。

[root@www ~]# pwd [-P]

オプションと引数:

  • -P :実際のパスを表示し、リンク(link)パスを使用しません。

例:現在の作業ディレクトリのみを表示する:

[root@www ~]# pwd
/root   <== ディレクトリが表示されました~

例では実際の作業ディレクトリが表示され、リンクファイル自体のディレクトリ名ではありません。

[root@www ~]# cd /var/mail   <==注意,/var/mailはリンクファイルです
[root@www mail]# pwd
/var/mail         <==現在の作業ディレクトリを一覧表示しています
[root@www mail]# pwd -P
/var/spool/mail   <==怎么回事?有没有加 -P 差很多~
[root@www mail]# ls -ld /var/mail
lrwxrwxrwx 1 root root 10 Sep  4 17:54 /var/mail -> spool/mail
# 看到这里应该知道为什么了吧?因为 /var/mail 是链接文件,链接到 /var/spool/mail 
# 所以,加上 pwd -P 的选项后,会不以链接文件的数据显示,而是显示正确的完整路径啊!

mkdir (创建新目录)

如果想要创建新的目录的话,那么就使用mkdir (创建目录)吧。

语法:

mkdir [-mp] 目录名称

オプションと引数:

  • -m :配置文件的权限哦!直接配置,不需要看默认权限 (umask) 的脸色~

  • -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!

示例:请到/tmp 下面尝试创建数个新目录看看:

[root@www ~]# cd /tmp
[root@www tmp]# mkdir test    <==创建一个名为 test 的新目录
[root@www tmp]# mkdir test1/test2/test3/test4
mkdir: cannot create directory `test1/test2/test3/test4': 
No such file or directory       <== 无法直接创建此目录啊!
[root@www tmp]# mkdir -p test1/test2/test3/test4

加了这个 -p 的选项,可以自行帮你创建多层目录!

示例:创建权限为 rwx--x--x 的目录。

[root@www tmp]# mkdir -m 711 test2
[root@www tmp]# ls -l
drwxr-xr-x  3 root  root 4096 Jul 18 12:50 test
drwxr-xr-x  3 root  root 4096 Jul 18 12:53 test1
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2

上面的权限部分,如果没有加上 -m 来强制配置属性,系统会使用默认属性。

如果我们使用 -m ,如上例我们赋予 -m 711 来赋予新的目录 drwx--x--x 的权限。

rmdir (删除空的目录)

语法:

 rmdir [-p] 目录名称

オプションと引数:

  • -p :连同上一级『空的』目录也一起删除

删除 w3codebox 目录

[root@www tmp]# rmdir w3codebox/

将 mkdir 示例中创建的目录(/tmp 下面)删除掉!

[root@www tmp]# ls -l   <==看看有多少目录存在?
drwxr-xr-x  3 root  root 4096 Jul 18 12:50 test
drwxr-xr-x  3 root  root 4096 Jul 18 12:53 test1
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2
[root@www tmp]# rmdir test   <==可以直接删除,没问题
[root@www tmp]# rmdir test1  <==因为还有内容,所以无法删除!
rmdir: `test'1': Directory not empty
[root@www tmp]# rmdir -p test1/test2/test3/test4
[root@www tmp]# ls -l          <==下の出力でtestとtest1消えました!
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2

利用 -pオプションを使用すると、testをすぐにコピーできます。1/test2/test3/test4 一度に削除します。

ただし、このrmdirは空のディレクトリのみを削除できます。非空ディレクトリを削除するにはrmコマンドを使用してください。

cp (ファイルまたはディレクトリをコピー)

cpはファイルとディレクトリをコピーします。

構文:

[root@www ~]# cp [-adfilprsu] ソースファイル(source) ターゲットファイル(destination)
[root@www ~]# cp [options] source1 source2 source3 .... directory

オプションと引数:

  • -a:以下に相当します -pdrの意味、pdrについては以下の説明を参照してください;(常用)

  • -d:ソースファイルがリンクファイルの属性の場合、リンクファイルの属性をコピーし、ファイル自体をコピーしません;

  • -f:強制(force)の意味、ターゲットファイルが既に存在して開けない場合、削除してからもう一度試みます;

  • -i:ターゲットファイル(destination)が既に存在する場合、上書き前にアクションの実行を尋ねます(常用);

  • -l:ハードリンクの作成を行い、ファイル自体をコピーしません;

  • -p:ファイルの属性もコピーして、デフォルトの属性を使用しない(バックアップに常用);

  • -r:再帰的に続けてコピーします。ディレクトリのコピー動作に使用されます;(常用)

  • -s:シンボリックリンク(ショートカット)ファイルとしてコピーされます;

  • -u:destinationがsourceよりも古い場合のみ、destinationをアップグレードします!

rootの権限で、rootディレクトリの .bashrc を以下の場所にコピーします。 /tmp 下に、bashrc という名前で保存します。

[root@www ~]# cp ~/.bashrc /tmp/bashrc
[root@www ~]# cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'? n  <==nは上書きしない、yは上書き

rm (ファイルまたはディレクトリを削除)

语法:

 rm [-ファイルまたはディレクトリ fir]

オプションと引数:

  • -f  :forceの意味、存在しないファイルを無視し、警告情報は表示されません;

  • -インタラクティブモード、削除前にユーザーにアクションを行うか尋ねます。

  • -r  :再帰的に削除します。これは非常に危険なオプションです!!!

cpの例で作成したbashrcを削除します!

[root@www tmp]# rm -i bashrc
rm: remove regular file `bashrc'? y

以下を追加すると -iのオプションは自動的に尋ねます。誤ってファイル名を削除しないようにします!

mv(ファイルとディレクトリの移動、または名前の変更)

语法:

[root@www ~]# mv [-fiu] source destination
[root@www ~]# mv [options] source1 source2 source3 .... directory

オプションと引数:

  • -f  :force(強制的)の意味です。ターゲットファイルが存在する場合、上書きせずに尋ねません

  • -i  :ターゲットファイル(destination)が存在する場合、上書きするかどうかを尋ねます!

  • -u  :ターゲットファイルが存在し、sourceが新しい場合にのみアップグレード(update)します

ファイルをコピーし、ディレクトリを作成し、ファイルをディレクトリに移動します

[root@www ~]# cd /tmp
[root@www tmp]# cp ~/.bashrc bashrc
[root@www tmp]# mkdir mvtest
[root@www tmp]# mv bashrc mvtest

あるファイルをあるディレクトリに移動する場合、このようにします!

先ほどのディレクトリ名をmvtestに変更します2

[root@www tmp]# mv mvtest mvtest2

Linuxファイルの内容表示

Linuxシステムでは以下のコマンドを使用してファイルの内容を表示します:

  • cat   最初の行からファイルの内容を表示します

  • tac   最後の行から表示し、tacはcatの逆です!

  • nl   表示時に行番号を出力します!

  • moreは一ページずつファイルの内容を表示します

  • lessはmoreと似ていますが、moreよりも良いのは、前にページを戻れることです!

  • headは先頭の数行のみを表示します

  • tailは末尾の数行のみを表示します

以下を使用できます man [コマンド]各コマンドの使用方法のドキュメントを表示するには、例えば:man cpを使用します。

cat

最初の行からファイルの内容を表示します

语法:

cat [-AbEnTv]

オプションと引数:

  • -A  :以下に相当します -vETの統合オプション、空白以外の特別な文字を出力できます;

  • -b  :行番号を出力します。空白行は行番号を出力しません!

  • -E :末尾の断行バイト$を表示します;

  • -n :行番号を印刷し、空白行も行番号が表示されます; -bのオプションが異なります;

  • -T :[tab]キーを^Iで表示します;

  • -v :見えにくい特殊文字を列挙します

確認する /etc/issueファイルの内容:

[root@www ~]# cat /etc/issue
CentOSリリース 6.4 (最終版)
Kernel \r に \m

tac

tacコマンドはcatコマンドとは逆のものです。ファイルの内容は最後の行から表示され、tacはcatの逆です!例えば:

[root@www ~]# tac /etc/issue
Kernel \r に \m
CentOSリリース 6.4 (最終版)

nl

行番号を表示する

语法:

nl [-bnw] ファイル

オプションと引数:

  • -b :指定する行番号の方法は主に2種類あります:
     -b a :空行であっても行番号を表示することを意味し、catに似ています; -n);
     -b t :空行がある場合、その行は行番号を表示しません(デフォルト値);

  • -n :行番号を表示する方法は主に3種類あります:
     -n ln :行番号がスクリーンの最左端に表示されます;
     -n rn :行番号がカラムの最右端に表示され、0を加えません;
     -n rz :行番号がカラムの最右端に表示され、0を加えます;

  • -w :行番号カラムが占める桁数です。

例1:nlを使って列挙する /etc/issueの内容

[root@www ~]# nl /etc/issue
     1  CentOSリリース 6.4 (最終版)
     2  Kernel \r に \m

more

一ページ一ページにめくる

[root@www ~]# more /etc/man_db.config 
#
#自動的にman.conf.inから生成された
# configure script.
#
# man.conf from man-1.6d
....(中略)....
--More--(28% )  <== ここがポイントです!カーソルもこの行であなたの命令を待っています

moreこのプログラムの実行中に、いくつかのキーを押すことができます:

  • スペースキー (space) :一ページ下にスクロールすることを意味します;

  • Enter :一行下にスクロールすることを意味します;

  • /文字列 :この表示している内容の中で「文字列」このキーワードを下に検索することを意味します;

  • :f :すぐにファイル名と現在表示している行数を表示します;

  • q :すぐに more を終了し、そのファイルの内容を表示しないことを意味します。

  • b または [ctrl]-b :前に一ページ戻ることを意味しますが、このアクションはファイルに対してのみ有効で、パイプラインに対して無効です。

less

一ページ一ページにめくる、以下の例の出力/etc/man.configファイルの内容:

[root@www ~]# less /etc/man.config
#
#自動的にman.conf.inから生成された
# configure script.
#
# man.conf from man-1.6d
....(中略)....
:   <== ここにコマンドを入力できます!

lessが動作しているときに入力できるコマンドは:

  • スペースキー    :一ページ下に移動します;

  • [pagedown]:一ページ下に移動します;

  • [pageup]  :一ページ上に移動します;

  • /文字列     :『文字列』を下に検索する機能;

  • ?文字列     :『文字列』を上に検索する機能;

  • n         :前の検索を繰り返します( / または ? に関する情報!)

  • N         :前の検索を逆方向に繰り返します( / または ? に関する情報!)

  • q         :lessプログラムから退出します;

head

ファイルの最初の数行を取得します

语法:

head [-n number] ファイル

オプションと引数:

  • -n  :数字を続けて、表示する行数を指定します

[root@www ~]# head /etc/man.config

デフォルトの設定では、最初の 10 行を表示します!最初の 20 行,こんな感じでやります:

[root@www ~]# head -n 20 /etc/man.config

tail

ファイルの最後の数行を取得します

语法:

tail [-n number] ファイル

オプションと引数:

  • -n  :数字を続けて、表示する行数を指定します

  • -f  :続けて監視するファイル名を指定します。Ctrl-cを押すとtailの監視が終了します

[root@www ~]# tail /etc/man.config
# デフォルトの設定では、最後の10行を表示します!最後の 20 行,こんな感じでやります:
[root@www ~]# tail -n 20 /etc/man.config