mkdir/touch/rmdir 创建目录/文件

touch 创建文件
创建文件1.html:touch 1.html
新建a1...a9名的txt文件:touch a{0..9}.txt

mkdir 功能表述:创建新目录
         -p 递归创建
         -v 显示详细信息
mkdir www.cloudduo.cn
mkdir -p /www/web/www.cloudduo.cn/wwwroot
mkdir aa 或则 mkdir aa bb

rmdir [-p] dirName 仅支持删除空目录
参数:
-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。
-v 查看删除过程。
实例
将工作目录下,名为 AAA 的子目录删除 :
rmdir AAA
在工作目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删除后,BBB 目录成为空目录,则 BBB 亦予删除。
rmdir -p BBB/Test

du命令

常用参数:
-a:显示目录中所有文件大小,还显示其下目录和文件占用磁盘空间的大小
-s:显示目录占用磁盘空间大小,不显示其下子目录和文件占用的磁盘空间大小
-c:显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和
-k:以KB为单位显示文件大小
-m:以MB为单位显示文件大小
-h:以易读方式显示文件大小
-d:显示目录层级数
输出当前目录下各个子目录所使用的空间
命令:
du -h  --max-depth=1

cat 显示文件内容、也可以重定向给文件

命令格式
cat [选项] [文件]...

命令参数
-n 或 --number 对输出的所有行编号,由1开始对所有输出的行数编号
-b 或 --number-nonblank  和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank  当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
-A 可以显示所有符号

cat主要有三大功能:
一次显示整个文件:cat filename
从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
将几个文件合并为一个文件:cat file1 file2 > file
单行重定向、多行重定向(EOF)

cat > f1
cat > f1 <<EOF

tac 行反向显示

[root@iZcyriae88knxxZ wnana]# cat wnana.txt
8
9
10
[root@iZcyriae88knxxZ wnana]# tac wnana.txt

10
9
8

rec 将文件内容以字符为单位反序输出

rev命令 将文件中的每行内容以字符为单位反序输出,即第一个字符最后输出,最后一个字符最先输出,依次类推。

语法
rev(参数)
参数
文件:指定要反序显示内容的文件。

实例
[root@localhost ~]# cat iptables.bak
# Generated by iptables-save v1.3.5 on Thu Dec 26 21:25:15 2013
*filter
:INPUT DROP [48113:2690676]

