Linux【2】

目录和文件操作命令

1.目录的增删查改

C 增
mkdir 新建目录 可以同时创建多个目录
mkdirubunturedhatslackwarepletterimportant mkdir-p letter/important
如果需要直接赋予权限 -m 参数
mkdir-m=r– letter
上面的命令会创建一个名为 letter 的目录,同时为目录所有者、用户组和其他用户针对该目录赋予只读权限
创建的时候想看到信息需要 -v 参数 这样就可以看到linux是怎么创建目录的
$ mkdir-v ubuntu redhat slackware
man mkdir或mkdir –help来显示 mkdir 的手册页面

U 改
重命名文件或目录

我们也用 mv 命令来重命名文件或目录 不过目标位置和源位置必须相同才可以。然后文件名必须不同。 想看看详情就加-v 记住了哦 一般都是这个参数看详情
mvdirectory1/directory2/ mv-v *.txt /home/pungki/office

R 看
cd 目录名 进入到某个目录
cd / 根目录
cd ~ 回到家目录
cd .. 或者 cd ../ 回到上级目录
ll 查看
cd - 回到上次操作的目录
pwd 显示当前所在的绝对对路径
D 删
-r 就是向下递归,不管有多少级目录,一并删除 -f 就是直接强行删除,不作任何提示的意思 -v 显示linux删除文件的步骤 -i 既有文件或目录之前先询问用户。
rm 文件名 会询问是否删除
rm -f 文件名 会强制删除 但是不递归
rm -rf 目录名字 不带提示 直接强制删除
使用这个rm -rf的时候一定要格外小心,linux没有回收站的
自定义回收站功能
myrm(){ D=/tmp/ (date+ D; mv “ @" D && echo “moved to $D ok”; }

M(移动+重命名) 老婆 这个目录既可以移动目录也可以直接重命名哦

不同于复制命令,用 mv 命令移动目录相当直接 就一个命令简单吧 想看看详情就加-v 记住了哦 一般都是这个参数看详情
移动目录

当你将文件移动到其它位置,而那个位置恰好有同样的文件,这时 mv 命令会覆盖掉原来的文件。对于mv的这一行为一般不会有什么提示。如果想产生一个关于覆盖文件的提示,我们可以使用-i选项。

假设我们想将 file_1.txt 移动到 /home/pungki/office。同时,/home/pungki/office 目录下已经有file_1.txt文件了。加上-i 就会产生提示哦(是否要覆盖)
如果-i选项询问我们是否要覆盖文件,那么 -n 选项将不会允许我们覆盖任何已存在的文件。
$ mv-i file_1.txt /home/pungki/office

默认情况下,移动文件将会覆盖已存在的目标文件。但是如果我们移动错了文件而目标文件已经被新的文件覆盖了,这时应该怎么办才好呢?有没有一种方法可以恢复之前的文件呢?答案是肯定的。我们可以用-b选项。该选项会在新文件覆盖旧文件时将旧文件做备份。
$ mv-bv *.txt /home/pungki/office

移动的文件以波浪符号(~)结尾

当你希望无论如何都覆盖已经存在的文件或目录时,你可以使用 -f 选项。如果同时指定了 -f 选项和 -i 或 -n 选项,则 -f 选项会覆盖它们——即不进行任何提示而覆盖,所以,在使用此参数时,知道你在做什么。
$ mv-f *.txt /home/pungki/office

L(建立软连接 就是建立Windows上的快捷方式一样)

ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目标文件。 例如:ln –s /bin/less /usr/local/bin/less
-s 是代号(symbolic)的意思。

软链接:
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接
硬链接:
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建

-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
实例1:给文件创建软链接
[root@localhost test]# ll
-rw-r–r– 1 root bin 61 11-13 06:03 log2013.log
[root@localhost test]# ln -s log2013.log link2013
[root@localhost test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r–r– 1 root bin 61 11-13 06:03 log2013.log
说明:
为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效

实例2:给文件创建硬链接
命令:
ln log2013.log ln2013
输出:
[root@localhost test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r–r– 1 root bin 61 11-13 06:03 log2013.log
[root@localhost test]# ln log2013.log ln2013
[root@localhost test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r–r– 2 root bin 61 11-13 06:03 ln2013
-rw-r–r– 2 root bin 61 11-13 06:03 log2013.log
说明:
为log2013.log创建硬链接ln2013,log2013.log与ln2013的各项属性相同

[root@localhost test5]# ln -sv /opt/soft/test/test3 /opt/soft/test/test5
创建指向“/opt/soft/test/test3”的符号链接“/opt/soft/test/test5/test3”
说明:
1.目录只能创建软链接
2.目录创建链接必须用绝对路径,相对路径创建会不成功,会提示:符号连接的层数过多 这样的错误
3.在链接目标目录中修改文件都会在源文件目录中同步变化

其他关于目录的命令
通过man mv 或者 mv –help显示mv的手册页
ls -lrt l表示显示详细列表,-t表示按时间排序,-r反向排序
pwd显示当前路径;
du 统计文件大小相加
df 统计数据块使用情况
统计总数大小
du -sh xmldb/
du -sm * | sort -n //统计当前目录大小 并安大小 排序
du -sk * | sort -n
du -sk * | grep guojf //看一个人的大小
du -m | cut -d “/” -f 2 //看第二个/ 字符前的文字
查看此文件夹有多少文件 ///* 有多少文件
du xmldb/
du xmldb///* |wc -l
40752
解释:
wc [-lmw]
参数说明:
-l :多少行
-m:多少字符
-w:多少字

关于文件的命令

C (新建文件)
linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件。
vim 老婆.txt 这样就建立好了
echo “我爱你老婆”> 老婆.txt 这样也可以吧内容写进去
touch 老婆是笨蛋.txt 也可以建立好 但是没有直接打开编辑窗口哦

R (移动 + 重命名)
这里是重命名文件哦

假定我们当前所在目录为/home/pungki/Documents,而我们想将file_1.txt重命名为file_2.txt。
mvfile1.txtfile2.txt mv /home/pungki/Documents/file_1.txt /home/pungki/Documents/file_2.txt

1.移动文件

移动文件时需要注意的是文件的源地址和目标地址必须不同
想要将file_1.txt文件从当前目录移动到其它目录,以/home/pungki/为例
$ mv file_1.txt /home/pungki/office
移动 file_1.txt 文件时,先前目录的 file_1.txt 就被删除了
2.移动多个文件

如果想一次移动多个文件,我们可以将他们放在一行并用空格分开。
$ mv file_2.txt file_3.txt file_4.txt /home/pungki/office

移除所有以.txt为扩展名的文件,我们可以用下面的命令
$ mv *.txt /home/pungki/office

查看文件内容
cat 查看文件内容实例;
[root@localhost ~]# cat /etc/profile 注:查看/etc/目录下的profile文件内容;
[root@localhost ~]# cat -b /etc/fstab 注:查看/etc/目录下的profile内容,并且对非空白行进行编号,行号从1开始;
[root@localhost ~]# cat -n /etc/profile 注:对/etc目录中的profile的所有的行(包括空白行)进行编号输出显示;
[root@localhost ~]# cat -E /etc/profile 注:查看/etc/下的profile内容,并且在每行的结尾处附加$符号;

more 的参数应用举例;
[root@localhost ~]# more -dc /etc/profile 注:显示提示,并从终端或控制台顶部显示;
[root@localhost ~]# more +4 /etc/profile 注:从profile的第4行开始显示;
[root@localhost ~]# more -4 /etc/profile 注:每屏显示4行;
[root@localhost ~]# more +/MAIL /etc/profile 注:从profile中的第一个MAIL单词的前两行开始显示;
Enter 向下n行,需要定义,默认为1行;
Ctrl+f 向下滚动一屏;
空格键 向下滚动一屏;Ctrl+b 返回上一屏;
= 输出当前行的行号;
:f 输出文件名和当前行的行号;

less的动作命令
q,这个能让less终止查看文件退出
回车键 向下移动一行;
y 向上移动一行;
空格键 向下滚动一屏;
b 向上滚动一屏;
d 向下滚动半屏;
h less的帮助;
u 向上洋动半屏;
w 可以指定显示哪行开始显示,是从指定数字的下一行显示;比如指定的是6,那就从第7行显示;
g 跳到第一行;
G 跳到最后一行;
p n% 跳到n%,比如 10%,也就是说比整个文件内容的10%处开始显示;
/pattern 搜索pattern ,比如 /MAIL表示在文件中搜索MAIL单词;
?pattern 搜索pattern ,比如 /MAIL表示在文件中搜索MAIL单词;
v 调用vi编辑器;直接跳到编辑页面 然后你就可以编辑了

head -n 行数值 文件名;
比如我们显示/etc/profile的前10行内容,应该是:
[root@localhost ~]# head -n 10 /etc/profile

tail 工具,显示文件内容的最后几行;
tail 是显示一个文件的内容的前多少行;
用法比较简单;
tail -n 行数值 文件名;
比如我们显示/etc/profile的最后5行内容,应该是:
[root@localhost ~]# tail -n 5 /etc/profile

还有一个就是tail -f 文件名 这样就会一直监听这个文件 退出Ctrl+c 看日志的时候回经常用
-f 该参数用于监视File文件增长。
-c Number 从 Number 字节位置读取指定文件
-n Number 从 Number 行位置读取指定文件。
-m Number 从 Number 多字节字符位置读取指定文件,比方你的文件假设包括中文字,假设指定-c参数,可能导致截断,但使用-m则会避免该问题。
-b Number 从 Number 表示的512字节块位置读取指定文件。
-k Number 从 Number 表示的1KB块位置读取指定文件。

tail -f filename
说明:监视filename文件的尾部内容(默认10行,相当于增加参数 -n 10),刷新显示在屏幕上。退出,按下CTRL+C。

tail -f filename
说明:监视filename文件的尾部内容(默认10行,相当于增加参数 -n 10),刷新显示在屏幕上。退出,按下CTRL+C。

tail -r -n 10 filename
说明:逆序显示filename最后10行。

这样要主要看看
平常都是使用ssh来进行远程操作和传输文件 , 这个工具可以很方便的实现我们所需要的功能,一直使用正常,没遇到什么问题,今天因为需要传一个412M的文件 , 无论如何也传不过来, 一直系统报错。无奈之下GOOGLE了一下,发现可以使用split命令来切割文件,以方便进行文件传输。
[root@localhost database]# ls -lh gkdb.db
-r–r–r– 1 root root 411M Jul 23 17:20 gkdb.db
将将这个276M文件分割成20M的小文件,文件分割操作如下:
[root@localhost database]# split -b 20m gkdb.db gkdb_pack_
split 是命今。
-B 20M 是指将每个分卷文件最大20M 。
gkdb.db 需要分割的文件。
gkdb_pack_ 是指分割后的文件开头, 分割后后的文件名一般为 gkdb_pack_aa、gkdb_pack_ab、gkdb_pack_ac依次类推。
显示分割后的文件名及大小
[root@localhost database]# ll -lh gkdb_pack_a*
-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_aa
-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_ab
-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_ac
-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_ad
-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_ae
-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_af
-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_ag
-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_ah
-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_ai
-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_aj
-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_ak
-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_al
-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_am
-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_an
-rw-r–r– 1 root root 20M Jul 27 16:09 gkdb_pack_ao
-rw-r–r– 1 root root 20M Jul 27 16:10 gkdb_pack_ap
-rw-r–r– 1 root root 20M Jul 27 16:10 gkdb_pack_aq
-rw-r–r– 1 root root 20M Jul 27 16:10 gkdb_pack_ar
-rw-r–r– 1 root root 20M Jul 27 16:10 gkdb_pack_as
-rw-r–r– 1 root root 20M Jul 27 16:10 gkdb_pack_at
-rw-r–r– 1 root root 11M Jul 27 16:10 gkdb_pack_au
最下面的那个文件是剩余的文件。 20*20+11=411MB
合并文件
[root@localhost database]# cat gkdb_pack_*>gkdb.tar.gz

组装前和组装后的MD5值都是一样的,不信的话可以使用md5sum命令来检测一下。

如果要分割的是一个文本文件,比如有好几千行,当然每行的字符数是不等的,想要以行数为分割,比如每100行生成1个文件,只需要 -l 参数,如下:
[root@pps public_rw]# split -l 100 test.txt

其实,如果不加任何参数,默认情况下是以1000行大小来分割的。

你可能感兴趣的:(linux)