Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
UNIX(Linux)
入門編
- UNIX(Linux)とは
- ディストリビューションとは
- CentOSとMacOSとCUIについて
- 仮想化ソフトウェアを使ったCentOSのインストールとMacOSのCUI環境について
- ログインとrootユーザーとシャットダウン等について
- コマンドの構造と注意点について
- ファイルシステムとカレントディレクトリの移動と表示(cdとpwd)について
- 各主要ディレクトリの解説とディレクトリ等の内容表示(ls)について
- ちょっと高度なディレクトリの移動(cd)とパスについて
- 『ls』コマンドの応用(1)とドットファイルについて
- 『ls』コマンドの応用(2)
- タブキーを使った入力補完について
- ディレクトリの作成方法(mkdir)について
- ファイルの簡易作成(touch)とファイルについて
- 標準入出力とリダイレクション(>と>>)を使ったファイル生成とechoとcatについて
- ファイルとディレクトリの削除(rm)について
- ファイルとディレクトリのコピー(cp)について
- ファイルとディレクトリの移動と名前変更(mv)について
- viエディタとは
- viの基本的な使い方(1)
- viの基本的な使い方(2)
- ターミナル(sshとTera Term)を使ったリモート操作について
- ソフトウェアのインストール方法(yumとパッケージ管理ツール)について
- ユーザーの概要と確認と追加と切り替え(adduserとsu)について
- ユーザーのパスワードと削除と更新と管理者権限での実行(passwdとuserdelとusermodとsudo)について
- グループの概要と確認方法(groups)について
- グループの追加と削除と設定変更(groupaddとgroupdelとgroupmod)とユーザー追加方法について
- パーミッション(権限)について
- パーミッションの設定方法(chmodとchown)について
- トップページ
- UNIX(Linux)入門編 - 『ls』コマンドの応用(1)とドットファイルについて
『ls』コマンドの応用(1)とドットファイルについて
みなさまいかがおすごしでしょうか。
続きまして『ls』コマンドの応用とか『ドットファイル』とかについてやっていきます。
最初に『ls』コマンドのおさらいですが、『ls』コマンドは「現在のディレクトリ(カレントディレクトリ)の中身を出力してくれるコマンド」になり、更にこの『ls』コマンドにはいくつかオプションが用意されているのでそれをバシッと確認していきましょう。
まず以下は『/』に居る状態なわけなんですが普通に『ls』だけを打つとこんな感じになりますよね。
[root@localhost /]# ls bin dev home lib64 media opt root selinux sys usr boot etc lib lost+found mnt proc sbin srv tmp var
ざざざっとディレクトリとかファイルとかが出力されている感じです。
この際に『-1』をくっつけると1行ごとに改行して出力してくれます。『-2』とかもイケそうですが『1』以外はダメですのでご注意ですね。
[root@localhost /]# ls -1 bin boot dev etc home lib lib64 lost+found media mnt opt proc root sbin selinux srv sys tmp usr var
そして『-R』を付けると中に居るディレクトリの中も更にその中に居るディレクトリの中とかも全て表示してくれます。少し難しい言葉を使うと「再帰的に表示される」なんて言い方をするのですがこいつをちょいと試してみましょう。
現在『/root』に居て、その中に『test』ディレクトリを作って更にその中に『test』ディレクトリを作って更にその中に『test』ディレクトリを作ってみました。この状態で『ls』だけ叩くととこうなりますが
[root@localhost ~]# ls test
『ls -R』を叩くとこうなります。
[root@localhost ~]# ls -R .: test ./test: test ./test/test: test ./test/test/test:
中に居るディレクトリを全て出力してくれてますね。カレントディレクトリの構成を知りたいなんて時はとっても便利なのでぜひ覚えておいてください。
前の記事でもちょろっと紹介しましたが『ls -R』コマンドのように現在のディレクトリ状況を知りたい場合は『tree』コマンドを使うと便利です。『tree』コマンドを叩くと以下のような出力がされます。
[root@localhost var/www]# tree . ├── index.html ├── test └── index.html
その名の通りツリー構造で出力してくれていますね。著者も『ls -R』コマンドよりも便利だなーって感じておるので「ディレクトリの構造が知りたいぜー」って時は『tree』コマンドを使う事が多いです。
ただ『tree』コマンドはデフォルトの状態ではインストールされてない場合が多く、もし「権限の関係で『tree』コマンドがインストールできないぜー」なんて場合は必須コマンドかつ最初から必ず用意されているコマンドである『ls』コマンドの『-R』オプションの方を使っちゃってください。
続いて紹介したいのが『-F』になります。『-F』を付けると『タイプ識別子』っていうのがファイル名またはディレクトリ名の後にくっついた状態で出力してくれます。
『タイプ識別子』っていうのは「そのデータが一体どういうデータなのかー」ということを教えてくれる記号になります。んでどういう風に教えてくれるのかというと以下のような感じです。
何も表示なし | 通常ファイル |
* | 実行可能ファイル |
@ | シンボリックリンク |
/ | ディレクトリ |
って感じですね。
上記の『シンボリックリンク』っていうのはWindowOSで言うところのショートカット的なやつになります。
ではこの『ls -F』をちょいと使ってみましょう。
んで『ls -F』はコマンド用とかの実行ファイルが置いてあるディレクトリで叩かないとなーーんも面白くないわけでございますのでここは超基本コマンドが詰まってる『/bin』の中身をバシッと出力してみましょう。
ここでちょいとテクニックを紹介したいと思います。これまでは『cd』コマンドを使ってディレクトリを移動した状態で『ls』コマンドを叩いてましたよね。実はまだ紹介していなかった記法なのですが『ls』コマンドくんの第1引数には『パス』を渡すことができ、そうするとその『パス』で指定されたディレクトリの中身を教えてくれる感じになります。
というわけでこちらも合わせてちょいと使ってみましょう。無駄にホームディレクトリである『/root』に移動してみます。
[root@localhost bin]# cd [root@localhost ~]# pwd /root
今現在居るホームディレクトリの中から『-F』オプションを付けた『ls』コマンドを使って『/bin』の中身を出力するとなると『ls -F /bin』と叩けばOKですので早速叩いてみましょう。するとこんな結果になります。
[root@localhost bin]# cd [root@localhost ~]# pwd /root [root@localhost ~]# ls -F /bin arch* fgrep@ mktemp* sort* awk@ find* more* stty* basename* findmnt* mount* su* bash* fusermount* mountpoint* sync* cat* gawk* mv* tar* chgrp* grep* netstat* taskset* chmod* gtar@ nice* touch* chown* gunzip* nisdomainname@ tracepath* cp* gzip* ping* tracepath6* cpio* hostname* ping6* true* cut* ipcalc* plymouth* ulockmgr_server* dash* iptables-xml@ ps* umount* date* iptables-xml-1.4.7@ pwd* uname* dd* kbd_mode* raw* unicode_start* df* kill* readlink* unicode_stop* dmesg* link* rm* unlink* dnsdomainname@ ln* rmdir* usleep* domainname@ loadkeys* rpm* vi* dumpkeys* logger* rvi@ view@ echo* login* rview@ ypdomainname@ egrep@ ls* sed* zcat* env* lsblk* setfont* ex@ mkdir* sh@ false* mknod* sleep*
いかがでしょうか。ホームディレクトリに居るにもかかわらず『/bin』の中身が出力できており、更に各ディレクトリや各フォルダの末尾に『タイプ識別子』がくっついているのが確認できたと思います。とっても良い感じでございますね。
ただ、最近のUNIX系OSの『ls』コマンドは最初から色別に出力してくれたりするので正直この『タイプ識別子』ってあんま使わなくなってるんですよね。なので長々と紹介しておいてこんな事を言うのも大変恐縮なのですが『-F』はシカトでいいかもです。『ls』コマンドの第1引数だけは覚えておきましょう、はい。
『ls』コマンドは複数の引数を取ることもできます。そしたらどうなるのかというとこうなります。以下は『/bin』、『/etc』、『/var』を出力した感じですね。
[root@localhost ~]# ls /bin /etc /var /bin: arch echo kill ping6 tar awk egrep link plymouth taskset basename env ln ps touch bash ex loadkeys pwd tracepath cat false logger raw tracepath6 chgrp fgrep login readlink true chmod find ls rm ulockmgr_server chown findmnt lsblk rmdir umount cp fusermount mkdir rpm uname cpio gawk mknod rvi unicode_start cut grep mktemp rview unicode_stop dash gtar more sed unlink date gunzip mount setfont usleep dd gzip mountpoint sh vi df hostname mv sleep view dmesg ipcalc netstat sort ypdomainname dnsdomainname iptables-xml nice stty zcat domainname iptables-xml-1.4.7 nisdomainname su dumpkeys kbd_mode ping sync /etc: DIR_COLORS filesystems modprobe.d rpc DIR_COLORS.256color fstab motd rpm DIR_COLORS.lightbgcolor gai.conf mtab rsyslog.conf NetworkManager gcrypt multipath rsyslog.d X11 gnupg my.cnf rwtab adjtime group networks rwtab.d aliases group- nsswitch.conf sasl2 aliases.db grub.conf openldap securetty alternatives gshadow opt security anacrontab gshadow- pam.d selinux audisp host.conf passwd services audit hosts passwd- sestatus.conf bash_completion.d hosts.allow pkcs11 shadow bashrc hosts.deny pki shadow- blkid init plymouth shells centos-release init.conf pm skel chkconfig.d init.d popt.d ssh cron.d inittab postfix ssl cron.daily inputrc ppp statetab cron.deny iproute2 prelink.conf.d statetab.d cron.hourly iscsi printcap sudo-ldap.conf cron.monthly issue profile sudo.conf cron.weekly issue.net profile.d sudoers crontab krb5.conf protocols sudoers.d crypttab ld.so.cache rc sysconfig csh.cshrc ld.so.conf rc.d sysctl.conf csh.login ld.so.conf.d rc.local sysctl.d dbus-1 libaudit.conf rc.sysinit system-release default libuser.conf rc0.d system-release-cpe depmod.d localtime rc1.d terminfo dhcp login.defs rc2.d udev dracut.conf logrotate.conf rc3.d virc dracut.conf.d logrotate.d rc4.d xdg environment lvm rc5.d xinetd.d ethers magic rc6.d yum exports makedev.d redhat-release yum.conf favicon.png mke2fs.conf resolv.conf yum.repos.d /var: cache empty lib lock mail opt run tmp db games local log nis preserve spool yp
これ中々便利なのでぜひ使ってみてください。
続いて紹介したいのは『-a』になります。この『-a』はかなり使用頻度が高いオプションになりましてどういう効果があるのかというと『ドットファイル』も表示してくれるようになります。
んで「『ドットファイル』ってなんじゃ?」ってお話なんですが『ドットファイル』はその名の通り「『.』(ドット)から始まるファイル名を持ったファイル」の事で、「つまりは何者じゃ?」と言われるとWindowsOSで言うところの隠しファイルってやーつでございましてUNIX系OSでは隠しファイル(設定用ファイルとかであんまり触ってほしくないファイル)はファイル名の頭に『.』を付けるような風習があったりするので「ドットファイル → 隠しファイル」みたいな感じになったわけですね。
というわけでちょいと試してみましょう。以下はルートディレクトリで『ls -a』を叩いた結果になります。
[root@localhost /]# ls -a . bin etc lib64 mnt root srv usr .. boot home lost+found opt sbin sys var .autofsck dev lib media proc selinux tmp
『-a』オプションを付けないとこうなります。
[root@localhost /]# ls bin dev home lib64 media opt root selinux sys usr boot etc lib lost+found mnt proc sbin srv tmp var
見比べてみると『.』と『..』と『.autofsck』が居たり居なかったりしてますね。
この中だと『.autofsck』が『ドットファイル』と呼ばれるものになります。
この『.』と『..』についてなんですが『cd』コマンドのときと同じく『.』が現在のディレクトリ、『..』が親ディレクトリになります。
ここで「ルートディレクトリは一番上の階層になるはずなのにルートディレクトリで『ls -a』で『..』が出力されるのはおかしくね?」と思った方、著者もそのとおりだと思います。これについては昔からずっとそんな感じなっており著者も昔調べたことあるのですが未だに良い答えが見つからずでちょっと理由はなぞですね。まあ「ルートディレクトリでの『ls -a』の『..』は『.』と同じくルートディレクトリを指す」って事をちょいと頭の隅に置いておけば問題ないので気にしなくてOKかなって思います。
ちなみに『.autofsck』っていうのはUNIX系OSでOSが起動した時に生成され、そして正常終了した場合に削除されるっていうちょっと不思議なファイルになります。OS起動時に『.autofsck』が存在するかどうかで「正常終了したかどうか」を判定している感じになりますね。まあこれは余談ですので覚えなくてOKです。
あと『-a』と同じようなオプションで『-A』というのが用意されています。これは基本的に『-a』と同じ効果を持つのですが『.』と『..』以外の情報が出力されるようになるのでもし「『.』と『..』が邪魔だなー」って気分になったら使ってみると良いかもしれません。
(´-`).。oO(まあ『.』と『..』が邪魔になるってことは滅多に無いと思うので『-a』だけ覚えておけばOKかなと思います...)
というわけでちょいと長くなってしまったのでここで一旦切りますね。続いての記事でも『ls』コマンドについてやっていきます。ではまたお会いしましょう。
この記事は桜舞が執筆致しました。
著者が愛する小型哺乳類 |
桜舞 春人 Sakurama HarutoISDN時代から様々なコンテンツを制作しているちょっと髪の毛が心配な東京在住のプログラマー。生粋のロングスリーパーで、10時間以上睡眠を取らないと基本的に体調が悪い。好きなだけ寝れる生活を送るのが夢。ゲームとスポーツと音楽が大好き。誰か髪の毛を分けて下さい。 |
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。