目录

一、基础命令

cp :复制文件和文件夹的命令

1.复制单个文件

1.1复制粘贴重命名一步到位

2.复制多个文件

3.复制单个文件夹(-r选项)

4.复制多个文件夹或者文件

5.复制如何直接覆盖,不给予提醒

为什么使用绝对路径就可以绕过别名?

du:统计目录及文件的空间占用情况

du -sh:统计文件的总大小,并以人类看得懂的格式显示

mv:移动或者重命名文件或文件夹

1.当后面接的文件存在就是移动

2.当后面接的文件不存在就是重命名

$1 是位置变量 第1个位置变量

PATH变量: 定义了linux存放命令的目录

自己编写回收站功能的脚本 mv_back.sh

1)临时存放文件功能

1.编写脚本mv_back.sh

2.授予可执行权限

3.将脚本复制到PATH变量对应的某一个文件夹

4.定义别名rm等于mv_back.sh

5.直接使用

2)记录当时文件的路径,方便恢复

重定向

cat :查看文件里的内容

head :默认查看文件的前10行

tail:默认查看文件的尾10行

more命令

less命令

sed 可以实现查找功能



一、基础命令

cp :复制文件和文件夹的命令

(复制后,自动粘贴)

查看cp命令的用法

[root@lb1 china3]# cp  --help   查看cp的使用方法
[root@lb1 china3]# man  cp   查看cp命令的手册
1.复制单个文件

文件存放到文件夹(目录)
可用相对路径,也可用绝对路径

[root@lb1 china3]# ls
boot  hosts  hunan  liyili.txt  passwd
[root@lb1 china3]# cp  liyili.txt  hunan  #相对路径
[root@lb1 china3]# ls hunan
liyili.txt

[root@lb1 china3]# cp  /etc/passwd  /china3/hunan/  #绝对路径
[root@lb1 china3]# cp  /etc/hostname   .
# .代表当前目录
[root@lb1 china3]# ls
boot  hostname  hosts  hunan  liyili.txt  passwd
1.1复制粘贴重命名一步到位

如果复制的目的地文件或文件夹不存在的话,就是重命名

[root@lb1 china3]# cp liyili.txt hunan/lyl.txt  
#将当前目录下的liyili.txt复制到hunan文件夹里改名为lyl.txt,因为hunan文件夹里面本来没有lyl.txt,所以为重命名

[root@lb1 china3]# cp passwd  sc-pwd   #将passwd文件重命名为sc-pwd
[root@lb1 china3]# ls
boot  hostname  hosts  hunan  liyili.txt  passwd  sc-pwd
[root@lb1 china3]# cp  hosts  sc-hosts

[root@lb1 china3]# mkdir  /china4
[root@lb1 china3]# cd  /china4
[root@lb1 china4]# pwd
/china4
[root@lb1 china4]# ls
[root@lb1 china4]# cp  /etc/ssh/sshd_config   .
[root@lb1 china4]# ls
sshd_config
[root@lb1 china4]# cp /etc/hostname   sc-name
[root@lb1 china4]# ls
sc-name  sshd_config
2.复制多个文件

前面的都是源文件,最后一个为目的地

[root@lb1 china4]# cp dengchao1.txt  dengchao2.txt dengchao3.txt  deng
#将文件dengchao1.txt dengchao2.txt dengchao3.txt复制到deng文件夹
[root@lb1 china4]# cp dengchao{1..9}.txt  deng
[root@lb1 china4]# cp dengchao?.txt  deng
[root@lb1 china4]# cp dengchao*.txt dengchao
3.复制单个文件夹(-r选项)
[root@lb1 china4]# man cp
-R, -r, --recursive 递归复制--》每一层子文件夹里的都复制 --》祖祖辈辈
              copy directories recursively

[root@lb1 china4]# cp  dengchao  yueyang
cp: 略过目录"dengchao"    #报错
[root@lb1 china4]# cp -r  dengchao  yueyang 
[root@lb1 china4]# cp  dengchao  yueyang/dc -r  #复制粘贴重命名
4.复制多个文件夹或者文件
[root@lb1 china4]# cp deng  dengchao yueyang/  sc-name   hunan  -r
#前面为多个源文件和文件夹,最后的为目的地
[root@lb1 china4]# cp dengchao/*  hubei -r 
#复制dengchao文件夹里的所有的文件或者文件夹 到hubei目录下,但是不复制dengchao文件夹
5.复制如何直接覆盖,不给予提醒
[root@lb1 jindafu]# man cp
-i, --interactive #交互式--》一问一答
   prompt before overwrite  (overrides  a  previous  -n option)
              
