linux - 常用命令

wget 命令

wget -c 下载链接 断点续传
wget --user-agent=" "  下载链接  //设置代理
wget --no-cookies --header "Cookie:设置cookie" 下载链接 //设置cookie
wget 下载链接 -O rename.zip //下载重命名
wget --limit-rate 300 下载链接 //下载限速

linux - date命令

date命令的帮助信息
 [root@localhost source]# date --help
用法:date [选项]... [+格式]
 或:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
以给定的格式显示当前时间,或是设置系统日期。

  -d,--date=字符串              显示指定字符串所描述的时间,而非当前时间
  -f,--file=日期文件            类似--date,从日期文件中按行读入时间描述
  -r, --reference=文件          显示文件指定文件的最后修改时间
  -R, --rfc-2822                以RFC 2822格式输出日期和时间
                                例如:2006年8月7日,星期一 12:34:56 -0600
      --rfc-3339=TIMESPEC       以RFC 3339 格式输出日期和时间。
                                TIMESPEC=`date',`seconds',或 `ns' 
                                表示日期和时间的显示精度。
                                日期和时间单元由单个的空格分开:
                                2006-08-07 12:34:56-06:00
  -s, --set=字符串              设置指定字符串来分开时间
  -u, --utc, --universal        输出或者设置协调的通用时间
      --help            显示此帮助信息并退出
      --version         显示版本信息并退出

给定的格式FORMAT 控制着输出,解释序列如下:

  %%    一个文字的 %
  %a    当前locale 的星期名缩写(例如: 日,代表星期日)
  %A    当前locale 的星期名全称 (如:星期日)
  %b    当前locale 的月名缩写 (如:一,代表一月)
  %B    当前locale 的月名全称 (如:一月)
  %c    当前locale 的日期和时间 (如:2005年3月3日 星期四 23:05:25)
  %C    世纪;比如 %Y,通常为省略当前年份的后两位数字(例如:20)
  %d    按月计的日期(例如:01)
  %D    按月计的日期;等于%m/%d/%y
  %e    按月计的日期,添加空格,等于%_d
  %F    完整日期格式,等价于 %Y-%m-%d
  %g    ISO-8601 格式年份的最后两位 (参见%G)
  %G    ISO-8601 格式年份 (参见%V),一般只和 %V 结合使用
  %h    等于%b
  %H    小时(00-23)
  %I    小时(00-12)
  %c    按年计的日期(001-366)
  %k    时(0-23)
  %l    时(1-12)
  %m    月份(01-12)
  %M    分(00-59)
  %n    换行
  %N    纳秒(000000000-999999999)
  %p    当前locale 下的"上午"或者"下午",未知时输出为空
  %P    与%p 类似,但是输出小写字母
  %r    当前locale 下的 12 小时时钟时间 (如:11:11:04 下午)
  %R    24 小时时间的时和分,等价于 %H:%M
  %s    自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数
  %S    秒(00-60)
  %t    输出制表符 Tab
  %T    时间,等于%H:%M:%S
  %u    星期,1 代表星期一
  %U    一年中的第几周,以周日为每星期第一天(00-53)
  %V    ISO-8601 格式规范下的一年中第几周,以周一为每星期第一天(01-53)
  %w    一星期中的第几日(0-6),0 代表周一
  %W    一年中的第几周,以周一为每星期第一天(00-53)
  %x    当前locale 下的日期描述 (如:12/31/99)
  %X    当前locale 下的时间描述 (如:23:13:48)
  %y    年份最后两位数位 (00-99)
  %Y    年份
  %z +hhmm              数字时区(例如,-0400)
  %:z +hh:mm            数字时区(例如,-04:00)
  %::z +hh:mm:ss        数字时区(例如,-04:00:00)
  %:::z                 数字时区带有必要的精度 (例如,-04,+05:30)
  %Z                    按字母表排序的时区缩写 (例如,EDT)

默认情况下,日期的数字区域以0 填充。
以下可选标记可以跟在"%"后:

  - (连字符)不填充该域
  _ (下划线)以空格填充
  0 (数字0)以0 填充
  ^ 如果可能,使用大写字母
  # 如果可能,使用相反的大小写

在任何标记之后还允许一个可选的域宽度指定,它是一个十进制数字。
作为一个可选的修饰声明,它可以是E,在可能的情况下使用本地环境关联的
表示方式;或者是O,在可能的情况下使用本地环境关联的数字符号。

