首页 > 代码库 > Linux_常用命令

Linux_常用命令

1. ls
显示目录文件夹及文件
使用方式: ls -lt

-a 显示目录下所有文件及文件夹包括 . 与 ..
-A 显示目录下所有文件及文件夹不包括 . 与 ..
-l 显示目录下所有文件及文件夹详细信息
-t 按修改时间排序(倒序)
-F 如目录后加/ 如可执行文件后加*
-r 按文件名字母排序(倒序)
-R 显示目录下所有文件夹及文件(包括子文件夹)
2. cat
将文件内容串连后输出
使用方式: cat file1 file2 filen
-n 对所有输出的行数加序号
-b 对所有输出的非空白行数加序号
-s 如连续两行或以上的空行,替代为一行空行
3.chmod
更新文件夹或文件权限
使用方式: chmod a+x *.*
ugoa +-= rwx
-c 如修改后的权限与之前不同,显示修改讯息
-v 显示修改讯息
-f 隐藏错误
-R 遍历设置权限(子文件夹)
4.chown
更新文件夹拥有者与组
使用方式: chown -R root:root *

-R 遍历设置(子文件夹)

5. cp
本地复制文件夹与文件
使用方式: cp -a source dest

-a 保留源文件的权限等讯息
-r 遍历复制(子文件夹)
-f 当目标文件与原文件重名,先删除目标文件,再复制
6. cut
显示文件内容N-M列的内容
使用方式: cut -c1-6 file
-c 显示每行从头开始的num1到num2的文字

7. rm
删除文件
使用方式: rm -rf file or folder

-i 删除前逐一询问确认
-f 即使文件只读都强制删除,不需要确认
-r 遍历删除(子文件夹)
8. rmdir
删除文件夹
使用方式: rmdir folder

-p 如果删除子文件夹后是空文件夹,则一并删除。注意:会一直删除父级目录,直到父级目录不为空。
9. unzip
解密
使用方式: unzip -P 123456 -d path o.zip

-P <密码> zip 压缩包的密码
-f 覆盖原有文件
-d <路径> 指定解压路径
-n 解压缩时不覆盖原有文件
-o 不经询问,直接覆盖原有文件
-u 覆盖原有文件,并将压缩文件中的其他文件解压缩到目录中
-l 显示压缩文件内所包含的文件 -t 检查压缩文件是否正确
-Z unzip -Z 等于执行 zipinfo 指令 -j 不处理压缩文件中原有的目录路径
-C 压缩文件中的文件名称区分大小写
-z 显示压缩包注释
-L 将压缩文件中的全部文件名改为小写
-s 将文件名中的空格转换下划线 -X 解压缩时保留文件原来的 UID/GID
-q 执行时不显示任何信息 -v 执行是时显示详细的信息
-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换
-p 与-c 参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换
-a 对文本文件进行必要的字符转换
-b 不要对文本文件进行字符转换
-x <表达式> 处理里排除压缩包中的指定文件
-M 将输出结果送到 more 程序处理

10. zip
加密
使用方式: zip -q -r d.zip folder/file

-A 调整可执行的自动解压缩文件。 
-b <工作目录> 指定暂时存放文件的目录。 
-c 替每个被压缩的文件加上注释。 
-d 从压缩文件内删除指定的文件。 
-D 压缩文件内不建立目录名称。 
-f 此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。 
-F 尝试修复已损坏的压缩文件。 
-g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。 
-h 在线帮助。 
-i <范本样式> 只压缩符合条件的文件。 
-j 只保存文件名称及其内容,而不存放任何目录名称。 
-J 删除压缩文件前面不必要的数据。 
-k 使用MS-DOS兼容格式的文件名称。 
-l 压缩文件时,把LF字符置换成LF+CR字符。 
-ll 压缩文件时,把LF+CR字符置换成LF字符。 
-L 显示版权信息。 
-m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。 
-n <字尾字符串> 不压缩具有特定字尾字符串的文件。 
-o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。 
-q 不显示指令执行过程。 
-r 递归处理,将指定目录下的所有文件和子目录一并处理。 
-S 包含系统和隐藏文件。 
-t <日期时间> 把压缩文件的日期设成指定的日期。 
-T 检查备份文件内的每个文件是否正确无误。 
-u 更换较新的文件到压缩文件内。 
-v 显示指令执行过程或显示版本信息。 
-V 保存VMS操作系统的文件属性。 
-w 在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。 
-x <范本样式> 压缩时排除符合条件的文件。 
-X 不保存额外的文件属性。 
-y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。 
-z 替压缩文件加上注释。 
-$ 保存第一个被压缩文件所在磁盘的卷册名称。 
-<压缩效率> 压缩效率是一个介于1-9的数值。

