《linux 命令行大全》读书笔记

来源:互联网 发布:淘宝账号管理在哪 编辑:程序博客网 时间:2024/05/16 23:51

鸟哥的私房菜看得我云里雾里,个人觉得《Linux命令行大全》很适合新手看呢~
以下是个人的学习笔记,方便以后查询和学习~虽然整理地实在是有点乱~

一. shell是什么

date    实践和日期cal     当前日历df      磁盘驱动器当前的可用空间free    可用内存exit    结束终端回话

二. 导航

pwd     查看当前工作目录cd      将工作目录改变为主目录cd-     将工作目录改变为先前的工作目录cd~username 将工作目录改变为username的主目录

三. Linux系统

  1. ls 列出目录内容,可以指定多个目录

  2. 以’.’字符开头的文件名是隐藏的,ls不会列出这些文件,除非输入ls -a

  3. ls命令的常用选项:
    -a 列出所有文件,包括以点号开头的文件
    -l 将输出以长格式显示
    -d 将此选项与-l选项结合使用,可查看目录的详细信息,而不是目录的内容
    -F 在每个所列出的名字后面加上类型指示符(如在目录名后面加上一个斜杠)
    -r 以相反的顺序显示结果
    -S 按文件的大小对结果排序
    -t 按修改时间排序

  4. ls 长列表字段含义:
    -表示一个普通文件,d表示目录(directory),l表示软链接
    文件所有者、文件所属组中成员、其他所有人的访问权限
    硬链接数目
    文件所有者的名字
    文件所属用户组的名称
    文件大小
    修改时间
    文件名

  5. file filename 确定文件类型

  6. less filename 查看文件内容

四.操作文件与目录

\* 匹配任意多个字符?匹配任一单个字符(不包括0个)[characters] 匹配任意一个属于字符集中的字符[:alnum:] 匹配任意一个字母或数字[:alpha:] 匹配任意一个字母[:digit:] 匹配任意一个数字[:lower:] 匹配任意一个小写字母[:upper:] 匹配任意一个大写字母
mkdir directory... 创建目录cp item1 item2  复制单个文件或目录cp item... directory 复制多个项目进一个目录中-a archive 复制文件和目录及其属性-i -interactive 互动,覆盖之前会提示用户-r -recursive 递归地复制目录及其内容-u -update 只复制目标目录中不存在的文件或更新文件-v -verbose 显示信息性消息mv 移除和重命名文件rm 删除文件和目录ln 创建链接ln file link 创建硬链接ln -s item link 创建符号链接,item可以是文件也可以是目录
  1. 硬链接的局限性:

    • 硬链接不能引用自身文件系统之外的文件,即不能引用与该链接不在同一磁盘分区的文件,简单地说无法跨越物理设备
    • 硬链接无法引用目录
  2. 硬链接和文件本身没有什么区别,当硬链接被删除时,只是删除了这个链接,但是文件本身的内容依然存在,除非该文件的所有链接都被删除了。

  3. 符号链接是为了克服硬链接的局限性而创建的,符号链接是通过创建一个特殊类型的文件来起作用的,该文件包含了指向引用文件或目录的文本指针。

  4. 当删除一个符号链接时,删除的只是符号链接而没有删除文件本身。如果先于符号链接之前删除文件,那么这个链接依然存在,但却不指向任何文件,此时这个链接就称为坏链接。

  5. 由于文件名是由链接创建的,所以一个文件通常至少有一个链接。

  6. ls -li 第一个字段就是索引节点号,看到fun和fun-hard共享同一个索引节点号,这就证实它们是相同的文件。

五. 命令的使用

type 显示命令的类型which 显示可执行程序的位置help + shell内置命令  获取帮助文档可执行程序 + --help  显示命令的使用信息man 显示程序的手册页1 用户命令2 内盒系统调用的程序接口3 C库函数程序接口4 特殊文件,如设备节点和驱动程序5 文件格式6 游戏和娱乐,例如屏幕保护程序7 其他杂项8 系统管理命令apropos 显示合适的命令,带-k选项的man命令与apropos命令在功能上基本是一致的whatis 显示命令的简要描述info 显示程序的info条目alias 创建自己的命令 alias name='string'多条命令用;号分割开删除别名,可使用unalias命令。alias不带参数可查看在环境中定义的所有别名。

