0 Ubuntu相关命令简介
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:显示某个命令的帮助手册
1. cd命令技巧(进入某个文件夹)
cd ~
直接进入用户的home目录:
cd -
进入上一个目录:
cd ..
退到上一层目录
cd ../..
进入当前目录的上两层目录:
进入当前文件夹
cd 文件夹名字
2.ls命令技巧(list的缩写,查看目录结构)
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 -m
所有项目以逗号分隔,并填满整行行宽
ls -o
类似 -l,显示文件的除组信息外的详细信息。
ls -r
, –reverse 依相反次序排列
ls -R
, –recursive 同时列出所有子目录层
ls -s, –size 以块大小为单位列出所有文件的大小
ls过滤
通配符:*
即可以代替任何符号数字
使用例子如下;ls *.py
代表显示当前文件夹中名字带有.py
后缀的所有文件,*可以代表长度无限的数值或符号。
若 ls ?.py
代表显示当前文件夹中名字带有.py
后缀的所有文件,但是?只能代表一个数值或符号
若 ls 1[1-6]5.py
代表显示当前文件夹中带有.py
后缀,且第一个为1,第二个为1到6的数字,第三个为5的 所有文件。
3.cp复制命令技巧
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
4 rm文件夹删除命令
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
5.Vim工具打开、编辑、保存文件
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
6 tree命令 :显示当前路径中所有文件,并且用树状显示
7.mv移动文件命令技巧(类似剪切功能)
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键
,那么那个文件将会被删除
,否则不会。
- 使用更新选项
-i 选项会提示我们关于覆盖文件的提示,而 -u 则只在源文件比目标文件新时才执行更新。让我们看一看下面的例子:
假如 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
- 复制时创建备份
默认情况下,移动文件将会覆盖已存在的目标文件。但是如果我们移动错了文件而目标文件已经被新的文件覆盖了,这时应该怎么办才好呢?有没有一种方法可以恢复之前的文件呢?答案是肯定的。我们可以用-b选项。该选项会在新文件覆盖旧文件时将旧文件做备份。这里我们还以第8点为例。
$ 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
8.tar打包命令常见用法
用于归档多个文件或目录到单个归档文件中,并且归档文件可以进一步使用 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
9.ubuntu常用的解压命令
首先解压缩之前有限你需要有压缩包,没有的话,可以下载
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才是压缩过的文件
10Ubuntu中find命令详解
用法总结如下:
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
11.Ubuntu中chmod修改权限的用法
一、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
12.ubuntu常用命令汇总:
- 获取Ubuntu版本号:可执行以下任一命令
cat /etc/issue
lsb_release -a
- 查看Ubuntu系统位数:可执行以下任一命令
uname -ar
getconf LONG_BIT
- 查看Ubuntu机器的处理器架构,结果为i686或x86_64:可执行以下任一命令
arch
uname -m
- 显示当前目录内容(目录清单),(如果按文件改动时间顺序来排序,则可用: $ ls -lt):
ls
- 显示当前目录下文件的详细信息,包括读写权限,文件大小,文件生成日期等(若想按照更改的时间先后排序,则需加-t参数,按时间降序(最新修改的时间排在最前)执行: $ ll -t, 按时间升序执行: $ ll -t | tac):
ll
- 改变当前工作目录位置(若进入系统根目录,如usr,则可直接执行: $ cd /usr),若文件夹有空格,则需用引号括起来,如进入目录名为a b的目录,则执行:
cd “a b”
- 删除当前目录中指定文件,如删除.xxx的所有文件(对于链接文件,只是删除了链接,原有文件均保持不变;如果没有使用-r选项,则rm不会删除目录;如果想删除前再次获取确认,可使用-i选项,如: $ rm -i .xxx)执行:
rm *.xxx
- 删除空目录,如xxx,一个目录被删除之前必须是空的,删除某目录时也必须具有对父目录的写权限,执行:
rmdir xxx
- 移动文件(若将文件xx.yy移动到目录tt中,则执行:$ mv xx.yy tt)或将文件改名(若将文件名xx.yy改为aa.bb,则执行: $ mv xx.yy aa.bb): $ mv 源文件或目录 目标文件或目录
- 复制文件(可同时有多个文件)或目录到指定的目录(若将目录aa复制到目录bb中,则执行: $ cp -a aa bb): $ cp 源文件或源目录 目的目录
- 建立新目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录,如tmp(如果创建权限为777的目录,可执行: $ mkdir -m 777 tmp),则执行(如果要建立多级目录,如tmp/xxx/yyy,则执行:$ mkdir -p tmp/xxx/yyy):
mkdir tmp
- 查看某个指令的详细说明,如查看rm指令,则执行:
man rm
- 创建静态库,如使用当前目录中的所有.o文件创建libxx.a静态库,则执行:
ar -r libxx.a *.o
查看静态库libxx.a包含哪些.o文件,则执行:会在当前目录下产生libxx.a中包含的所有.o文件
ar -x libxx.a
- 创建动态库,如使用当前目录中的所有.o文件创建libxx.so动态库(若有两个在不同目录的.cpp文件直接生成动态库,则执行: $ g++ -shared add/add.cpp subtract/subtract.cpp -o libtest.so)(若从静态库b1.a, b2,a直接生成动态库b.so,则相应命令为: $ g++ -shared -fPIC -Wl,–whole-archive b1.a b2.a -Wl,–no-whole-archive -o b.so):
g++ -shared -o libxx.so *.o
查看动态库libxx.so中包含哪些.cpp文件,则执行:
strings -a libxx.so | grep .cpp
- 查看当前所处路径(完整路径),执行:
pwd
- 提示需要权限执行的命令,如果你不是root用户,那么在执行一些命令做一些操作的时候有时是不允许的,此时可以在命令前面加上sudo,如安装tree,执行:
sudo apt install tree
- 查看静态库是否含有某个函数,如查看xx.a静态库中是否有fun1函数(也可以查看某个库所有包含的函数信息并写入fun.txt中,则执行: $ nm xx.a > fun.txt),执行:
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
- 查看cpuinfo相关信息:
cat /proc/cpuinfo
- 显示系统日期:
date
- cal命令用于查看公历(阳历)日历,可以查看指定年份的(也可以查看当前月的,直接用cal,无需带任何参数),如查看2019年的,执行
cal -y 2013
- 关闭系统(若非root,则shutdown前需加sudo):
shutdown -h now
- 重启系统(若非root,则shutdown前需加sudo):
shutdown -r now
- 与windows共享目录命令,如共享目录为test(http://download.csdn.net/detail/jiaoxiaogu/7309181),执行:
cd /mnt/hgfs/test
- 创建一个指向文件或目录的软连接(当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间),格式为:$ ln -s 源文件 目标文件.文件保持同步变化;目录只能创建软链接,目录创建链接必须用绝对路径,在链接目标目录中修改文件都会在源文件目录中同步变化.如给源目录/home/spring/aa创建一个新的目录/usr/local/aa,执行:
ln -s /home/spring/aa /usr/local/aa
- 更改文件或目录的日期时间,包括存取时间和更改时间(若有两个文件a.b,c.e,将c.e的文件的日期修改成a.b的日期,则为:$ touch a.b c.e),或者新建一个不存在的文件(若将已存在的aa.x文件新建成一个bb.y文件(bb.y文件原始是不存在的),并且保持与aa.x文件的内容、创建修改时间一致,则执行:$ touch aa.x bb.y),格式:$ touch 源文件名 目的文件名
每个文件都有时间戳,这个时间戳包括访问时间和修改时间,而touch命令主要就是用来修改文件的访问时间和修改时间.如将文件a.txt的时间戳改为当前时间,则执行:
touch a.txt
- 显示文件内容(若显示aa.txt的文件内容,则:$ cat aa.txt),或者将几个文件连接起来显示,如显示aa.txt, bb.txt则执行:
cat aa.txt bb.txt
- 将输出的文件内容自动的加上行号,如显示文件aa.txt,执行:
nl aa.txt
- 可通过more命令,以一页一页的方式显示文件的内容,按空格键(space)为显示下一页;按b键会往回(back)一页显示;按q键退出,如查看aa.txt内容,执行:
more aa.txt
- 可通过less命令,分页显示文件的内容,类似于more,但比more功能更强大;按q键退出;若搜索文件中某个字符串xxx,则按Esc键,然后Shift+“:”,可使用/xxx来做到;通过加入-N参数来显示每行的行号,如查看aa.txt内容,执行:
less aa.txt
- 通过head命令,用来显示文件的开头内容,如显示aa.txt,执行:
head aa.tx
t
31. 通过tail命令,用来显示文件的末尾内容,如显示aa.txt,执行:
tail aa.txt
- 查看某个系统命令是否存在或者查看某个可执行文件的位置,若查找ls命令的位置,则执行:会返回/bin/ls,若找不到该命令(或该执行文件),则不会有任何返回结果:
which ls
- 在当前目录查找文件名后缀为txt的所有文件(若从系统根目录查找,则执行:$ find / -name “.txt";若从你的 H O M E 目 录 查 找 , 则 执 行 : HOME目录查找,则执行: HOME目录查找,则执行: find ~ -name ".txt”;在/etc目录查找,则执行:$ find /etc -name “.txt";若要在当前目录查找文件名以一个小写字母开头,最后是4到9加上.log结束的文件,则执行:$ find . –name "[a-z][4-9].log”)执行:(若想按排序输出查找的结果,则在最后添加 “| sort”, 如:$ find / -name “.txt” | sort)
find . -name “*.txt”
在当前目录查找此目录下所有文件内包含的指定关键字"ab",则执行:
find . -type f -print -exec grep ab {} ;
- chmod命令用于改变linux系统文件或目录的访问权限.Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作.文件或目录的访问权限分为只读、只写和可执行三种.有三种不同类型的用户可对文件或目录进行访问,文件所有者(一般是文件的创建者),同组用户,其他用户.每一文件或目录的访问权限都有三组,每组用三位来表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限.当用"ls -l"命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限.第一列共有10个位置,第一个字符指定了文件类型.在通常意义上,一个目录也是一个文件.如果第一个字符是横线,表示是一个非目录的文件.如果是d,表示是一个目录.从第二个字符开始到第十个共9个字符,3个字符一组,分别表示了3组用户对文件或者目录的权限.权限字符用横线代表空许可,r代表只读,w代表写,x代表可执行.确定了一个文件的访问权限后,用户可以利用chmod命令来重新设定不同的访问权限.权限代号:r:读权限,用数字4表示;w:写权限,用数字2表示;x:执行权限,用数字1表示;-:删除权限,用数字0表示;s:特殊权限.如对目录test及其子目录所有文件添加可读可写可执行权限,则执行:
chmod -R 777 test
- 可以用tar命令进行压缩、解压缩、打包、解包等.打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个个小文件.使用tar程序打出来的包常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进行压缩.常用参数:-c:建立新的压缩文件;-x:从压缩的文件中提取文件;-z:支持gzip解压文件;-j:支持bzip2解压文件;-Z:支持compress解压文件;-v:显示操作过程;-f:指定压缩文件.如,有个目录test1,将其打包则执行:$ tar cvf test1.tar test1;若将其打包并以gzip压缩,则执行:$ tar zcvf est1.tar.gz test1; 若解包或解压缩,则相应的把cvf和zcvf换成xvf和zxvf即可,如把test2.tar.gz解压缩,则执行:则会在当前目录下生成一个test2文件
tar xvzf est2.tar.gz
- 查看文件或目录空间大小,可以用du命令,如显示/test目录大小,则执行:$ du -hs /test;若想查看/test目录及/test目录下的每个子目录的大小,则执行:
du -h /test
- diff能比较单个文件或者目录内容.如果指定比较的是文件,则只有当输入为文本文件时才有效.以逐行的方式,比较文本文件的异同处.如果指定比较的是目录的时候,diff命令会比较两个目录下名字相同的文本文件.列出不同的二进制文件、公共子目录和只在一个目录出现的文件.如比较1.txt和2.txt两个文本文件,可执行:会将内容不同的地方在行之前用"!"标出.
diff -c 1.txt 2.txt
- grep命令是一种强大的文本搜索工具.如从test.txt文件中查找android关键词,则执行:$ grep -n ‘android’ test.txt.也可以同时从多个文件中查找关键词,如在test1.txt和text2.txt中查找android,则执行:$
grep -n ‘android’ test1.txt test2.txt
如果要在当前目录下所有文件中查找"AB"字符串,则执行:
grep -rn “AB” *
- wc命令用于统计指定文件中的行数、字数、字节数,并将统计结果显示输出.如执行:$ wc test.txt,输出为8 9 10 test.txt,其中8表示行数,9表示字数,10表示字节数,test.txt表示文件名.如果统计当前目录下带有后缀名为frm、asp、bas的代码行数,则命令为:执行完此命令后会在当前目录下生成一个result.txt文件,里面包含了每个文件(frm/bas/asp)的代码行数以及总的代码行数.
find . -name “.frm" -or -name ".bas” -or -name “*.asp” | xargs wc -l result.txt
- free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer.如执行:则会以MB为单位显示内存使用情况
free -m
- 可以使用apt-get命令来安装/更新一个deb包,如安装g++,则执行:若不是root用户,需加sudo
apt-get install g++
- c++filt命令:C++函数在Linux系统下编译之后会变成类似这样:_ZN9CBC_EAN1312RenderBitmapERP12CFX_DIBitmapRi,乍一看并不知道函数的原始名称,此时可以用c++filt命令,执行:即可显示原始函数名称CBC_EAN13::RenderBitmap(CFX_DIBitmap*&,int&)
c++filt _ZN9CBC_EAN1312RenderBitmapERP12CFX_DIBitmapRi
- echo命令是内建的shell命令,用于显示变量的值或者打印一行文本,如查看由哪些文件目录加入到了系统环境变量中(PATH前面的$表示后面接的是变量),则可执行:可以通过输入:
$ 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命令用来查看Linux系统所有进程,如果想查看包含指定名字的进程如test,则可以执行:
ps -ef | grep test
- 杀死指定的进程可以用kill命令,如杀死进程PID为30732的进程,则可以执行:$ kill -9 30732,若需要批量杀死进程,则可执行:
ps aux | grep test | awk ‘{print $2}’ | xargs kill -9
- 查看Linux系统CPU和内存使用率,可以通过top命令:即先在终端输入top命令回车,然后再按1即可
- 通过命令eog打开显示图像,如打开/images/a.jpg,则执行:
eog /images/a.jpg
- 远程拷贝文件: 可以通过"scp"命令,如从远程服务器传某个指定目录或文件到本地指定目录,则执行:$ scp -r xxx spring@10.0.0.66:/home/spring/yyy/;若存放到本地根目录,可以执行:$ scp -r a.jpg spring@10.0.0.66:~/;执行以上命令时会要求输入本地机子的密码,若不想每次都输入,可以执行:$ ssh-copy-id spring@10.0.0.66,这样下次在传文件时就不用重复输入密码了;若从本地传文件到远程服务器,则执行:
scp -r b.jpg test@10.0.8.88:/home/test/fbc/
- 查看机子ip和MAC地址执行:
ifconfig
- 安装SSH-SERVER执行:可以通过ssh命令访问指定的ubuntu主机,假设要访问的ubuntu主机名为spring, ip为10.0.1.1,又知道此主机的密码,则执行:ssh spring@10.0.1.1 ,回车,再输入这台主机的密码即可
sudo apt-get install -y openssh-server
- 安装Google Chrome,依次执行以下命令:
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
- 解决弹出对话框"System program problem detected Do you want to report the problem now?"的问题,在终端输入:
sudo rm /var/crash/*
- 在Ubuntu上查看指定文件是采用何种编码方式可以使用file命令,如查找test目录下所有的.cpp文件的编码格式,则执行:
file test/*.cpp
- 在Ubuntu上安装.deb文件命令,如code_1.13.0-1496940180_amd64.deb,执行:
sudo dpkg -i code_1.13.0-1496940180_amd64.deb
- 在Ubuntu上查看GCC编译器支持哪些宏,则执行命令:其中macro.txt的名字可任意
touch macro.txt; cpp -dM ./macro.txt
- 在Ubuntu下去除文件中的"^M"字符(此字符在windows上产生),如a.cpp,则执行命令:
dos2unix a.cpp
- 为了实时监控日志文件,可以通过tail命令,如实时查看info.log,则可执行命令:
tail -f info.log
- 查看可执行文件和动态库依赖哪些动态库,可以通过ldd命令,如查看libopencv_core.so,则执行:
ldd libopencv_core.so
- 可以通过chown命令设置文件所有者,如将kcov-36.tar.gz的用户组权限由root调整为spring,若非root权限,需加sudo,执行:
sudo chown spring kcov-36.tar.gz
若将当前目录下的所有文件的用户组调整为spring,所属组也调整为spring,则执行:
sudo chown -R spring:spring *
- 由当前普通用户切换到root用户,执行:$ sudo su ,需要输入当前普通用户的密码即可;退出root用户,执行: $ exit,即会回到之前的普通用户
- 修改当前普通用户spring登入密码,执行:$
passwd spring
,后会提示输入用户spring当前密码,然后再输入两次新密码;若提示新密码太短,需要重新输入稍长一点的密码;若提示密码成功更新,则说明修改密码成功
- 查看某个编译器(preprocessor)定义的宏,如/usr/bin/gcc和/usr/bin/g++,可通过执行如下命令获取:
echo | /usr/bin/gcc -dM -E -
echo | /usr/bin/g++ -dM -E -x c++ -
- 在linux上可通过ldd查看liunx上的可执行文件或动态库依赖哪些动态库,但是在linux上查看android上的可执行文件或动态库依赖哪些动态库不能通过ldd,此时可通过android上的objdump可执行文件获取,如armv7中的arm-linux-androideabi-objdump,查看android armv7上的opencv动态库libopencv_core.so,可通过执行如下命令获取:
arm-linux-androideabi-objdump -p libopencv_core.so | grep NEEDED
65.查看当前文件下的内存大小
du -h --max-depth=1