一、cd 切换目录(Change directory)
(1)cd ~ 和 cd 返回用户目录
root@ubuntu:/etc/cs# cd ~
root@ubuntu:~#
root@ubuntu:/home# cd
root@ubuntu:~#
(2)cd . 停留在当前目录
root@ubuntu:/home# cd .
root@ubuntu:/home#
(3)cd . . 返回上一级目录
root@ubuntu:/home/ubuntu# cd ..
root@ubuntu:/home#
(4)cd . ./. . 返回上两级目录
root@ubuntu:/home/ubuntu/demo# cd ../..
root@ubuntu:/home#
(5)cd . ./目录A 先返回进入此目录之前所在的目录,然后再进入指定的目录A
root@ubuntu:/home/ubuntu# ls
2.txt cs demo '[-p]'
root@ubuntu:/home/ubuntu# cd cs
root@ubuntu:/home/ubuntu/cs# cd ../demo
root@ubuntu:/home/ubuntu/demo#
(6)cd - 返回进入此目录之前所在的目录
root@ubuntu:/home/ubuntu/cs# cd ../demo
root@ubuntu:/home/ubuntu/demo# cd -
/home/ubuntu/cs
root@ubuntu:/home/ubuntu/cs#
(7)cd 路径 进入指定目录
root@ubuntu:/home# cd ./ubuntu/cs
root@ubuntu:/home/ubuntu/cs#
(8)cd / 返回到根目录
root@ubuntu:/home/ubuntu/cs# cd /
root@ubuntu:/#
root@ubuntu:/etc/cs/ddd# cd /
root@ubuntu:/#
二、ls 列出目录下的文件(List files)
ls : 列出指定路径下的所有文件名、时间及读写权限(文件详细信息)
(1)ls -a :显示所有文件列表(含隐藏文件“.”和“…”)
root@ubuntu:/home/ubuntu# ls -a
. .bashrc '[-p]'
.. .cache .profile
2.txt cs .sudo_as_admin_successful
.bash_history demo .viminfo
.bash_logout .gnupg .Xauthority
(2)ls -A :显示除隐藏文件“.”和“…”以外的所有文件列表
root@ubuntu:/home/ubuntu# ls -A
2.txt .cache '[-p]' .Xauthority
.bash_history cs .profile
.bash_logout demo .sudo_as_admin_successful
.bashrc .gnupg .viminfo
(3)ls -l :以列表形式显示文件及文件夹的详细信息
(从左至右:文件类型、权限、数量、属主、属组、大小、修改/访问时间、文件名)
root@ubuntu:/home/ubuntu# ls -l
total 16
-rw-rw-r-- 1 ubuntu ubuntu 5 Jun 18 06:47 2.txt
drwxr-xr-x 2 root root 4096 Jun 18 11:04 cs
drwxrwxr-x 3 ubuntu ubuntu 4096 Jun 18 07:15 demo
drwxrwxr-x 2 ubuntu ubuntu 4096 Jun 18 06:41 '[-p]'
ll:ls -l的简写
root@ubuntu:/home/ubuntu# ll
total 56
drwxr-xr-x 7 ubuntu ubuntu 4096 Jun 18 11:04 ./
drwxr-xr-x 3 root root 4096 Jun 15 10:31 ../
-rw-rw-r-- 1 ubuntu ubuntu 5 Jun 18 06:47 2.txt
-rw------- 1 ubuntu ubuntu 1112 Jun 18 09:11 .bash_history
-rw-r--r-- 1 ubuntu ubuntu 220 Apr 4 2018 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3771 Apr 4 2018 .bashrc
drwx------ 2 ubuntu ubuntu 4096 Jun 15 10:32 .cache/
drwxr-xr-x 2 root root 4096 Jun 18 11:04 cs/
drwxrwxr-x 3 ubuntu ubuntu 4096 Jun 18 07:15 demo/
drwx------ 3 ubuntu ubuntu 4096 Jun 15 10:32 .gnupg/
drwxrwxr-x 2 ubuntu ubuntu 4096 Jun 18 06:41 '[-p]'/
-rw-r--r-- 1 ubuntu ubuntu 807 Apr 4 2018 .profile
-rw-r--r-- 1 ubuntu ubuntu 0 Jun 18 07:32 .sudo_as_admin_successful
-rw------- 1 ubuntu ubuntu 1363 Jun 18 07:29 .viminfo
-rw------- 1 ubuntu ubuntu 208 Jun 18 08:40 .Xauthority
root@ubuntu:/home/ubuntu#
三、mv:移动/重命名 文件或目录 (Move file)
(语法:mv 源文件 目标文件)
(1)目标文件不是目录,即重命名 ,如下是将app1文件夹内的a文件夹重命名 a1
(mv 原文件名 新文件名)
root@ubuntu:/home/ubuntu# ls
2.txt cs demo '[-p]'
root@ubuntu:/home/ubuntu# mv cs csl
root@ubuntu:/home/ubuntu# ls
2.txt csl demo '[-p]'
root@ubuntu:/home/ubuntu#
(2)目标文件是目录
a)单文件移动(mv 移动前文件 移动后文件路径)
root@ubuntu:/home/ubuntu/csl# ls
cs.txt
root@ubuntu:/home/ubuntu/csl# mv cs.txt ../demo
root@ubuntu:/home/ubuntu/csl# cd ../demo
root@ubuntu:/home/ubuntu/demo# ls
222.txt 3.txt cesi cs.txt
root@ubuntu:/home/ubuntu/demo#
b)多文件移动,使用 -t(含文件及文件夹)
root@ubuntu:/home/ubuntu/demo# ls
222.txt 3.txt cesi cs.txt
root@ubuntu:/home/ubuntu/demo# cd ../csl
root@ubuntu:/home/ubuntu/csl# ls
asd.txt
root@ubuntu:/home/ubuntu/csl# cd ..
root@ubuntu:/home/ubuntu# mv 2.txt demo/3.txt demo/cesi -t csl
root@ubuntu:/home/ubuntu# ls
csl demo '[-p]'
root@ubuntu:/home/ubuntu# cd csl
root@ubuntu:/home/ubuntu/csl# ls
2.txt 3.txt asd.txt cesi
root@ubuntu:/home/ubuntu/csl# cd ../demo
root@ubuntu:/home/ubuntu/demo# ls
222.txt cs.txt
root@ubuntu:/home/ubuntu/demo#
将文件cs.txt . ./csl/asd.txt 移动到csl文件夹下的cesi文件夹里
(文件夹后的/省去效果一样)
root@ubuntu:/home/ubuntu/demo# mv -t ../csl/cesi cs.txt ../csl/asd.txt
(3)将上级目录的文件 拷贝到当前目录 (mv …/文件名 ./)
提示:./ 和../ 都是相对地址,./ 是当前目录,../是上一级目录
root@ubuntu:/home/ubuntu/csl# ls
2.txt 3.txt cesi
root@ubuntu:/home/ubuntu/csl# cd cesi
root@ubuntu:/home/ubuntu/csl/cesi# ls
asd.txt cesi cesi.tar.gz cs.txt
root@ubuntu:/home/ubuntu/csl/cesi# mv ../2.txt ./
root@ubuntu:/home/ubuntu/csl/cesi# ls
2.txt asd.txt cesi cesi.tar.gz cs.txt
root@ubuntu:/home/ubuntu/csl/cesi# cd ..
root@ubuntu:/home/ubuntu/csl# ls
3.txt cesi
root@ubuntu:/home/ubuntu/csl#
四、mkdir:创建目录(Make directory )
(需注意相对路径和绝对路径)
(1)在目录名前没有加任何路径名,则在当前目录下创建
root@ubuntu:/home# ls
ubuntu
root@ubuntu:/home# mkdir zy
root@ubuntu:/home# ls
ubuntu zy
(2)创建多级目录及多文件夹,使用 -p(文件夹之间用空格隔开)
(若上层目录没找到,则会一并创建)
绝对路径 /home/aa/as
root@ubuntu:/home# mkdir -p /home/a1 b1 c1 d1
root@ubuntu:/home# ls
a1 b1 c1 d1 ubuntu zy
root@ubuntu:/home# mkdir -p /home/aa/as
root@ubuntu:/home# ls
a1 aa b1 c1 d1 ubuntu zy
root@ubuntu:/home# cd aa
root@ubuntu:/home/aa# ls
as
相对路径:
root@ubuntu:/home# mkdir zy/a2 zy/b2 zy/c2
root@ubuntu:/home# cd zy
root@ubuntu:/home/zy# ls
a2 b2 c2
(3)创建多目录下的单个文件,也可以使用 --parents
root@ubuntu:~# mkdir --parents /home/aa/s1
root@ubuntu:~# cd /home/aa
root@ubuntu:/home/aa# ls
as s1
(4)创建带权限的文件夹,使用 -m
a)目录已存在
root@ubuntu:/home# mkdir -m 700 aa/s2
root@ubuntu:/home# mkdir -m 700 ./aa/s3
(文件属主拥有读、写和执行权限,其他人无权访问)
b)目录不存在,则此时需要使用 -p -m
root@ubuntu:/home# mkdir -p -m 700 ./bb/s2
注意事项:
在创建目录时,应保证新建的目录与它所在目录下的文件没有重名
root@ubuntu:/home# mkdir c1
mkdir: cannot create directory ‘c1’: File exists (已有文件夹c1存在)
五、cat:显示文件的内容 (Concatenate)
(1)输出多个文件内容
root@ubuntu:/home/ubuntu/csl# cat 2.txt 3.txt
adbc /* 2.txt 的文件内容*/
demo /* 3.txt 的文件内容*/
root@ubuntu:/home/ubuntu/csl# cat 2.txt
adbc
root@ubuntu:/home/ubuntu/csl# cat 3.txt
demo
(2)将2个文件合并新文件
root@ubuntu:/home/ubuntu/csl# cat 2.txt 3.txt > 23.txt
root@ubuntu:/home/ubuntu/csl# ls
23.txt 2.txt 3.txt asd.txt cesi cs.txt
root@ubuntu:/home/ubuntu/csl# cat 23.txt
adbc
demo
注:若新文件有内容,则原数据会被清空,因此需要小心操作
(3)将file1.txt追加到file2.txt的末尾(>> 表示将文本流追加到另一个文件的末位)
cat file1.txt >> file2.txt
root@ubuntu:/home/ubuntu/csl# cat 2.txt >> 3.txt
root@ubuntu:/home/ubuntu/csl# cat 3.txt
demo
adbc
(4)文件夹不能合并
六、find:在指定目录下查找文件
find 目录 参数
(1)单文件匹配
root@ubuntu:~# find /home/ubuntu -name "*.txt"
/home/ubuntu/csl/asd.txt
/home/ubuntu/csl/23.txt
/home/ubuntu/csl/3.txt
/home/ubuntu/csl/2.txt
/home/ubuntu/csl/cs.txt
/home/ubuntu/demo/222.txt
(2)多文件匹配(目录下以.txt结尾的文件、含字母a的文件) : 使用 -o
root@ubuntu:~# find /home/ubuntu -name "*.txt" -o -name "*a*"
/home/ubuntu/csl/asd.txt
/home/ubuntu/csl/23.txt
/home/ubuntu/csl/cesi/cesi.tar.gz
/home/ubuntu/csl/3.txt
/home/ubuntu/csl/2.txt
/home/ubuntu/csl/cs.txt
/home/ubuntu/.gnupg/private-keys-v1.d
/home/ubuntu/.bashrc
/home/ubuntu/.bash_logout
/home/ubuntu/.Xauthority
/home/ubuntu/.bash_history
/home/ubuntu/.cache
/home/ubuntu/.cache/motd.legal-displayed
/home/ubuntu/demo/222.txt
/home/ubuntu/.sudo_as_admin_successful
(3)查找除XX外的: **使用 "!" or "-not" **
查找/home/ubuntu目录下 文件不含a的信息
root@ubuntu:~# find /home/ubuntu ! -name "*a*"
/home/ubuntu
/home/ubuntu/.profile
/home/ubuntu/csl
/home/ubuntu/csl/23.txt
/home/ubuntu/csl/cesi
/home/ubuntu/csl/3.txt
/home/ubuntu/csl/2.txt
/home/ubuntu/csl/cs.txt
/home/ubuntu/.gnupg
/home/ubuntu/.viminfo
/home/ubuntu/[-p]
/home/ubuntu/demo
/home/ubuntu/demo/222.txt
(4)查找文件,忽略大小写 :使用 -i
root@ubuntu:~# find /home/ubuntu -iname "*.txt"
(5)只查找某层目录下含XX的文件(夹):使用 mindepth 和 maxdepth
“-maxdepth 1” :限制只查找1层目录深度,查找home目录下,含u的文件及文件夹
root@ubuntu:~# find /home -maxdepth 1 -name "*u*"
/home/ubuntu
如下 “ /home/ubuntu ” 即为1层目录深度
root@ubuntu:~# find /home/ubuntu -maxdepth 1 -name "*t*"
/home/ubuntu
/home/ubuntu/.bash_logout
/home/ubuntu/.Xauthority
/home/ubuntu/.bash_history
查找当前目录 及其 1层深的子目录中,含test的文件及文件夹,即 maxdepth 2
[root@izwz94jtz9hbdq165vpxpxz ~]# find /app1 -maxdepth 2 -name "*test*"
/app1/www/test
/app1/test1.txt
/app1/zyptest
/app1/test
在第1层子目录和第2层子目录之间查找文件(第一层子目录就是2层目录)
[root@izwz94jtz9hbdq165vpxpxz ~]# find /app1 -mindepth 2 -maxdepth 3 -name "*test*"
/app1/www/a2/test
/app1/www/test
(6)查找空文件(-empty)
只列出当前目录下和第2层子目录的非隐藏空文件
root@ubuntu:~# find . -maxdepth 2 -empty -not -name ".*"
./.gnupg/private-keys-v1.d
./.cache/motd.legal-displayed
./.ssh/authorized_keys
(7)查找指定文件类型的文件 (-type)
查找指定目录下的所有目录 -type d
root@ubuntu:~# find /home/ubuntu -type d
/home/ubuntu
/home/ubuntu/csl
/home/ubuntu/csl/cesi
/home/ubuntu/.gnupg
/home/ubuntu/.gnupg/private-keys-v1.d
/home/ubuntu/[-p]
/home/ubuntu/.cache
/home/ubuntu/demo
查找指定目录下的所有文件 -type f
root@ubuntu:~# find /home/ubuntu/csl -type f
/home/ubuntu/csl/asd.txt
/home/ubuntu/csl/23.txt
/home/ubuntu/csl/cesi/cesi.tar.gz
/home/ubuntu/csl/3.txt
/home/ubuntu/csl/2.txt
/home/ubuntu/csl/cs.txt
七、pwd:以绝对路径的方式显示用户当前工作目录
Print working directory
root@ubuntu:~# cd /home/ubuntu
root@ubuntu:/home/ubuntu# pwd
/home/ubuntu
八、rm -参数:删除N个文件或整个目录
使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复。
建议用-i选项,删除时会有提示
相对路径:
root@ubuntu:/home/ubuntu/csl# ls
23.txt 2.txt 3.txt asd.txt cesi cs.txt
root@ubuntu:/home/ubuntu/csl# rm -i 2.txt
rm: remove regular file '2.txt'? /*回车键不删除,效果同输入n*/
root@ubuntu:/home/ubuntu/csl# ls
23.txt 2.txt 3.txt asd.txt cesi cs.txt
root@ubuntu:/home/ubuntu/csl# rm -i 2.txt
rm: remove regular file '2.txt'? y /*文件删除成功*/
root@ubuntu:/home/ubuntu/csl# ls
23.txt 3.txt asd.txt cesi cs.txt
绝对路径:
root@ubuntu:/home# rm /home/ubuntu/csl/3.txt
注:rm不能删除文件夹
rm -r(或rm -R):删除当前目录下除隐含文件外的所有文件和子目录
应注意,这样做是非常危险的!
[root@izwz94jtz9hbdq165vpxpxz app21]# ls -a
. .. a3 redis-3.0.7.tar.gz text1.txt
[root@izwz94jtz9hbdq165vpxpxz app21]# cd ..
[root@izwz94jtz9hbdq165vpxpxz app2]# rm -r app21
rm: descend into directory ‘app21’? y /*输入y删除*/
rm: remove regular empty file ‘app21/text1.txt’? y
rm: descend into directory ‘app21/a3’? y
rm: remove regular empty file ‘app21/a3/a3.png’? y
rm: remove regular empty file ‘app21/a3/a3.txt’? y
rm: remove directory ‘app21/a3’? y
rm: remove regular empty file ‘app21/redis-3.0.7.tar.gz’? y
rm: remove directory ‘app21’? y
[root@izwz94jtz9hbdq165vpxpxz app2]# ls -a
. ..
rm -(r)f:强制删除,f 可理解为force
[root@izwz94jtz9hbdq165vpxpxz ~]# cd /app1/aa
[root@izwz94jtz9hbdq165vpxpxz aa]# ls
aa1
[root@izwz94jtz9hbdq165vpxpxz aa]# cd ..
[root@izwz94jtz9hbdq165vpxpxz app1]# rm -rf aa
[root@izwz94jtz9hbdq165vpxpxz app1]#
删除某个目录下所有带有test的文件夹及文件
- 结合find命令删除:
find 目录 -name "*file*" -exec rm -rf {} \;
语法解析
-exec 找到后执行命令
rm -rf {} 就是删除文件
\; 命令 属于格式要求的,没有具体含义
举例
root@ubuntu:/home# find /home/ubuntu/csl/ -name "*s*"
/home/ubuntu/csl/
/home/ubuntu/csl/asd.txt
/home/ubuntu/csl/cesi
/home/ubuntu/csl/cesi/cesi.tar.gz
/home/ubuntu/csl/cs.txt
root@ubuntu:/home# find /home/ubuntu/csl/ -name "*s*" -exec rm -rf {} \;
find: ‘/home/ubuntu/csl/’: No such file or directory /*文件已被删除所以会提示找不到*/
九、touch:创建新的空文件
(用ls-l查看文件大小为0)
[root@izwz94jtz9hbdq165vpxpxz www]# touch text.txt
[root@izwz94jtz9hbdq165vpxpxz www]# ls -l
total 0
-rw-r--r-- 1 root root 0 Jul 16 17:02 text.txt
批量创建文件
[root@izwz94jtz9hbdq165vpxpxz a1]# touch a{1..10}.text
[root@izwz94jtz9hbdq165vpxpxz a1]# ls
a10.text a1.text a2.text a3.text a4.text a5.text a6.text a7.text a8.text a9.text
十、cp:复制文件/目录(Copy file)
(1)默认情况下,cp命令不能复制目录
[root@izwz94jtz9hbdq165vpxpxz app1]# cp a1 /app2
cp: omitting directory ‘a1’
如果要复制目录,则必须使用-R选项
- 目标目录存在,直接复制
[root@izwz94jtz9hbdq165vpxpxz app1]# cp -R a1 /app2
[root@izwz94jtz9hbdq165vpxpxz app1]# find / -name "a1"
/app1/a1
/app2/a1
-
目标目录不存在,先自动创建目标目录再复制源目录
[root@izwz94jtz9hbdq165vpxpxz app1]# ls test www zyp [root@izwz94jtz9hbdq165vpxpxz app1]# cd www [root@izwz94jtz9hbdq165vpxpxz www]# ls 123.jgp a2 carina root text1.txt text3.txt text.txt [root@izwz94jtz9hbdq165vpxpxz www]# cp -R carina /app1/zyptest /*拷贝到不存在的目录*/ [root@izwz94jtz9hbdq165vpxpxz www]# cd .. [root@izwz94jtz9hbdq165vpxpxz app1]# ls test www zyp zyptest /*目录创建成功*/
(2)复制文件
[root@izwz94jtz9hbdq165vpxpxz www]# cp text1.txt /app1/c
[root@izwz94jtz9hbdq165vpxpxz www]# find / -name "text1.txt"
/app1/www/text1.txt
/app1/c/text1.txt
绝对路径:
[root@izwz94jtz9hbdq165vpxpxz ~]# cp /app1/www/text1.txt /app1/c
(3)复制文件并重命名文件
如下将www文件夹下的text1.txt 复制到目录 /app1,并改名为text.txt
[root@izwz94jtz9hbdq165vpxpxz www]# cp text1.txt /app1/text.txt
(4)复制特定类型的文件
[root@izwz94jtz9hbdq165vpxpxz www]# ls
123.txt carina text1.txt text3.txt text.txt
[root@izwz94jtz9hbdq165vpxpxz www]# cp t*.txt /app1/bak
[root@izwz94jtz9hbdq165vpxpxz www]# cd /app1/bak
[root@izwz94jtz9hbdq165vpxpxz bak]# ls
text1.txt text3.txt text.txt
复制前可能已经有文件存在了,那么不想进行每个选项都输入 y 确认的话,需要在 cp 前加 \,没有空格
[root@izwz94jtz9hbdq165vpxpxz www]# cp t*.txt /app1/bak
cp: overwrite ‘/app1/bak/text1.txt’? y
cp: overwrite ‘/app1/bak/text3.txt’? y
cp: overwrite ‘/app1/bak/text.txt’? y
[root@izwz94jtz9hbdq165vpxpxz www]# \cp t*.txt /app1/bak /没有提示按y/
[root@izwz94jtz9hbdq165vpxpxz www]#
十一、vi:修改文件内容
先按键盘字母I,编辑内容后,保存(按esc键后输入:wq)
[root@izwz94jtz9hbdq165vpxpxz www]# vi text.txt
dgdfgfhfdgh
十二、echo:创建/覆盖文件
(1)使用>指令
若文件不存在则创建文件
[root@izwz94jtz9hbdq165vpxpxz a1]# echo 'hello world' > hw.text
[root@izwz94jtz9hbdq165vpxpxz a1]# ls
hw.text
[root@izwz94jtz9hbdq165vpxpxz a1]# cat hw.text
hello world
(2)若文件存在,覆盖文件原内容并重新输入内容
[root@izwz94jtz9hbdq165vpxpxz a1]# cat hh.text
hello hello
[root@izwz94jtz9hbdq165vpxpxz a1]# echo 'hi hi' > hh.text
[root@izwz94jtz9hbdq165vpxpxz a1]# cat hh.text
hi hi
(2)使用 >>,向文件追加内容,原内容不变
[root@izwz94jtz9hbdq165vpxpxz a1]# cat hw.text
hello world
[root@izwz94jtz9hbdq165vpxpxz a1]# echo 'yeah yeah' >> hw.text
[root@izwz94jtz9hbdq165vpxpxz a1]# cat hw.text
hello world
yeah yeah
十三、tar:文件打包、解压(Tape archive)
(1)文件打包:tar -zcvf 打包名 文件
[root@izwz94jtz9hbdq165vpxpxz www]# ls
123.txt a2 carina requests-2.18.1.tar.gz text1.txt text3.txt text.txt
[root@izwz94jtz9hbdq165vpxpxz www]# tar -zcvf text.tar.gz 123.txt a2 text1.txt
123.txt
a2/
text1.txt
[root@izwz94jtz9hbdq165vpxpxz www]# ls
123.txt a2 carina requests-2.18.1.tar.gz text1.txt text3.txt text.tar.gz text.txt
(2)文件解压:tar -zxvf 文件名
[root@izwz94jtz9hbdq165vpxpxz app1]# tar -zxvf text.tar.gz
十四、scp:远程拷贝文件(secure copy)
(1)将本地的文件上传到远程服务器上
相对路径下,scp 文件名 用户名@ip:服务器绝对路径目录 (分号后面无空格)
scp redis-3.0.7.tar.gz root@29.118.65.136:/app1/www
绝对路径:
scp /app/software/www/text.txt root@29.118.65.136:/app1/bak
若是上传目录,需要使用 -r
scp -r /app/software/www root@29.118.65.136:/app1/bak
(2)将远程服务器上的文件/目录拷贝到本地
scp -r 用户名@ip:服务器绝对路径目录 绝对路径本地目录
scp -r root@29.118.65.136:/app1/www /app/software
scp root@29.118.65.136:/app1/www/text.txt /app/software/www
注意点:
- 使用scp需要注意所使用的用户是否具有可读取远程服务器相应文件的权限
- 如果远程服务器防火墙有特殊限制,scp便要走特殊端口,具体用什么端口视情况而定,命令格式如下:
scp -p 端口号 remote@www.abc.com:/usr/local/sin.sh /home/administrator