Linux文件系统
1. Linux系统主要目录及内容:
目录 | 内容 |
/bin | 构建最小系统所需要的命令(最常用的命令) |
/boot | 内核与启动文件 |
/dev | 各种设备文件 |
/etc | 系统软件的启动和配置文件 |
/home |
用户的主目录
|
/lib
|
C编译器的库
|
/media
|
可移动介质的安装点
|
/opt
|
可选的应用软件包(很少使用)
|
/proc
|
进程的映像
|
/root
|
超级用户root的主目录
|
/sbin
|
和系统操作有关的命令
|
/tmp
|
临时文件存放点
|
/usr
|
非系统的程序和命令
|
/var
|
系统专用的数据和配置文件
|
2.查看目录和文件:
ls 的用法
ls -F: 会在每个目录后加上/,在可执行文件后加*,在链接文件后加上@,在无法显示颜色的终端上有用:
ls -a: 显示所有的文件,包括隐藏文件如".adobe";
ls -l: 查看文件的各种属性。
“-rwxr-xr-x 1 root root 38096 2008-11-13 14:54 /bin/login”:
第1个字段的第1个字符表示文件类型;
然后3组位权限:属主,属组和其他人的权限
权限后的数字,表示链接数
root和root分别是属主和属组
最后4个分别表示文件大小、最后修改日期和时间、文件的完整路径
文件类型
|
符号
|
文件类型
|
符号
|
普通文件
|
-
|
本地域套接字 |
s
|
目录
|
d
|
有名管道
|
p
|
字符设备文件
|
c
|
符号链接
|
l
|
块设备文件
|
b
|
|
|
查看文本文件 cat(一次显示所有的内容)和more(一页一页的显示)和less(优先选)
cat 文本文件名(可以加多个文件名)
cat -n (显示行号) 文本文件名 (可以加多个文件名)
对于more的详细说明:
例子:
# more -dc/etc/profile 注:显示提示,并从终端或控制台顶部显示;
# more +4/etc/profile 注:从profile的第4行开始显示;
# more -4/etc/profile 注:每屏显示4行;
# ls -l/etc | more 注:查看一个目录下的文件时,可以和管道“|”结合起来
more [参数选项] [文件]
+num 从第num行开始显示;
-num 定义屏幕大小,为num行;
+/pattern 从pattern 前两行开始显示;
-c 从顶部清屏然后显示;
-d 提示Pressspace to continue, 'q' to quit.(按空 键继续,按q键退出),禁用响铃功能;
-l 忽略Ctrl+l(换页)字符;
-p 通过清除窗口而不是滚屏来对文件进行换页。和-c参数有点相似;
-s 把连续的多个空行显示为一行;
-u 把文件内容中的下划线去掉
more 的动作指令:
Enter 向下n行,需要定义,默认为1行;
Ctrl+f(或空格) 向下滚动一屏;
Ctrl+b 返回上一屏;
= 输出当前行号
q 退出more(退出后,不返回刚才more的位置,回到显示文档后面)
对less的详细说明:
less [参数] 文件
-c 从顶部(从上到下)刷新屏幕,并显示文件内容。而不是通过底部滚动完成刷新;
-f 强制打开文件,二进制文件显示时,不提示警告;
-i 搜索时忽略大小写;除非搜索串中包含大写字母;
-I 搜索时忽略大小写,除非搜索串中包含小写字母;
-m 显示读取文件的百分比;
-M 显法读取文件的百分比、行号及总行数;
-N 在每行前输出行号;
-p pattern搜索pattern;比如在/etc/profile搜索单词MAIL,就用 less -p MAIL/etc/profile
-s 把连续多个空白行作为一个空白行显示;
-Q 在终端下不响铃;
动作指令:
回车键 向下移动一行;
y 向上移动一行;
空格键 向下滚动一屏;
b 向上滚动一屏;
d 向下滚动半屏;
h less的帮助;
u 向上洋动半屏;
w 可以指定显示哪行开始显示,是从指定数字的下一行显示;比如指定的是6,那就从第7行显示;
g 跳到第一行;
G 跳到最后一行;
p n%(貌似不能用) 跳到n%,比如 10%,也就是说比整个文件内容的10%处开始显示;
/pattern 搜索pattern ,比如 /MAIL表示在文件中搜索MAIL单词;
v 调用vi编辑器;
q 退出less
!command 调用SHELL,可以运行命令;比如!ls 显示当前列当前目录下的所有文件;
12. 显示一个命令的帮助:
命令 --help(或--h)
13. 阅读文件的开头和结尾
head -n 2(指定显示行数) 文件名(可多个)
tail(用法同head)
14. 查找文件内容
grep un day(为了在文件day中查找包含un的行)
15. 在指定目录下查找东西
find 目录 -name *.zip -print(打印出绝对路径)
16.更快速的定位文件:locate
locate *.doc ##locate用于搜索大批量的文件,不需要知道放在了哪个盘
17.通配符
”*“ 用于匹配文件名中任意长度的字符串;
”?“ 只匹配一个字符;
”[ ]“ 用于匹配所有出现在方括号内的字符;例:ls text [1A] ##列出以text开头而仅以1或A结束的文件名;
”-“ 指定一个字符集范围;例:ls text [1-3];
18.命令行补全:
一次table键,或连续两次table键
3.修改文件和目录
- 新建目录:mkdir
mkdir -v 【文件夹名】 ##-v会显示最后结果
mkdir document picture ##新建两个目录
mkdir ~/picture/remp ##在主目录下新建名为temp的目录(不能在一个没有的文件中创建文件)
mkdir -p ~/tempx/job ##可以完整的创建一个子目录
- 删除目录和文件:rmdir 和 rm
rmdir test ## rmdir 只能删除空目录
rm test/*.pnp ## rm可以一次删除一个或几个文件
rm -i test/hello ##删除文件前会提示,并等用户通知(对于有写保护的普通文件,不加“-i”也会提示)
rm -f hello_bak ##“-f”避免交互,自动对这些问题回答y
rm -r Photos/ ##递归的删除目录下的所有文件和子目录,最后删除Photos目录
- 新建空文件: touch
touch hello ##新建一个hello的空文件
touch hello.php ##修改文件的建立日期
- 移动和重命名:mv
mv hello bin/ ##复制文件
mv Photos/ 桌面/ ##复制目录
mv -i hello test/ ##如果已有文件,显示:mv:是否覆盖“test/hello?"
mv -b hello test/ ##在移动文件之前,首先在同名文件的文件名后加一个”~“
- 改变文件所有权:chown和chgrp
sudo chown lewis:root days ##修改days的所有权
sudo chown guest days ##只修改文件属主
sudo chown :root days ##只修改文件的属组
sudo chown -R lewis iso/ ## "-R" 表示改变一个目录及其下所有文件(和子目录)的所有权
sudo chgrp nogroup days ##改变文件的属组
sudo chgrp nogroup ios/ ##改变目录的属组
- 改变文件的权限:chmod
chmod u+rwx days ## "用户组+(增加)/-(撤销)权限",用户组包括了文件属主(u), 文件属组(g),其他人(o),和所有人(a)
##不写该字段默认改变所有人的权限
## 权限包括了读取(r)、写入(w)、执行(x)
chomd ug=rw,o=r days ## "用户组=权限"
chmod o=u days ## "用户组1=用户组2",将用户组1的权限和用户组2的权限设为完全相同。
八进制表示文件权限“rwx”二进制(111)=八进制(4+2+1)=7
- 建立链接:ln
“符号链接”(软链接)需要使用带 -s 参数的 ln 命令,只是取了一个别名,删除链接的名字,不会影响源文件
ln -s days my_days ##文件建立一个名为my_days的符号链接指向文本文件days(起别名)
ln -s /usr/local/share/ local_share ## 目录建立符号链接
“硬链接”,不带参数,将两个独立的文件联系在一起,和符号链接的区别:硬链接是直接引用,符号链接是名称引用
ln days hard_days
- 输出重定向:“>”“>>”"<<"
标准输出总是指向显示器
ls > ~/ls_out ##如果ls_out文件不存在,那么“>”会试图建立这个文件,
##如果已经存在,则“>“会删除文件中原有的内容,然后用新内容替代
echo "Hello" > hello ##将Hello字符串输入到hello文件中
echo "www" >> hello ##将字符串 追加 到文本的后面
uname -r >> hello ##将uname产生的版本信息 追加 到hello中
date >> hello ##将date命令产生的当前日期时间追加到hello中
例子: “立即文档”
cat << EOF ##cat命令从键盘接收两行输入,并送往标准输出
>hello
>bye
>EOF
cat << END > hello ##首先让cat命令以立即文档的方式获取输入,然后再把cat的输出重定向到hello文件中
>hello world
>bye
>END
- 管道:“|”
例子:ls 首先列出当前目录下的所有文件名,管道“|”接收到这些输出,并把它们发送给grep命令作为输入。最后grep在这堆文件列表中查找
包含字符串ay的文件名,并在标准输出(也就是显示器)中显示。
ls | grep ay
days
hard_days
mplayer
mplayer~
my_days
- 打开文本文件:vi、vim、sudo gedit 文件路径(可绝对可相对,在gedit中打开)
sudo gedit 文件路径 ##如果没有该文件,系统会自动创建
- 压缩工具:gzip和bzip2
gzip(或gunzip)支持的扩展名有 . gz、. Z、-gz、. z、-z 和 z
gzip test.tar ##压缩 ,会被压缩成test.tar.gz(替换)
gunzip test.tar.gz ##解压缩,方法1
gzip -d test.tar.gz ##解压缩,方法2
gzip -l test.tar.gz ##查看压缩效果,文件大小以字节为单位
gzip -tv test.tar.gz ##-t选项用来测试压缩文件的完整性,-v 显示测试结果
bzip2可以识别压缩文件的格式包括.bz2、.bz、.tbz2、.tbz和bzip2,与gzip用法基本一致,有更高的压缩率,但是以压缩速度为代价
bzip2 test.tar ##压缩,会被压缩成test.tar.bz2(替换)
bunzip2 test.tar.bz2 ##解压缩,方法1
bzip2 -d test.tar.bz2 ##解压缩,方法2
- 存档工具:tar、dd
文件打包:tar(和gzip不同的是,tar不会删除原来的文件)
tar -cvf test.tar test/ ##将Shell目录连同其下的文件一同打包成文件test.tar
-c 指导tar创建归档文件,
-v 用于显示命令的执行过程,
-f 则用于指定归档文件的文件名
tar -xvf test.tar ##解开归档文件
-x 用于解开归档文件
tar -cvwf test.tar test/ ##压缩征求用户意见
tar -xvwf test.tar ##抽出时征求用户意见
-w 用于每次将单个文件加入(或者抽出)归档文件时征求用户的意见,y/n
tar -czvf shell.tar.gz shell/ ##直接将文件压缩成shell.tar.gz格式
-z 先调用tar命令,再调用gzip命令,等同于两条指令
tar -xzf shell.tar.gz ##直接解压成shell
-z 先调用gunzip指令,再调用tar指令
转移文件:dd
dd if=/dev/cdrom of=CD.iso ##dd命令使用 if 选项指定输入端的文件系统,而 of选项则指定其输出端。
##这条命令将一张CD完整的转储为iso镜像文件
————————参考《Linux从入门到精通》刘忆智