Linux -> 2. 常用的基本命令
2.1 目录管理
绝对路径和相对路径
-
Linux的目录结构为树状结构,最顶级的目录为根目录 /,其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。
-
绝对路径:路径的写法,由根目录 / 写起,例如:/usr/share/doc 这个目录。
-
相对路径:
路径的写法,不是由 / 写起,如由 /usr/share/doc 要到 /usr/share/man目录下,可以写成:cd …/man 这就是相对路径的写法。
-
cd:切换目录!
-
./:当前目录
-
cd … :返回上一级目录
处理目录的常用命令
- ls: 列出目录
- cd:切换目录
- pwd:显示目前的目录
- mkdir:创建一个新的目录
- rmdir:删除一个空的目录
- cp: 复制文件或目录
- rm: 移除文件或目录
- mv: 移动文件与目录,或修改文件与目录的名称
ls(列出目录),最长被使用
-
以下是对这些目录的解释:
-
/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。
-
/boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
-
/dev : dev是Device(设备)的缩写, 存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
-
/etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。
-
/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
-
/lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。
-
/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
-
/media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
-
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
-
/opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
-
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
-
/root:该目录为系统管理员,也称作超级权限者的用户主目录。
-
/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
-
/srv:该目录存放一些服务启动之后需要提取的数据。
-
/sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
-
/tmp:这个目录是用来存放一些临时文件的。用完即丢的文件,可以放在这个目录下,安装包!
-
/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
- /usr/bin: 系统用户使用的应用程序。
-
/usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。
- /usr/src: 内核源代码默认的放置目录。
-
/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
-
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
-
/www:存放服务器网站的的相关资源、环境,网站的项目
-
-
选项与参数:
- -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来
- -l :长数据串列出,包含文件的属性与权限等等数据
- 可以组合使用
cd(切换目录)
-
cd 目录名
- Linux绝对路径都是以/开头;
- 相对路径是对于当前目录该如何寻找…/…/
pwd 显示当前所在目录
mkdir 创建目录
rmdir 删除目录
[root@iZbp1j8o1ffv1eqwi9tdr5Z home]# ls
anobabe test1
[root@iZbp1j8o1ffv1eqwi9tdr5Z home]# cd test1
[root@iZbp1j8o1ffv1eqwi9tdr5Z test1]# ls
test2
[root@iZbp1j8o1ffv1eqwi9tdr5Z test1]# cd test2
[root@iZbp1j8o1ffv1eqwi9tdr5Z test2]# ls
test3
[root@iZbp1j8o1ffv1eqwi9tdr5Z test2]# cd test3
[root@iZbp1j8o1ffv1eqwi9tdr5Z test3]# ls
test4
[root@iZbp1j8o1ffv1eqwi9tdr5Z test3]# rmdir test4
[root@iZbp1j8o1ffv1eqwi9tdr5Z test3]# cd ..
[root@iZbp1j8o1ffv1eqwi9tdr5Z test2]# rmdir test3
[root@iZbp1j8o1ffv1eqwi9tdr5Z test2]# cd ..
[root@iZbp1j8o1ffv1eqwi9tdr5Z test1]# rmdir test2
[root@iZbp1j8o1ffv1eqwi9tdr5Z test1]# cd ..
[root@iZbp1j8o1ffv1eqwi9tdr5Z home]# rmdir test1
[root@iZbp1j8o1ffv1eqwi9tdr5Z home]# ls
anobabe
- rmdir 仅能删除空的文件夹,如果下面还存在文件,需要先删除
- 可以通过rmdir -p 删除层级目录
cp 复制文件或者目录
- cp 原来的地方 新的地方
- 如果文件重复,根据提示选择覆盖(y)或放弃(n)
rm 移除未年检或者目录
-
-f 忽略不存在的文件,不会出现警告,降至删除
-
-r 递归删除目录
-
-i删除询问是否删除
rm -rf # 系统中所有的文件就被删除了
mv 移动文件或者目录
-
-f 强制
-
-u只替换已经更新过的文件
-
可以移动文件,也可以重命名文件夹
[root@iZbp1j8o1ffv1eqwi9tdr5Z home]# mv anobabe ano
[root@iZbp1j8o1ffv1eqwi9tdr5Z home]# ls
ano
2.2 基本属性
看懂文件属性
- 使用
ll
或者ls -l
命令显示一个文件的属性以及文件所属的用户和组:
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等
- [d]目录
- [-]文件
- [l]链接文档
- [b]装置文件里面的可供存储的几口设备,即可随机存取装置
- [c]装置文件里面的串行端口设备,如键盘,鼠标等一次性读取装置
接下来的字符中,即从第二个字符开始,以三个为一组,且均为[rwx]的三个参数的组合
-
[r]可读read
-
[w]可写write
-
[x]可执行execute
-
其中,这三个权限的位置不会改变,如果没有某个权限,就用-表示
-
每个文件的属性都是由左边第一部分的10个字符表示
d rwx r-x r-x
0 123 456 789
- 第0位确定文件类型;第1-3位确定
属主
(该文件的所有者)拥有该文件的权限;第4-6位确定属组
(所有者的同组用户)拥有该文件的权限;第7-9位确定其他用户
拥有该文件的权限。其中:- 第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;
- 第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-"字符表示没有写权限;
- 第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限。
修改文件属性
- chgrp:更改文件属组
- -R 递归更改文件属组,就是在更给某个目录文件的属组时,如果带上-R参数,那么该目录下的所有文件的属组都会更改
chgrp [-R] 属组名 文件名
- chown:更改文件属主,也可以同时更改文件属组
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
- chmod:更改文件9个属性
chmod [-R] xyz 文件或目录
- Linux文件属性有两种设置方法,一种是数字,一种是符号。Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
- 用数字来代表各个权限,各权限的分数对照表如下:
r:4 w:2 x:1
可读可写可执行 rwx 7
可读可写不可执行 rw- 6
chmod 777 文件或目录 #给所有人赋予文件或目录的最高权限
2.3 文件内容查看
概述
Linux系统中使用以下命令来查看文件的内容:
- cat 由第一行开始显示文件内容
- tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
- nl 显示的时候,顺道输出行号!
- more 一页一页的显示文件内容
- less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
- head 只看头几行
- tail 只看尾巴几行
网络配置目录:CentOS7, /etc/sysconfig/network-scripts
可以使用 *man [命令]*来查看各个命令的使用文档,如 :man cp。
cat 由第一行开始显示文件内容
语法:
cat [-AbEnTv]
选项与参数:
- -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
- -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
- -E :将结尾的断行字节 $ 显示出来;
- -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
- -T :将 [tab] 按键以 ^I 显示出来;
- -v :列出一些看不出来的特殊字符
tac
tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
nl 显示行号
语法:
nl [-bnw] 文件
- 选项与参数:
- -b :指定行号指定的方式,主要有两种:-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);-b t :如果有空行,空的那一行不要列出行号(默认值);
- -n :列出行号表示的方法,主要有三种:-n ln :行号在荧幕的最左方显示;-n rn :行号在自己栏位的最右方显示,且不加 0 ;-n rz :行号在自己栏位的最右方显示,且加 0 ;
- -w :行号栏位的占用的位数。
more 一页一页翻动
- 空白键 (space):代表向下翻一页;
- Enter :代表向下翻『一行』;
- /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
- :f :立刻显示出档名以及目前显示的行数;
- q :代表立刻离开 more ,不再显示该文件内容。
- b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
less 一页一页翻动
- 空白键 :向下翻动一页;
- [pagedown]:向下翻动一页;
- [pageup] :向上翻动一页;
- /字串 :向下搜寻『字串』的功能;
- ?字串 :向上搜寻『字串』的功能;
- n :重复前一个搜寻 (与 / 或 ? 有关!)
- N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
- q :离开 less 这个程序;
head 取出文件前面几行
head [-n number] 文件
-
选项与参数:-n 后面接数字,代表显示几行的意思!
-
默认的情况中,显示前面 10 行
tail 取出文件后面几行
tail [-n number] 文件
选项与参数:
-
-n :后面接数字,代表显示几行的意思
-
默认的情况中,显示最后 10 行
2.4 拓展:Linux 链接概念
- Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。
硬连接
- 硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。
- 在 Linux 中,多个文件名指向同一索引节点是存在的。比如:A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。
- 硬连接的作用:允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
软链接
- 另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接类似 Windows 的快捷方式。它实际上是一个特殊的文件。
- 在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。
- A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
ln
命令 创建硬链接
ln -s
创建软链接
[root@iZbp1j8o1ffv1eqwi9tdr5Z home]# touch f1 #touch命令创建f1文件
[root@iZbp1j8o1ffv1eqwi9tdr5Z home]# ls
ano f1
[root@iZbp1j8o1ffv1eqwi9tdr5Z home]# ln f1 f2 #创建一个硬链接f2
[root@iZbp1j8o1ffv1eqwi9tdr5Z home]# ls
ano f1 f2
[root@iZbp1j8o1ffv1eqwi9tdr5Z home]# ln -s f1 f3 #创建一个软链接f3
[root@iZbp1j8o1ffv1eqwi9tdr5Z home]# ll
total 4
drwxr-xr-x 2 root root 4096 Apr 10 10:05 ano
-rw-r--r-- 2 root root 0 Apr 10 15:36 f1
-rw-r--r-- 2 root root 0 Apr 10 15:36 f2
lrwxrwxrwx 1 root root 2 Apr 10 15:37 f3 -> f1
[root@iZbp1j8o1ffv1eqwi9tdr5Z home]# echo "i am anobabe" >> f1 #给f1中写入字符串
[root@iZbp1j8o1ffv1eqwi9tdr5Z home]# ls
ano f1 f2 f3
[root@iZbp1j8o1ffv1eqwi9tdr5Z home]# cat f1
i am anobabe
[root@iZbp1j8o1ffv1eqwi9tdr5Z home]# cat f2
i am anobabe
[root@iZbp1j8o1ffv1eqwi9tdr5Z home]# cat f3
i am anobabe
- 通过上面的测试可以看出:当删除原始文件 f1 后,硬连接 f2 不受影响,但是符号连接 f1 文件无效;可以得到以下全部结论:
- 删除符号连接f3,对f1,f2无影响;
- 删除硬连接f2,对f1,f3也无影响;
- 删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;
- 同时删除原文件f1,硬连接f2,整个文件会真正的被删除。
touch filename #创建文件
echo strings >> filename #输入字符串,也可以输入字符串中