Linux命令行操作
目录信息
参考链接
1、目录及文件操作
1.1、创建文件夹
1.1.1、创建目录
mkdir abc 在当前文件夹下创建一个名字为abc的文件夹
mkdir /abc/test 在指定目录下创建一个名字为 test的文件夹
mkdir -p test/a/b#在当前目录下递归创建test/a/b文件夹
# 如果此处不加 -p的话,那么就不能递归的进行创建操作,如果没有上一级文件夹的话,那么就会发生错误信息
1.1.2、创建文件
touch命令操作
1.在当前目录创建一个名为aa.txt的文件 touch aa.tx
1.2、删除文件夹/文件
1.2.1、删除目录操作
1.rm -r 目录1 递归删除当前目录下的指定目录1
2.rm -rf 目录2 递归删除当前目录下的指定目录2(不询问)
3.rm -rf * 将当前目录下的所有目录和文件全部删除
4.rm -rf /* 【自杀行为命令!谨慎使用!】将会把根目录下的所有目录及文件全部删除
# 删除当前目录下的所有.c 文件
find . -name "*.c" -maxdepth 1 | xargs rm
表示找到.(当前目录下)名字为以“.c”为后缀的文件,-maxdepth 1表示目录深度为1,也即寻找当前目录
用 xargs 是由于很多命令不支持 | 管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令
1.2.2、删除文件
1.rm 文件名称 删除当前目录下的指定文件
2.rm -f 文件文件 删除当前目录下的指定文件(不询问)
1.3、重命名目录或者文件名称
mv aaa bbb 将目录aaa改为bbb
mv aaa.txt bbb.txt 将文件aaa改为bbb
1.4、目录切换
cd ..
cd ~ 切换到home目录操作
cd - 切换到上一次访问的目录操作
cd /切换到根目录操作
cd /root 切换到根目录下的root目录操作中
1.5、目录以及文件列表查看
1.ls 查看当前目录下的所有目录和文件
2.ls -a 查看当前目录下的所有目录和文件(包括隐藏的文件)
3.ls -l 或 ll 查看当前目录下的所有目录和文件(以列表方式显示查看,显示更多信息)
4.ls /data 查看指定目录下的所有目录和文件(如:ls /data)
当前目录下有a和b两个文件,执行命令“ls>c”,问文件c里面的内容是什么:
使用ls命令产生的输出为当前路径下的所有文件名;
>c即代表将结果输出至c中,若没有c则先产生c文件,即内容里含有abc。
1.6、复制目录或者文件
-r 递归处理,将指定目录下的文件与子目录一并处理
-v 或 --verbose 显示执行过程
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
1.将/data/a目录下的aaa目录复制到 /usr目录下面 cp -r /data/a/aaa /usr
2.将/data/a目录下的aaa.text文件复制到 /usr目录下面 cp /data/a/aaa.text /usr
3.将/data/a目录下的aaa.text文件备份到 /data/a目录下面bbb.text cp /data/a/aaa.text /data/a/aaa.text(当前目录下的文件复制则备份文件名称不能跟原来一致)
1.7剪切目录或文件
命令:mv 目录/文件名称 目录/文件的新位置
1.将/data/a目录下的aaa目录剪切到 /usr目录下面 mv /data/a/aaa /usr
2.将/data/a目录下的aaa.text文件剪切到 /usr目录下面 mv /data/a/aaa.text /usr
1.8搜索目录或文件
find [path] [expression]
find -name 目录/文件 参数 文件名称
path 是要查找的目录路径,expression 是用于过滤和限制查找结果的选项和参数。。
expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去 n 天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去 n 天内修改的文件
-mtime n : 在过去 n 天内修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
-type c : 文件类型是 c 的文件。
d: 目录
c: 字型装置文件
b: 区块装置文件
p: 具名贮列
f: 一般文件
l: 符号连结
s: socket
-pid n : process id 是 n 的文件
你可以使用 ( ) 将运算式分隔,并使用下列运算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
1.find /data/tmp -name 'a*' 查找/usr/tmp目录下的所有以a开头的目录或文件
2.find -name 'a*' 查找当前目录下的所有以a开头的目录或文件
# find . -type f
# find . -name "*.c"
# find . -ctime 20
# find /var/log -type f -mtime +7 -ok rm {} \;
查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
# find . -type f -perm 644 -exec ls -l {} \;
查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:
# find / -type f -size 0 -exec ls -l {} \;
**查找文件并且进行后续的删除操作 ** -exec
find /home/me/download/ -type f -name "*.rm" -exec ffmpeg -i {} -sameq {}.mp3 && rm {} \;
查找文件之后再进行后续的copy操作
find . -name "abc.docx" -exec cp {} /home/wangxinchao/copy/abctest.docx \;
1.9、查看并且修改文件内容信息
1.9.1、查看文件并且只是修改文件内容信息
1.打开文件
vim test.txt 进入一般模式
注意:使用vi编辑器打开文件后,并不能编辑,因为此时处于命令模式。
可以控制屏幕光标的移动,字符、字或行的删除,查找,移动复制某区段及点击键盘i/a/o进入编辑模式
命令行模式下的常用命令:
【1】控制光标移动:↑,↓,j
【2】删除当前行:dd
【3】查找:/字符
【4】进入编辑模式:i o a
【5】进入底行模式::
2.编辑文件
i(按键):在光标所在字符前开始插入
a(按键):在光标所在字符后开始插入
o(按键):在光标所在行的下面另起一新行插入
3.ESC(按键) 退出编辑模式,将文件保存或退出vi
:wq (shift+:调起输入框)(保存退出)
:wq! (shift+:调起输入框)(表示强制保存退出)
:x (shift+:调起输入框)(表示保存退出,写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间;否则不会更新文件修改时间)
:q! (shift+:调起输入框)(强制退出,内容不保存)
:q (shift+:调起输入框)(如果内容修改则会提示是否保存)
在命令模式下执行ZZ命令 也可以保存退出Vim 编辑操作
1.9.2、查看文件信息但是仅仅支持查看,并不只是修改操作
命令:cat/more/less/tail/head
cat:看最后一屏
1.cat /data/aa.txt 文件,只能显示最后一页内容
more:百分比显示
1.more /data/aa.txt文件 可以显示百分比,从第一页开始查看aa.txt文件内容,按回车键一行一行进行查看回车可以向下一行,空格可以向下一页,q可以退出查看
less:翻页查看
1.less /data/aa.txt 从第一页开始查看aa.txt文件内容,按回车键一行一行的看,按空格键一页一页的看,支持使用PageDown和
PageUp翻页,q结束查看
less 指令下查看文件采用 q退出查看模式。
tail:指定行数或者动态查看(实时查看日志)
1.tail -10 /data/aa.log 查看aa.log文件的后10行,Ctrl+C结束。
2.tail -f /data/aa.log 查看aa.log文件的后10行内容,Ctrl+C结束。
3.tail -n 7 /data/aa.log 查看aa.log文件的后7行内容,Ctrl+C结束。
4.head /data/aa.log 查看aa.log文件的前10行内容,Ctrl+C结束。
5.head -n 7 /data/aa.log 查看aa.log文件的前7行内容,Ctrl+C结束
cat -n file1 file2 把文件file1和file2连在一起,然后输出到屏幕上 #-n 显示的是行号操作
1.10、终止命令操作
命令:Ctrl+c和Ctrl+z都是中断命令,作用不一样。
Ctrl+Z将任务中断,但是此任务并没有结束,在进程中只是维持挂起的状态,用户可以使用fg/bg操作前台或后台的任务,bg命令把被中断的任务放在后台执行,fg命令重新启动前台被中断的任务。
Ctrl+C是强制中断程序的执行
1.11、重定向功能
可以使用 > 或 < 将命令的输出的命令重定向到aa.txt文件中(如果没有这个文件则创建一个)
>> 是将前面的内容添加到后面的文件
> 是重写 后面的文件的内容
命令:echo [选项] [输出内容]
选项:
-e:支持反斜线控制的字符转换
-n:取消输出后行末的换行符号(内容输出后不换行)
2、文件打包和压缩以及解压操作
tar是操作 .tar的命令
gzip是压缩 .gz压缩包的命令
compress: 压缩.Z文件
uncompress: 解压缩.Z文件
2.1文件打包和压缩
命令:tar/unzip/zip
1.命令:tar -zcvf 打包压缩后的文件名 要打包的文件可以多个
linux中的打包文件格式:.tar
linux中的压缩文件格式:.gz
linux中打包并压缩的文件格式:.tar.gz
Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。
而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。
其中:z:调用gzip压缩命令进行压缩
c:打包文件
v:显示运行过程
f:指定文件名
1.cd /data/aa 如aa目录下有1.txt 2.txt两个文件进行打包压缩
2.tar -cvf ab.tar 1.txt 2.txt 将当前目录下1.txt 2.txt打包
3.tar -cvf ab.tar ./* 将当前目录下的所有文件打包压缩成ab.tar文件
4..tar -zcvf ab.tar.gz 1.txt 2.txt 打包并压缩/data/aa目录下的1.txt 2.txt文件 压缩后的压缩包指定名称为ab.tar.gz
5..tar -zcvf ab.tar.gz * 打包并压缩/data/aa目录下的所有文件 压缩后的压缩包指定名称为ab.tar.gz
2.命令:unzip/zip
压缩(zip)
zip a.zip 1.txt 将单个文件压缩(a.zip)
zip -r a.zip a/ 将目录进行压缩(a.zip)
zip -r a.zip 1.tx 2.txt 将多个文件压缩为zip文件(a.zip)
2.2 文件解压
命令:tar [-zxvf] 压缩文件
其中:x:代表解压
1.tar -xvf(-zxvf) a.tar 解压a.tar压缩包,到当前文件夹下;
2.tar -xvf a.tar -C data/local 解压a.tar压缩包,到/data/local目录下(C为大写,中间无空格,C代表指定解压的位置)
3.tar -zxvf a.tar.gz 解压a.tar.gz压缩包,到当前文件夹下
4.tar -zxvf a.tar.gz -C usr/local 解压a.tar.gz压缩包,到/data/local目录下(C为大写,中间无空格,C代表指定解压的位置)
5.tar xf a.tar.xz 解压a.tar.xz压缩包,到当前文件夹下
解压缩(unzip)
1.unzip a.zip 解压一个zip格式压缩包
2.unzip -d /data/app/a.zip 将a.zip包,解压到指定/data/app/目录下
3、文件中查找命令grep
1.grep abc test.txt 在test.txt文件中搜索abc字符串,大小写敏感且显示行;
2.grep -n abc test.txt 在test.txt文件中搜索abc字符串,大小写敏感且显示行及行号;
3.grep -v abc test.txt 在test.txt文件中搜索abc字符串,大小写敏感且显示没搜索到的行;
4.grep -i abc test.txt 在test.txt文件中搜索abc字符串,大小写敏感且显示行;
5.grep -ni abc test.txt 在test.txt文件中搜索abc字符串,大小写敏感且显示行及行号;
6.ps -ef | grep nginx 查找指定nginx服务进程
7.ps -ef | grep nginx | grep -v grep 查找指定服务进程,排除gerp身
8.ps -ef | grep nginx -c 查找指定进程个数
自己的例子操作
# 在文件中根据函数名字从而查找所在的位置信息
grep -n "get_time_words_attention_alpha" ptp_utils.py >name.txt
#Linux下根据函数名查找所在文件
grep "add" -r ./Downloads/test/
grep是查找匹配条件的行,find是搜索匹配条件的文件。
4、ssh远程登录命令
远程登录命令:ssh
1.ssh 192.168.1.100 默认利用当前宿主用户的用户名登录
2.ssh root@192.168.1.100 利用远程机的用户登录
3.ssh root@192.168.1.100 -o stricthostkeychecking=no 首次登陆免输yes登录
4.ssh root@192.168.1.100 "ls /home/root" 当前服务器A远程登录服务器B后执行某个命令
5.ssh root@192.168.1.100 -t "sh /home/root/ftl.sh" 当前服务器A远程登录服务器B后执行某个脚本