系统目录结构

03-Linux系统基础命令_第1张图片

/root       这是系统管理员(root user)的目录。
/bin       这里存放了标准的(或者说是缺省的)linux的工具,比如像“ls”、“vi”还有“more”等等。
/etc       系统重要配置文件, 以及常用服务配置文件
/var       存放系统引导启动时产生的可变文件,文件通常动态更改的,例如: 缓存目录,日志文件
/run        系统启动后, 运行的程序产生的运行时数据, 包括进程的pid文件,锁文件等
/home       普通用户的主目录, 普通用户的家目录默认为/HOME/USERNAME
/root       超级管理员的主目录, 普通用户无权操作
/tmp        存放临时文件, 一般存放超过10天以上都会自动删除,可以更改删除临时文件的期限
/boot       存放系统引导时候需要的文件
/dev        存放设备文件
/usr        安装的软件, 共享库, 重要的子目录有
/usr/bin    用户命令目录
/usr/sbin   管理员命令目录
/usr/local  本地自定义安装的软件
 /media       有些linux的发行版使用这个目录来挂载那些usb接口的移动硬盘(包括U盘)、CD/DVD驱动器等等。
 /mnt      这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom 等目录。
 /proc     操作系统运行时,进程信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。

文件路径定位

1.绝对路径:

Linux系统采用了目录树的文件组织结构, 在Linux下每个目录或文件都可以从根目录处开始寻找, 比如: /usr/bin目录。这种从根目录开始的全路径被称为"绝对路径", 绝对路径一定是以 “/” 开头的。

2.相对路径

相对路径, 关键点在于当前在什么路径下。假设当前目录在/usr/local下, 那么它的上层目录(/usr目录)可以用../表示, 而/usr/local的下层目录(src)则可以用./src表示。所谓的(.)和(..)目录实际上也是属于相对路径

3.cd命令常见用法:

.  表示用户所处的当前目录
.. 表示上级目录;
~  表示当前用户自己的家目录

cd -    //切换上次所在目录
cd ~    //切换至当前用户家目录
cd       //切换至当前用户家目录
cd .    //.代表当前目录,一般在拷贝、移动等情况下使用
cd ..   //切换至当前目录的上级目录

目录管理命令

1.目录创建命令mkdir (选项)(参数)
选项

-Z:设置安全上下文,当使用SELinux时有效;
-m<目标属性>或--mode<目标属性>建立目录的同时设置目录的权限;
-p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
--version 显示版本信息。

实例

在目录/usr/meng下建立子目录test,并且只有文件主有读、写和执行权限,其他人无权访问

mkdir -m 700 /usr/meng/test

在当前目录中建立bin和bin下的os_1目录,权限设置为文件主可读、写、执行,同组用户可读和执行,其他用户无权访问

mkdir -p-m 750 bin/os_1

文件管理命令

Linux一切皆为文件, 在对Linux进行配置时, 很大程度上就是处理文件的过程, 所以掌握文件的相关操作是非常有必要的。下面我们介绍如何对文件进行, 创建、删除、移动、重命名, 以及查看文件内容, 至于如何编辑文件, 在后面具体介绍编辑器的时候在做详细阐述。

选项

-a:或--time=atime或--time=access或--time=use 只更改存取时间;
-c:或--no-create 不建立任何文件;
-d:<时间日期> 使用指定的日期时间,而非现在的时间;
-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;
-m:或--time=mtime或--time=modify 只更该变动时间;
-r:<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;
-t:<日期时间> 使用指定的日期时间,而非现在的时间;
--help:在线帮助;
--version:显示版本信息。

1.文件创建命令touch

# touch filename
# touch filename_1 filename_2
# touch file{1..10}
# touch file{a,b,c}
# touch file{a..z}

2.文件时间stat

[root@zabbix ~]# stat 1.txt 
  File: ‘1.txt’
  Size: 25          Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 5773072     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-05-29 09:01:36.529542000 +0800