时间输出
date是Linux系统里自带的一个系统命令,用来显示当前的系统时间,不过默认显示的结果里包括很多信息,特别是做为文件名输出时,不是很方便
好在date命令里包含格式化输出的选项

[root@root ~]# date "+%Y-%m-%d"  
2013-02-19  
[root@root ~]# date "+%H:%M:%S"  
13:13:59  
[root@root ~]# date "+%Y-%m-%d %H:%M:%S"  
2013-02-19 13:14:19  
[root@root ~]# date "+%Y_%m_%d %H:%M:%S"    
2013_02_19 13:14:58  
[root@root ~]# date -d today   
Tue Feb 19 13:10:38 CST 2013  
[root@root ~]# date -d now  
Tue Feb 19 13:10:43 CST 2013  
[root@root ~]# date -d tomorrow  
Wed Feb 20 13:11:06 CST 2013  
[root@root ~]# date -d yesterday  
Mon Feb 18 13:11:58 CST 2013  

时间设置
我们一般使用“date -s”命令来修改系统时间
比如将系统时间设定成2011年7月13日的命令:date -s 07/13/2011
将系统时间设定成11点12分0秒的命令:date -s 11:12:00
注意:这里说的是系统时间,是linux由操作系统维护的。
在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date -s后,如果马上重起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。
如果要确保修改生效可以执行如下命令。
#clock –w
这个命令强制把系统时间写入CMOS。


linux - cat

  • 查看一个文件:cat
描述:一次显示整个文件内容
cat 命令 用于查看纯文本文件(较短)
 cat [选项] [文件]…
1、cat f1.txt,查看f1.txt文件的内容。
2、cat -n f1.txt,查看f1.txt文件的内容,并且由1开始对所有输出行进行编号。
3、cat -b f1.txt,查看f1.txt文件的内容,用法与-n相似,只不过对于空白行不编号。
4、cat -s f1.txt,当遇到有连续两行或两行以上的空白行,就代换为一行的空白行。
5、cat -e f1.txt,在输出内容的每一行后面加一个$符号。
6、cat f1.txt f2.txt,同时显示f1.txt和f2.txt文件内容,注意文件名之间以空格分隔,而不是逗号。
7、cat -n f1.txt>f2.txt,对f1.txt文件中每一行加上行号后然后写入到f2.txt中,会覆盖原来的内容,文件不存在则创建它。
8、cat -n f1.txt>>f2.txt,对f1.txt文件中每一行加上行号后然后追加到f2.txt中去,不会覆盖原来的内容,文件不存在则创建它。

###################################
cat命令是linux下的一个文本输出命令,通常是用于观看某个文件的内容的;
cat主要有三大功能:
1.一次显示整个文件。
$ cat   filename
2.从键盘创建一个文件。
$ cat  >  filename
只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件。
$cat   file1   file2  > file
cat具体命令格式为 : cat [-AbeEnstTuv] [--help] [--version] fileName
说明:把档案串连接后传到基本输出(屏幕或加 > fileName 到另一个档案)
参数:
-n 或 –number 由 1 开始对所有输出的行数编号
-b 或 –number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 –squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 –show-nonprinting
范例:
cat -n linuxfile1 > linuxfile2 把 linuxfile1 的档案内容加上行号后输入 linuxfile2 这个档案里
cat -b linuxfile1 linuxfile2 >> linuxfile3 把 linuxfile1 和 linuxfile2 的档案内容加上行号(空白行不加)之后将内容附加到linuxfile3 里。
范例:
把 linuxfile1 的档案内容加上行号后输入 linuxfile2 这个档案里
cat -n linuxfile1 > linuxfile2
把 linuxfile1 和 linuxfile2 的档案内容加上行号(空白行不加)之后将内容附加到 linuxfile3 里。
cat -b linuxfile1 linuxfile2 >> linuxfile3
cat /dev/null > /etc/test.txt 此为清空/etc/test.txt档案内容
cat filename | tail -n 100 显示文件最后100行

cat filename | head -n 100 显示文件前面100行

cat filename | tail -n +100 从100行开始显示,显示100行以后的所有行

显示100行到500行

cat filename | head -n 500 | tail -n +100

在linux中复制一个文件的前n行到另一个文件中
在命令行直接输入:(将data.txt的前100000行复制到sample.txt中)
head -n 100000 data.txt > sample.txt

  • 在linux shell脚本中我们经常见到类似于cat << EOF的语句
    EOF是“end of file”,表示文本结束符。
