テキストエディタで/ etc/fstabを編集すると、すべての間隔がずれてしまいます。ファイルを調べてスペースを挿入/削除してすべてを並べることはできますが、より自動化されたソリューションを探しています。理想的には、自分のfstabを挿入してすべてを「きれいに」整列させることができるオンラインのJavaScriptページがあるはずです。次に、最終結果をコピーしてファイルに貼り付けることができます。
これに類似した、またはより良い解決策はありますか?
編集:
デスクトップでLinuxを使用していますが、fstabを編集するためだけにviやemacsの信仰に加わろうとしているのではありません。 Emacsは一部の人にとってはより良い解決策かもしれませんが、他の人にとってはそれはより良い解決策ではありません。
EDIT2:
これは、タブを使用したfstabのスニペットの例です。列が整列していません。
proc /proc proc nodev,noexec,nosuid 0 0
/dev/disk/by-label/Linux / ext4 errors=remount-ro 0 1
/dev/disk/by-label/Home /home ext4 defaults 0 0
スペースで自動的にフォーマットされ、次のようになりたいです。
proc /proc proc nodev,noexec,nosuid 0 0
/dev/disk/by-label/Linux / ext4 errors=remount-ro 0 1
/dev/disk/by-label/Home /home ext4 defaults 0 0
column
コマンドを-t
オプションとともに使用して、列を素敵なテーブルに揃えるのが好きです。
column -t /etc/fstab
proc /proc proc nodev,noexec,nosuid 0 0
/dev/disk/by-label/Linux / ext4 errors=remount-ro 0 1
/dev/disk/by-label/Home /home ext4 defaults 0 0
#!/bin/bash
# usage: fstabalign [FILE]
# This script will output fstab or other file as column aligned.
# It will not alter blank lines or #hash comments.
if [ -z "$1" ]; then
FILE=$(cat /etc/fstab)
else
FILE=$(cat "$1")
fi
# Separate the file contents into aligned and unaligned parts.
OUT_ALIGNED=$(echo "$FILE" | sed 's/^\s*#.*//' | nl -ba | column -t)
OUT_UNALIGNED=$(echo "$FILE" | sed 's/^\s*[^#].*//' $src | nl -ba)
# Remerge aligned and unaligned parts.
while read; do
line_aligned="$REPLY"
read -u 3; line_unaligned="$REPLY"
line_aligned=$( echo "$line_aligned" | sed 's/\s*[0-9]*\s*//')
line_unaligned=$(echo "$line_unaligned" | sed 's/\s*[0-9]*\s*//')
echo "$line_aligned$line_unaligned"
done < <(echo "$OUT_ALIGNED") 3< <(echo "$OUT_UNALIGNED")
私は実際にはアライメントをまったく好まない(1つのスペースだけ)。しかし、それは興味深い問題です。なぜcolumn
にこれに対するオプションがないのか、完璧なユースケースのように思えます...
特別なオプションを備えたファイルシステムがいくつかあり、ディスクごとのデバイスパスも非常に長いため、少なくとも私の場合は、fstab全体を整列させると非常に長い行になります。そこで、各セクション(空の行またはコメント行で分割)を個別に配置するスクリプトを作成しました。
./fstab.sh /etc/fstab
の使用:
#!/bin/bash
function Push() {
buffer="$buffer"$'\n'"$1"
}
function pop() {
if [ "$buffer" != "" ]
then
echo "$buffer" | column -t
buffer=""
fi
}
buffer=""
while read line
do
if [ "$line" == "" -o "${line:0:1}" == "#" ]
then
pop
echo "$line"
else
Push "$line"
fi
done < "$1"
pop
前:
# /etc/fstab: static file system information.
# <fs> <mountpoint> <type> <opts> <dump/pass>
# --- SPECIAL ---
none /dev/shm tmpfs nosuid,nodev,noexec,noatime 0 0
none /tmp tmpfs noatime,nosuid,nodev 0 0
none /var/tmp/portage tmpfs noatime,mode=0750,gid=portage,uid=portage 0 0
# --- INTERNAL ---
# SSD
UUID=fa15678f-7e7e-4a47-8ed2-7cea7a5d037d / xfs noatime 0 0
UUID=529cc283-53bc-4acc-a4d3-f35278d3f2f9 /home xfs noatime 0 0
# HDD
UUID=d7562145-654c-48bb-b8d2-1552a69186f5 /home/TV xfs noatime 0 0
UUID=952b5dee-8d2a-40b2-85f9-5e5092bc1e75 /home/Steam xfs noatime 0 0
UUID=4dcb18c3-f3a5-4b03-8877-063c5cd836e4 /home/jn xfs noatime 0 0
UUID=c735614a-f5f3-4232-911f-8a17cb033521 /var/www xfs noatime 0 0
/dev/HDD/windows7 /mnt/windows7 ntfs-3g offset=105906176,noauto,noatime 0 0
# HDD (OLD)
UUID=23deb461-bab5-45b7-9dca-9c2c4cdb4f50 /mnt/HDD/OLD-home xfs noauto,noatime 0 0
UUID=dd1e1eef-b548-4c94-8ebe-99dd7a648cb0 /mnt/HDD/OLD-music xfs noauto,noatime 0 0
UUID=2ae11a11-db04-4d27-a79e-d9b07dd19650 /mnt/HDD/OLD-opt xfs noauto,noatime 0 0
UUID=2abb2a27-2183-488e-8c24-e195ab3dcb5d /mnt/HDD/OLD-portage xfs noauto,noatime 0 0
UUID=3d0030f0-92da-4e66-8e60-369dfc586df7 /mnt/HDD/OLD-portage_tmp xfs noauto,noatime 0 0
UUID=89200c49-2fc2-45ed-81c8-e244b95db7ce /mnt/HDD/OLD-root xfs noauto,noatime 0 0
UUID=caebfb75-6a1c-4ed6-ad2f-d84d80221dc3 /mnt/HDD/OLD-schrott xfs noauto,noatime 0 0
UUID=cabddcee-cf07-4526-b3a3-9270edc9d171 /mnt/HDD/OLD-src xfs noauto,noatime 0 0
UUID=a2e4df4e-8c6d-4217-8889-6f483e872190 /mnt/HDD/OLD-tmp xfs noauto,noatime 0 0
UUID=4dd484f6-4142-45b3-b504-48625de1ab5c /mnt/HDD/OLD-var xfs noauto,noatime 0 0
# ODD
/dev/sr0 /mnt/cdrom auto user,noauto,ro 0 0
# --- EXTERNAL ---
# USB-Boot-Stick
LABEL="boot_key" /boot ext2 noauto,noatime 0 0
LABEL="boot_dos" /mnt/boot/dos vfat noauto,noatime 0 0
LABEL="boot_iso" /mnt/boot/iso ext2 noauto,noatime 0 0
LABEL="live0" /mnt/boot/live0 ext2 noauto,noatime 0 0
LABEL="live1" /mnt/boot/live1 ext2 noauto,noatime 0 0
# iriver Story HD
/dev/disk/by-id/usb-iriver_Story_EB07_3230204E6F76-0:0 /mnt/iriver/knv auto user,noauto,noatime 0 0
/dev/disk/by-id/usb-iriver_Story_SD_3230204E6F76-0:1 /mnt/iriver/ext auto user,noauto,noatime 0 0
# Sandisk Sansa CLIP
UUID=C65F-1E04 /mnt/mp3 auto user,noauto,noatime 0 0
# Eltern-Fernseher
UUID=115BF67A31CB6C02 /mnt/wdtv ntfs-3g locale=en_US.utf8,user,noauto 0 0
UUID=D27A-7C74 /mnt/pvr vfat user,noauto,noatime 0 0
後:
# /etc/fstab: static file system information.
# <fs> <mountpoint> <type> <opts> <dump/pass>
# --- SPECIAL ---
none /dev/shm tmpfs nosuid,nodev,noexec,noatime 0 0
none /tmp tmpfs noatime,nosuid,nodev 0 0
none /var/tmp/portage tmpfs noatime,mode=0750,gid=portage,uid=portage 0 0
# --- INTERNAL ---
# SSD
UUID=fa15678f-7e7e-4a47-8ed2-7cea7a5d037d / xfs noatime 0 0
UUID=529cc283-53bc-4acc-a4d3-f35278d3f2f9 /home xfs noatime 0 0
# HDD
UUID=d7562145-654c-48bb-b8d2-1552a69186f5 /home/TV xfs noatime 0 0
UUID=952b5dee-8d2a-40b2-85f9-5e5092bc1e75 /home/Steam xfs noatime 0 0
UUID=4dcb18c3-f3a5-4b03-8877-063c5cd836e4 /home/jn xfs noatime 0 0
UUID=c735614a-f5f3-4232-911f-8a17cb033521 /var/www xfs noatime 0 0
/dev/HDD/windows7 /mnt/windows7 ntfs-3g offset=105906176,noauto,noatime 0 0
# HDD (OLD)
UUID=23deb461-bab5-45b7-9dca-9c2c4cdb4f50 /mnt/HDD/OLD-home xfs noauto,noatime 0 0
UUID=dd1e1eef-b548-4c94-8ebe-99dd7a648cb0 /mnt/HDD/OLD-music xfs noauto,noatime 0 0
UUID=2ae11a11-db04-4d27-a79e-d9b07dd19650 /mnt/HDD/OLD-opt xfs noauto,noatime 0 0
UUID=2abb2a27-2183-488e-8c24-e195ab3dcb5d /mnt/HDD/OLD-portage xfs noauto,noatime 0 0
UUID=3d0030f0-92da-4e66-8e60-369dfc586df7 /mnt/HDD/OLD-portage_tmp xfs noauto,noatime 0 0
UUID=89200c49-2fc2-45ed-81c8-e244b95db7ce /mnt/HDD/OLD-root xfs noauto,noatime 0 0
UUID=caebfb75-6a1c-4ed6-ad2f-d84d80221dc3 /mnt/HDD/OLD-schrott xfs noauto,noatime 0 0
UUID=cabddcee-cf07-4526-b3a3-9270edc9d171 /mnt/HDD/OLD-src xfs noauto,noatime 0 0
UUID=a2e4df4e-8c6d-4217-8889-6f483e872190 /mnt/HDD/OLD-tmp xfs noauto,noatime 0 0
UUID=4dd484f6-4142-45b3-b504-48625de1ab5c /mnt/HDD/OLD-var xfs noauto,noatime 0 0
# ODD
/dev/sr0 /mnt/cdrom auto user,noauto,ro 0 0
# --- EXTERNAL ---
# USB-Boot-Stick
LABEL="boot_key" /boot ext2 noauto,noatime 0 0
LABEL="boot_dos" /mnt/boot/dos vfat noauto,noatime 0 0
LABEL="boot_iso" /mnt/boot/iso ext2 noauto,noatime 0 0
LABEL="live0" /mnt/boot/live0 ext2 noauto,noatime 0 0
LABEL="live1" /mnt/boot/live1 ext2 noauto,noatime 0 0
# iriver Story HD
/dev/disk/by-id/usb-iriver_Story_EB07_3230204E6F76-0:0 /mnt/iriver/knv auto user,noauto,noatime 0 0
/dev/disk/by-id/usb-iriver_Story_SD_3230204E6F76-0:1 /mnt/iriver/ext auto user,noauto,noatime 0 0
# Sandisk Sansa CLIP
UUID=C65F-1E04 /mnt/mp3 auto user,noauto,noatime 0 0
# Eltern-Fernseher
UUID=115BF67A31CB6C02 /mnt/wdtv ntfs-3g locale=en_US.utf8,user,noauto 0 0
UUID=D27A-7C74 /mnt/pvr vfat user,noauto,noatime 0 0
Vimは動作するか、emacsで動作するはずです。 nanoでさえfstabを正しく表示するはずです。テキストエディタのGUIを使用したい場合は、geditを試すことができます。本当にfstabをオンラインエディタに配置したい場合は、Googleドキュメントを使用できます(その後、コピーして貼り付けます)。
単一のスペースではなく、タブを使用してfstabのスペースを空けていることを確認してください。これは、特に両方を少し使用している場合に、不整合を引き起こす可能性があります。
シェルウィンドウがテキスト全体を行に収めるのに十分な大きさではないため、ファンキーに見える可能性があります。