[root@lb1 jindafu]# alias  #系统里已经定义了别名 cp='cp -i'
alias cp='cp -i'
[root@lb1 jindafu]# cp /etc/passwd .
cp:是否覆盖"./passwd"? y
[root@lb1 jindafu]# 
#不想看到交互式的提醒,本质上就是不使用 -i 选项

方法1.取消别名

[root@lb1 jindafu]# unalias cp
[root@lb1 jindafu]# cp  /etc/passwd .
[root@lb1 jindafu]# cp  /etc/passwd .
[root@lb1 jindafu]# cp  /etc/passwd .

方法2.使用cp命令的绝对路径 --》推荐

[root@lb1 jindafu]# which cp
/usr/bin/cp
[root@lb1 wuxia]# /usr/bin/cp /etc/passwd  .

[root@lb1 jindafu]# alias cp='cp -i'
[root@lb1 jindafu]# which cp
alias cp='cp -i'
	/usr/bin/cp
为什么使用绝对路径就可以绕过别名?

因为shell解释器在进行命令的解析的过程中绕过别名,因为我们没有使用别名,不进行别名的解析

linux里不要被后缀名迷惑了,可以使用file命令查看文件的类型

​ empty 空文件

​ directory 目录=文件夹

​ symbolic link 符号链接=快捷方式

[root@localhost lianxi]# touch weihong.txt 
[root@localhost lianxi]# file  weihong.txt 
weihong.txt: empty

[root@localhost lianxi]# touch weihong.jpg
[root@localhost lianxi]# file weihong.jpg 
weihong.jpg: empty

[root@localhost lianxi]# touch weihong.mp3
[root@localhost lianxi]# file weihong.mp3
weihong.mp3: empty

[root@localhost lianxi]# touch weihong.mp4
[root@localhost lianxi]# file weihong.mp4
weihong.mp4: empty
[root@lb1 wuxia]# file taishan  
taishan: directory   #目录(文件夹)
[root@lb1 wuxia]# file /etc/passwd
/etc/passwd: ASCII text
du:统计目录及文件的空间占用情况
du -sh:统计文件的总大小,并以人类看得懂的格式显示
  du - estimate file space usage
  Summarize disk usage of each FILE, recursively for directories.

-h, --human-readable
              print sizes in human readable format (e.g., 1K 234M 2G)
-s, --summarize
              display only a total for each argument

[root@lb1 /]# du -sh /usr
1.5G	/usr
mv:移动或者重命名文件或文件夹
1.当后面接的文件存在就是移动

可移动单个文件,也移动多个文件

[root@lb1 china5]# mkdir  hunan  hubei
[root@lb1 china5]# ls
hubei  hunan
[root@lb1 china5]# touch  shenjiemi  lijunlin
[root@lb1 china5]# ls
hubei  hunan  lijunlin  shenjiemi

[root@lb1 china5]# mv shenjiemi hunan
#shenjiemi为源文件 hunan为目的地
[root@lb1 china5]# mv lijunlin wang*.txt hunan
2.当后面接的文件不存在就是重命名
[root@lb1 china5]# touch  liyongqian
[root@lb1 china5]# ls
hubei  liyongqian   beijing
[root@lb1 china5]# mv  liyongqian   liwenqian 
#将liyongqian重命名为liwenqian
[root@lb1 china5]# mv   hubei  e  
#将hubei重命名为e
[root@lb1 china5]# mv   e   liwenqian   beijing
#将e liwenqian 移动到beijing
$1 是位置变量 第1个位置变量

–》作用:就是往脚本里传递参数

[root@lb1 china5]# vim  post_var.sh
[root@lb1 china5]# cat post_var.sh 
#!/bin/bash

echo  "第1个位置变量是 $1"
echo  "第2个位置变量是 $2"
echo  "第3个位置变量是 $3"

[root@lb1 china5]# bash post_var.sh  siyuxiang xiaowei yaolifan  
#执行脚本往里面传递3个参数
第1个位置变量是 siyuxiang
第2个位置变量是 xiaowei
第3个位置变量是 yaolifan  
PATH变量: 定义了linux存放命令的目录

linux里输入的命令到哪里去查找了?
==》PATH变量: 定义了linux里哪些地方(目录)存放命令的