<<EOF
(内容)
EOF

接下来,简单描述一下几种常见的使用方式及其作用:

1、cat<<EOF,以EOF输入字符为标准输入结束:
2、cat>filename,创建文件,并把标准输入输出到filename文件中,以ctrl+d作为输入结束:
注意:输入时是没有'>'的。
3、cat>filename<<EOF,以EOF作为输入结束,和ctrl+d的作用一样:
  • 追加文件
$cat << EOF >> test.sh  
>内容  
>EOF

将内容追加到 test.sh 的后面,不会覆盖掉原有的内容

  • 换一种写法
$cat >> test.sh << EOF 
>内容  
>EOF
  • EOF只是标识,不是固定的
$cat << HHH > iii.txt
> sdlkfjksl
> sdkjflk
> asdlfj
> HHH

这里的“HHH”就代替了“EOF”的功能。结果是相同的。

  • 非脚本中
    如果不是在脚本中,我们可以用Ctrl-D输出EOF的标识
$cat > iii.txt
skldjfklj
sdkfjkl
kljkljklj
kljlk
Ctrl-D

echo

  • echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
    该命令的一般格式为: echo [ -n ] 字符串
    其中选项n表示输出文字后不换行;字符串能加引号,也能不加引号。用echo命令输出加引号的字符串时,将字符串原样输出;用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割。
  • 功能说明:显示文字。
    语   法:echo [-ne][字符串]或 echo [–help][–version]
    补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。
  • 输入指令获得帮助
    sudo echo --help
用法:echo [短选项]... [字符串]...
 或:echo 长选项
将 STRING 回显到标准输出。

  -n		不尾随换行符
  -e		启用解释反斜杠的转义功能
  -E		禁用解释反斜杠的转义功能(默认)
      --help		显示此帮助信息并退出
      --version		显示版本信息并退出

若-e 可用,则以下序列即可识别:

  \\    反斜杠
  \a    响铃声
  \b    退格
  \c    不再产生新的输出
  \e    转义符  
  \f    换页
  \n    新行
  \r    回车
  \t    水平制表符
  \v    竖直制表符
  \0NNN   字节数以八进制数 NNN (1至3位)表示
  \xHH    字节数以十六进制数 HH (1至2位)表示
  • 显示字符串
    echo "the echo command test!"
    这个就会输出“the echo command test!”这一行文字!
  • 覆盖文件内容
    使用>指令覆盖文件原内容并重新输入内容,若文件不存在则创建文件。
    echo "Raspberry" > test.txt
  • 追加文件内容
    使用>>指令向文件追加内容,原内容将保存。
$echo "Raspberry" > test.txt  
$echo "Intel Galileo" >> test.txt 

touch

  • linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件。
touch [选项]... 文件...
-a   或--time=atime或--time=access或--time=use  只更改存取时间。
-c   或--no-create  不建立任何文档。
-d  使用指定的日期时间,而非现在的时间。
-f  此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m   或--time=mtime或--time=modify  只更改变动时间。
-r  把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t  使用指定的日期时间,而非现在的时间。
  • 创建不存在的文件
    touch 1.txt 2.txt
  • 更新1.txt的时间和2.txt时间戳相同
    touch -r 1.txt 2.txt
  • 设定文件的时间戳
    touch -t 201211142234.50 1.txt

Linux查看文件夹下的文件\目录个数

Linux下统计当前文件夹下的文件个数、目录个数

  • 查看当前目录下的文件数量(不包含子目录中的文件)

ls -l|grep "^-"| wc -l

  • 查看当前目录下的文件数量(包含子目录中的文件) 注意:R,代表子目录

ls -lR|grep "^-"| wc -l

  • 查看当前目录下的文件夹目录个数(不包含子目录中的目录),同上述理,如果需要查看子目录的,加上R

ls -l|grep "^d"| wc -l

  • 查询当前路径下的指定前缀名的目录下的所有文件数量

例如:统计所有以“20161124”开头的目录下的全部文件数量

ls -lR 20161124*/|grep "^-"| wc -l

对每个命令参数做一下说明备注:
ls -l
该命令表示以长列表输出指定目录下的信息(未指定则表示当前目录),R代表子目录中的“文件”,这个“文件”指的是目录、链接、设备文件等的总称

grep "^d"表示目录,"^-"表示文件

