系统目录结构
根目录下有哪些目录
bin和sbin:目录下存放着一些命令,bin和sbin的区别是sbin下的命令是超级用户使用的,普通用户无法正常使用。
boot :系统启动的相关文件。
dev : 是linux系统里面特有的一些设备文件,例如 光盘、鼠标、键盘等。
etc : 是系统的一些配置文件所在的目录。
home:是用户的家目录,下面存放一些用户自己的文件。
lib和lib64 : 是存放系统的库文件,好多命令都要依赖库文件,怎么查看一个命令依赖那个库文件-----ldd /bin/ls
media : 是媒介目录,默认是空的,比如插入一个U盘它会自动放到media目录下。
mnt : 是一个临时挂载目录,默认也是空的,可一把临时光驱和临时增加的硬盘挂载到该目录下。
proc :进程 是系统启动的一些进程文件。
run : 是一些进程所生成的文件,一旦关机就会消失。
srv : 默认也是空的,他存放一些服务所产生的文件。
sys :存放一些系统内核生成的文件一般不会去动。
tmp : 系统的临时目录,他的权限恨大,任何用户都可以在它的目录下更改一些文件。同时它还有一个特殊的权限:用户自己管理自己的文件别人没有权限管理。
usr : 用户的一些文件会存放到该目录下,和bin bin64 lib 是差不多的,是一个很重要的文件。
var :存放和系统相关的的一些日志文件。
比较经常会用到的目录有:/usr/bin /usr/sbin /bin/ /sbin/ /etc/ /var/ /usr/local/。
ls命令
ls的命令有很多这里列举几个常用的:
ls-l : 可以把ls这个命令的全部信息都列出来,包括权限、有多少个子文件等。
ls -h :更人性化的显示所有目录。
ls -a : 查看这个目录下的所有文件,包括隐藏文件。
ls- ta : 这个命令会把所查看到的文件按时间顺序排列出来。
ls -d :这个命令只显示目录本身。
ls命令还有很多具体用法可以使用man ls 查看。
文件类型
输入不同的命令会出现不同的文件格式
d :文件类型目录。
- :普通文件,包括二进制文件、文本文档。
c :字符串设备。
b :框设备,光驱、光盘等。
s :通信,用来通信的文件。
l :软连接文件。
alias命令
alias表示这个命令是由一个命令和选项的组合形成的新的命令。至于命令是由哪些东西组成的可以通过“which 某某”查看。列如想查看“ls”该命令是由哪些因素组成如下:
同时还可以通过命令查看所有的alias命令:
同时还可以自己编辑一个命令:
取消这个命令:
相对和绝对路径
绝对路径:是由根目录写起的,例如:/usr/local/mysql
相对路径:路径的写法不是有根目录泄气的,例如:首先用户进入/home,然后再进入到test。
cd命令
cd命令是用来变更用户所在的目录,乳沟后面什么都不跟就直接进入当前用户的跟目录下,
如果后面跟了目录名,会直接切换到指定目录。
cd命令后面不能跟文件名,如果跟了文件名就会报错,
在linux中“.”表示当前目录,“..”表示上一级目录。
cd .. 进入上一级目录。
cd - 表示上一次所在的目录在哪里,相当于交替。、
cd ~ 直接到根目录。
更多的关于cd命令的使用可以用 man cd 来查看。
创建和删除目录
mkdir创建目录,但是如果你想创建一系列的目录你就得用到mkdir -p。使用mkdir -pv 可以看到同时创建的目录喝子目录。
rmdir 删除目录,rmdir可以删除目录,当该目录必须是空的,同时rmdir只能删除目录不能删除文件。我们可以使用touch命令创建一个文件试试:
rmdir -p 不能随便使用,会把该目录下所有为空的子目录全部删除。
rm命令
rm -f 强制删除目录下所有文件。
rm -r 可以删除一系列目录和文件,但都会提示是否删除该文件。
rm -rf 强制删除所有。
rm -rfv 可视化删除,可以看见具体删除了哪些东西。
rm -rfv 删除一个并不存在的目录是不会给出任何提示。使用rm -rv 就会提示该目录不存在。
环境变量PATH
==(注意最好不要随便更改系统的命令路径,以免造成问题)==
- 关于PATH的作用:
PATH说简单点就是一个字符串变量,当输入命令的时候LINUX会去查找PATH里面记录的路径。比如在根目录/下可以输入命令ls,在/usr目录下也可以输入ls,但其实ls这个命令根本不在这个两个目录下,事实上当你输入命令的时候LINUX会去/bin,/usr/bin,/sbin等目录下面去找你此时输入的命令,而PATH的值恰恰就是/bin:/sbin:/usr/bin:……。其中的冒号使目录与目录之间隔开。
- 查看命令所在的路径和别名
which ls 查看ls命令所在的绝对路径
- 命令所在路径
-
echo $PATH 输入echo$PATH的到下面结果
-
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin
which查找的路径是在下面这些目录下查找的,这些目录用冒号做了分割。
如果我们要使用的命令是在这其中的目录里,那使用的时候就不需要输入绝对路径,别名就可以。
如何添加环境变量
-
假设/tmp/目录下有命令ls2
-
输入PATH=$PATH:/tmp/
-
echo $PATH查看这个环境变量下是否成功添加了/tmp/这个目录
-
这时候就可以直接敲ls2命令了,which ls2可以查看到这个命令的绝对路径
但是新添加的环境变量,只是当前终端可以使用,并不是永久的,我们需要给他配置成永久的
-
vi /etc/profile 打开配置文件
-
在配置文件的最后另起一行添加 PATH=$PATH:/tmp/
-
保存后,每次开机重启都会去加载这个目录,就可以使用这里的命令了
如果我们不想要这个变量了
- 就这样重新设置一下变量只添加原有的目录就可以了
PATH=$PATH:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin
- 然后打开配置文件
vi /etc/profile
- 找到最后一行新添加的目录/tmp/删掉后保存就可以了
cp命令
cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。
- 语法:cp(选项)(参数)
-
选项:
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
-
参数:
源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;
目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。
-
实例:
- 如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到点.或点点..的形式。例如,下面的命令将指定文件复制到当前目录下:
cp ../mary/homework/assign
所有目标文件指定的目录必须是己经存在的,cp命令不能创建目录。如果没有文件复制的权限,则系统会显示出错信息。
-
将文件file复制到目录/usr/men/tmp下,并改名为file1
cp file /usr/men/tmp/file1
-
将目录/usr/men下的所有文件及其子目录复制到目录/usr/zh中
cp -i /usr/men m*.c /usr/zh
- 在Linux下使用cp命令复制文件时候,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按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、传递了目录属性、没有略过目录。
mv命令
mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。source表示源文件或目录,target表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。
mv命令可以用来将源文件移至一个目标文件中,或将一组文件移至一个目标目录中。源文件被移至目标文件有两种不同的结果:
- 如果目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变。
- 如果目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。如果源文件和目标文件在同一个目录下,mv的作用就是改文件名。当目标文件是目录文件时,源文件或目录参数可以有多个,则所有的源文件都会被移至目标文件中。所有移到该目录下的文件都将保留以前的文件名。
注意事项:mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。
- 语法:(选项)(参数)
-
选项:
--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
--strip-trailing-slashes:删除源文件中的斜杠“/”;
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
--target-directory=<目录>:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
-
参数:
源文件:源文件列表。
目标文件:如果“目标文件”是文件名则在移动文件的同时,将其改名为“目标文件”;如果“目标文件”是目录名则将源文件移动到“目标文件”下。
-
实例:
- 将文件ex3改名为new1
mv ex3 new1
- 将目录/usr/men中的所有文件移到当前目录(用.表示)中:
mv /usr/men/* .
文档查看cat_more_less_head_tail
-
linux下集中文档查看命令
-
cat 由第一行开始显示内容,并将所有内容输出
-
tac 从最后一行倒序显示内容,并将所有内容输出
-
more 根据窗口大小,一页一页的现实文件内容
-
less 和more类似,但其优点可以往前翻页,而且进行可以搜索字符
-
head 只显示头几行 head -n 1
可以用这个命令追加文档内容到1.txt
head -n2 /etc/passwd >> 1.txt passwd头两行的内容追加到1.txt里 -
tail 只显示最后几行 tail -n 1
追加和重定向也适用于tail命令 -
用法:cat /root/1.txt head -n 1 /root/1.txt
文件和目录属性
如图,使用ls命令查看当前目录下的文件时,共显示出了9列内容,第一列包含的东西有改文件的类型和所有者、所属组级其他用户对该文件的权限。
chmod命令
chmod:只更改目录本身的权限。
chmod -R: 更改该目录下所有目录和文件的权限。
chmod a+x/a-x : 给所有的增加或减去执行权限。
更改所有者/所属组
chown :更改所有者。
chgrp :更改所属组。
chown “所有者:所属组” :直接更改所有者和所属组。
chown -R:直接更改该目录下所有文件的。