在 Linux 或 Unix 操作系统中,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构。
文件系统的最顶层是由根目录开始的,系统使用 / 来表示根目录。
当前目录: .
上级目录:…
如果一个目录或文件名以一个点 . 开始,表示这个目录或文件是一个隐藏目录或文件(如:.bashrc)。即以默认方式查找时,不显示该目录或文件。
/bin Binaries二进制文件
/boot 启动linux的文件
/dev Device外部设备
/home 用户的主目录
/lib 动态连接共享库
/opt Optional可选,摆放主机额外安装的软件
/proc Processes存储当前内核运行状态
/root 系统管理员的用户主目录
/sbin SuperUser Binaries超级用户的二进制文件,存放系统管理员使用的系统管理程序
/srv 存放服务启动后需要提取的数据
/sys 是内核设备树的直观反映,一个内核对象被创建时,对应文件和目录也会被创建
/usr Unix Shared Resoures共享资源,用户很多应用程序和文件都放在这里,类似 windows 下的 program files 目录
/var variable
使用ll或者ls -l命令来显示当前目录下所有文件的属性、所属用户和组
文件共10 个属性,第一个是文件类型,剩下9个 3个为一组,代表3类用户(owner/group/others)的读+写+执行(read+write+execute)的权限
解释下相关概念:
属主:当前文件的拥有者
属组:和当前文件拥有者同组的用户
r 表示可读,**w **表示可写,x 表示可执行;不可都用 - 表示
文件属性中的文件类型可能有以下这些类型:
chgrp 新属组名 文件名
chgrp -R 新属组名 文件名 #-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改
([-R]表示这个命令可选)
chown [-R] 新属主名 文件名 # 仅修改属主
chown [-R] 新属主名: 新属组名 文件名 # 同时修改属主、属组
可以修改除了文件类型外的所有读写执行权限属性,有数字和符号两种修改方法。
rwx分别对应的分数:
r : 4
w : 2
x : 1
每种身份(owner/group/others)各自的三个权限需要累加:
权限为: -rwxrwx--- 分数则是:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0
该文件的权限数字就是 770
所以chmod语法如下:
chmod [-R] xyz 文件名
使用语法如下:
chmod | u(属主) | +(加入) | r | 文件或目录 |
---|---|---|---|---|
g(属组) | -(减去) | w | ||
o(其他) | =(赋权) | x | ||
a(所有) |
使用示例:
想要将文件test设置为 -rwxr-xr--,可以使用
chmod u=rwx,g=r-x,o=r-- test
想减去所有人的执行权限:
chmod a-x test
绝对路径:如cd /usr/share/doc
相对路径:如cd …/doc
使用 ==man [命令]==来查看各个命令使用文档,如 man ls
ls : list files 列出目录
cd : change directory 切换目录
pwd : print work directory 显示当前目录
mkdir: make directory 创建新目录
rmdir: remove directory 删除一个空目录
cp : copy file 复制文件或目录
rm : remove file 删除
mv : move file 移动文件和目录/修改文件和目录名称
选项和参数:
ls -a : 列出全部文件(包括隐藏文件)
ls -d : 仅列出目录本身(不列文件)
ls -l : 将文件信息以长数据串列出(包含文件属性、权限)【 别名是:ll 】
可以组合使用:
ls -al : 列出所有文件(包含属性、权限)
ls -dl : 列出目录(包含属性、权限)
绝对路径 : cd /root/test
相对路径 : cd ./test
回到自己的根目录 : cd ~
回到上一级目录 : cd ..
全称:print working directory
mkdir [-m] [-p] 目录名称
-m:配置文件权限
mkdir -m 711 test2
-p:递归创建多层目录
mkdir test <==创建名为 test 的新目录
mkdir test1/test2/test3/test4 <==创建失败!!!
mkdir -p test1/test2/test3/test4 <==创建成功!!!
rmdir 仅能删除空的目录,可以使用 rm 命令来删除非空目录
rmdir [-p] 目录名称
参数极其多:
cp [-adfilprsu] 来源档(source) 目标档(destination)
rm [-fir] 文件或目录
mv [-fiu] source destination
【destination一般是目录,source可以是文件或目录】
修改文件名称:
mv mvtest mvtestnew ##将mvtest更名为mvtestnew
例子:
cat /home/TongWeb/web.xml
CentOS release 6.4 (Final)
Kernel \r on an \m
可以看出 tac 是 cat 的倒着写!【以行为单位倒着写,不是以字符为单位!】
例子:
tac /home/TongWeb/web.xml
Kernel \r on an \m
CentOS release 6.4 (Final)
不仅显示内容,还显示内容的行号
例子:
nl /home/TongWeb/web.xml
1 CentOS release 6.4 (Final)
2 Kernel \r on an \m
和cat一样都是显示文件内容的,但是more一次只展示一页,可以手动前后翻页
例子:
more /etc/man_db.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
--More--(28%) <== 重点在这一行喔!你的光标也会在这里等待你的命令
在 more 这个程序的运行过程中,你有几个按键可以按的:
相比more,可以更方便地向上向下翻页,向上向下搜索,有更多的搜索功能
例子:
less /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
: <== 这里可以等待你输入命令!
less运行时可以输入的命令有:
head -n 行数 文件
head -n 20 /test/web.xml
tail -n 行数 文件
tail -f 文件名 ##持续侦测文件更新内容,直到按下Ctrl+c才能结束(常用于看控制台日志报错)
vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)
此状态下键盘输入会被vim识别为命令,而不是字符
以下是常用的几个命令:
i 切换到输入模式,以输入字符。
x 删除当前光标所在处的字符。
: 切换到底线命令模式,以在最底一行输入命令。
进入输入模式后,键盘上除了ESC可以退出输入模式,其他按键都可以堪称普通字符。
在输入模式中,可以使用以下按键:
字符按键以及Shift组合,输入字符
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到命令模式
底线命令模式可以输入单个或多个字符的命令,按ESC键可随时退出底线命令模式
q 退出程序
w 保存文件
useradd 用户名 #最基础的,可以加选项
userdel 用户名 #最基础的,可以加选项
常用的选项是 -r,它的作用是把用户的主目录一起删除
usermod 用户名 #最基础的,可以加选项
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等
,这些选项的意义与useradd
命令中的选项一样,可以为用户指定新的资源值。
另外,有些系统可以使用选项:-l 新用户名
这个选项指定一个新的账号,即将原来的用户名改为新的用户名
指定和修改用户口令的Shell命令:
passwd 选项 用户名
可使用的选项:
如果默认用户名,则修改当前用户的口令
groupadd 选项 用户组名
可以使用的选项有:
groupdel 用户组
groupmod 选项 用户组
常用的选项有:
su用于用户之间的切换。但是切换前的用户依然保持登录状态。
如果是root 向普通或虚拟用户切换不需要密码,反之普通用户切换到其它任何用户都需要密码验证。
su test:切换到test用户,但是路径还是/root目录
su - test : 切换到test用户,路径变成了/home/test
su : 切换到root用户,但是路径还是原来的路径
su - : 切换到root用户,并且路径是/root
sudo是为所有想使用root权限的普通用户设计的。
可以让普通用户具有临时使用root权限的权利。只需输入自己账户的密码即可。
进入sudo配置文件命令:
vi /etc/sudoer【路径都是这个,固定的】
或者直接 visudo
Linux磁盘管理常用三个命令为df、du和fdisk。
df和du区别?
df [-ahikHTm] [目录或文件名]
选项与参数:
-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
-k :以 KBytes 的容量显示各文件系统;
-m :以 MBytes 的容量显示各文件系统;
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;(常用)
-H :以 M=1000K 取代 M=1024K 的进位方式;
-T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
-i :不用硬盘容量,而以 inode 的数量来显示
du [-ahskm] 文件或目录名称
选项与参数:
-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
-h :以人们较易读的容量格式 (G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计,与 -s 有点差别。
-k :以 KBytes 列出容量显示;
-m :以 MBytes 列出容量显示;
fdisk [-l] 装置名称
选项与参数:
-l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。
Windows的压缩文件的扩展名 .zip/.rar
linux中的打包文件:aa.tar
linux中的压缩文件:bb.gz
linux中打包并压缩的文件:.tar.gzLinux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。
而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。
tar -zcvf 打包压缩后的文件名 待打包文件【可以写多个文件名,或者直接*,把当前目录下文件都打包】
tar -zcvf ab.tar aa.txt bb.txt
tar -zcvf ab.tar *
tar [-xvf] 压缩文件名 指定解压的位置【不写代表解压到当前目录下】
文本搜索工具
ps -ef | grep 7777
在目录结构中搜索文件,并对搜索结果执行指定的操作.
find 默认搜索当前目录及其子目录,并且不过滤任何结果
find . -name "*.log" -ls 在当前目录查找以.log结尾的文件,并显示详细信息。
find /root/ -perm 600 查找/root/目录下权限为600的文件
find . -type f -name "*.log" 查找当目录,以.log结尾的普通文件
find . -type d | sort 查找当前所有目录并排序
find . -size +100M 查找当前目录大于100M的文件
locate 让使用者可以很快速的搜寻某个路径。默认每天自动更新一次,所以使用locate 命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库
updatedb
locate /etc/sh 搜索etc目录下所有以sh开头的文件
locate pwd 查找和pwd相关的所有文件
定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。
whereis ls 将和ls文件相关的文件都查找出来
在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果
which pwd 查找pwd命令所在路径
which java 查找path中java的路径
通过crontab命令,可以在固定间隔时间,执行指定的系统指令或shell脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合
crontab file [-u user] ## 用指定的文件替代目前的crontab
crontab -l [-u user] ## 列出用户目前的crontab
crontab -e [-u user] ## 编辑用户目前的crontab
ps -ef 查看所有正在运行的进程
结束进程:
kill pid 或者 kill -9 pid(强制杀死进程)
ifconfig:查看网卡信息
命令:ifconfig 或 ifconfig | more
ping:查看与某台机器的连接情况
命令:ping ip
netstat -an:查看当前系统端口
命令:netstat -an
搜索指定端口
命令:netstat -an | grep 8080