[root@lb1 ~]# echo  $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/sclilin99/sbin:/root/bin
[root@lb1 ~]# which  mkdir
/usr/bin/mkdir

[root@lb1 ~]# env  使用env查看PATH变量的定义
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/sclilin99/sbin:/root/bin

[root@lb1 ~]# cd /china5
[root@lb1 china5]# ls
mv_back.sh  post_var.sh
[root@lb1 china5]# cp  mv_back.sh /usr/bin/  
#复制mv_back.sh到PATH变量的目录下,让mv_back.sh在任意路径下都能直接使用
/usr  --》存放linux下的安装了的程序的目录---》c:\program files 
unix  system  resource  --》linux 山寨的unix --》linux is very like  unix

bin  -->binary 二进制   
linux系统里的绝大多数的命令,都是使用c语言编写--》编译二进制文件
/usr/bin 目录存放了我们很多的基本的linux命令
自己编写回收站功能的脚本 mv_back.sh
1)临时存放文件功能
1.编写脚本mv_back.sh
[root@lb1 china5]# vim  mv_back.sh
#!/bin/bash

#新建回收站目录
mkdir  -p  /backup
#剪切功能
mv   $1  /backup
2.授予可执行权限
chmod +x mv_back.sh 
3.将脚本复制到PATH变量对应的某一个文件夹
cp  mv_back.sh  /usr/bin
4.定义别名rm等于mv_back.sh
alias  rm='mv_back.sh'
5.直接使用
rm   /china2
2)记录当时文件的路径,方便恢复

–》记录当时的文件的路径到一个文件里,在恢复的时候查询使用

重定向

输出重定向 > : 将在屏幕上的输出写到文件里 --》改变了内容的输出方向,将本来往屏幕输出的内容,重新改变方向写到文件里
如果后面接的文件不存在会帮助新建,如果存在就会覆盖原来的内容

追加输出重定向 >> : 将在屏幕上的输出写到文件里
如果后面接的文件不存在会帮助新建,如果存在就不会覆盖原来的内容,只是在文件的末尾追加内容

清空文件内容: >sc.txt

[root@lb1 china5]# echo 123456
123456
[root@lb1 china5]# echo 123456  >sc.txt
[root@lb1 china5]# ls
mv_back.sh  post_var.sh  sc.txt
[root@lb1 china5]# echo hunan changsha >sc.txt
[root@lb1 china5]# cat sc.txt 
hunan changsha
[root@lb1 china5]# echo hunan changsha >>sc.txt
[root@lb1 china5]# echo 123456 >>sc.txt
[root@lb1 china5]# cat sc.txt 
hunan changsha
hunan changsha
123456

[root@lb1 china5]# >sc.txt   #清空文件sc.txt里的内容,不删除文件

[root@lb1 china5]# cat mv_back.sh  更新脚本增加记录删除文件的路径的功能
#!/bin/bash

#新建回收站目录
mkdir  -p  /backup
#剪切功能
mv   $1  /backup
#保存位置变量--》文件或者文件夹的路径
echo $1 >>/backup/filepath.txt

[root@lb1 china5]# cp mv_back.sh /usr/bin/  复制新的脚本到/usr/bin目录下
cp:是否覆盖"/usr/bin/mv_back.sh"? y

[root@lb1 backup]# cat filepath.txt |grep yunnan    #查找包含yunnan的行
/china5/yunnan/
cat :查看文件里的内容
[root@lb1 china5]# man cat
cat - concatenate files and print on the standard output
       1.concatenate 拼接多个文件
       2.输出文件里的内容到屏幕
	standard output  标准输出  输出到屏幕
	standard input  标准输入  从键盘输入

   -n, --number
          number all output lines
[root@lb1 china5]# cat -n yangyongjie.txt 
     1	yangyongjie
     2	yiyang
     3	pangge
     4	

[root@lb1 china5]# cat sc.txt  yangyongjie.txt  mv_back.sh  >3.txt 
#将多个文件的内容按照顺序读取(拼接)输出到屏幕 ,然后使用重定向保存到文件3.txt里
[root@lb1 china5]# cat 3.txt 
xiaowei
yangyongjie
yiyang
pangge

#!/bin/bash

#新建回收站目录
mkdir  -p  /backup
#剪切功能
mv   $1  /backup
#保存位置变量--》文件或者文件夹的路径
echo $1 >>/backup/filepath.txt

#nl  给输出的内容编号
#nl - number lines of files
#nl = cat -n