wc -l
表示统计输出信息的行数,因为经过前面的过滤已经只剩下普通文件,一个目录或文件对应一行,所以统计的信息的行数也就是目录或文件的个数

cat a.txt | grep ">" | wc -l

cat是打开一个文本文件的命令,|是管道,就是将cat命令的结果传给下一个命令,这里是grep
grep是搜索命令,这里所有匹配“>” ,并将结果传给wc命令
wc命令是统计命令,如文件的字符数等,wc -l是统计行数

http://man.linuxde.net/grep


du查看目录大小,df查看磁盘使用情况

  • du的英文为:disk usage,含义是磁盘空间使用情况,功能是逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块的情况,如果没有指定目录,则对当前的目录进行统计。
1.命令格式:

du [选项][文件]

2.命令功能:

显示每个文件和目录的磁盘使用空间。

3.命令参数:

-a或-all  显示目录中个别文件的大小。   

-b或-bytes  显示目录或文件大小时,以byte为单位。   

-c或--total  除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。 

-k或--kilobytes  以KB(1024bytes)为单位输出。

-m或--megabytes  以MB为单位输出。   

-s或--summarize  仅显示总计,只列出最后加总的值。

-h或--human-readable  以K,M,G为单位,提高信息的可读性。

-x或--one-file-xystem  以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。 

-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。   

-S或--separate-dirs   显示个别目录的大小时,并不含其子目录的大小。 

-X<文件>或--exclude-from=<文件>  在<文件>指定目录或文件。   

--exclude=<目录或文件>         略过指定的目录或文件。    

-D或--dereference-args   显示指定符号链接的源文件大小。   

-H或--si  与-h参数相同,但是K,M,G是以1000为换算单位。   

-l或--count-links   重复计算硬件链接的文件。

du -sh 查看当前文件夹的大小
du -sm . 查看当前目录包含子目录的大小 (其中的du -sm . 的“.”是代表当前目录。)
du -h 查看当前目录以及子目录的大小

  • 于du不同的是,du是面向文件的命令,只计算被文件占用的空间。不计算文件系统metadata 占用的空间。df则是基于文件系统总体来计算,通过文件系统中未分配空间来确定系统中已经分配空间的大小。df命令可以获取硬盘占用了多少空间,还剩下多少空间,它也可以显示所有文件系统对i节点和磁盘块的使用情况。
df [选项] [文件名] 
参数: 
-a:--all,显示所有的文件系统,包括虚拟文件系统,参考示例2。 
-B:--block-size,指定单位大小。比如1k,1m等,参考示例3。 
-h:--human-readable,以人们易读的GB、MB、KB等格式显示,参考示例4。 
-H:--si,和-h参数一样,但是不是以1024,而是1000,即1k=1000,而不是1k=1024。 
-i:--inodes,不用硬盘容量,而是以inode的数量来显示,参考示例5。 
-k:以KB的容量显示各文件系统,相当于--block-size=1k。 
-m:以KB的容量显示各文件系统,相当于--block-size=1m。 
-l:--local,只显示本地文件系统。 
--no-sync:在统计使用信息之前不调用sync命令(默认)。 
-sync:在统计使用信息之前调用sync命令。 
-P:--portability,使用POSIX格式显示,参考示例6。 
-t:--type=TYPE,只显示指定类型的文件系统,参考示例7。 
-T:--print-type,显示文件系统类型,参考示例8。 
-x:--exclude-type=TYPE,不显示指定类型的文件系统。 
--help:显示帮助信息。 
--version:显示版本信息。

df -lh 查看根目录各个文件夹占用大小
ls -lh 查看当前文件夹内文件的大小

查看文件大小。参数-h 表示Human-Readable,使用GB,MB等易读的格式方式显示。

du -h . --max-depth=1 ~
用这个命令查看自己的占用
du -lh ./ --max-depth=1 |sort -n
查看目录占用情况,并从大到小排序
du -lh ./ --max-depth=1 |sort -nr
查看目录占用情况,并从小到大排序


linux - 清除回收站