六. 重定向

  1. 使用重定向操作符“>”,后面接文件名,就可以把标准输出重定向到另一个文件中,而不是显示在屏幕上。

  2. 当使用重定向付“>”来重定向标准输出时,目的文件通常会从文件开头部分重新改写。

  3. 仅仅使用了重定向符,并在它之前不加任何命令,就可以删除一个已存在的文件内容或者创建一个新的空文件。如: > output.txt

  4. 使用重定向符“>>”将使得输出内容添加在文件的尾部。如果这个文件并不存在,将与操作符>的作用一样创建这个文件。

  5. 标准输入文件、标准输出文件和标准错误文件分别对应为0、1、2

  6. 2&>1 把文件描述符2(标准错误)重定向到文件描述符1(标准输出)中

  7. 只用一个标记符 &> 就把标准输出和标准错误都重定向到

    ls -l /bin/usr > ls-output.txt 2&>1 等价于ls -l /bin/usr &> ls-output.txtls -l /bin/usr 2> /dev/null 隐藏一个命令的错误信息
  8. 通过把输出重定向到一个称为/dev/null的特殊文件中来实现丢弃输出

  9. Ctrl-D 告诉cat命令已经达到了标准输入的文件尾(end of file, EOF)

  10. 使用管道操作符“|”可以把一个命令的标准输出传送到另一个命令的标准输入中。

  11. uniq 命令经常和sort命令结合使用,默认情况下,该命令删除文件中重复的行,如果我们想要查看重复的行,可以在uniq命令后面添加-d选项。

  12. wc 打印行数、字数、字节数

  13. grep 打印匹配行

  14. head/tail 打印文件的开头部分/结尾部分

  15. tee 读取标准输入,再把读到的内容复制到标准输出和一个或更多的文件中去。

