=========
shell对文件进行管理==========
. 复制、创建、删除、移动、编辑、压缩、权限、查看、查找
一、Linux的目录结构
Windows: 以多根的方式组织文件 C:\ D:\ E:\
Linux: 以单根的方式组织文件 /
/目录结构:======
bin 普通用户使用的命令 /bin/ls
dev 设备文件 /dev/sda,/dev/tty1,dev/tty2,/dev/pts/1
home 普通用户家目录小区
lost+found 孤儿文件
proc 内核虚拟目录,反映出来的是内核,进程信息或实时状态 虚拟的文件系统
sbin 管理员使用的命令
usr 系统文件,相当于C:\Windows
boot *** 和启动相关的文件,例如kernel,grub
etc *** 配置文件
lib 库文件
media 移动设备默认的挂载点
mnt 手工挂载设备的挂载点
root root用户的HOME
tmp 临时文件
var *** 存放的是一些变化文件,比如数据库,日志,邮件....
路径:==========
cd
. 链接到当前目录
.. 链接到上一级目录
绝对路径:从/开头的路径 cd /home cd ~alice
相对路径:相对于当前目录开始 cd ..
~ 当前用户的家目录
cd ~ 进入当前用户的家目录
# cd /usr/share/doc/
=======================================================
cd专用:
cd - 返回上次目录
cd 直接回家目录
=======================================================
文件管理之:创建/复制/移动/删除
==创建
文件 touch 文件 无则创建,有则修改时间
# touch file1.txt
# touch -t 1501010001 2018.rmvb
修改文件时间 语法:
-t STAMP
use [[CC]YY]MMDDhhmm[.ss] instead of current time
====================================================================
目录
# mkdir /home/dir2 /home/dir3
# mkdir /home/{dir4,dir5}
[root@station230 ~]# mkdir -v /home/ {dir6,dir7}
mkdir: 已创建目录 “/home/dir6”
mkdir: 已创建目录 “/home/dir7”
# mkdir -p /home/dir8/111/222 包括其父母的创建
==复制
cp 源 目标
# cp install.log /home/dir1
# cp -r uplayer/ /home/dir1
[root@station230 ~]# cp install.log /home/dir2
[root@station230 ~]# cp my.jpg !$
cp my.jpg /home/dir2
[root@station230 ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 \
> /etc/passwd /etc/grub.conf /etc/hosts . # 这里“\”是换行用的,而且cp命令后面的一个或者多个都是源,只有最后一个是目标(这里是 . )
# cp -rf /etc/hosts {,.aa}
“/etc/hosts” -> “/etc/hosts.aa”
查看/etc会发现多出一个hosts.aa
[root@vm8 ~]# ll /etc/hosts*
-rw-r--r-- 1 root root 207 May 14 08:10 /etc/hosts
-rw-r--r-- 1 root root 207 Nov 10 01:33 /etc/hosts.aa
========================================================
小知识:root用户使用cp (默认有一个别名 alias cp='cp -i')也就是说有交互,总是询问,下面是几种方法跳过询问
1. /bin/cp -rf my.jpg /home/dir2
2. # unalias cp
# cp -rf my.jpg /home/dir2
###shell都是临时的,只对当前shell生效,重新打开,这个别名还是存在的,除非彻底修改配置文件
3. # \cp -rf install.log /home/dir2
========================================================
==移动
mv 源 目标
# mv file2 /home/dir3 将file2移动到/home/dir3里
# mv file4 file5 将file4重命名为file5,当前位置里的移动就是重命名
==删除 /home/dir1
cd /home
rm -rf dir1 这种方法能够避免误删重要的目录,所以先到目录下,在去删除文件
-r 递归
-f force强制
-v 详细过程
==查看文件内容
文本文件
/etc/hosts
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/passwd
/etc/shadow
/etc/group
/etc/grub.conf
/etc/resolv.conf
/var/log/messages //系统的主日志文件
cat
-n 显示行号
-A 包括控制字符(换行符)linux $ Windows ^M$
dos2unix windows下的转换为linux的可读文件
unix2dos linux下的转换为windows的可读文件
例如
unix2dos --help
dos2unix -n window.txt 123
less 这个更好用些(n N 翻) q退出 less /etc/passwd
more
head -1 默认是10行,加“-1”是看第一行 , 加-23就看前23行 例如 head /etc/passwd
tail -1 同上
# tail -f /var/log/messages 动态看这个文件
# logger yangsheng
grep 针对文件内容进行过滤
grep 'root' /etc/passwd
grep --color 'root' /etc/passwd
grep --color '^root' /etc/passwd
grep --color '/bin/bash$' /etc/passwd
==二进制文件
# strings /bin/ls
===修改文件内容===
# cp -rf /boot/grub/grub.conf .
# cp -rf /etc/sysconfig/network-scripts/ifcfg-eth0 .
vi vim
命令模式:
a. 光标定位 hjkl gg G /string(n N 可以循环的)
快速定位到某一行
1. 末行模式下 :14 进入第14行
2. 命令模式下 3G 进入第三行
b. 复制y 粘贴p yy 3yy ygg yG
删除d p
dd 3dd dgg dG (以行为单位)
x 删除后面的一个字符
D 删除后面的一行
u 撤销
^r redo 再作一次
r 可以用来修改一个字符
c. 进入其它模式
进入插入模式
i进入后在光标前面开始输入 //**
o另起一行,光标到这行的开头 //**
A进入后到本行的末端 //**
a 进入后在光标后面开始输入
: 进入末行模式
插入模式:
末行模式:
a. 保存退出 :w 写入保存 :q 退出 :wq 保存并退出 :w! 强制保存 :q! 不保存并退出 :wq!强制保存退出
b. 查找替换 :1,5 s/Note/yyy/ 从1-5行的Note 替换为yyy :5,$ s/Note/yyy/ $表示最后一行
:% s/to/uplooking/ :% s/to/uplooking/g %表示所有行 g 表示每行的相应词都替换
:4,9 s/^#// 4-9行的以#开头的替换为空
c. 设置环境 :set nu 设置行号 :set ic 不区分大小写 :set ai 自动缩进
:set nonu 取消设置行号 :set noic
d. 读入文件/写文件: :w/aaa.txt 当在原来的保存不了时, 另存为aaa.txt
:r/etc/hosts
永久的环境:
用户HOME(家目录): .vimrc 可以vim .vimrc,在这里打上下面俩个命令,就可以让命令模式下都显示行号和不区分大小写
set ic
set nu
# vim -O /etc/hosts /etc/grub.conf
# vimdiff grub.conf /etc/grub.conf ///将两个文件作对比
# vimdiff -O grub.conf /etc/grub.conf ^w 暗两次切换
. 复制、创建、删除、移动、编辑、压缩、权限、查看、查找
一、Linux的目录结构
Windows: 以多根的方式组织文件 C:\ D:\ E:\
Linux: 以单根的方式组织文件 /
/目录结构:======
bin 普通用户使用的命令 /bin/ls
dev 设备文件 /dev/sda,/dev/tty1,dev/tty2,/dev/pts/1
home 普通用户家目录小区
lost+found 孤儿文件
proc 内核虚拟目录,反映出来的是内核,进程信息或实时状态 虚拟的文件系统
sbin 管理员使用的命令
usr 系统文件,相当于C:\Windows
boot *** 和启动相关的文件,例如kernel,grub
etc *** 配置文件
lib 库文件
media 移动设备默认的挂载点
mnt 手工挂载设备的挂载点
root root用户的HOME
tmp 临时文件
var *** 存放的是一些变化文件,比如数据库,日志,邮件....
路径:==========
cd
. 链接到当前目录
.. 链接到上一级目录
绝对路径:从/开头的路径 cd /home cd ~alice
相对路径:相对于当前目录开始 cd ..
~ 当前用户的家目录
cd ~ 进入当前用户的家目录
# cd /usr/share/doc/
=======================================================
cd专用:
cd - 返回上次目录
cd 直接回家目录
=======================================================
文件管理之:创建/复制/移动/删除
==创建
文件 touch 文件 无则创建,有则修改时间
# touch file1.txt
# touch -t 1501010001 2018.rmvb
修改文件时间 语法:
-t STAMP
use [[CC]YY]MMDDhhmm[.ss] instead of current time
====================================================================
目录
# mkdir /home/dir2 /home/dir3
# mkdir /home/{dir4,dir5}
[root@station230 ~]# mkdir -v /home/ {dir6,dir7}
mkdir: 已创建目录 “/home/dir6”
mkdir: 已创建目录 “/home/dir7”
# mkdir -p /home/dir8/111/222 包括其父母的创建
==复制
cp 源 目标
# cp install.log /home/dir1
# cp -r uplayer/ /home/dir1
[root@station230 ~]# cp install.log /home/dir2
[root@station230 ~]# cp my.jpg !$
cp my.jpg /home/dir2
[root@station230 ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 \
> /etc/passwd /etc/grub.conf /etc/hosts . # 这里“\”是换行用的,而且cp命令后面的一个或者多个都是源,只有最后一个是目标(这里是 . )
# cp -rf /etc/hosts {,.aa}
“/etc/hosts” -> “/etc/hosts.aa”
查看/etc会发现多出一个hosts.aa
[root@vm8 ~]# ll /etc/hosts*
-rw-r--r-- 1 root root 207 May 14 08:10 /etc/hosts
-rw-r--r-- 1 root root 207 Nov 10 01:33 /etc/hosts.aa
========================================================
小知识:root用户使用cp (默认有一个别名 alias cp='cp -i')也就是说有交互,总是询问,下面是几种方法跳过询问
1. /bin/cp -rf my.jpg /home/dir2
2. # unalias cp
# cp -rf my.jpg /home/dir2
###shell都是临时的,只对当前shell生效,重新打开,这个别名还是存在的,除非彻底修改配置文件
3. # \cp -rf install.log /home/dir2
========================================================
==移动
mv 源 目标
# mv file2 /home/dir3 将file2移动到/home/dir3里
# mv file4 file5 将file4重命名为file5,当前位置里的移动就是重命名
==删除 /home/dir1
cd /home
rm -rf dir1 这种方法能够避免误删重要的目录,所以先到目录下,在去删除文件
-r 递归
-f force强制
-v 详细过程
==查看文件内容
文本文件
/etc/hosts
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/passwd
/etc/shadow
/etc/group
/etc/grub.conf
/etc/resolv.conf
/var/log/messages //系统的主日志文件
cat
-n 显示行号
-A 包括控制字符(换行符)linux $ Windows ^M$
dos2unix windows下的转换为linux的可读文件
unix2dos linux下的转换为windows的可读文件
例如
unix2dos --help
dos2unix -n window.txt 123
less 这个更好用些(n N 翻) q退出 less /etc/passwd
more
head -1 默认是10行,加“-1”是看第一行 , 加-23就看前23行 例如 head /etc/passwd
tail -1 同上
# tail -f /var/log/messages 动态看这个文件
# logger yangsheng
grep 针对文件内容进行过滤
grep 'root' /etc/passwd
grep --color 'root' /etc/passwd
grep --color '^root' /etc/passwd
grep --color '/bin/bash$' /etc/passwd
==二进制文件
# strings /bin/ls
===修改文件内容===
# cp -rf /boot/grub/grub.conf .
# cp -rf /etc/sysconfig/network-scripts/ifcfg-eth0 .
vi vim
命令模式:
a. 光标定位 hjkl gg G /string(n N 可以循环的)
快速定位到某一行
1. 末行模式下 :14 进入第14行
2. 命令模式下 3G 进入第三行
b. 复制y 粘贴p yy 3yy ygg yG
删除d p
dd 3dd dgg dG (以行为单位)
x 删除后面的一个字符
D 删除后面的一行
u 撤销
^r redo 再作一次
r 可以用来修改一个字符
c. 进入其它模式
进入插入模式
i进入后在光标前面开始输入 //**
o另起一行,光标到这行的开头 //**
A进入后到本行的末端 //**
a 进入后在光标后面开始输入
: 进入末行模式
插入模式:
末行模式:
a. 保存退出 :w 写入保存 :q 退出 :wq 保存并退出 :w! 强制保存 :q! 不保存并退出 :wq!强制保存退出
b. 查找替换 :1,5 s/Note/yyy/ 从1-5行的Note 替换为yyy :5,$ s/Note/yyy/ $表示最后一行
:% s/to/uplooking/ :% s/to/uplooking/g %表示所有行 g 表示每行的相应词都替换
:4,9 s/^#// 4-9行的以#开头的替换为空
c. 设置环境 :set nu 设置行号 :set ic 不区分大小写 :set ai 自动缩进
:set nonu 取消设置行号 :set noic
d. 读入文件/写文件: :w/aaa.txt 当在原来的保存不了时, 另存为aaa.txt
:r/etc/hosts
永久的环境:
用户HOME(家目录): .vimrc 可以vim .vimrc,在这里打上下面俩个命令,就可以让命令模式下都显示行号和不区分大小写
set ic
set nu
# vim -O /etc/hosts /etc/grub.conf
# vimdiff grub.conf /etc/grub.conf ///将两个文件作对比
# vimdiff -O grub.conf /etc/grub.conf ^w 暗两次切换