[笔记]Linux命令行大全
date 显示当前时间和日期
cal 显示当前月份的日历
df 查看磁盘剩余空间的数量
free 显示空闲内存的数量
pwd 打印当前工作目录
cd 切换目录
ls 列出文件夹内容
绝对路径:开始于根目录
相对路径:开始于工作目录 .工作目录 ..工作目录的父目录
cd - 更改目录到先前的工作目录
cd ~ 切换到家目录
ls
-l 结果以长模式输出
-t 选项按文件的修改时间的先后来排序
--reverse 结果会以相反的顺序输出
-h 更友好的方式显示
-a 列出所有文件包括隐藏文件
file filename
打印文件内容的简单描述
less filename
查看文件的内容,可以前后滚动,按q可退出
目录 评论
/ 根目录,万物起源。
/bin 包含系统启动和运行所必须的二进制程序。
/boot 包含 Linux 内核、初始 RAM 磁盘映像(用于启动时所需的驱动)和 启动加载程序。
有趣的文件:
/boot/grub/grub.conf or menu.lst, 被用来配置启动加载程序。
/boot/vmlinuz,Linux 内核。
/dev 这是一个包含设备结点的特殊目录。“一切都是文件”,也适用于设备。 在这个目录里,内核维护着所有设备的列表。
/etc 这个目录包含所有系统层面的配置文件。
它也包含一系列的 shell 脚本, 在系统启动时,这些脚本会开启每个系统服务。这个目录中的任何文件应该是可读的文本文件。
有趣的文件:虽然/etc 目录中的任何文件都有趣,但这里只列出了一些我一直喜欢的文件:
/etc/crontab, 定义自动运行的任务。
/etc/fstab,包含存储设备的列表,以及与他们相关的挂载点。
/etc/passwd,包含用户帐号列表。
/home 在通常的配置环境下,系统会在/home 下,给每个用户分配一个目录。普通用户只能 在自己的目录下写文件。这个限制保护系统免受错误的用户活动破坏。
/lib 包含核心系统程序所使用的共享库文件。这些文件与 Windows 中的动态链接库相似。
/lost+found 每个使用 Linux 文件系统的格式化分区或设备,例如 ext3文件系统, 都会有这个目录。当部分恢复一个损坏的文件系统时,会用到这个目录。除非文件系统 真正的损坏了,那么这个目录会是个空目录。
/media 在现在的 Linux 系统中,/media 目录会包含可移动介质的挂载点, 例如 USB 驱动器,CD-ROMs 等等。这些介质连接到计算机之后,会自动地挂载到这个目录结点下。
/mnt 在早些的 Linux 系统中,/mnt 目录包含可移动介质的挂载点。
/opt 这个/opt 目录被用来安装“可选的”软件。这个主要用来存储可能 安装在系统中的商业软件产品。
/proc 这个/proc 目录很特殊。从存储在硬盘上的文件的意义上说,它不是真正的文件系统。 相反,它是一个由 Linux 内核维护的虚拟文件系统。它所包含的文件是内核的窥视孔。这些文件是可读的, 它们会告诉你内核是怎样监管计算机的。
/root root 帐户的家目录。
/sbin 这个目录包含“系统”二进制文件。它们是完成重大系统任务的程序,通常为超级用户保留。
/tmp 这个/tmp 目录,是用来存储由各种程序创建的临时文件的地方。一些配置导致系统每次 重新启动时,都会清空这个目录。
/usr 在 Linux 系统中,/usr 目录可能是最大的一个。它包含普通用户所需要的所有程序和文件。
/usr/bin /usr/bin 目录包含系统安装的可执行程序。通常,这个目录会包含许多程序。
/usr/lib 包含由/usr/bin 目录中的程序所用的共享库。
/usr/local 这个/usr/local 目录,是非系统发行版自带,却打算让系统使用的程序的安装目录。 通常,由源码编译的程序会安装在/usr/local/bin 目录下。新安装的 Linux 系统中,会存在这个目录, 但却是空目录,直到系统管理员放些东西到它里面。
/usr/sbin 包含许多系统管理程序。
/usr/share /usr/share 目录包含许多由/usr/bin 目录中的程序使用的共享数据。 其中包括像默认的配置文件、图标、桌面背景、音频文件等等。
/usr/share/doc 大多数安装在系统中的软件包会包含一些文档。在/usr/share/doc 目录下, 我们可以找到按照软件包分类的文档。
/var 除了/tmp 和/home 目录之外,相对来说,目前我们看到的目录是静态的,这是说, 它们的内容不会改变。/var 目录是可能需要改动的文件存储的地方。各种数据库,假脱机文件, 用户邮件等等,都位于在这里。
/var/log 这个/var/log 目录包含日志文件、各种系统活动的记录。这些文件非常重要,并且 应该时时监测它们。其中最重要的一个文件是/var/log/messages。注意,为了系统安全,在一些系统中, 你必须是超级用户才能查看这些日志文件。
通配符
* 匹配任意多个字符(包括零个或一个)
? 匹配任意一个字符(不包括零个)
[characters] 匹配任意一个属于字符集中的字符
[!characters] 匹配任意一个不是字符集中的字符
[[:class:]] 匹配任意一个属于指定字符类中的字符
常用字符类别:
[:alnum:] 匹配任意一个字母或数字
[:alpha:] 匹配任意一个字母
[:digit:] 匹配任意一个数字
[:lower:] 匹配任意一个小写字母
[:upper:] 匹配任意一个大写字母
mkdir directory 创建目录 mkdir dir1 dir2 dir3 创建三个目录
cp file1 file2
复制文件 file1 内容到文件 file2。
如果 file2 已经存在, file2 的内容会被 file1 的内容重写。如果 file2 不存在,则会创建 file2。
cp -i file1 file2
这条命令和上面的命令一样,除了如果文件 file2 存在的话,在文件 file2 被重写之前, 会提示用户确认信息。
cp file1 file2 dir1
复制文件 file1 和文件 file2 到目录 dir1。目录 dir1 必须存在。
cp dir1/* dir2
使用一个通配符,在目录 dir1 中的所有文件都被复制到目录 dir2 中。 dir2 必须已经存在。
cp -r dir1 dir2
复制目录 dir1 中的内容到目录 dir2。如果目录 dir2 不存在, 创建目录 dir2,操作完成后,目录 dir2 中的内容和 dir1 中的一样。
如果目录 dir2 存在,则目录 dir1 (和目录中的内容)将会被复制到 dir2 中。
mv file1 file2
移动 file1 到 file2。
如果 file2 存在,它的内容会被 file1 的内容重写。 如果 file2 不存在,则创建 file2。 每种情况下,file1 不再存在。
mv -i file1 file2
除了如果 file2 存在的话,在 file2 被重写之前,用户会得到 提示信息外,这个和上面的选项一样。
mv file1 file2 dir1
移动 file1 和 file2 到目录 dir1 中。dir1 必须已经存在。
mv dir1 dir2
如果目录 dir2 不存在,创建目录 dir2,并且移动目录 dir1 的内容到 目录 dir2 中,同时删除目录 dir1。
如果目录 dir2 存在,移动目录 dir1(及它的内容)到目录 dir2。
rm file1 默默地删除文件
rm -i file1 除了在删除文件之前,提示用户确认信息之外,和上面的命令作用一样。
rm -r file1 dir1 删除文件 file1, 目录 dir1,及 dir1 中的内容。
rm -rf file1 dir1 同上,除了如果文件 file1,或目录 dir1 不存在的话,rm 仍会继续执行。
ln — 创建硬链接和符号链接
ln file link 创建硬链接
ln -s file line 创建软链接
硬链接与更加现代的符号链接相比,硬链接是最初 Unix 创建链接的方式。每个文件默认会有一个硬链接, 这个硬链接给予文件名字。我们每创建一个硬链接,就为一个文件创建了一个额外的目录项。 硬链接有两个重要局限性:
1、一个硬链接不能关联它所在文件系统之外的文件。这是说一个链接不能关联 与链接本身不在同一个磁盘分区上的文件。
2、一个硬链接不能关联一个目录。
当一个硬链接被删除时,这个链接 被删除,但是文件本身的内容仍然存在。
符号链接类似于windows的快捷方式,如果你往一个符号链接里面写入东西,那么相关联的文件也被写入。
然而, 当你删除一个符号链接时,只有这个链接被删除,而不是文件自身。
如果先于符号链接 删除文件,这个链接仍然存在,但是不指向任何东西。在这种情况下,这个链接被称为坏链接。
type command 显示命令的类型
which command 显示一个可执行程序的位置
ls --help --help 选项,这个选项是显示命令所支持的语法和选项说明
man command 查看命令的参考手册
whatis command 显示非常简洁的命令说明
info command info info文件是树型结构,分化为各个结点,每一个包含一个题目。
whatis command 显示非常简洁的命令说明
alias name='command string' 给命令取别名
ls -l /usr/bin > ls-output.txt 重定向输出
less ls-output.txt 查看输出的内容
ls -l /usr/bin >> ls-output.txt 使用”>>“重定向符,追加内容
一个程序可以在几个编号的文件流中的任一个上产生输出。
虽然我们已经将这些文件流的前 三个称作标准输入、输出和错误,shell 内部分别将其称为文件描述符0、1和2。
shell 使用文件描述符提供 了一种表示法来重定向文件。因为标准错误和文件描述符2一样,我们用这种 表示法来重定向标准错误:
cat movie.mpeg.0* > movie.mpeg 追加连接符合条件的文件
ls -l /usr/bin | less
命令从标准输入读取数据并输送到标准输出的能力被一个称为管道线的shell特性所利用。
管道中添加过滤器 sort
ls /bin /usr/bin | sort | less
wc(字计数)命令是用来显示文件所包含的行数、字数和字节数。
例如:
wc ls-output.txt
7902 64566 503634 ls-output.txt
grep pattern [file...] 找到匹配的文本
ls /bin /usr/bin | sort | uniq | grep zip 区分大小写
ls /bin /usr/bin | sort | uniq | grep -i zip 忽略大小写
grep “standard” standard.txt > grep.out 2>&1
在文件standard.txt中查找standard这个字符串,如果找到则将查找结果重定向到grep.out,如果找不到,则把错误信息重定向到grep.out中。
head -n 5 ls-output.txt 查看开头五行内容
tail -n 5 ls-output.txt 查看结尾五行内容
波浪线字符(“~”)有特殊的含义。
当它用在 一个单词的开头时,它会展开成指定用户的家目录名。
如果没有指定用户名,则展开成当前用户的家目录。
[me@linuxbox ~]$ echo ~foo
/home/foo
算术表达式展开使用这种格式:
$((expression))
[me@linuxbox ~]$ echo $((2 + 2))
4
在算术表达式中空格并不重要,并且表达式可以嵌套。
[me@linuxbox ~] echo $(($((5**2)) * 3))
75
通过它,你可以从一个包含花括号的模式中 创建多个文本字符串。
[me@linuxbox ~]$ echo Front-{A,B,C}-Back
Front-A-Back Front-B-Back Front-C-Back
[me@linuxbox ~]$ echo Number_{1..5}
Number_1 Number_2 Number_3 Number_4 Number_5
[me@linuxbox ~]$ echo {Z..A}
Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
花括号嵌套:
[me@linuxbox ~]$ echo a{A{1,2},B{3,4}}b
aA1b aA2b aB3b aB4b
批量创建以数值”年-月”形式命名的目录
[me@linuxbox ~]$ mkdir Pics
[me@linuxbox ~]$ cd Pics
[me@linuxbox Pics]$ mkdir {2007..2009}-0{1..9} {2007..2009}-{10..12}
[me@linuxbox Pics]$ ls
2007-01 2007-07 2008-01 2008-07 2009-01 2009-07
2007-02 2007-08 2008-02 2008-08 2009-02 2009-08
2007-03 2007-09 2008-03 2008-09 2009-03 2009-09
2007-04 2007-10 2008-04 2008-10 2009-04 2009-10
2007-05 2007-11 2008-05 2008-11 2009-05 2009-11
2007-06 2007-12 2008-06 2008-12 2009-06 2009-12
命令替换允许我们把一个命令的输出作为一个展开模式来使用:
[me@linuxbox ~]$ echo $(ls)
Desktop Documents ls-output.txt Music Pictures Public Templates
Videos
bash 也支持这种语法。它使用倒引号来代替美元符号和括号:
[me@linuxbox ~]$ ls -l `which cp`
-rwxr-xr-x 1 root root 71516 2007-12-05 08:58 /bin/cp
记住,在双引号中,参数展开、算术表达式展开和命令替换仍然有效:
[me@linuxbox ~]$ echo "$USER $((2+2)) $(cal)"
me 4 February 2008
Su Mo Tu We Th Fr Sa
以下例子是无引用,双引号,和单引号的比较结果:
[me@linuxbox ~]$ echo text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER
text /home/me/ls-output.txt a b foo 4 me
[me@linuxbox ~]$ echo "text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER"
text ~/*.txt {a,b} foo 4 me
[me@linuxbox ~]$ echo 'text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER'
text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER
反斜杠转义符
[me@linuxbox ~]$ mv bad\&filename good_filename
查看历史信息
history | less
历史命令执行
!! 重复最后一次执行的命令。可能按下上箭头按键和 enter 键更容易些。
!number 重复历史列表中第 number 行的命令。
!string 重复最近历史列表中,以这个字符串开头的命令。
!?string 重复最近历史列表中,包含这个字符串的命令。
ps – 报告当前进程快照
top – 显示任务
jobs – 列出活跃的任务
bg – 把一个任务放到后台执行
fg – 把一个任务放到前台执行
kill – 给一个进程发送信号
killall – 杀死指定名字的进程
shutdown – 关机或重启系统
进程状态:
R 运行中。这意味着,进程正在运行或准备运行。
S 正在睡眠。进程没有运行,而是,正在等待一个事件, 比如说,一个按键或者网络分组。
D 不可中断睡眠。进程正在等待 I/O,比方说,一个磁盘驱动器的 I/O。
T 已停止. 已经指示进程停止运行。稍后介绍更多。
Z 一个死进程或“僵尸”进程。这是一个已经终止的子进程,但是它的父进程还没有清空它。 (父进程没有把子进程从进程表中删除)
< 一个高优先级进程。这可能会授予一个进程更多重要的资源,给它更多的 CPU 时间。 进程的这种属性叫做 niceness。
具有高优先级的进程据说是不好的(less nice), 因为它占用了比较多的 CPU 时间,这样就给其它进程留下很少时间。
N 低优先级进程。 一个低优先级进程(一个“好”进程)只有当其它高优先级进程被服务了之后,才会得到处理器时间。
另一个流行的选项组合是 “aux”(不带开头的”-“字符)。这会给我们更多信息:
[me@linuxbox ~]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2136 644 ? Ss Mar05 0:31 init
root 2 0.0 0.0 0 0 ? S< Mar05 0:00 [kt]
用 top 命令动态查看进程
后台执行:在程序命令之后,加上”&”字符
[me@linuxbox ~]$ xlogo &
[1] 28236
后台命令对与键盘输入免疫,无法中断,使用fg将命令转到前端。
fg 命令之后,跟随着一个百分号和任务序号(叫做 jobspec)就可以。
[me@linuxbox ~]$ jobs
[1]+ Running xlogo &
[me@linuxbox ~]$ fg %1
xlogo
[笔记]Linux命令行大全的更多相关文章
- 《Linux命令行大全》系列(三、Linux 系统)
在<Linux命令行大全>一书中,第3章名称是 Linux 系统. 概念太大,不过该节内容却是 Linux 系统最为核心的基础——查看 Linux 系统. ls 命令 显示目录自身信息或目 ...
- 《Linux命令行大全》 笔记记录
1.Shell是什么 2.(文件目录)导航 3.Linux系统 4.操作文件和目录 5.命令的使用 6.重定向 7.透过shell看世界 扩展 引用 8.高级键盘技巧 9.权限 10.进程 11.环境 ...
- 《Linux命令行大全》系列(一、shell是什么)
学习 Linux, 从命令开始 图形界面只是让简单事情,更简单 图形化界面能快速处理简单的事情,如打开/关闭文件 然后,随着事务复杂度的提升,图形化界面的操作也就繁琐起来 例如,word中插入一个图片 ...
- [读书笔记]Linux命令行与shell编程读书笔记04 安装软件,编辑器注意事项
1. debian以及redhat两种主流的linux发行版用的包管理工具 debian的包管理工具是 dpkg 再现安装的是 apt apt的工具主要有 apt-get apt-cache apti ...
- [读书笔记]Linux命令行与shell编程读书笔记02 环境变量以及其他
1. Linux的环境变量. 全局环境变量的查看 printenv 一个结果示例 XDG_SESSION_ID=354TERM=xtermSHELL=/bin/bashSSH_CLIENT=10.24 ...
- [读书笔记]Linux命令行与shell编程读书笔记01
1. Linux的组成部分 1)linux内核(kernel) 2)GNU工具链 3)GUI/CLI工作几面(shell) 4)应用程序(app) 2Linux内核的主要工作: 1) 管理内存 2)管 ...
- 《Linux命令行大全》系列(二、导航)
文件系统的导航,是一个不断访问树形结构中节点的过程. 文件系统树 Linux只有一个倒立的文件系统树 不同设备可以挂载到这同一个树上 文件和子目录是此树的组成部分,最顶层的即根目录 目录 根据树节点间 ...
- [读书笔记]Linux命令行与shell编程读书笔记03 文件系统等
1. 文件系统的种类 ext ext2 ext3 ext4 JFS XFS 其中ext3 开始支持journal日志模式 与raid卡类似 有 数据模式 排序模式 以及回写模式 数据模式最安全 回写 ...
- linux命令行大全第四章[通配符的使用]
通配符示例 1.创建几个文件及目录 补充创建一个以大写字母开头的文件. 2.1显示所有文件及目录 2.2显示所有以1开头的文件及目录 2.3显示以a开头.txt结尾的文件 2.4显示以e开头,后跟任意 ...
随机推荐
- Oracle数据库(一)概述、基础与简单操作
数据库: 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库. 数据库分类: 关系型数据库 非关系型数据库 数据库 类型 特性 优点 缺点 关系型数据库 SQLite.Oracle. ...
- JDK源码阅读(1)_简介+ java.io
1.简介 针对这一个版块,主要做一个java8的源码阅读笔记.会对一些在javaWeb中应用比较广泛的java包进行精读,附上注释.对于容易混淆的知识点给出相应的对比分析. 精读的源码顺序主要如下: ...
- signalr中Group 分组群发消息的简单使用
前一段时间写了几篇关于signalr的文章 1.MVC中使用signalR入门教程 2.mvc中signalr实现一对一的聊天 3.Xamarin android中使用signalr实现即时通讯 在平 ...
- redis中使用 check-and-set 操作实现乐观锁
WATCH 命令可以为 Redis 事务提供 check-and-set (CAS)行为. 被 WATCH 的键会被监视,并会发觉这些键是否被改动过了. 如果有至少一个被监视的键在 EXEC 执行之前 ...
- 深入理解用户权限rwx
其实在UNIX的实现中,文件权限用12个二进制位表示,如果该位置上的值是1,表示有相应的权限,如果是0则没有相应权限第11位为SUID位,第10位为SGID位,第9位为sticky位,第8-0位对应于 ...
- Chrome headless 模式
我们在通过Selenium运行自动化测试时,必须要启动浏览器,浏览器的启动与关闭必然会影响执行效率,而且还会干扰你做其它事情(本机运行的话). 那能不能把自动化测试的运行放在后台?当然可以! html ...
- Qt仿win7自动顶部最大化左侧右侧半屏效果
Win7系统不得不说是非常好用的,也是目前为止占用份额最大的操作系统,其中win7有个效果,将窗体拖动到顶部时会自动最大化,拖动到左侧右侧时会自动半屏显示,再次拖动窗体到其他位置,会重新恢复之前的大小 ...
- JAVA 用数组实现 ArrayList
我们知道 ArrayList 是一个集合,它能存放各种不同类型的数据,而且其容量是自动增长的.那么它是怎么实现的呢? 其实 ArrayList 的底层是用 数组实现的.我们查看 JDK 源码也可以发现 ...
- 字符串匹配KMP算法的C语言实现
字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD" ...
- Kotlin——最详细的操作符与操作符重载详解(上)
本篇文章为大家详细的介绍Koltin特有的操作符重载.或许对于有编程经验的朋友来说,操作符这个词绝对不陌生,就算没有任何编辑基础的朋友,数学中的算数运算符也绝不陌生.例如(+.-.*./.>.& ...