11. find

查找文件及文件夹
使用方式: find path -mtime 3 -type f -exec ls -lt {} \;

-atime N 最后访问时间在N天前
-mtime N 最后更新时间在N天前
-name name 名称包含
-user user 用户名包含
-newer otherfile 比某个文件新
-type 类型 f:文件 d:目录

!  not
-a and
-o or

-print 打印文件名
-mount 不搜索其他问题系统的目录
-maxdepth N 最多搜寻目录的层数
-mindepth N 从N层开始搜寻
-depth 查看目录本身之前先搜寻目录的内容
-empty 文件或目录为空

-exec command {} \; 执行命令
-ok command {} \;   执行命令,每次执行需要用户确认
12. grep
匹配
使用方式: grep -c "string" file1 file2

-c 只显示匹配的行数
-i 不区分大小写
-l 只显示文件名
-h 不显示前缀文件名
-v 显示不匹配的行数
-E 扩展模式(使用正则)
-n 显示匹配的行在文件中的行数
-x 只打印整行匹配的行
-Ax 显示匹配行后x行
-By 显示匹配行前y行
-Cz 显示匹配行前后z行
13. scp
远程复制文件夹与文件
使用方式:
scp localfile username@ip:remotefolder
scp username@ip:remotefile localfolder
scp -r localfolder username@ip:remotefolder
scp -r username@ip:remotefolder localfolder

-r 复制目录及所有子目录子文件(遍历)
14. df du
df  查看文件系统容量
du 查看文件夹及文件容量
使用方式:
du -h --max-depth=1 folder
df -h

-h 以可读性较好的方式显示尺寸(例如:1K 234M 2G)
--max-depth=N N查询的深度
15. ln
创建文件或文件夹链接
使用方式:
ln -s 源文件/源文件夹 目标文件
ln -s /home/fdipzone/demo link 在当前目录创建一个文件夹链接link,链接到 /home/fdipzone/demo
说明 : Linux/Unix 档案系统中,有所谓的连结(link),我们可以将其视为档案的别名,而连结又可分为两种 : 硬连结(hard link)与软连结(symbolic link),硬连结的意思是一个档案可以有多个名称,而软连结的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬连结是存在同一个档 案系统中,而软连结却可以跨越不同的档案系统。

ln source dist 是产生一个连结(dist)到 source,至于使用硬连结或软链结则由参数决定。
不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
-f : 链结时先将与 dist 同档名的档案删除
-d : 允许系统管理者硬链结自己的目录
-i : 在删除与 dist 同档名的档案时先进行询问
-n : 在进行软连结时,将 dist 视为一般的档案
-s : 进行软链结(symbolic link)
-v : 在连结之前显示其档名
-b : 将在链结时会被覆写或删除的档案进行备份
-S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾
-V METHOD : 指定备份的方式
--help : 显示辅助说明
--version : 显示版本
16. locate
locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的资料库,之后当寻找时就只需查询这个资料库,而不必实际深入档案系统之中了。在一般的 distribution 之中,资料库的建立都被放在 contab 中自动执行。
使用方式:
locate filename
locate [-q] [-d ] [--database=]
locate [-r ] [--regexp=]
locate [-qv] [-o ] [--output=]
locate [-e ] [-f ] <[-l ] [-c] <[-U ] [-u]>
locate [-Vh] [--version] [--help]

locate chdrv:寻找所有叫 chdrv 的档案
locate -n 100 a.out:寻找所有叫 a.out 的档案,但最多只显示 100 个
locate -u:建立资料库

-u
-U 建立资料库,-u 会由根目录开始,-U 则可以指定开始的位置。
-e 将排除在寻找的范围之外。
-l 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的权限资料。
-f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案放在资料库中。
-q 安静模式,不会显示任何错误讯息。
-n 至多显示n个输出。
-r 使用正规运算式 做寻找的条件。
-o 指定资料库存的名称。
-d 指定资料库的路径
-h 显示辅助讯息
-v 显示更多的讯息
-V 显示程式的版本讯息
17. wc
使用方式:wc [option] file1  file2
wc -l file
可以组合使用 wc -lcw file1 file2

