1. 文件及目录操作命令
pwd:显示用户当前所处的目录
ls:列出目录下的文件清单
cd:改变当前目录
cd … 返回上一级目
cd / 进入根目录
不加参数或参数为“~”,默认切换到用户主目录
mkdir:建立目录
rmdir:删除目录
cp:拷贝文件/目录
rm:删除文件/目录
mv:移动文件或目录
mv源文件或目录 目标文件或目录
find:查找文件所在的目录
find 路径 匹配表达式
例:find /dev -name test* 在目录/dev中查找文件名的前四个字母为test的文件
grep:查找文件中包含有指定字符串的行
grep 要查找的字符串 文件名
例:grep -2 int test.c 在文件test.c中查找所有含字符串“int”的行,若找到显示该行及该行前后各2行的内容
which:确定程序的具体位置
which [参数] 程序名 例:which find 输出find命令所处的位置
stat:显示文件或目录的各种信息
chmod:改变文件访问权限
cat:显示文件的内容
more:逐页显示文件中的内容
less:逐页显示文件中的内容 (光标可以上下移动)
head:显示文件的前几行
head -n num 文件名:显示文件的前num行(缺省时,显示文件的前10行)
tail:显示文件的末尾几行
tail -n num 文件名:显示文件的末尾num行(缺省时,显示文件的末尾10行)
2. 磁盘及系统操作
fdisk:用来给磁盘进行分区,查看磁盘情况(使用参数-l)等。(使用该命令需ROOT权限)
sudo fdisk -l 显示系统的分区情况
df:检查硬盘所剩(所用)空间
free:查看当前系统内存的使用情况
mount:挂载文件系统
umount:卸载文件系统
3. 文件压缩及解压命令
gzip:压缩文件,缺省的扩展名为.gz
gzip test1.c 压缩test1.c文件,压缩后的文件名为test1.c.gz
gunzip:解压扩展名为.gz、-gz、.z、-z、—_z、-Z的文件
gunzip test1.c.gz 解压test1.c.gz,解压后的文件名为test1.c
tar:将程序打(打包是把多个文件组成一个总的文件,不一定会被压缩)
选项:-c建立新的文档,-x从文档展开文件,-f使用存档文件(必是最后一个参数),-v显示执行过程
例:tar -cvf dir2.tar dir2/ 建立存档文件dir2.tar,将dir2目录压缩进dir2.tar中,并显示被处理的文件
tar -xvf dir2.tar 解压存档文件dir2.tar,并显示被处理的文件
tar -rf all.tar *.gif / 将所有.gif的文件增加到all.tar的包里面去
4. 网络命令
ping:测试本主机和目标主机连通性
ping [参数] 主机名或IP地址 参数:-c count:共发出count次信息(默认无限次),-i interval:两次信息之间的时间间隔为interval,(默认间隔为1秒)
例:ping -c 5 -i 0.3 1.1.1.1 测试本主机和1.1.1.1的连通性,发5次信息,间隔为0.3秒
ifconfig:配置网卡和显示网卡信息
ifconfig eth0 显示网卡eth0的信息
5. 帮助命令
help:查看Linux内置命令的帮助
man:显示某个命令的帮助手册
cd ~
直接进入用户的home目录:
cd -
进入上一个目录:
cd ..
退到上一层目录
cd ../..
进入当前目录的上两层目录:
ls -help
查看每个命令的功能
ls
查看当前文件夹下的目录结构
3. 常用参数:
ls -a
,ls –all
列出目录下的所有文件,包括以 . 开头的隐含文件
ls -A
同ls -a
,但不列出“.”(表示当前目录)和“…”(表示当前目录的父目录)。
ls -c
配合 ls -lt
:根据 ctime 排序及显示 ctime (文件状态最后更改的时间)配合 -l:显示 ctime 但根据名称排序否则:根据 ctime 排序
ls -C
每栏由上至下列出项目
ls –color['WHEN' ]
控制是否使用色彩分辨文件。WHEN 可以是'never'
、'always'
或'auto'
其中之一。
ls -d
, ls –directory
将目录象文件一样显示,而不是显示其下的文件。
ls -D
, ls –dired
产生适合 Emacs 的 dired 模式使用的结果。
ls -f
对输出的文件不进行排序,ls -aU
选项生效,ls -lst
选项失效
ls -g
类似 ls -l
,但不列出所有者
ls -G,ls –no-group 不列出任何有关组的信息
ls -h
,ls –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
ls –si
类似 -h,但文件大小取 1000 的次方而不是 1024
ls –indicator-style=classify (-F)方式 指定在每个项目名称后加上指示符号<方式>:none (默认),classify (-F),file-type (-p)
ls -i,
–inode 印出每个文件的 inode 号
ls -I
, –ignore=样式 不印出任何符合 shell 万用字符<样式>的项目
ls -k
即 –block-size=1K,以 k 字节的形式表示文件的大小。
ls -L
, –dereference 当显示符号链接的文件信息时,显示符号链接所指示的对象而并非符号链接本身的信息
ls -s, –size 以块大小为单位列出所有文件的大小
ls过滤
通配符:*
即可以代替任何符号数字
使用例子如下;ls *.py
代表显示当前文件夹中名字带有.py
后缀的所有文件,*可以代表长度无限的数值或符号。
若 ls ?.py
代表显示当前文件夹中名字带有.py
后缀的所有文件,但是?只能代表一个数值或符号
若 ls 1[1-6]5.py
代表显示当前文件夹中带有.py
后缀,且第一个为1,第二个为1到6的数字,第三个为5的 所有文件。
cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
示:
将目录/usr/men
下的所有文件及其子目录复制到目录/usr/zh中
cp -r /usr/men /usr/zh
交互式地将目录/usr/men
中的以m
打头的所有.c文件复制到目录/usr/zh中
cp -i /usr/men m*.c /usr/zh
我们在Linux
下使用cp
命令复制文件时候,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖。数量很多的情况,可以采用以下一个方法:
cp -f /usr/men m*.c /usr/zh
1、rmdir
:删除整个文件夹
使用rmdir
命令删除一个目录时,需要离开删除的目录,并删除的目录必须是空的,否则会删除失败。
rmdir test //删除空文件夹,test为文件夹名
1
2、rm
命令:删除文件或目录,删除后不能恢复
使用rm
命令删除文件,一旦删除成功就无法恢复了。
在删除过程中可以使用一些参数辅助删除:
-f :
强制删除,不提示
-r :
递归删除目录下的内容
-i :
进行交互方式,提示是否删除
例:
删除 test.txt
文件:sudo rm test.txt
删除 test
文件夹:sudo rm -r test
(必须使用-r参数)
强制删除 test 文件夹目录下的所有文件:sudo rm -rf test
Vim/ Vi
模式
启动Vim
编辑器时,处于正常模式。
在这种模式下,可以使用vim
命令并浏览文件。
0.打开package.json
终端命令vim package.json
1.进入编辑模式: 按 i键
2.按 Esc
可返回正常模式
3.打开文件(2种方法):
3.1 vim file.text
3.2 启动编辑器,然后输入:e file_name
,file_name
是要打开的文件名。
4.保存: 命令:w
保存文件但不退出编辑器:按Esc +
命令:w +
按Enter
5.更新命令:up
该命令仅在未保存更改的情况下才将缓冲区写入文件。
要使用其他名称保存文件,请键入:w new_filename
并点击Enter
。
6.保存文件并退出Vim:
命令:wq
或者:x
两个命令的区别是:x仅在未保存更改时才将缓冲区写入文件,
:wq总是将缓冲区写入文件并更新文件修改时间。
按Esc
+ 命令:wq
+ 按Enter
。
注意:必须在英文输入法下才有反应,否则输入无效。
7.退出Vim / Vi但不保存文件
按Esc
+ 命令:q!
+ 按Enter
总结最常用操作套路:编辑package.json
终端命令vim package.json
+ i
+ 编辑内容 + 按Esc
+ :wq
+ 按Enter
==============================================
补充:Vim中如何全选并复制?
(区分大小写!!!)
全部删除:按esc
键后,先按gg
(到达顶部),然后dG
全部复制:按esc
键后,先按gg
,然后ggyG
全选高亮显示:按esc
键后,先按gg
,然后ggvG
或者ggVG
单行复制:按esc
键后, 然后yy
单行删除:按esc
键后, 然后dd
粘贴:按esc
键后, 然后p
mv
命令是一个与cp
类似的命令,但是它并非创建文件或目录的复制品/副本。不管你在使用什么版本的Linux系统,mv 都默认安装在你的Linux系统上了。来看一下 mv 命令在日常操作中的一些例子。
语法:mv --help
1.移动文件
移动文件时需要注意的是文件的源地址和目标地址必须不同。这里有个例子,想要将file.txt文件从当前目录移动到其它目录,以/home/wxy/为例,语法应该如下:
$ mv file.txt /home/wxy/office
Linux mv命令如何移动或重命名文件/目录
如我们所见,当我们移动 file.txt
文件时,先前目录的 file.txt
就被删除了。
2.移动多个文件
如果想一次移动多个文件,我们可以将他们放在一行并用空格分开。
$ mv file_2.txt file_3.txt file_4.txt /home/wxy/office
如果你的文件有规律可循的话那么你就可以使用通配符。比如,为了移除所有以.txt为扩展名的文件,我们可以用下面的命令:
$ mv *.txt /home/wxy/office
3.移动目录
不同于复制命令,用 mv 命令移动目录相当直接。移动目录你可以使用不带选项的 mv 命令。看下面的截图就一目了然了。
4.重命名文件或目录
我们也用 mv 命令来重命名文件或目录。不过目标位置和源位置必须相同才可以。然后文件名必须不同。假定我们当前所在目录为/wxy/Documents
,而我们想将file_1.txt重命名
为file_2.txt。那么命令应该如下:
$ mv file_1.txt file_2.txt
如果是绝对路径,它应该像下面这样:
$ mv /home/wxy/Documents/file_1.txt /home/wxy/Documents/file_2.txt
5. 重命名目录
上一段的规则同样适用于目录。请看这个例子:
$ mv directory_1/ directory_2/
打印移动信息
当你移动或重命名一大堆文件或目录时,你可能会想在不去目标位置去查看的情况下知道你自己的命令是否成功地执行了。这就要用到-v选项了。
$ mv -v *.txt /wxy/office
使用交互模式
当你将文件移动到其它位置,而那个位置恰好有同样的文件,这时 mv 命令会覆盖掉原来的文件
。对于mv的这一行为一般不会有什么提示。如果想产生一个关于覆盖文件的提示,我们可以使用-i选项
。(译注:通常发行版会通过alias命令
,将-i
作为默认选项,所以会有提示。)
假设我们想将 file_1.txt
移动到 /home/wxy/office
。同时,/home/wxy/office
目录下已经有file_1.txt
文件了。
$ mv -i file_1.txt /home/wxy/office
这个提示
会让我们知道目标位置处file_1.txt的存在
。如果我们按y键
,那么那个文件将会被删除
,否则不会。
假如 file_1.txt
和 file_2.txt
有如下特点:
File_1.txt has 84 bytes file size and it last modified time is 12:00
File_2.txt has 0 bytes file size and it last modified time is 11:59
我们想将它们移动到 /home/wxy/office
目录下。但是目标地址已经有file_1.txt
和file_2.txt
了。
我们用下面的命令将file_1.txt
和file_2.txt
从当前目录移动到/home/wxy/office
$ mv -uv *.txt /home/wxy/office
可以看到这些文件被移动了。能移动这些文件是因为它们最近的修改时间戳比 /home/wxy/office
目录中的文件新。
9.不要覆盖任何已存在的文件
如果-i
选项询问我们是否要覆盖文件
,那么 -n
选项将不会允许我们覆盖任何已存在的文件(强制覆盖)
。
继续使用第8点中的例子,如果我们将-u
换成 -n
同时加上-v
选项,那么我们会看到没有任何文件移动到了 /home/wxy/office
目录下。
$ mv -vn *.txt /home/pungki/office
$ mv -bv *.txt /home/wxy/office
在 /home/wxy/office
目录下出现了名为file_1.txt~
和 file_2.txt~
的文件。那个波浪符号(~
)意味着这些文件是备份文件。从它们的属性中我们可以看到,这些文件比file_1.txt
和file_2.txt
要旧。
当你希望无论如何都覆盖已经存在的文件或目录时,你可以使用 -f
选项。如果同时指定了 -f 选项和 -i 或 -n 选项,则 -f 选项会覆盖它们&mdash
;&mdash
;即不进行任何提示而覆盖,所以,在使用此参数时,知道你在做什么。
$ mv -f *.txt /home/wxy/office
用于归档多个文件或目录到单个归档文件中,并且归档文件可以进一步使用 gzip 或者 bzip2 等技术进行压缩。
语法格式
#tar <选项> <文件或目录>
--delete : 从tar包中删除某个文件
-r, --append : 将文件追加到tar归档文件中
-t, --list : 列出tar归档文件中包含的文件或目录
-u, --update : 将已更新的文件追加到tar归档文件中
-x, --extract, --get : 释放tar归档文件中文件及目录
-C, --directory=DIR : 执行归档动作前变更工作目录到 目标DIR
-f, --file=ARCHIVE : 指定 (将要创建或已存在的) 归档文件名
-j, --bip2 : 对归档文件使用 bzip2 压缩
-J, --xz : 对归档文件使用 xz 压缩
-p, --preserve-permissions : 保留原文件的访问权限
-v, --verbose : 显示命令整个执行过程
-z, gzip : 对归档文件使用 gzip 压缩
以下是对tar命令的一些总结12:
```bash
tar -cvf test.tar test #仅打包,不压缩
tar -zcvf test.tar.gz test #打包后,以gzip压缩 在参数f后面的压缩文件名是自己取的,习惯上用tar来做,如果加z参数,则以tar.gz 或tgz来代表gzip压缩过的tar file文件
tar -zcvf dist.tar.gz -C dist . #注意最后有一点,通过 -C 参数指定目录,可以去掉打包内容包含相对目录,打包内容只包含 dist/* 下的文件内容,不包含 dist 目录
解压操作:
tar -zxvf /usr/local/test.tar.gz
tar 解压缩命令详解
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。
-z:有gzip属性的
-j:有bz2属性的
-J:具有xz属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
下面的参数-f是必须的
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
```handlebars
tar -cf all.tar *.jpg
tar -rf all.tar *.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
tar -uf all.tar logo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思
tar -xf all.tar
这条命令是解出all.tar包中所有文件,-x是解开的意思
压缩
tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg
tar –czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar –cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux
解压
tar –xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2 //解压 tar.bz2
tar –xZvf file.tar.Z //解压tar.Z
unrar e file.rar //解压rar
unzip file.zip //解压zip
总结
(1) *.tar 用 tar –xvf 解压
(2) *.gz 用 gzip -d或者gunzip 解压
(3) *.tar.gz和*.tgz 用 tar –xzf 解压
(4) *.bz2 用 bzip2 -d或者用bunzip2 解压
(5) *.tar.bz2用tar –xjf 解压
(6) *.Z 用 uncompress 解压
(7) *.tar.Z 用tar –xZf 解压
(8) *.rar 用 unrar e解压
(9) *.zip 用 unzip 解压
(10) *.xz 用 xz -d 解压
(11) *.tar.xz 用 tar -zJf 解压
参考:https://blog.csdn.net/example440982/article/details/51712973
常见用法
示例 1
:创建一个 tar 归档文件
创建一个 tar 文件,将 /etc/ 目录和 /root/anaconda-ks.cfg 文件打包进去。
#tar -cvf mytest.tar /etc/ /root/anaconda-ks.cfg
注:以上命令会在当前目录创建一个名为 “mytest
” 的 tar
文件,内含 /etc/
目录和 /root/anaconda-ks.cfg
文件。其中,-c
选项表示要创建 tar 文件;-v
选项用于输出 tar 的详细过程到屏幕上;-f
选项则是指定归档文件名称。
示例 2:列出归档文件中的内容
#tar -tvf mytest.tar
在 tar 命令中使用 –t
选项可以不用释放其中的文件就可以快速列出文件中包含的内容。
示例 3:追加某文件到归档(tar)文件中
#tar -rvf mytest.tar original-ks.cfg
注:在tar
命令中使用-r
选项可以向已有的tar归档中追加问价,但是在压缩过的tar文件中无法进行追加文件;
示例 4:释放tar归档至当前所在目录
#tar -xvf mytest.tar
示例 5:释放 tar 文件到指定目录
#tar -xvf mytest.tar -C testdir02/
示例 6:创建并压缩归档文件(.tar.gz
或 .tgz)
假设我们需要打包 /etc
和 /opt
文件夹,并用 gzip
工具将其压缩。可以在 tar 命令中使用 -z 选项来实现。这种 tar 文件的扩展名可以是 .tar.gz
或者 .tgz
。
#tar -zcpvf myarchive.tar.gz /etc/ /opt/
——注-zcpvf
顺序不能变
#tar -zcpvf myarchive.tgz /etc/ /opt/
示例 7:创建并压缩归档文件(.tar.bz2
或 .tbz2
)
假设我们需要打包 /etc
和 /opt
文件夹,并使用 bzip2
压缩。可以在 tar
命令中使用 -j 选项来实现。这种 tar 文件的扩展名可以是 .tar.bz2
或者 .tbz
。
#tar -jcpvf myarchive.tar.bz2 /etc/ /opt/
#tar -jcpvf myarchive.tbz2 /etc/ /opt/
示例 9:排除指定文件或类型后创建 tar 文件
创建 tar 文件时在 tar
命令中使用 –exclude
选项来排除指定文件或者类型。假设在创建压缩的 tar 文件时要排除 .conf
文件。
#tar -zcpvf myarchive.tgz /etc/ /opt/ --exclude=*.conf
示例 10:解压 .tar.gz/.tgz
或.tar.bz2/.tbz2
文件
#tar -zxpvf myarchive.tgz -C /tmp/
#tar -jxpvf myarchive.tbz2 -C /tmp/
通用命令:
#tar xpvf myarchive.tbz2 -C /tmp/
或 # tar -xpvf myarchive.tgz -C /tmp/
示例 11:使用 tar 命令进行定时备份归档
总有一些实时场景需要我们对指定的文件和目录进行打包,已达到日常备份的目的。假设需要每天备份整个 /opt
目录,可以创建一个带 tar
命令的 cron
任务来完成。如下:
#tar -zcpvf optbackup-$(date +%Y-%m-%d).tgz /opt/
为以上命令创建一个 cron
任务即可。
示例 12:使用 -T
及 -X
创建压缩归档文件
想像这样一个场景:把想要归档和压缩的文件及目录记录到到一个文件,然后把这个文件当做 tar 命令的传入参数来完成归档任务;而有时候则是需要排除上面提到的这个文件里面记录的特定路径后进行归档和压缩。
在 tar 命令中使用 -T
指定该输入文件,-X
指定包含要排除的文件列表,假设要归档 /etc
、/opt
、/home
目录,并排除 /etc/sysconfig/kdump
和 /etc/sysconfig/foreman
文件,可以创建 /root/tar-include
和 /root/tar-exclude
然后分别输入以下内容:
[root@linuxtechi ~]# cat /root/tar-include /etc /opt /home
[root@linuxtechi ~]# cat /root/tar-exclude /etc/sysconfig/kdump /etc/sysconfig/foreman
[root@linuxtechi ~]#
运行以下命令来创建一个压缩归档文件。
[root@linuxtechi ~]# tar -zcpvf mybackup-$(date +%Y-%m-%d).tgz -T /root/tar-include -X /root/tar -exclude
示例 13:查看 .tar
、.tgz
和 .tbz2
文件的大小
#tar -czf - myarchive.tbz2 | wc -c
示例14:tar
包的分割与合并
想象一个场景,一个体积非常放大的tar归档文件需要进行传输时,通常大文件传输较慢。此时,我们可以使用split
命令来将体积比较大的tar文件分割成若干个小体积文件,然后通过网络将这些分割文件转移到其他服务器,在进行合并成为一个单独的 tar
文件即可;
tar
文件分割为若干个mybackup-parts
开头的小文件:
[root@linuxtechi ~]# split -b 6M mybackup-2016-09-09.tgz mybackup-parts
以上命令会在当前目录分割 mybackup-2016-09-09.tgz
文件成为多个 6 MB
的小文件,文件名为 mybackup-partsaa ~ mybackup-partsag
。如果在要在分割文件后以数字而非字母来区分,可以在以上的 split
命令使用-d
选项。
[root@linuxtechi ~]# split -b 6M mybackup-2016-09-09.tgz -d mybackup-parts
合并归档:
[root@linuxtechi ~]# cat mybackup-partsa* > mybackup-2016-09-09.tgz
首先解压缩之前有限你需要有压缩包,没有的话,可以下载
wget https://github.com/xxxx/download/v2.3.6/softName.zip
首先说一下本人常用的解压软件unar,这个软件加压缩时可以有效避免压缩包内软件乱码的现象。
1、安装
sudo apt-get install unar
2、使用方法
//解压压缩包
unar file.zip
//列出压缩包内容
lsar file.zip
虽然unar可以让你“一招鲜吃遍天”。但是,在没有安装unar的情况下,可以使用下面的命令
.tar 文件
#仅打包,并非压缩
tar -xvf FileName.tar # 解包
tar -cvf FileName.tar DirName # 将DirName和其下所有文件(夹)打包.gz文件
#.gz
gunzip FileName.gz # 解压1
gzip -d FileName.gz # 解压2
gzip FileName # 压缩,只能压缩文件.tar.gz文件、 .tgz文件
#.tar.gz 和 .tgz
tar -zxvf FileName.tar.gz # 解压
tar -zcvf FileName.tar.gz DirName # 将DirName和其下所有文件(夹)压缩
tar -C DesDirName -zxvf FileName.tar.gz # 解压到目标路径.zip文件
#感觉.zip占用空间比.tar.gz大
unzip FileName.zip # 解压
zip FileName.zip DirName # 将DirName本身压缩
zip -r FileName.zip DirName # 压缩,递归处理,将指定目录下的所有文件和子目录一并压缩.rar文件
#mac和linux并没有自带rar,需要去下载
rar x FileName.rar # 解压
rar a FileName.rar DirName # 压缩
补充:tar是打包,.tar.gz才是压缩过的文件
用法总结如下:
find pathname -options [-print -exec -ok]
pathname:查找路径
-option:主要选项如下:
-name:按照文件名称查找
-perm:按照文件权限查找
-prune:不在当前指定的路径查找。如果同时指定了-depth选项,则prune被忽略
-user:按照文件属主查找
-group:按照文件属组查找
-mtime -n +n:按照文件更改时间查找。-n 指距离现在时间n天以内;+n n天以外
-nogroup:查找无效属组文件
-nouser:查找无效属主文件
-newer file1 !file2:查找更改时间比file1新比file2旧的文件
-type:查找某一类型文件
b:块设备文件
d:目录
c:字符设备文件
P:管道文件
l:符号链接文件
f:普通文件
-size n[c]查找文件长度为n块的文件 有[c]表示文件长度以字节计
-depth:查找时,首先查找当前目录文件,然后再在其子目录查找
-fstype:查找位于某一类型文件系统中的文件,文件系统类型可在/etc/fstab中找到
-mount:查找文件不跨越文件系统mount点
-follow:如遇到链接文件,则跟踪至链接所指向文件
-cpio:对匹配的文件使用cpio命令,将文件备份到磁带设备中
-print:将匹配的文件输出到标准输出
-exec:对匹配的文件执行所给的shell命令。形式为:command { } \;注意{ }和\;之间的空格
-ok:和-exec作用相同。只不过以一种更安全的模式执行该参数所给的shell命令。在执行每个命令之前,都会给出提示,让用户确定是否执行
Linux中find常见用法示例
·find path -option [ -print ] [ -exec -ok command ] {} \;
#-print 将查找到的文件输出到标准输出
#-exec command {} \; -----将查到的文件执行command操作,{} 和 \;之间有空格
#-ok 和-exec相同,只不过在操作前要询用户
====================================================
-name filename #查找名为filename的文件
-perm #按执行权限来查找
-user username #按文件属主来查找
-group groupname #按组来查找
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n #按文件访问时间来查GIN: 0px">-perm #按执行权限来查找
-user username #按文件属主来查找
-group groupname #按组来查找
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n #按文件访问时间来查找文件,-n指n天以内,+n指n天以前
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer f1 !f2 找文件,-n指n天以内,+n指n天以前
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer f1 !f2 #查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-depth #使查找在进入子目录前先行查找完本目录
-fstype #查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-depth #使查找在进入子目录前先行查找完本目录
-fstype #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount #查文件时不跨越文件系统mount点
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio %; #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount #查文件时不跨越文件系统mount点
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune #忽略某个目录
$find . -name "[A-Z]*" -pri26nbsp; #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune #忽略某个目录
$find ~ -name "*.txt" -print #在$HOME中查.txt文件并显示
$find . -name "*.txt" -print
$find . -name "[A-Z]*" -print #查以大写字母开头的文件
$find /etc -name "host*" -print #查以host开头的文件
$find . -name "[a-z][a-z][0--9][0--9].txt" -print #查以两个小写字母和两个数字开头的txt文件
$find . -perm 755 -print
$find . -perm -007 -exec ls -l {} \; #查所有用户都可读写执行的文件同-perm 777
$find . -type d -print
$find . ! -type d -print
$find . -type l -print
$find . -size +1000000c -print #查长度大于1Mb的文件
$find . -size 100c -print # 查长度为100c的文件
$find . -size +10 -print #查长度超过期作废10块的文件(1块=512字节)
$cd /
$find etc home apps -depth -print | cpio -ivcdC65536 -o /dev/rmt0
$find /etc -name "passwd*" -exec grep "cnscn" {} \; #看是否存在cnscn用户
$find . -name "yao*" | xargs file
$find . -name "yao*" | xargs echo "" > /tmp/core.log
$find . -name "yao*" | xargs chmod o-w
======================================================
find -name april* 在当前目录下查找以april开始的文件
find -name april* fprint file 在当前目录下查找以april开始的文件,并把结果输出到file中
find -name ap* -o -name may* 查找以ap或may开头的文件
find /mnt -name tom.txt -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件
find /mnt -name t.txt ! -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件
find /tmp -name wa* -type l 在/tmp下查找名为wa开头且类型为符号链接的文件
find /home -mtime -2 在/home下查最近两天内改动过的文件
find /home -atime -1 查1天之内被存取过的文件
find /home -mmin +60 在/home下查60分钟前改动过的文件
find /home -amin +30 查最近30分钟前被存取过的文件
find /home -newer tmp.txt 在/home下查更新时间比tmp.txt近的文件或目录
find /home -anewer tmp.txt 在/home下查存取时间比tmp.txt近的文件或目录
find /home -used -2 列出文件或目录被改动过之后,在2日内被存取过的文件或目录
find /home -user cnscn 列出/home目录内属于用户cnscn的文件或目录
find /home -uid +501 列出/home目录内用户的识别码大于501的文件或目录
find /home -group cnscn 列出/home内组为cnscn的文件或目录
find /home -gid 501 列出/home内组id为501的文件或目录
find /home -nouser 列出/home内不属于本地用户的文件或目录
find /home -nogroup 列出/home内不属于本地组的文件或目录
find /home -name tmp.txt -maxdepth 4 列出/home内的tmp.txt 查时深度最多为3层
find /home -name tmp.txt -mindepth 3 从第2层开始查
find /home -empty 查找大小为0的文件或空目录
find /home -size +512k 查大于512k的文件
find /home -size -512k 查小于512k的文件
find /home -links +2 查硬连接数大于2的文件或目录
find /home -perm 0700 查权限为700的文件或目录
find /tmp -name tmp.txt -exec cat {} \;
find /tmp -name tmp.txt -ok rm {} \;
find / -amin -10 # 查找在系统中最后10分钟访问的文件
find / -atime -2 # 查找在系统中最后48小时访问的文件
find / -empty # 查找在系统中为空的文件或者文件夹
find / -group cat # 查找在系统中属于 groupcat的文件
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find / -mtime -1 #查找在系统中最后24小时里修改过的文件
find / -nouser #查找在系统中属于作废用户的文件
find / -user fred #查找在系统中属于FRED这个用户的文件
查当前目录下的所有普通文件
--------------------------------------------------------------------------------
# find . -type f -exec ls -l {} \;
-rw-r--r-- 1 root root 34928 2003-02-25 ./conf/httpd.conf
-rw-r--r-- 1 root root 12959 2003-02-25 ./conf/magic
-rw-r--r-- 1 root root 180 2003-02-25 ./conf.d/README
查当前目录下的所有普通文件,并在- e x e c选项中使用ls -l命令将它们列出
=================================================
在/ l o g s目录中查找更改时间在5日以前的文件并删除它们:
$ find logs -type f -mtime +5 -exec -ok rm {} \;
=================================================
查询当天修改过的文件
[root@book class]# find ./ -mtime -1 -type f -exec ls -l {} \;
=================================================
查询文件并询问是否要显示
[root@book class]# find ./ -mtime -1 -type f -ok ls -l {} \;
? y
-rw-r--r-- 1 cnscn cnscn 13709 1月 12 12:22 ./classDB.inc.php
[root@book class]# find ./ -mtime -1 -type f -ok ls -l {} \;
? n
[root@book class]#
=================================================
查询并交给awk去处理
[root@book class]# who | awk '{print $1"\t"$2}'
cnscn pts/0
=================================================
awk---grep---sed
[root@book class]# df -k | awk '{print $1}' | grep -v 'none' | sed s"/\/dev\///g"
文件系统
sda2
sda1
[root@book class]# df -k | awk '{print $1}' | grep -v 'none'
文件系统
/dev/sda2
/dev/sda1
一、chmod
作用:修改文件、目录的权限
二、语法:chmod
[对谁操作] [操作符] [赋予的权限] 文件名
三、操作对象:u
用户user,表现文件或目录的所有者
`g` 用户组`group`,表现文件或目录所属的用户组
`o` 其他用户`other`
`a` 所有用户`all`
四、操作符:+
添加权限 -
减少权限 =
直接给定一个权限
五:权限:1、r
可读 2、w
可写 3.x
可执行
chmod命令使用数字修改文件权限
Linux 系统中,文件的基本权限由 9 个字符组成,以 rwxrw-r-x 为例,我们可以使用数字来代表各个权限,各个权限与数字的对应关系如下:
r --> 4
w --> 2
x --> 1
由于这 9 个字符分属 3 类用户,因此每种用户身份包含 3 个权限(r、w、x),通过将 3 个权限对应的数字累加,最终得到的值即可作为每种用户所具有的权限。
拿 rwxrw-r-x 来说,所有者、所属组和其他人分别对应的权限值为:
所有者 = rwx = 4+2+1 = 7
所属组 = rw- = 4+2 = 6
其他人 = r-x
= 4+1 = 5
所以,此权限对应的权限值就是 765。
使用数字修改文件权限的 chmod 命令基本格式为:
[root@localhost ~]# chmod [-R] 权限值 文件名
-R(注意是大写)
选项表示连同子目录中的所有文件,也都修改设定的权限。
例如,使用如下命令,即可完成对 .bashrc
目录文件的权限修改:
[root@localhost ~]# ls -al .bashrc
-rw-r--r--. 1 root root 176 Sep 22 2004 .bashrc
[root@localhost ~]# chmod 777 .bashrc
[root@localhost ~]# ls -al .bashrc
-rwxrwxrwx. 1 root root 176 Sep 22 2004 .bashrc
再举个例子,通常我们以 Vim 编辑 Shell 文件批处理文件后,文件权限通常是 rw-rw-r–(644),那么,如果要将该文件变成可执行文件,并且不让其他人修改此文件,则只需将此文件的权限该为 rwxr-xr-x(755)即可。
chmod命令使用字母修改文件权限
既然文件的基本权限就是 3 种用户身份(所有者、所属组和其他人)搭配 3 种权限(rwx),chmod 命令中用 u、g、o 分别代表 3 种身份,还用 a 表示全部的身份(all 的缩写)。另外,chmod 命令仍使用 r、w、x 分别表示读、写、执行权限。
使用字母修改文件权限的 chmod 命令,其基本格式如图 1 所示。
(1)修改xxx文件夹及其子文件的权限:chmod -R 777 xxx
(2)给xxx文件的拥有者添加可执行权限: chmod u+x xxx
cat /etc/issue
lsb_release -a
arch
uname -m
ls
ll
cd “a b”
rm *.xxx
rmdir xxx
mkdir tmp
man rm
ar -r libxx.a *.o
查看静态库libxx.a包含哪些.o文件,则执行:会在当前目录下产生libxx.a中包含的所有.o文件
ar -x libxx.a
g++ -shared -o libxx.so *.o
查看动态库libxx.so中包含哪些.cpp文件,则执行:
strings -a libxx.so | grep .cpp
pwd
sudo apt install tree
nm xx.a | grep fun1
查看动态库是否含有某个函数,如查看yy.so动态库中是否有fun2函数(也可以查看某个库所有包含的函数信息并写入info.txt中,则执行: $ nm yy.so > info.txt),执行(如果仅导出已定义的符号,则加上"-D"选项,执行: $ nm -D yy.so | grep fun2):
nm yy.so | grep fun2
cat /proc/cpuinfo
date
cal -y 2013
shutdown -h now
shutdown -r now
cd /mnt/hgfs/test
ln -s /home/spring/aa /usr/local/aa
每个文件都有时间戳,这个时间戳包括访问时间和修改时间,而touch命令主要就是用来修改文件的访问时间和修改时间.如将文件a.txt的时间戳改为当前时间,则执行:
touch a.txt
cat aa.txt bb.txt
nl aa.txt
more aa.txt
less aa.txt
head aa.tx
t
31. 通过tail命令,用来显示文件的末尾内容,如显示aa.txt,执行:
tail aa.txt
which ls
find . -name “*.txt”
在当前目录查找此目录下所有文件内包含的指定关键字"ab",则执行:
find . -type f -print -exec grep ab {} ;
chmod -R 777 test
tar xvzf est2.tar.gz
du -h /test
diff -c 1.txt 2.txt
grep -n ‘android’ test1.txt test2.txt
如果要在当前目录下所有文件中查找"AB"字符串,则执行:
grep -rn “AB” *
find . -name “.frm" -or -name ".bas” -or -name “*.asp” | xargs wc -l result.txt
free -m
apt-get install g++
c++filt _ZN9CBC_EAN1312RenderBitmapERP12CFX_DIBitmapRi
$ echo 2 >> /home/spring/1.txt,将2追加写入到1.txt文件中
echo P A T H 44. w i n d o w s 上 的 ∗ . r a r 压 缩 文 件 , 在 U b u n t u 上 可 以 通 过 t a r 命 令 或 u n r a r 命 令 来 进 行 解 压 缩 , 如 解 压 缩 t e s t . r a r 文 件 , 若 用 r a r 命 令 , 则 需 先 安 装 执 行 : PATH 44. windows上的*.rar压缩文件,在Ubuntu上可以通过tar命令或unrar命令来进行解压缩,如解压缩test.rar文件,若用rar命令,则需先安装执行: PATH44.windows上的∗.rar压缩文件,在Ubuntu上可以通过tar命令或unrar命令来进行解压缩,如解压缩test.rar文件,若用rar命令,则需先安装执行: sudo apt-get install rar,然后再执行:$ rar x test.rar;若用unrar命令,则需先安装执行:
$ sudo apt-get install unrar,
然后再执行:
$ unrar x -r test.rar
ps -ef | grep test
ps aux | grep test | awk ‘{print $2}’ | xargs kill -9
eog /images/a.jpg
scp -r b.jpg [email protected]:/home/test/fbc/
ifconfig
sudo apt-get install -y openssh-server
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
sudo apt-get update
sudo apt-get install google-chrome-stable
sudo rm /var/crash/*
file test/*.cpp
sudo dpkg -i code_1.13.0-1496940180_amd64.deb
touch macro.txt; cpp -dM ./macro.txt
dos2unix a.cpp
tail -f info.log
ldd libopencv_core.so
sudo chown spring kcov-36.tar.gz
若将当前目录下的所有文件的用户组调整为spring,所属组也调整为spring,则执行:
sudo chown -R spring:spring *
passwd spring
,后会提示输入用户spring当前密码,然后再输入两次新密码;若提示新密码太短,需要重新输入稍长一点的密码;若提示密码成功更新,则说明修改密码成功
echo | /usr/bin/gcc -dM -E -
echo | /usr/bin/g++ -dM -E -x c++ -
arm-linux-androideabi-objdump -p libopencv_core.so | grep NEEDED
65.查看当前文件下的内存大小