[root@localhost ~]# rev iptables.bak 
3102 51:52:12 62 ceD uhT no 5.3.1v evas-selbatpi yb detareneG #
retlif*
]6760962:31184[ PORD TUPNI:

ln 软连接/硬链接

硬链接:假设在当前目录有文件名为linuxidc.jpg(大小为1M),现在为它创建硬链接linuxidc-h.jpg,那么当前目录就有了2个文件,这2个文件除了名字不一样其他的一模一样,但是占用的实际磁盘空间还是只有1M,改变任何一个文件的内容另一个文件也会跟着改变;当你只删除linuxidc.jpg或只删除linuxidc-h.jpg时,文件内容都还在磁盘,只有同时删除了这2个文件时才会真的彻底删除该1M的占用。

软链接:假设在当前目录有文件名为linuxidc.jpg(大小为1M),现在为它创建软链接linuxidc-s.jpg,那么当前目录就有了2个文件,linuxidc-s.jpg是一个全新的文件大小为7bytes(等于linuxidc.jpg名称占用的字节数),它指向linuxidc.jpg(学过C语言的指针理解起来会很快);改变任何一个文件的内容另一个文件也会跟着改变,删除linuxidc-s.jpg不影响linuxidc.jpg,但是删除了linuxidc.jpg那么tmp-s.jpg就会失效因为它找不到它指向的文件了 。
需要注意的是:  源文件的路径 是根据 软链接的路径来计算的,而不是根据当前路径来计算的

语法:ln [选项][文件]
选项:-s 对源文件创建软链接,ln默认没有-s的情况下创建的是硬链接
案例
1.对文件创建软链接
[root@ping ~]# ln -s /root/student.sql /root/db/ln.sql
[root@ping ~]# ls -lh db/ln.sql
lrwxrwxrwx 1 root root 17 2月  23 15:31 db/ln.sql -> /root/student.sql

2.对目录创建软链接
[root@ping ~]# ln -s db data
[root@ping ~]# ll -h data/
lrwxrwxrwx 1 root root 17 2月  23 15:31 ln.sql -> /root/student.sql
[root@ping ~]# ln student.sql db/

3.对文件创建硬链接
[root@ping ~]# ln student.sql db/
[root@ping ~]# ls -lh db/
lrwxrwxrwx 1 root root   17 2月  23 15:31 ln.sql -> /root/student.sql
-rw-r--r-- 2 root root 2.9K 2月  12 10:17 student.sql

软链接:不可以删除源文件,删除源文件导致链接文件找不到,出现文件红色闪烁  
硬链接:可以删除源文件,链接文件可以正常打开
软链接可以跨文件系统 ,硬链接不可以
软链接可以对一个不存在的文件名进行链接,而硬链接不允许
软链接可以对目录进行链接,而硬链接不可以

echo与重定向

1.echo 文字内容
echo会在终端中显示指定的文字,通常会和重定向联合使用。
也可以创建文本文件
例子:
在终端中显示Hello World!,重定向到a
echo Hello World! >a

2.重定向 > 和 >>
Linux允许将命令执行结果重定向到一个文件
将本应显示在终端上的内容输出/追加到指定文件中
其中
>表示输出,会覆盖文件原有的内容
>>表示追加,会将内容追加到已有的文件的末尾。

当命令的输出太多的时候,就可以用重定向把系统输出存在文件里,如;
tree >> test.txt 把树形图输出在test.txt文件里
more test.txt 以分屏的方式读

管道

“|”是管道命令操作符,简称管道符。利用Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推
实例
ps aux|grep nginx
ps aux|more
tar -cvf - /home | tar -xvf -

tee命令用于读取标准输入的数据,并将其内容输出成文件

-a或--append  附加到既有文件的后面,而非覆盖它.
-i或--ignore-interrupts  忽略中断信号。
--help  在线帮助。
--version  显示版本信息。
实例
ping baidu.com | tee ping-baidu.log
ping baidu.com | tee -a ping-baidu.log
ping baidu.com | tee ping.log ping-baidu.log
ping baidu.com | tee -i ping.log
uname -r | tee -a /data/ls.log | tr -d '[0-9]'

新建/删除- ~的文件名

新建带-的文件名,以-cloudduo、-clouduo01、-cloudduo02为例
[root@iZcyriae88knxxZ cloudduo]# touch -cloudduo
touch: invalid option -- 'l'
Try 'touch --help' for more information.
[root@iZcyriae88knxxZ cloudduo]# touch  --  -cloudduo
[root@iZcyriae88knxxZ cloudduo]# touch ./-cloudduo01
[root@iZcyriae88knxxZ cloudduo]# touch /root/cloudduo/-cloudduo02
[root@iZcyriae88knxxZ cloudduo]# ls
-cloudduo  -cloudduo01  -cloudduo02
删除带-的文件名,以-cloudduo、-clouduo01、-cloudduo02为例
[root@iZcyriae88knxxZ cloudduo]# rm -cloudduo
rm: invalid option -- 'c'
Try 'rm ./-cloudduo' to remove the file ‘-cloudduo’.
Try 'rm --help' for more information.
[root@iZcyriae88knxxZ cloudduo]# rm -f -- -cloudduo
[root@iZcyriae88knxxZ cloudduo]# rm -f ./-cloudduo01
[root@iZcyriae88knxxZ cloudduo]# rm -f /root/cloudduo/-cloudduo02
[root@iZcyriae88knxxZ cloudduo]# ls
[root@iZcyriae88knxxZ cloudduo]# touch '~cloudduo'
[root@iZcyriae88knxxZ cloudduo]# touch ./~cloudduo01
[root@iZcyriae88knxxZ cloudduo]# touch /root/cloudduo/~cloudduo02

wegt 下载

下载单个文件
wget http://www.baidu.com/index.html
使用wget -O下载并以不同的文件名保存
wget -O 1.txt http://www.baidu.com/index.html
使用wget –limit -rate限速下载
wget –limit-rate=300k http://www.baidu.com/index.html
使用wget -c断点续传,重新启动下载中断的文件
需要继续中断的下载时可以使用-c参数
wget -c http://www.baidu.com/index.html
使用wget -b后台下载
对于下载非常大的文件的时候,我们可以使用参数-b进行后台下载
wget -b http://www.baidu.com/index.html
你可以使用以下命令来察看下载进度
tail -f wget-log

?/*文件通配符

*  #匹配任意字符
?  #匹配任意单个字符
~  #当前用户家目录
~user  #用户user的家目录
~+  #当前工作目录
~-  #前一个工作目录
[0-9]  #匹配的数字范围
[a-z]  #匹配小写字母
[A-Z]  #匹配大写字母
[hello]  #匹配中括号中的任意的一个字符
[^hello]  #匹配除中括号里的字符以外的任意字符
[:digit]  #任意数字,相当于[0-9]
[:lower:]  #任意小写字母
[:upper:]  #任意大写字母
[:alpha:]  #任意数字或字母
[:blank:]  #水平或垂直空白字符
[:space:]  #水平或垂直空白字符
[:punct:]  #标点字符
[:print:]  #可打印字符
[:cntrl:]  #控制(非打印)字符
[:graph:]  #图形字符
[:xdigit:]  #十六进制字符

vi/vim基本操作

打开/新建文件:vim 文件名
开启编辑:a或则i或则o
退出编辑:ecs
退出vi:q	
强制退出无法退出的vi:q!	
保存并退出:wq
x        删除当前光标下的字符。(非编辑状态,无需按其他组合键)
dw       删除光标之后的单词剩余部分。(非编辑状态,无需按其他组合键)
d$       删除光标之后的该行剩余部分。(非编辑状态,无需按其他组合键)
dd       删除当前行。
显示行数  :set number 或者 :set nu
取消行数  :set nonumber 或者 :set nonu

mv 移动

常用选项
-i:若目标文件已经存在时,在覆盖时会先询问操作的进行
-f:强制
-b:如果目标文件存在,会进行备份

将文件 aaa 更名为 bbb :
mv aaa bbb
将info目录放入logs目录中。注意,如果logs目录不存在,则该命令将info改名为logs。
mv info/ logs
再如将/usr/student下的所有文件和目录移到当前目录下,命令行为:
mv /usr/student/*  . 

rename 命令批量修改文件名

一般都是用mv,但是mv只能修改一个文件名,批量修改的话还得写脚本来实现
rename命令就可以了,可以使用通配符

[root@iZ251q18ty4Z test]# touch a.test.com b.test.com c.test.com
[root@iZ251q18ty4Z test]# ls
a.test.com  b.test.com  c.test.com
[root@iZ251q18ty4Z test]# rename test tt a.test.com 
[root@iZ251q18ty4Z test]# ls
a.tt.com  b.test.com  c.test.com
[root@iZ251q18ty4Z test]# rename test tt *test*
[root@iZ251q18ty4Z test]# ls
a.tt.com  b.tt.com  c.tt.com
[root@iZ251q18ty4Z test]# rename tt test *tt*
a.test.com  b.test.com  c.test.com

-的文件名新建、删除方法

touche -- -a
新建使用绝对路径和相对路径新建
touch /root/-a
touche ./-a
删除使用绝对路径和相对路径删除
rm /root/-a
rm ./-a

cp 文件复制

语法: cp -rp [原本的文件或目录] [目标目录]
-a:   (相当于 -pdr)将文件的特性一起复制,保留所有属性,备份使用这个
-n:   不覆盖,存在的话直接退出
-p:   连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份
-i:   若目标文件已经存在时,在覆盖时会先询问操作的进行
-r:   递归持续复制,用于目录的复制行为
-v:显示过程
-b:如果目标文件存在,会进行备份
-u :目标文件与源文件有差异时才会复制
例子:
多个文件进行复制的话,目标需要是目录
可同时复制多个文件或则目录
拷贝文件:cp 1.html  /www/1.html  
拷贝重命名 :cp -p 1.html  /www/2.html
备份文件:cp -p config.php config.bak
复制目录movie为cloudduo的子目录(如果cloudduo不存在新建目录cloudduo):cp -r /root/movie/ /tmp/cloudduo
alias backtc='cp -av /etc/ /data/backup'date+%F''
cp -arp /mnt/www/* /mnt/shujupan/

cd 切换工作目录

表示进入根目录:cd /
表示刚才的工作目:cd - 
表示用户的家目录:~
表示回到用户家目录:cd
显示绝对路径(不然可能存在是软连接的):cd -P
显示根目录:/ 
表示上一级目录:cd ..
查看工作目录::pwd
`du -h --max-depth=1` 查看目录大小

tree工具命令

功能说明:以树状图列出目录的内容,让你一目了然
补充说明:执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件。

一般linux系统不会自带tree工具,要手动安装:yum -y install tree
(1)tree  -a 显示所有文件和目录(不加-a,则隐藏目录不显示)
(2)tree -d 显示目录名称而非内容
(3)tree -f 在每个文件或目录之前,显示完整的相对路径名称
(4)tree -r 以相反次序排列
(5)tree -t 用文件和目录的更改时间排序
(6)tree -L n 只显示 n 层目录 (n 为数字)
(7)tree -dirsfirst 目录显示在前,文件显示在后

pwd 显示目录

pwd 显示当前目录(等同于pwd _l)
pwd -P 显示物理路径

linux 绝对路径、相对路径

绝对路径必须以一个正斜线(/),也就是根目录开始,到查找对象(目录或文件)所必须经过的每个目录的名字,它是文件位置的完整路标,因此,在任何情况下都可以使用绝对路径找到所需的文件。例如:

[root@iZcyriae88knxxZ ~]# cd /etc/init.d  
[root@iZcyriae88knxxZ ~]# cd /usr/local/src

相对路径(使用很多),就不是以正斜线开始,它是从当前所在目录开始,到查找对象(目录或文件)所必须经过的每一个目录的名字。例如:

[root@iZcyriae88knxxZ ~]# cd etc
[root@iZcyriae88knxxZ ~]# cd ../wwwlogs

ls list 列表显示当前目录内容

更加人性化显示文件,可显示文件大小:ls -lh 
显示全部文件: ls -all  (短格式:ls -a)
列表显示文件详细信息: ls -l
列表显示文件(显示更加人性化):ls -l -h
递归显示子目录:ls -R
显示一列显示:ls -1
显示按大小排序:ls -S   (常用:ls -Slh)
按修改时间排序的:ls -t
显示目录本身的属性:ls -ld
显示/www全部文件:ls /www/web/www.cloudduo.cn/www
显示/www文件:ls ld /www/web/www.cloudduo.cn/www
列子:
[root@iZcyriae88knxxZ cloudduo]# cp /root/cloudduo/ao.txt /root/cloudduo/ao.txt.bak
[root@iZcyriae88knxxZ cloudduo]# ls -l /root/cloudduo/a0.txt /cloudduo/a0.txt.bak
-rw-r--r-- 1 root root 0 May 11 15:28 /cloudduo/a0.txt.bak
-rw-r--r-- 1 root root 0 May 11 15:04 /root/cloudduo/a0.txt

rm 删除文件/目录(高危命令)

常用选项:
-i:交互式,询问你是否要删除
-f:强制删除
-r:递归删除,用于文件夹删除

windows 情况下在用的文件是无法删除或则备份,linux没有这个限制
第一、删除文件和文件夹
格式:rm file
删除文件file,系统会先询问是否删除。
格式:rm -f file
强行删除file,系统不再提示。
格式:rm -r dir
删除目录file,系统会先询问是否删除。
格式:rm -rf dir
强行删除目录dir下的所有文件、子目录下的所有文件和目录、删除dir本身。

第二、删除指定文件除外的其他文件
rm -rf !(保留文件)
这里括号中是填写我们需要保留的文件。
 rm -rf !(保留文件1| 保留文件2)
如果是多个文件需要保留可以这样用 | 隔开。

重定向输出日志

重定向类型
0:标准输入。
1:标准输出。
2:错误信息输出。
2>&1:将错误信息重定向到标准输出。

重定向格式
1,./spark-submit.sh 2>spark.log,将./spark-submit.sh执行的错误信息输出重定向到当前目录的spark.log日志文件中。
2,./spark-submit.sh >spark.log 2>&1,将./spark-submit.sh执行的标准输出和错误信息重定向到当前目录的spark.log日志文件中。
3,如果想标准输出和错误信息都不显示,可以重定向到/dev/null中。