清除回收站
sudo rm -rf ~/.local/share/Trash/*

其实如果不在GUI里删除文件,一般都会被直接rm删光光。


linux - rename

rename命令用字符串替换的方式批量改变文件名。

通过 man rename 命令可以得知,rename 命令其实是一个 Perl 脚本命令,
它专用于批量地给多文件重命名(rename multiple files)。

命令格式: 
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ] 
perlexpr 是一种 Perl 脚本格式的正则表达式。
参数:
-v, --verbose 
Verbose: print names of files successfully renamed.
详细模式:打印成功更改的文件名列表
-n, --no-act 
No Action: show what files would have been renamed.
测试模式:并不真正的执行命令,而只是显示哪些文件名应该怎么进行
更改,用于测试模式。
-f, --force 
Force: overwrite existing files.
强制模式:在更改文件名,如果更改后的文件已经存在时覆盖已经存在
的文件。

rename -v 's/avaterf0f8000-//' *
rename 's/.mel//' *


0. 批量更改文件扩展名 
$ ls 
1.txt 2.txt 3.txt 4.txt 
$ rename 's//.txt//.ext/' * 
$ ls 
1.ext 2.ext 3.ext 4.ext 
1. 批量删除文件扩展名 
$ ls 
1.txt 2.txt 3.txt 4.txt 
$ rename 's//.txt//' * 
$ ls 
1 2 3 4 
2. 批量添加文件扩展名 
   $ ls 
1 2 3 4 
$ rename 's/$//.txt/' * 
$ ls 
1.txt 2.txt 3.txt 4.txt 
3. 按自己的方式批量重命名文件 
$ ls 
1.ext 2.ext 3.ext 4.ext 
$ rename 's/(/d)/第$1 章/' * 
$ ls 
第 1 章.ext 第 2 章.ext 第 3 章.ext 第 4 章.ext 

linux - copy/mv 文件夹

CP命令
格式: CP [选项]  源文件或目录   目的文件或目录
选项说明:-b 同名,备分原来的文件
        -f 强制覆盖同名文件
        -r  按递归方式保留原目录结构复制文件

cp     -r         /tmp/a              /root/a
记得有空格
  • 复制文件夹内所有文件到另一个文件夹
cp -Rf /home/user1/* /root/temp/
将 /home/user1目录下的所有东西拷到/root/temp/下而不拷贝user1目录本身。
即格式为:cp -Rf 原路径/ 目的路径/

linux - 查找命令

Linux下文件搜索、查找、查看命令
1、最强大的搜索命令:find 查找各种文件的命令 
2、在文件资料中查找文件:locate  
3、搜索命令所在的目录及别名信息:which 
4、搜索命令所在的目录及帮助文档路径:whereis
5、在文件中搜寻字符串匹配的行并输出:grep
6、分页显示一个文件或任何输出结果:more
7、分页显示一个文件并且可以回头:less
8、指定显示前多少行文件内容:head
9、指定显示文件后多少行内容:tail
10、查看一个文件:cat
11、查看文件内容多少字符多少行多少字节:wc
12、排序文件内容:sort

find 命令

find < expression > < cmd >

  • path: 所要搜索的目录及其所有子目录。默认为当前目录。
    • expression: 所要搜索的文件的特征。
    • cmd: 对搜索结果进行特定的处理。
      如果什么参数也不加,find 默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。
find 命令常用选项及实例

一、根据 文件或目录名称 搜索

  • -name 按照文件名查找文件,区分大小写
  • -iname 按照文件名查找文件,不区分大小写
find / -name 文件夹  -d
find /dir -name filename  在/dir目录及其子目录下面查找名字为filename的文件
find . -name  *.c

①、find /etc -name init (精准搜索,名字必须为 init 才能搜索的到)
②、find /etc -iname init (精准搜索,名字必须为 init或者有字母大写也能搜索的到)
③、find /etc -name *init (模糊搜索,以 init 结尾的文件或目录名)
④、find /etc -name init??? (模糊搜索,? 表示单个字符,即搜索到 init___)
一 根据文件大小查找
liunx查找大于100M的文件
find / -type f -size +100M

eg:在根目录下查找大于 100M 的文件
find / -size +204800
这里 +n 表示大于,-n 表示小于,n 表示等于
1 数据块 == 512 字节 0.5KB,也就是1KB等于2数据块
100MB == 102400KB204800数据块
  • 寻找超过100M的文件,并将其删除
find / -type f -size +100M | xargs rm -rf

其中第一个/表示路径,此时表示的是根目录,也就是搜索全部的文件

-type表示类型

f表示是文件

-size 表示大小

+100M:表示大于100M

后面就是执行的命令。

当然也可以寻找特定后缀的文件,比如:find / -name “*.mp3” |xargs rm -rf,就是寻找以mp3结尾的文件并删除。一般我们在删除之前需要确认删除的文件是否正确,所以我们一般是去掉后面的执行命令,先找出文件列表,再执行。
1.查看小于100MB的文件,并移动到指定文件夹
find .. -size -100M -exec mv {} ./ \;
注意⚠️:在{}和\之间必须要有空格,否则会报错 find: missing argument to `-exec'

2.查看文件个数
查看120天前的文件个数
# find . -mtime +120 | wc -l
一般如果是小文件,控制在10-20万左右。
解释:-mtime +30 --设置时间为30天前;
-exec mv --查找完毕后执行移动操作;

3.按照时间移动到指定目录里
# find . -mtime +90 -exec mv {} /var/tmp/date_90 \;

4.计算大小
# du -sh date_90
大小一般控制在10-15G最好

5.压缩并打包
#tar -zcvf date_90.tar.gz date_90/
二 根据所有者和所属组查找
①、在home目录下查询所属组为 root 的文件
    find /home -group root
②、在home目录下查询所有者为 root 的文件
    find /home -user root
三 根据时间属性查找

find 【路径】【选项】【时间】

选项有下面三种:-amin 访问时间
         -cmin 文件属性被更改
         -mmin 文件内容被修改
时间:+n,-n,n分别表示超过n分钟,n分钟以内和n分钟
eg:在 /etc 目录下查找5 分钟内被修改过属性的文件和目录
    find /etc -cmin -5
  • -mtime -n +n 按照文件的更改时间来查找文件, -n 表示文件更改时间距现在 n 天以内,+n 表示文件更改时间距现在 n 天以前。
find / -mtime -5 –print 在系统根目录下查找更改时间在5日以内的文件
find /var/adm -mtime +3 –print 在/var/adm目录下查找更改时间在3日以前的文件
四 根据文件类型或i节点查找
 -type 根据文件类型查找:
 f表示文件,d表示目录,l表示软链接
 -type 查找某一类型的文件,
诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。

find /etc -type d –print 在/etc目录下查找所有的目录
find . ! -type d –print 在当前目录下查找除目录以外的所有类型的文件
find /etc -type l –print 在/etc目录下查找所有的符号链接文件
e
g:查找 /home 目录下文件类型是目录的
find /home -type d
  -inum 根据i节点查找
eg:查找 /tmp 目录下i节点为400342的文件或目录
  find /tmp -inum 400342
五 组合条件 搜索

这里有两个参数:
  ①、-a 表示两个条件同时满足(and)
  ②、-o 表示两个条件满足任意一个即可(or)
  范例:查找/etc目录下大于80MB同时小于100MB的文件
  find /etc -size +163840 -a -size -204800

grep 命令
  • grep [选项] pattern [文件名]

命令中的选项为:

-? 同时显示匹配行上下的?行,如:grep -2 pattern filename 同时显示匹配行的上下 2 行。
-b,—byte-offset 打印匹配行前面打印该行所在的块号码。
-c,—count 只打印匹配的行数,不显示匹配的内容。
-f File,—file=File 从文件中提取模板。空文件中包含 0 个模板,所以什么都不匹配。
-h,—no-filename 当搜索多个文件时,不显示匹配文件名前缀。
-i,—ignore-case 忽略大小写差别。
-q,—quiet 取消显示,只返回退出状态。0 则表示找到了匹配的行。
-l,—files-with-matches 打印匹配模板的文件清单。
-L,—files-without-match 打印不匹配模板的文件清单。
-n,—line-number 在匹配的行前面打印行号。
-s,—silent 不显示关于不存在或者无法读取文件的错误信息。
-v,—revert-match 反检索,只显示不匹配的行。
-w,—word-regexp 如果被 <和> 引用,就把表达式做为一个单词搜索。
-V,—version 显示软件版本信息。

ls -l | grep '^a' 通过管道过滤ls -l输出的内容,只显示以a开头的行。
grep 'test' d* 显示所有以d开头的文件中包含test的行。
grep 'test' aa bb cc 显示在aa,bb,cc文件中匹配test的行。
grep '[a-z]' aa 显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
grep 'w(es)t.*' aa 如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(),找到就显示该行。如果用egrep或grep -E,就不用""号进行转义,直接写成'w(es)t.*'就可以了。
grep -i pattern files :不区分大小写地搜索。默认情况区分大小写
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),
grep -C number pattern files :匹配的上下文分别显示[number]行,
grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。
which 命令

which 命令的作用是,在 PATH 变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

which 命令的使用实例:

$ which grep
/bin/grep
显示前几行文件内容:head
head[必要参数][选择参数][文件]
用于显示指定文件开始多少行内容
命令参数:
-n 10	显示前10行
-n -10	正常输出但不显示最后的10行
eg:显示new.txt的前两行内容
head -n 2 new.txt
head -2 new.txt
指定显示文件后多少行内容:tail
tail[必要参数][选择参数][文件]
用于显示指定文件末尾多少行内容
命令参数:
-n 10	显示后面10行
-f	持续刷新显示的内容
eg:显示new.txt的末尾两行内容
tail -n 2 new.txt
tail -2 new.txt
eg:指定从第二行开始显示
tail -n +2 new.txt
查看文件内容多少字符多少行多少字节:wc
描述:wc 命令默认情况下会打印换行符数、单词数和字符数。
 用法:wc [选项] [文件]
参数作用
-l显示行数
-w只显示单词数
-c只显示字节数

linux命令 - tree

  • 安装
    sudo apt-get install tree
    安装完成以后输出tree –help既可以查看tree命令的使用方法。
    这里写图片描述

  • tree -L 1
    只查看当前第一级的目录和文件使用

  • tree -L 2
    只查看当前第二级的目录和文件使用

  • 有时候我们需要导出文件的目录结构,例如将上述的结果导入到test.txt文件中:
    tree -L 2 >/var/test.txt


history

模糊查询,history | grep -i "xxx"

history | tail -n 3

如何让history可以有时间戳显示

# export HISTTIMEFORMAT='%F %T '

 1027  2012-07-04 01:12:53 ls /etc/bash*
 1028  2012-07-04 01:13:17 vi /etc/bashrc
 1029  2012-07-04 01:16:04 history

清除history记录
如果想要删除特定命令,请输入 :history -d <行号>
要清空全部历史记录,请执行:history -c
注:清除history之后,.bash_history里仍会有历史记录

如何不让系统记录历史命令

# export HISTSIZE=0
# history
# [Note that history did not display anything]

另一种实现这个功能的方法是按ctrl+r 来调用命令历史记录的递归搜索,输入后,提示变为:

(reverse-i-search)':

现在可以输入一个命令,并且会显示匹配的命令,按回车键执行。

更改已执行的命令
history 还允许使用不同的语法重新运行命令

例如,改变以前的命令 history | grep dnf 成 history | grep ssh,可以执行以下命令:

$^dnf^ssh^

history 会将dnf替换为ssh,并重新执行


alias 命令别名

  • alias -p
    列出当前用户设置的所有命令别名。alias 若没有加参数,效果跟 alias -p 一样。
  • alias [别名]=[需要别名的命令]
alias [别名]=[需要别名的命令]
# 注意,等号两边不要空格,若命令包含空格,则一定要加‘’
  • unalias [别名]
    删除当前用户的别名[别名]。
unalias [-a][alias_name]

unalias -a 删除所有已设置的别名

unalias alias_name 仅删除alias_name的别名
  • 如果想要永久保存定义的alias,可以将其写入 ~/.bashrc 中去
root@localtion $ vim ~/.bashrc 

root@localtion $ tail -1 ~/.bashrc 
alias aliasTest="echo Hello world"

linux中的; &&和& 与 |和||用法

在用linux命令时候,我们可以一行执行多条命令或者有条件的执行下一条命令,下面我们讲解一下linux命令分号&&和&,|和||的用法
在用linux命令时候,我们可以一行执行多条命令或者有条件的执行下一条命令,下面我们讲解一下linux命令分号&&和&,|和||的用法

“;”分号用法

方式:command1 ; command2

用;号隔开每个命令, 每个命令按照从左到右的顺序,顺序执行, 彼此之间不关心是否失败, 所有命令都会执行。

“| ”管道符用法

上一条命令的输出,作为下一条命令参数

方式:command1 | command2

Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推

  • 利用一个管道
    rpm -qa|grep licq
    这条命令使用一个管道符“|”建立了一个管道。管道将rpm -qa命令的输出(包括系统中所有安装的RPM包)作为grep命令的输入,从而列出带有licq字符的RPM包来。

  • 利用多个管道
    cat /etc/passwd | grep /bin/bash | wc -l
    这条命令使用了两个管道,利用第一个管道将cat命令(显示passwd文件的内容)的输出送给grep命令,grep命令找出含有“/bin /bash”的所有行;第二个管道将grep的输出送给wc命令,wc命令统计出输入中的行数。这个命令的功能在于找出系统中有多少个用户使用bash

“&”符号用法

&放在启动参数后面表示设置此进程为后台进程

方式:command1 &

默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个’&'实现这个目的。

“&&”符号用法

shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中。当 $? == 0 时,表示执行成功;当 $? == 1 时(我认为是非0的数,返回值在0-255间),表示执行失败。

有时候,下一条命令依赖前一条命令是否执行成功。如:在成功地执行一条命令之后再执行另一条命令,或者在一条命令执行失败后再执行另一条命令等。shell 提供了 && 和 || 来实现命令执行控制的功能,shell 将根据 && 或 || 前面命令的返回值来控制其后面命令的执行。
语法格式如下:

command1 && command2 [&& command3 ...]

命令之间使用 && 连接,实现逻辑与的功能。
只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。
只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。

“||”符号用法

逻辑或的功能

语法格式如下:

command1 || command2 [|| command3 ...]

命令之间使用 || 连接,实现逻辑或的功能。
只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才会被执行。这和 c 语言中的逻辑或语法功能相同,即实现短路逻辑或操作。
只要有一个命令返回真(命令返回值 $? == 0),后面的命令就不会被执行。 –直到返回真的地方停止执行。

举例,ping命令判断存活主机

    ping -c 1 -w 1 192.168.1.1 &> /dev/null && result=0 ||result=1
    if [ "$result" == 0 ];then
      echo "192.168.1.1 is UP!"     
    else
      echo "192.168.2.1 is DOWN!"
    fi

注意 &>要连起来写。


linux 软链接的创建、删除和更新

https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/

  • 创建软链接
    ln -s [源文件或目录] [目标文件或目录]

例如:
当前路径创建test 引向/var/www/test 文件夹
ln –s /var/www/test test
创建/var/test 引向/var/www/test 文件夹
ln –s /var/www/test /var/test

  • 删除软链接
    和删除普通的文件是一样的,删除都是使用rm来进行操作
    rm –rf 软链接名称(请注意不要在后面加”/”,rm –rf 后面加不加”/” 的区别,可自行去百度下啊)
    例如:
    删除test
    rm –rf test
修改软链接

ln –snf  [新的源文件或目录]  [目标文件或目录]

这将会修改原有的链接地址为新的地址

例如:

创建一个软链接

ln –s  /var/www/test   /var/test

修改指向的新路径

ln –snf  /var/www/test1   /var/test

一 建立软链接和硬链接的语法
软链接:ln -s 源文件 目标文件
硬链接:ln 源文件 目标文件
源文件:即你要对谁建立链接

二 什么是软链接和硬链接
1,软链接可以理解成快捷方式。它和windows下的快捷方式的作用是一样的。
2,硬链接等于cp -p 加 同步更新。

为了方便说明,我在根分区(/)下建立test文件夹,然后新建了一个jys

那么cp -p的文件是不是就相当于硬链接了呢?其实不然,对于源文件的内容有修改,硬链接文件会同步更新修改,始终保持和源文件的内容相同,而复制的文件则不可能做到这一点。
所以,硬链接等于cp -p加同步更新。

如果您想更深入的了解,可以ln –help 查看详细。

chmod

https://blog.csdn.net/u013197629/article/details/73608613

terminal

ctrl + w 往回删除一个单词/剪切光标所在处之前的一个词(以空格、标点等为分隔符)
ctrl + u 删除光标以前的字符/剪切命令行中光标所在处之前的所有字符(不包括自身)
ctrl + k 删除光标以后的字符/剪切命令行中光标所在处之后的所有字符(包括自身)
ctrl + a 移动光标至的字符头
ctrl + e 移动光标至的字符尾
ctrl + l 清屏
Ctrl+d 删除光标所在处字符
Ctrl+h 删除光标所在处前一个字符
Ctrl+y 粘贴刚才所删除的字符

Alt+t 交换当前与以前单词的位置
Alt+u 把当前词转化为大写
Alt+l 把当前词转化为小写
Alt+c 把当前词汇变成首字符大写
Ctrl+v 插入特殊字符,如Ctrl+v+Tab加入Tab字符键
Esc+t 颠倒光标所在处及其相邻单词的位置
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值