一、Linux 系统目录结构
- /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:
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all - /root:
该目录为系统管理员,也称作超级权限者的用户主目录。 - /sbin:
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。 - /selinux:
这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。 - /srv:
该目录存放一些服务启动之后需要提取的数据。 - /sys:
这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。 - /tmp:
这个目录是用来存放一些临时文件的。 - /usr:
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。 - /usr/bin:
系统用户使用的应用程序。 - /usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。 - /usr/src:
内核源代码默认的放置目录。 - /var:
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。 - /run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。 - /etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。
值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。
在学习Linux,看ubuntu的教学视频,把常用命令记下来以备查询
文中包含了查看,创建,解压,等等常用操作,属于必会内容,这些不会用,不要说自己会用linux
二、Linux 文件基本属性
第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。
当为[ d ]则是目录
当为[ - ]则是文件;
若是[ l ]则表示为链接文档(link file);
若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
每个文件的属性由左边第一部分的10个字符来确定(如下图)
三、Linux文件属主和属组
1. 更改文件属性
chgrp [-R] 属组名 文件名
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
2. 更改文件属主,也可以同时更改文件属组
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
3. chmod:更改文件9个属性
Linux文件属性有两种设置方法,一种是数字,一种是符号。
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
r:4
w:2
x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx—] 分数则是:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= — = 0+0+0 = 0
所以等一下我们设定权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的:
chmod [-R] xyz 文件或目录
选项与参数:
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
四、Linux 文件与目录管理
绝对路径:
路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。
相对路径:
路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd …/man 这就是相对路径的写法啦!
ls: 列出目录
cd:切换目录
pwd:显示目前的目录
mkdir:创建一个新的目录
rmdir:删除一个空的目录
cp: 复制文件或目录
rm: 移除文件或目录
mv: 移动文件与目录,或修改文件与目录的名称
1. ls (列出目录)
-a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
-d :仅列出目录本身,而不是列出目录内的文件数据(常用)
-l :长数据串列出,包含文件的属性与权限等等数据;(常用)
2. pwd (显示目前所在的目录)
-P :显示出确实的路径,而非使用连结 (link) 路径。
3. mkdir
选项与参数:
-m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
-p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
4. rmdir
选项与参数:
-p :连同上一级『空的』目录也一起删除
5. cp
选项与参数:
-a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
-d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
-f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-r:递归持续复制,用於目录的复制行为;(常用)
-s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
-u:若 destination 比 source 旧才升级 destination !
6. rm
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
7. mv (移动文件与目录,或修改名称)
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会升级 (update)
五、Linux 文件内容查看
1. cat 由第一行开始显示文件内容
-A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E :将结尾的断行字节 $ 显示出来;
-n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符
2. tac
tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写
3. nl
选项与参数:
-b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值);
-n :列出行号表示的方法,主要有三种:
-n ln :行号在荧幕的最左方显示;
-n rn :行号在自己栏位的最右方显示,且不加 0 ;
-n rz :行号在自己栏位的最右方显示,且加 0 ;
-w :行号栏位的占用的位数。
4. more
一页一页翻动,在 more 这个程序的运行过程中,你有几个按键可以按的:
空白键 (space):代表向下翻一页;
Enter :代表向下翻『一行』;
/字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
:f :立刻显示出档名以及目前显示的行数;
q :代表立刻离开 more ,不再显示该文件内容。
b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
5. less
空白键 :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup] :向上翻动一页;
/字串 :向下搜寻『字串』的功能;
?字串 :向上搜寻『字串』的功能;
n :重复前一个搜寻 (与 / 或 ? 有关!)
N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q :离开 less 这个程序;
6. head
-n :后面接数字,代表显示几行的意思
7. tail
-n :后面接数字,代表显示几行的意思
-f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测
六、Linux 磁盘管理
1. df
-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
-k :以 KBytes 的容量显示各文件系统;
-m :以 MBytes 的容量显示各文件系统;
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H :以 M=1000K 取代 M=1024K 的进位方式;
-T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
-i :不用硬盘容量,而以 inode 的数量来显示
2. du
-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
-h :以人们较易读的容量格式 (G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计,与 -s 有点差别。
-k :以 KBytes 列出容量显示;
-m :以 MBytes 列出容量显示;
七、查看系统负载有两个常用的命令,是哪两个?这三个数值表示什么含义呢?
其中load average即系统负载,三个数值分别表示一分钟、五分钟、十五分钟内系统的平均负载,即平均任务数。
八、ps 查看系统进程时,有一列为STAT, 如果当前进程的stat为Ss 表示什么含义?如果为Z表示什么含义?
S表示正在休眠;s表示主进程;Z表示僵尸进程。
九、如何查看系统都开启了哪些端口?
netstat -lnp
十、如何查看网络连接状况?
netstat -an
十一、用什么命令对一个文件的内容进行统计
wc 命令 - c 统计字节数 - l 统计行数 - w 统计字数。
十二、Grep 命令有什么用? 如何忽略大小写? 如何查找不含该串的行?
是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。
grep [stringSTRING] filename grep [^string] filename
十三、怎么使一个命令在后台运行?
一般都是使用 & 在命令结尾来让程序自动运行。(命令后可以不追加空格)
十四、搜索文件用什么命令? 格式是怎么样的?
find <指定目录> <指定条件> <指定动作>
whereis 加参数与文件名
locate 只加文件名
find 直接搜索磁盘,较慢。
find / -name “string*”
十五、怎么对命令进行取别名?
alias la=‘ls -a’
1 查看
tab键可以自动补全
通配符 正则:
*任意内容,1*可配1XXXX
?一位内容 ,1?只能配1X
[]限定范围,1[134],只能配11.13.14,1[1-3]只能配11,12,13
`ls` 列出全部文件list可加参数,-选项(放参数前后无所谓)ls --help
参数是没有先后顺序的,还可以合起来写,ls -a -l -h 和ls -ahl是一样的
`ls /` 列出根目录下全部文件list
`ls /bin` 列出根目录下bin里面全部文件list
`ls -a` 列出根目录下全部文件包括隐藏的
`ls -l` 列出根目录下全部文件详情
`ls -l -h` 列出根目录下全部文件详情,大小用合适的单位来显示
`pwd`返回当前路径print working directory
/home/ubuntukylin
根目录下的home文件夹里面的ubuntukylin文件夹
tree 目录树
2 定位和删除
`cd` change directory
`cd ~`当前用户目录
.当前路径
..当前路径的上一级
`cd -` 快速回到上次路径
`touch 1.txt` 创建文件
`mkdir` 创建文件夹
`mkdir A/b/c -p` 在A里面创建b文件夹,再从b里面创建c -p代表自动创建没有的所依赖的的
`clear` 清屏
`cat + 文件名` 查看文件内容
`more + 文件名` 一页一页查看文件内容
`ls | more + 文件名` 管道连接两个命令
`history` 历史命令 !1 执行历史命令里面第一个
`rm` 删除文件
`rm B -r` 删除文件 递归删除B文件夹,有内容也删掉
`rmdir` 删除文件夹
`rm -rf`目录名 删除非空的目录,其中参数-f表示force
3 重定向
`ls > xxx.txt` 重定向把原来显示的内容导出到文件里,覆盖原文件
`ls >> xxx.txt` 重定向把原来显示的内容追加到文件里内容末尾,不覆盖原文件
`ln -s 1.txt 1-softlink.txt` 软链接相当于windows快捷方式
`ln 1.txt 1-softlink.txt` 硬链接相当于复制了一份文件并且换了个名字
4 文件中查找
`cat 1.txt 2.txt >xxx.txt` 把两个文件的内容合到一个文件里面去
`grep -n "ntfs" xxx.txt` 到xxx.txt里面找包含ntfs的内容
`grep -v "ntfs" xxx.txt` 到xxx.txt里面找不包含ntfs的内容
`grep -n "^ntfs" xxx.txt` 到xxx.txt里面找ntfs开头的内容
`grep -n "ntfs$" xxx.txt` 到xxx.txt里面找ntfs结尾的内容
`mv 1.txt 111.txt` 重命名
`mv 1.txt python` 移动到python文件夹里
`cp 1.txt python` 把1.txt复制到python里面
`cp python python3 -r` 把python复制到python里面.即使有文件也复制了,-r解决递归问题
5 文件夹中查找
`find ./ -name test.sh`查找当前目录下所有名为test.sh的文件
`find ./ -name '*.sh'`后缀.sh的
`find ./ -name "[A-Z]"`大写字母A-Z开头的
`find /temp -size 1M` temp目录下1M大小的
`find /temp -size +1M` temp目录下大于1M大小的
`find /temp -size -1M` temp目录下小于1M大小的
`find /temp -size +4k -size -1M` temp目录下大于4k小于1M的
`find ./ -perm 777`查找当前目录下权限为777的文件或者目录
6 打包解压
`tar -cvf test.tar *.py` 将当前目录下所有py文件打包到test.tar里面
`tar -xvf test.tar`解包
`tar -zcvf test.tar.gz *.py` 将当前目录下所有py文件打包到test.tar里面,并且压缩
`tar -zxvf test.tar.gz`解压缩包
`tar -jxvf test.tar.bz2`解压缩包
`tar -jxvf test.tar.bz2 -C dog/`解压缩包到指定路径下
zip zzz.zip *py
unzip zzz.zip
unzip -d ./dog zzz.zip
7 系统相关
`ps -aux` 所有进程信息
`top` 排序查看
`kill -9 pid` 强杀进程
`reboot` 重启`init6`
`shutdown -h now` 立刻关机`init0`
`shutdown -h +10` 10分钟后
`shutdown -h 20:20` 晚上八点二十
`ifconfig` 看IP信息
ctrl+shift+T
`df -h` 看硬盘
`du -h` 看当前路径下文件夹占用空间
8 用户用户组
新增用户,设置密码 ,切换用户,退出shuaige账户回到原来账户
`useradd shuaige -m` 同时创建家目录
`cat /etc/password`
`password shuaige`
`su shuaige`
`su - shuaige `切账户同时切到家目录
`whoami`
`who` 查看登陆的所有用户
`exit`
`userdel shuaige`
`userdel -r shuaige` 把家目录也删掉/home/shuaige
`sudo -s` 切到root账户# 非ubuntu用 su root
`exit`
`groupadd xxx` 创建xxx用户组
`cat /etc/group `查看组 可以用groupmod+按两次tab
`groupdel xxx`
9 权限
新账户添加sudo权限
`sudo usermod -a -G sudo xxxx`
`sudo usermod -a -G adm xxxx`
`chgrp yyy 1.py`改文件用户组
`chown yyy 1.py`改文件用户
改权限
-rwxrwxr--
chmod u=rwx 1.py
chmod g=rwx 1.py
chmod o=rwx 1.py
r-4
w-2
x-1
改变三种用户的权限和用数字法
chmod u=x,g=wx,o=rwx 1.py
chmod 137 1.py
chmod 777 1.py 全部权限放开