七. 透过shell看世界

  1. 算术运算符: + - * / % **取幂

    echo $USER  参数扩展printenv | less查看可用的变量列表命令替换:echo $(ls)ls -l $(which cp)file $(ls /usr/bin/* | grep zip)
  2. 参数扩展、算数扩展、命令替换在双引号中依然生效。如:echo “$USER $((90+9)) $(cal)”

  3. 如果希望抑制所有的扩展,那么应该使用单引号。

    制表符:\a 响铃\b 退格\n 换行\r 回车\t 制表

八. 高级键盘技巧

  1. 历史记录命令
    Ctrl-R 逆向非递增地搜索,从当前命令行向前递增搜索,Ctrl-J把搜索结果复制到当前命令行。

  2. 历史记录扩展命令
    !! 重复最后一个执行的命令(虽然↑+Enter键更简单)
    !number 重复历史记录中第number行的命令
    ! string 重复最近的以string开头的历史记录
    !?string 重复最近的含有string的历史记录

九. 权限

文件类型:- 普通文件d 目录文件l 符号链接c 字符设备文件b 块设备文件chmod 更改文件模式符号表示法:u 文件或目录的所有者g 文件所属组o 其他所有用户a all+ 添加一种权限- 删除一种权限= 只用指定的权限umask 设置默认权限
  1. 对于文件来说,这一数字的最大值分别是6,即666。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加执行权限。

  2. 目录允许设置执行权限,对于目录来说,umask中各个数字最大可以到7,即777。

    chown 更改文件所有者和所属群组chown [ower][:[group]] file...chgrp 更改文件所属群组passwd 更改用户密码

十. 进程

系统启动时,内核先把一些程序初始化为进程,然后运行一个称为init的程序。init程序将依次运行一系列称为脚本初始化的shell脚本(放在/etc目录下),这些脚本将会启动所有的系统服务,其中的很多服务都是通过守护程序(daemon program)来实现的。

ps 输出和当前终端会话相关的进程信息TTY: 进程的控制终端,“?”表示没有控制终端TIME: 进程消耗的CPU时间总和添加x选项,告知ps命令显示所有的进程STAT:state的缩写,显示进程的当前状态R 运行状态。正在/准备运行S 睡眠状态。等待某时间发送,如键盘输入或收到网络报文D 不可中断的睡眠状态。等待I/O操作,如硬盘驱动T 暂停状态。Z 无效或者僵尸进程,子进程被终止,但还没有被其父进程彻底释放掉< 高优先级进程。较不友好,因为消耗更多CPU时间N 低优先级进程。友好进程(a nice process)s 包含子进程+ 位于后台的进程组L: 有记忆体分页分配并锁在记忆体内aux选项 输出更多的信息top 实时显示当前所有任务的资源占用情况,默认3秒更新在命令后面加上 & 使得进程在后台运行jobs 列出所有活动作业的状态信息bg 设置在后台中运行作业fg 设置在前台中运行作业fg %[jobspec] 使进程回到前台运行ctrl + c 可以终止xlogo命令 —— 发出INT中断信号ctrl + z 暂停前台进程 —— 发出TSTP 终端暂停信号kill [-signal] PID 发送终止信号给某个进程kill -l 查看更多信号killall 杀死指定名字的进程killall [-u user] [-signal] name...shutdown 关机或者重启系统pstree 树状模式显示进程列表,显示父子关系vmstat 5 每隔五秒输出系统资源使用情况xload  显示系统时间负载情况的图形化界面程序 tload  类似xload,但在终端绘制

十一. 环境

printenv: 打印部分或全部的环境信息set: 设置shell选项export: 将环境导出到随后要运行的程序中alias: 为命令创建一个别名

十二. vi

vi 启动vi:q 退出vi:q! 强制退出vi不能确定vi所处的状态,可以按ESC键两次返回初始状态i  进入插入模式,按esc退出插入模式并返回命令模式:w 将文件写入硬盘光标移动:hlkj 分别对应于上下左右方向键数字0 至本行开头命令模式下:o 在当前行的下方开行O 在当前行的上方开行u 取消上述操作删除命令:x 当前字符3x 当前字符和之后2个字符dd 当前行5dd 当前行之后4行dW 当前字符到下一单词的起始d$ 当前字符到当前行的末尾d0 当前字符到当前行的起始d^ 当前字符到当前下一个非空字符dG 当前行到文件末尾d20G 当前行到文件第20行命令d不只是删除文本,而是在剪切文本。命令y会复制文本,其用法与d命令相同。合并行: 大写的J命令查找与替换:行内搜索: f命令,执行过一次之后,输入分号重复上一次搜索。整个文件搜索: / + 查询的文本, 使用n可以重复搜索。文本替换: :%s/line/Line/gc  或者 :1,$s/line/Line/gc: 用于启动一条ex命令% 确定操作范围,%代表从文件的第一行到最后一行。或者用1$表示所有的行。s 替换操作/line/Line 搜索和替换的文本g global,对搜索到的每一行和每一个实例都进行替换,如果g缺失,只替换每一行第一个符合条件的实例c 替换之前请求用户确认替换确认功能键:y 执行替换n 跳过替换a 所有替换q 停止替换l last,此次替换后退出替换切换文件:n 切换到下一个文件:N 切换回上一个文件:buffers 显示所有文件:buffer 2 切换到文件2:e + file添加新的一个文件到编辑会话中,只能用:buffer+文件编号来切换文件。:r + file 将指定文件内容插入到光标位置之前

十三. 定制提示符

shell提示符转义字符

这里写图片描述

这部分不是很常用,而且内容不多。

十四. 软件包管理

主流的软件包系统类:Debian类(.deb技术)、Red Hat类(.rpm技术)软件包系统工具发行版本      低级工具  高级工具              Debian类   dpkg    apt-get, aptitude    Red Hat类  rpm      yum                 安装库中的软件包            apt-get updateDebian类     apt-get install package_nameRed Hat类    yum install package_name安装软件包文件中的软件包D:  dpkg --install package_fileR:  rmp -i package_file删除软件包D:  apt-get remove package_nameR:  yum erase package_name更新库中的软件包D:  apt-get update/upgradeR:  yum update更新软件包文件中的软件包D:  dpkg --install package_fileR:  rmp -U package_file列出已安装的软件包列表D:  dpkg --listR:  rpm -qa判断软件包是否安装D:  dpkg --status package_nameR:  rpmm -q package_name显示已安装软件包的相关信息D:  apt-cache show package_nameR:  yum info package_name查看某具体文件由哪个软件包安装得到D:  dpkg --search filenameR:  rpm -qf filename

十五. 存储介质

管理存储设备首先要做的就是将该设备添加到文件系统中,从而允许操作系统可以操作该设备,这个过程称之为挂载。/etc/fstab 文件内容列出系统启动时挂载的设备(通常是硬盘分区)。

这里写图片描述

mount 挂载文件系统不带参数,调出目前已经挂载的文件系统列表,格式为:device on mont_point type filesystem_type(options)Usage: mount [-lhV] mount -a [options] mount [options] [--source] <source> | [--target] <directory> mount [options] <source> <directory> mount <operation> <mountpoint> [<target>]umount 卸载文件系统Usage: umount [-hV] umount -a [options] umount [options] <source> | <directory>确定设备名称:ls /dev

这里写图片描述

hda代表第一个通道上的主设备,hdb代表第一个通道上的从设备;hdc代表第二个通道上的主设备,以此类推。末尾的数字代表设备的分区号,hda1表示该硬盘驱动上的第一块分区tail -f /var/log/messages 是用来进行实时系统检测的好方法fdisk 硬盘分区命令fdformat  格式化软盘mkf  创建文件系统dd   向设备直接写入面向块数据dd程序可以完成这样的任务,该命令将数据块从一个地方复制到另一个地方。格式如下:dd if=input_file of=output_file [bs=block_size [count=blocks]]例如:把第一个盘上的所有内容复制到第二个盘上dd if=/dev/sdb of=/dev/sdcgenisoimage(mkisofs)  创建一个ISO 9600映像文件wodim(cdrecord)  向光存储介质写入数据md5sum  计算MD5校验码

十六. 网络

ping  向网络主机发送特殊数据包traceroute 跟踪网络数据包的传输路径,显示文件通过网络从本地系统传输到指定主机过程中所有停靠点的列表。列出提供身份信息的路由器的主机名、IP地址、运行状态信息,对于不提供身份信息的路由器,直接用星号行表示。netstat  检查网络设置及相关统计数据netstat -ie 检查系统中的网络接口信息netstat -r 显示内核的网络路由表ftp 采用文本传输协议传输文件lftp 更好的ftpwget 非交互式网络下载工具ssh 安全登陆远程计算机scp和sftp  安全传输文件

十七. 文件搜索

locate 通过文件名查找文件,方式较简单find 在文件系统目录框架中查找文件,方式较复杂find ~ 列出当前系统主目录下(~)的文件列表清单添加test选项:-type d限制搜索范围为目录,-type f限制只对普通文件进行搜索find ~ -type d | wc -lfind ~ -type f | wc -lfind ~ -type b | wc -lfind ~ -type l | wc -lfind ~ -type c | wc -lfind命令的逻辑操作符:-and  -or -not  ()添加action选项:-delete  -ls  -print  -quit用户自定义操作: -exec command {} ;command 表示要执行的操作命令名, {}代表当前路径, 分号作为必需的分隔符表示命令结束。例如使用-exec完成-delete操作: -exec rm '{}' ';' 或者 -exec rm {} \;find ~ -type f -name 'foo*' -exec ls -l '{}' ';'每次找到匹配文件后就执行一次ls命令。通过将命令行末尾的分号改为加号,便可将find命令所搜索到的匹配结果作为指定命令的输入,从而一次完成对所有文件的操作。find ~ -type f -name 'foo*' -exec ls -l '{}' +同样的结果,但系统整体只执行一次ls命令。xargs 从标准输入中建立、执行命令行find ~ -type f -name 'foo*' -print | xargs ls -ltouch 更改文件的日期时间stat 显示文件或文件系统的状态
0 0
原创粉丝点击