Modify: 2018-05-29 09:01:34.442542000 +0800
Change: 2018-05-29 09:01:34.442542000 +0800
 Birth: -
 访问时间:atime,查看内容 
修改时间:mtime,修改内容 
改变时间:ctime,文件属性,比如权限 
删除时间:dtime,文件被删除的时间

3.文件目录复制命令cp

选项

-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。

实例

如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到点.或点点..的形式。例如,下面的命令将指定文件复制到当前目录下:

将文件file复制到目录/usr/men/tmp下,并改名为file1

cp file /usr/men/tmp/file1

将目录/usr/men下的所有文件及其子目录复制到目录/usr/zh中

cp -r /usr/men /usr/zh

交互式地将目录/usr/men中的以m打头的所有.c文件复制到目录/usr/zh中

cp -i /usr/men m*.c /usr/zh

我们在Linux下使用cp命令复制文件时候,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖。文件数量不多还好,但是要是几百个估计按Y都要吐血了,于是折腾来半天总结了一个方法:

cp aaa/* /bbb
复制目录aaa下所有到/bbb目录下,这时如果/bbb目录下有和aaa同名的文件,需要按Y来确认并且会略过aaa目录下的子目录。

cp -r aaa/* /bbb
这次依然需要按Y来确认操作,但是没有忽略子目录。

cp -r -a aaa/* /bbb
依然需要按Y来确认操作,并且把aaa目录以及子目录和文件属性也传递到了/bbb。

\cp -r -a aaa/* /bbb
成功,没有提示按Y、传递了目录属性、没有略过目录。

4.文件目录移动命令mv

选项

--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
--strip-trailing-slashes:删除源文件中的斜杠“/”;
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
--target-directory=<目录>:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

//移动文件至tmp目录
# mv file /tmp/

//移动文件至tmp目录并修改名称为file_test
# mv file /tmp/file_test

//移动目录至/tmp目录下
# mv dir/ /tmp/

//移动多个文件或多个目录至同一个目录
# touch file{1..3}
# mv file1 file2 file3 /opt/

# mkdir dir{1..3}
# mv dir1/ dir2/ dir3/ /opt

5.文件目录删除命令rm

rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。

选项

-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
--preserve-root:不对根目录进行递归操作;
-v:显示指令的详细执行过程。

//删除文件, 默认会提醒是否删除文件
# rm  anan

//强制删除文件, 不提醒
# rm  anan -f

//删除目录,会提醒
# rm -r dir/

//强制删除目录,不提醒
# rm -rf dir/

//示例
# mkdir /home/dir10
# touch /home/dir10/{file2,file3,.file4}
# rm -rf /home/dir10/*  //不包括隐藏文件 
# ls /home/dir10/ -a
. .. .file4

//示例2
# touch file{1..10}
# touch {1..10}.pdf
# rm -rf file* 
# rm -rf *.pdf

文件查看命令

cat     //查看文件内容
示例:cat /etc/passwd
示例:cat -n /etc/passwd   //-n参数行号 
示例:cat >> xuliangwei.txt <

文件下载命令

wget    //文件下载
-O   //指定下载地址,更改名称  
-T   //超时时间
-q   //安静下载(关闭wget输出)
--spider //网络爬虫  

示例:wget http://www.baidu.com

curl    //文件下载
示例:curl -o http://www.baidu.com

yum install lrzsz
rz  //文件上传

sz  //文件下载
示例:sz filename

命令查找命令

locate //查找文件或者目录
示例:locate /etc/sh       //搜索etc目录下所有以sh开头的文件
示例:locate -i /etc/sh    //搜索etc目录下,所有以sh开头的文件,忽略大小写

which   //查找系统PATH变量目录下的命令(绝对路径)
示例:which ls

whereis //查找文件索引数据库下的命令、源文件、man文件。非PATH变量查找,所以查找的面比which要广 -b,-m
示例:whereis ls
示例:whereis -b ls