[root@lb1 china5]# nl yangyongjie.txt 
     1	yangyongjie
     2	yiyang
     3	pangge
       

脚本练习:编写一个脚本bigfile.sh 往文件sc.txt里写入10000行内容,具体内容下:
i am learning linux in sanchuang sc1
i am learning linux in sanchuang sc2
i am learning linux in sanchuang sc3

i am learning linux in sanchuang sc10000
需求分析:

for
变量的定义和使用

[root@lb1 china5]# vim  bigfile.sh
[root@lb1 china5]# cat bigfile.sh 
#!/bin/bash

for i  in  {1..10000}
do
	echo "I am learning linux in sanchuang sc$i"  >>/china5/sc.txt
done
[root@lb1 china5]# bash  bigfile.sh #执行脚本
[root@lb1 china5]# cat   /china5/sc.txt  #查看创建的文件

# 改进版
[root@lb1 china5]# cat bigfile.sh 
#!/bin/bash

mkdir -p /china99

/china99/sc99.txt

for i  in  {1..10000}
do
	echo "I am learning linux in sanchuang sc$i"  >>/china99/sc99.txt
done

[root@lb1 china5]# bash bigfile.sh 
[root@lb1 china5]# cd /china99
[root@lb1 china99]# ls
sc99.txt
[root@lb1 china99]# cat sc99.txt
[root@lb1 china99]# ls -lh
总用量 392K
-rw-r--r-- 1 root root 390K 3月  20 16:46 sc99.txt
[root@lb1 china99]# du -sh sc99.txt 
392K	sc99.txt
head :默认查看文件的前10行

-number

-n number

[root@lb1 china99]# head -n 5 sc99.txt 
I am learning linux in sanchuang sc1
I am learning linux in sanchuang sc2
I am learning linux in sanchuang sc3
I am learning linux in sanchuang sc4
I am learning linux in sanchuang sc5
[root@lb1 china99]# head -5 sc99.txt 
I am learning linux in sanchuang sc1
I am learning linux in sanchuang sc2
I am learning linux in sanchuang sc3
I am learning linux in sanchuang sc4
I am learning linux in sanchuang sc5
tail:默认查看文件的尾10行

-number

-n number

[root@lb1 china99]# tail -5 sc99.txt 
I am learning linux in sanchuang sc9996
I am learning linux in sanchuang sc9997
I am learning linux in sanchuang sc9998
I am learning linux in sanchuang sc9999
I am learning linux in sanchuang sc10000
[root@lb1 china99]# tail -n 5 sc99.txt 
I am learning linux in sanchuang sc9996
I am learning linux in sanchuang sc9997
I am learning linux in sanchuang sc9998
I am learning linux in sanchuang sc9999
I am learning linux in sanchuang sc10000

显示5~20行

[root@lb1 china99]# head -20 sc99.txt|tail -16

显示第8行

[root@lb1 china99]# head -8 sc99.txt|tail -1
I am learning linux in sanchuang sc8

显示第100行

[root@lb1 china99]# head -100 sc99.txt|tail -1
I am learning linux in sanchuang sc100
more命令

用途:全屏方式分页显示文件内容
交互操作方法:
按Enter键向下逐行滚动
按空格键向下翻一屏、按b键向上翻一屏 back
按q键退出 quit

会自动退出

less命令

用途:与more命令相同,但扩展功能更多
交互操作方法:
按Enter键向下逐行滚动
按空格键向下翻一屏、按b键向上翻一屏 back
按q键退出 quit
【page down】【page up】上翻下翻页\
不会自动退出

sed 可以实现查找功能

显示不连续的行

[root@lb1 china99]# sed  -n '1p;3p;6p;9p' sc99.txt 
I am learning linux in sanchuang sc1
I am learning linux in sanchuang sc3
I am learning linux in sanchuang sc6
I am learning linux in sanchuang sc9

-n 不符合要求的行,不显示
1p 打印第1行 print
; 命令连接符号,先执行前面的命令,然后再执行后面的命令 --》同时在sed里执行多条命令时候,需要接;

显示连续的行

[root@lb1 china99]# sed  -n '5,12p' sc99.txt 
I am learning linux in sanchuang sc5
I am learning linux in sanchuang sc6
I am learning linux in sanchuang sc7
I am learning linux in sanchuang sc8
I am learning linux in sanchuang sc9
I am learning linux in sanchuang sc10
I am learning linux in sanchuang sc11
I am learning linux in sanchuang sc12

Logo

更多推荐