- c 统计字节数
- l 统计行数
- w 统计字数
18. wget
使用方式:wget [options] [URL]
wget -O test.zip http://www.fdipzone.com/test.zip

启动:
-V, --version 显示wget的版本后退出
-h, --help 打印语法帮助
-b, --background 启动后转入后台执行
-e, --execute=COMMAND 执行`.wgetrc'格式的命令,wgetrc格式参见/etc/wgetrc或~/.wgetrc
wget默认会根据网站的robots.txt进行操作
使用-e robots=off参数即可绕过该限制

记录和输入文件:
-o, --output-file=FILE 把记录写到FILE文件中
-a, --append-output=FILE 把记录追加到FILE文件中
-d, --debug 打印调试输出
-q, --quiet 安静模式(没有输出)
-v, --verbose 冗长模式(这是缺省设置)
-nv, --non-verbose 关掉冗长模式,但不是安静模式
-i, --input-file=FILE 下载在FILE文件中出现的URLs
-F, --force-html 把输入文件当作HTML格式文件对待
-B, --base=URL 将URL作为在-F -i参数指定的文件中出现的相对链接的前缀
--sslcertfile=FILE 可选客户端证书
--sslcertkey=KEYFILE 可选客户端证书的KEYFILE
--egd-file=FILE 指定EGD socket的文件名

下载:
--bind-address=ADDRESS 指定本地使用地址(主机名或IP,当本地有多个IP或名字时使用)
-t, --tries=NUMBER 设定最大尝试链接次数(0 表示无限制).
-O --output-document=FILE 把文档写到FILE文件中
-nc, --no-clobber 不要覆盖存在的文件或使用.#前缀
-c, --continue 接着下载没下载完的文件
--progress=TYPE 设定进程条标记
-N, --timestamping 不要重新下载文件除非比本地文件新
-S, --server-response 打印服务器的回应
--spider 不下载任何东西
-T, --timeout=SECONDS 设定响应超时的秒数
-w, --wait=SECONDS 两次尝试之间间隔SECONDS秒
--waitretry=SECONDS 在重新链接之间等待1...SECONDS秒
--random-wait 在下载之间等待0...2*WAIT秒
-Y, --proxy=on/off 打开或关闭代理
-Q, --quota=NUMBER 设置下载的容量限制
--limit-rate=RATE 限定下载输率

目录:
-nd --no-directories 不创建目录
-x, --force-directories 强制创建目录
-nH, --no-host-directories 不创建主机目录
-P, --directory-prefix=PREFIX 将文件保存到目录 PREFIX/...
--cut-dirs=NUMBER 忽略 NUMBER层远程目录

HTTP 选项:
--http-user=USER 设定HTTP用户名为 USER.
--http-passwd=PASS 设定http密码为 PASS.
-C, --cache=on/off 允许/不允许服务器端的数据缓存 (一般情况下允许).
-E, --html-extension 将所有text/html文档以.html扩展名保存
--ignore-length 忽略 `Content-Length'头域
--header=STRING 在headers中插入字符串 STRING
--proxy-user=USER 设定代理的用户名为 USER
--proxy-passwd=PASS 设定代理的密码为 PASS
--referer=URL 在HTTP请求中包含 `Referer: URL'头
-s, --save-headers 保存HTTP头到文件
-U, --user-agent=AGENT 设定代理的名称为 AGENT而不是 Wget/VERSION.
--no-http-keep-alive 关闭 HTTP活动链接 (永远链接).
--cookies=off 不使用 cookies.
--load-cookies=FILE 在开始会话前从文件 FILE中加载cookie
--save-cookies=FILE 在会话结束后将 cookies保存到 FILE文件中

FTP 选项:
-nr, --dont-remove-listing 不移走 `.listing'文件
-g, --glob=on/off 打开或关闭文件名的 globbing机制
--passive-ftp 使用被动传输模式 (缺省值).
--active-ftp 使用主动传输模式
--retr-symlinks 在递归的时候,将链接指向文件(而不是目录)

