linux学习
1. 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:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
- /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:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
2. 基本指令
命令格式:
command [-options] [parameter]
说明:
- command:命令
- [-options]:选项
- [parameter]:参数
command --help #查看帮助
(1) cd 切换文件夹
cd [相对路径或绝对路径]
cd /home #绝对路径,以根目录开头
cd admin #相对路径,不以根目录开头
cd .. #返回上级目录
cd / #回到根目录
cd ~ #回自己家
cd - #回看
pwd #查看当前目录
(2) ls 查看目录内容
ls
ls -l #显示详细列表,包含文件的属性与权限等等数据
ls -lh #把文件大小以人性化的方式显示,即以M为单位
ls -a #显示所有的文件,包括隐藏文件(以.开头的文件)
ll #等价于ls -l
ls *txt #查看当前目录下所有以txt结尾的文件
ls / #查看根目录内容,ls后面可以加任意指定目录
#参数可以组合使用
(3) mkdir 创建文件夹
mkdir [-mp] 目录名称 #新建文件夹
mkdir tupian #在当前目录下创建tupian文件夹
mkdir /root/tupian #以绝对路径创建tupian文件夹
mkdir -p aaa/bbb/ccc #加上这个 -p 的选项,创建多层目录!
mkdir a b #在当前目录创建多个文件夹
mkdir a/{c,d} #在指定目录下创建多个文件夹
mkdir .adc #以.开头,创建隐藏文件夹
选项与参数:
- **-p :**多级目录
(4) touch 创建文件
touch 文件名 #新建文件
touch abc.txt #在当前目录下创建abc.txt文件,如果指定了目录,必须保证上级目录存在
touch .abc #创建隐藏文件
(5) rm/rmdir 删除文件/文件夹
rmdir [-p] 目录名称
rmdir a #只能删除空的文件夹
rmdir -p a/b/c #删除多级文件夹,也只能删除空的目录
选项与参数:
- -p : 连同上一级『空的』目录也一起删除
rm [-fir] 文件或目录
rm abc.txt #删除文件
rm a.txt b.txt #删除多个文件
rm * #删除当前目录下所有文件,文件夹和隐藏文件删不掉
rm -r a #删除文件夹a内的所有文件和文件夹,可以删除多级,会询问,隐藏文件删不掉
rm .a #隐藏文件只能指定删除
rm -rf / #删库跑路
选项与参数:
- -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
- -i :互动模式,在删除前会询问使用者是否动作
- -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!
(6) 文件权限
ls -l #显示详细列表,包含文件的属性与权限等等数据
第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。其他情况:
- 当为[ d ]则是目录
- 当为[ - ]则是文件;
- 若是[ l ]则表示为链接文档 ( link file );
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备 ( 可随机存取装置 );
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标 ( 一次性读取装置 )。
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。
- [ r ]代表可读(read)
- [ w ]代表可写(write)
- [ x ]代表可执行(execute)。
第一组指文件的拥有者权限,第二组代表文件拥有的组的权限,第三组代表其他用户权限。
(7) cp 拷贝或文件夹
cp [-adfilprsu] 源文件(source) 目标文件(destination)
cp 1.txt 2.txt #在当前目录下复制文件1.txt并且命名为2.txt
cp -r abc abc_copy #复制文件夹
选项与参数:
-
-p: 连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-
-r: 递归持续复制,用于目录的复制行为;(常用)
-
-f: 为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
-
-i: 若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
(8) mv 移动、重命名
mv [-fiu] source destination
#多级目录也可以移动
mv 1.txt 2.txt #重命名
mv abc a/abc_copy #移动到指定目录,要保证指定目录是存在
选项与参数:
- -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
- -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
- -u :若目标文件已经存在,且 source 比较新,才会升级 (update)
(9) 重定向 >, >>
将命令执行结果重定向到一个文件,即本应该显示在终端上的内容保存到指定文件中。
ls > test.txt #把ls应该显示的内容输出到test.txt文件中,如果test.txt不存在会自动创建
ls >> test.txt # >>表示追加写,>表示覆盖写
(10) 查看文件内容
Linux系统中使用以下命令来查看文件的内容:
- cat 由第一行开始显示文件内容
- tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
- nl 显示的时候,顺道输出行号
- more 一页一页的显示文件内容
- less 与 more 类似,但是比 more 更好的是,可以往前翻页!
- head 只看头几行
- tail 只看尾巴几行
cat 1.txt #把文件内容显示到屏幕中,直接显示到最后一行
cat 1.txt 2.txt #把两个文件内容显示到屏幕中
cat 1.txt 2.txt > 3.txt #把两个文件内容合并到新的文件中
more 1.txt #文件内容很多时,用more查看
#空格:代表向下翻一页
#回车:代表向下翻一行,翻到末尾就退出了
#b:往回翻一页
#q:退出
# /字串:代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
(11) 管道
| 概念:一个命令的输出可以通过管道作为另一个命令的输出。
ls -l / | more #把左边的命令返回的结果交给右边命令进行处理
(12) 软链接
概念:符号连接(Symbolic Link),也叫软连接。类似于 Windows 的快捷方式。
-
文件实际上是一个文本文件,其中包含的有另一文件的位置信息。文件大小跟源文件不一样
-
A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
-
可以给目录创建软链接
ln -s 1.txt 1_link #给1.txt在当前目录创建一个软链接
ln -s 1.txt ~/1_link #给1.txt在指定目录创建软链接,如果源文件不写绝对路径,软链接指向的文件是不存 在的,因为软链接就记住了文件名
(13) 硬链接
-
在 Linux 的文件系统中,保存在磁盘分区中的文件都会被分配一个索引节点号(Inode Index)。
-
硬连接指通过索引节点来进行连接。本身占空间,相当于把源文件复制一份,与源文件同步变化
-
如果A 是 B 的硬链接(A 和 B 都是文件名),则一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。
-
硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。
-
使用
ll
指令查看时,有一个数字,代表有几个文件能同步发生变化 -
不能给目录创建硬链接!
ln 1.txt 1_link #给1.txt在当前目录创建一个硬链接
(14) grep 文本搜索
grep hello test.txt #在某个文件中查找包含hello的内容,只要有一行有hello就会把整行显示
grep -niv hellotest.txt #-n 显示行号; -i:不区分大小学; -v:反向查找
grep -n hello /home/admin -r # 查找整个目录中的所有文件,包含hello的内容
(15) find 查找文件
find . -name 2.txt # 在当前目录下查找名字为2.txt的文件,返回路径
find ~ -name '*txt' # 在家目录下查找以txt结尾的文件
(16) tar 归档管理
tar命令的参数前可以省略 “-”
tar 打包
常用参数:
- -c: 生成档案文件,创建打包文件
- -v:列出归档解档的详细过程,显示进度
- -f:指定档案文件名,必须放在最后,f后面第一个参数代表要生产的文件名,后面所有的参数是要打包的文件
- -t:列出档案中包含的文件
- -x:解开档案文件
tar cvf a.tar 1.txt 2.txt #将文件1.txt和2.txt打包成文件,名为a.tar
tar tf a.tar #将a.tar包下的内容列出来
tar xvf a.tar #解压a.tar包到当前路径下
tar xvf a.tar -C tar #解压a.tar包到指定文件夹tar中,指定文件夹必须是存在的,不会自动创建
(17) gzip 文件压缩解压
-
-d: 解压,生产*.tar文件
-
-r:压缩所有子目录,生产*.tar.gz文件
gzip -r a.tar #压缩
gzip -d a.tar.gz #解压
- 一步到位压缩和解压:
tar czf b.tar.gz *txt #把所有txt文件打包并且压缩生成b.tar.gz文件
tar zxf b.tar.gz *txt -C tar #解压b.tar.gz到指定文件夹tar中
其他压缩解压方式:
- bzip2:
tar jcf j.tar.bz2 *txt #压缩
tar xjf j.tar.bz2 -C jtar #解压
- zip:
zip -r zz *txt #zz代表要生成的压缩文件,不要写扩展名,会自动生成zip的扩展名
unzip -d zz zz.zip #解压时创建目录
压缩率:zip < gzip < bzip2
通用性:zip > gzip > bzip2
(19) which 查找命令在哪里
which ll #查找ll命令在哪里
(20) chmod 修改文件权限
-
字母法:
chmod u/g/o/a +/-/= rwx- 文件名
-
u:user表示该文件的所有者
-
g:group表示用户组
-
o:other表示以外的人
-
a:all表示所有用户
-
+:增加权限
-
-:减少权限
-
=:直接赋值为新的权限
-
-
数字法:
- r:4,w:2,x:1,-:0
chmod 777 test.txt
(21) vi/vim编辑器
三种模式:命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode
- 命令模式:
用户刚刚启动 vi/vim,便进入了命令模式。
以下是常用的几个命令:
- i 切换到输入模式,以输入字符。
- x 删除当前光标所在处的字符。
- : 切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
- 输入模式:
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
- 底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
- q 退出程序
- w 保存文件
按ESC键可随时退出底线命令模式。
3. 用户管理
(1) 添加账号 useradd
useradd 选项 用户名
参数说明:
-
选项 :
-
- -c comment 指定一段注释性描述。
- -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
- -g 用户组 指定用户所属的用户组。
- -G 用户组,用户组 指定用户所属的附加组。
- -m 使用者目录如不存在则自动建立。比如/home/kongx
- -s Shell文件 指定用户的登录Shell。
- -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
-
用户名 :
-
- 指定新账号的登录名。
(2) su 切换用户
su #切换到root用户
su 用户名 #切换到指定用户
(3) userdel 删除用户
userdel 选项 用户名
常用的选项是 -r,它的作用是把用户的主目录一起删除。
(4) usermod 修改用户属性
usermod 选项 用户名
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。
(5) passwd 用户口令
passwd 选项 用户名
可使用的选项:
- -l 锁定口令,即禁用账号。
- -u 口令解锁。
- -d 使账号无口令。
- -f 强迫用户下次登录时修改口令。
如果默认用户名,则修改当前用户的口令;如果是超级用户,可以指定任何用户的口令。
普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。
(6) who
查看当前登录的用户
pts代表一个终端
tty代表用户登录了操作系统