递归下载:
-r, --recursive 递归下载--慎用!
-l, --level=NUMBER 最大递归深度 (inf 或 0 代表无穷).
--delete-after 在现在完毕后局部删除文件
-k, --convert-links 转换非相对链接为相对链接
-K, --backup-converted 在转换文件X之前,将之备份为 X.orig
-m, --mirror 等价于 -r -N -l inf -nr.
-p, --page-requisites 下载显示HTML文件的所有图片

递归下载中的包含和不包含(accept/reject):
-A, --accept=LIST 分号分隔的被接受扩展名的列表
-R, --reject=LIST 分号分隔的不被接受的扩展名的列表
-D, --domains=LIST 分号分隔的被接受域的列表
--exclude-domains=LIST 分号分隔的不被接受的域的列表
--follow-ftp 跟踪HTML文档中的FTP链接
--follow-tags=LIST 分号分隔的被跟踪的HTML标签的列表
-G, --ignore-tags=LIST 分号分隔的被忽略的HTML标签的列表
-H, --span-hosts 当递归时转到外部主机
-L, --relative 仅仅跟踪相对链接
-I, --include-directories=LIST 允许目录的列表
-X, --exclude-directories=LIST 不被包含目录的列表
-np, --no-parent 不要追溯到父目录
19. tar
使用方式:tar [-cxtzjvfpPN] 文件与目录
tar -xzvf  test.tar.gz

-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!
因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
   例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成
   『 tar -zcvPf tfile sfile』才对
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩!
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
--exclude FILE:在压缩的过程中,不要将 FILE 打包!

20. tail
使用方式:tail [-fqvcn] 文件
tail -f test.log

-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示行数
--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束. 
-q, --quiet, --silent 从不输出给出文件名的首部 
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒 
注意 -f 是 --follow[=HOW]的缩写,可以一直读文件末尾的字符并打印出来。
[=HOW]有两个写法,=descriptor 和 =name 默认使用descriptor,如果你跟踪的文件被移动或者改名后,还想继续tail,可以使用这个选项。
但如果在tail 一个log文件时,这个文件很可能是被删除或被覆盖,文件覆盖后,tail -f命令就会失效,这种情况需要使用tail -F命令
-F 是 --follow=name -retry的缩写,--follow=name是按文件名跟踪文件,可以定期去重新打开文件检查文件是否被其它程序删除并重新建立,-retry这个参数,保证文件重新建立后,可以继续被跟踪。

--follow=descriptor 例子
1.sh

#!/bin/bash
 
while :
do
    echo $(date +%Y-%m-%d' '%H:%M:%S) >> '1.log'
    sleep 1
done
 
exit 0
2.sh
#!/bin/bash
 
while :
do
    echo $(date +%Y-%m-%d' '%H:%M:%S) >> '2.log'
    sleep 1
done
 
exit 0
1.在窗口1 执行 ./1.sh
2.在窗口2 执行 tail -f 1.log,这时会看到有输出
3.中止1.sh
4.执行mv 1.log 2.log 改名

5.执行 ./2.sh 这时会看到窗口2的tail会输出2.log的内容。


--follow=name 例子

1.在窗口1执行./1.sh
2.在窗口2执行 tail -f 1.log,这时会看到有输出
3.执行rm 1.log ,这时tail不再输出任何内容

而使用 tail -F 1.log,则在执行rm 1.log 之后,当1.log创建时,tail会继续输出1.log的内容。因为 ./1.sh是循环执行,当1.log不存在时会创建


21. shuf

作用:把输入行按随机顺序输出到标准输出。

使用方式:

shuf [选项] ... [文件]
shuf -e [选项]... [参数]...
shuf -i LO-HI [选项]...
主要参数:

 -e, --echo                 将每个参数视为输入行
 -i, --input-range=LO-HI    将LO 到HI 的每个数字视为输入行
 -n, --head-count=行数      最多输出指定的行数
 -o, --output=文件          将结果输出到指定文件而非标准输出
     --random-source=文件   从指定文件获得随机比特
 -z, --zero-terminated      以0 结束行而非新行
     --help                 显示此帮助信息并退出
     --version              显示版本信息并退出

例子:

1.将test.txt按随机顺序输出到标准输出

shuf test.txt
2.从test.txt中随机取出一行

shuf -n 1 test.txt
3.将test.txt按随机顺序输出到test1.txt

shuf test.txt -o test1.txt

Linux_常用命令