linux命令笔记

来源:互联网 发布:工作思路梳理软件 编辑:程序博客网 时间:2024/05/29 14:13

0. {基础知识}[tap] 自动补全功能,当文件名第一个字符为.时,表示该文件为隐藏文件;
    windows系统不识别linux系统文件原因在于windows核心不识别linux文件系统
    dos文件回车为\n\r,linux为\n,:%s/\r//g转换.也可以用dos2linux -k filename转换

1.    man     关键字 查询在线帮组
2.    sync     数据同步写入磁盘
3.    shutdown -h now     关掉服务后立即关机
4.    chgrp root filename     更改文件所属组
5.    chown     更改文件所属用户
6.    chmod     更改文件属性:d(表示是目录文件还是一般文件)rwxrwxrwx分别为4+2+1=7,7+7+7; 第一个属性表示该文件类型,d=directory,l=link,b=block,c=character(bc为设备文件devce).    ..
7.    mkdir    [-mp] filename      是建立目录用的命令,make directory的缩写,-m:设置文件权限,直接设置,不要管默认权限.-p:帮组直接建立所需要的目录递归.
     例:mkdir -p test1/test2/test3/test4     加了-p参数后,可以建立多层目录.   
       mkdir -m 711 test2     加了-m参数后可直接设置权限
8.    touch [-acdemt] filename 修改文件时间与创建新文件.
       status time(ctime,-c),access time(atime,-a)指文件状态
       -a:公修改access time
       -c:公修改时间,而不建立文件
       -d:后面可以接日期,也可以使用 --date="日期或时间"
       -m:公修改mtime
       -t:后面可以接时间,格式为[YYMMDDhhmm]
9.    su     用来"变换身份"
10.  cat     将文件内容读出来
11.  ls -al     可简单通过文件第一属性来了解这个文件的类型.查看当前目录所有文件,及其属性.
12.  cd [path]     Change Directory的缩写,用来切换工作目录的命令
13.  pwd [-p]     Print Working Directory,显示当前所在的目录,-p:显示出实际中径,而非使用link路径
14.  rmdir [-p] filename     删除"空"目录,只能删除空目录,加上-p参数后能将一个路径目录一次删除,但必须为空目
15.  rm [-fir] 文件或目录     -f:(force)强制删除, -i:删除前询问, -r:递归删除,常用在目录的删除

   rm -rf test 将目录下的东西全都删除
16.  ll =ls -l     简略写法
17.  cp [-adfilprsu] source destination
18.  mv [-fiv] source destination 移动文件与目录,或重命名 -u(update)若文件已存在,且源文件比较新,才会更新.
     mv [options] s1 s2 s3.    .. directory
     mv filename1 filename2 这样就将filename1重命名了.   
19.  basename path 获取最后的文件名
       dirname path  获取目录名
20.  cat:由第一行开始显示文件内容
       tac:从最后一行开始显示,可以看出tac与cat字母相反
       nl:显示的时候输出行号
       more:一页一页地显示文件内容
       less:与more类似,但它可以向前翻页
       tail:只看最后几行
       od:以二进制方式读取文件内容
21.  head [-n number] filename,-n:表示显示几行的意思,显示前几行
22.  tail [-n number] filename,-n:表示显示几行的意思,显示后几行
23.  od [-t TYPE] 可以查看执行类文件,-t:后面可以接各种"类型"的输出
        a:使用默认的字符来输出
        c:使用ASCII字符来输出
        d[size]:使用十制进来输出
        o[size]:使用浮点数值来输出
        x[size]:使用十六进制输出
        这个命令对普通用户来说作用不大,但对工程师来说非常有用,他们能读懂二进制内容
24. umask [-S],-S:加上S参数以字符形式显示默认权限,指定的是"该默认值需要减掉的权限",r w x分别是4,2, 1,也就是说,当要去掉写权限时,就输入2,要去掉读权限时,就输入4,要去掉读与写的权限时,就输入6,要去掉读与执行的权限就输入5,如:umask 022
25.  chattr [+-=] [ASacdistu] filename 设置文件隐藏属性
        +:增加某个特殊参数,其它原本存在的参数不动
         -:删除某个特殊参数,其他原本存在的参数不动
        =:设置一定,且公有后面接的参数
    A:当设置了A属性时,这个文件或目录的访问时间aime将不能被修改,例如可避免手提电脑有磁盘I/O错误的情况
    发生
    S:这个功能有类似sync,就是将数据同步写入磁盘中
    a:设置a之后,这个文件将只能增加数据,而不能删除,只有root才能设置这个属性.
    c:这个属性设置后,将会自动将此文件"压缩",在读取的时候将会自动解压缩
    d:当执行dump(备份)程序的时候,设置d属性将可使该文件或目录具有转储功能
    i:i的作用很大,它可以让一个文件"不能被删除.改名,设置连接,也无法写入或新增数据"对于系统安全有很大帮组
    j:当使用ext3文件系统格式时,设置j属性会使文件在写入时先记录在journal中,但是,当文件系统设置参数为
    data=journalled时,由于已经设置了日志,所以这个属性无效
    s:当文件设置了s参数时,它将会从这个硬盘空间完全删除
    u:与s相反,当使用u来设置文件时,数据内容其实还存在磁盘中,可以用来还原删除
26.chmod xyz filename, 设置文件或目录的SUID SGID Stichy Bit属性.1为Sticky Bit,2为SGID,4为SUID. 例:chmod 1777 filename.前面1表示设置Sticky Bit属性
27.file filename: 如果想知道某个文件的基本信息,例如属于ASCII,数据文件还是二进制文件且其中是否使用动态函数库等信息.
28.    which [-a] command 寻找执行文件.-a:将所有可找到命令均列出而不仅仅列出第一个找到的命令名称.
29.    whereis [-hmsu] filename/directory 寻找特定文件
    -b:只找二进制文件
    -m:只找在帮组文件manual路径下的文件
    -s:只找源文件
    -u:没有帮组文件的文件
30.    locate filename: locate,whereis都是通过数据库来搜索的,所以速度比较快,但有一个缺点就是默认数据库
    是每天更新一次的.也可以手动更新.
31.    find [PATH] [option] [action]: 功能强大的搜索功能.PS:要指定在哪个目录下搜索,否则默认当前目录.
    -atime n:在n天之前的"一天之内"访问过的文件
    -ctime n:在n天之前的"一天之内"修改过状态的文件
    -mtime n:在n天之前的"一天之内"修改过的文件
    -newer file:file为一个存在的文件,意思是"只要文件比file要新就列出来"
    例:    find / -perm +7000 -exec ls -l {} \
        -exec后面的ls -l是额外的命令,{}表示"由find找到的内容","\;"表示-exec命令到此为止.
    不知道全名的时候,可能过通配符*,如:find -name '*fly*': 则会查找名字含有'fly'的文件
32.    df [-ahikHTm] [directory/filename]    查看当前磁盘最大允许容量,已用的容量,当前所在目录的已用容量.
    du :同上
33.    ln [-sf] 源文件 目标文件 :建立连接文件,不加-s建立硬连接,加-s建立符号连接.
34.    fdisk [-l] 磁盘分区
    fdisk /dev/hdb 分驱/dev/hdb,这里进入fdisk画面中.
35.    mke2fs [-bioLj] 设备名称
36.    fsck [-Atcary] 设备名称
37.    badblocks [-svw] 设备名称,和fsck一样,都是用来检查硬盘错误的命令
38.    mount 磁盘的载入与卸载  mount -o loop .iso directory:可以将镜像文件挂载
39.    mknod 修改磁盘参数
40.    gzip [-cdt#] filename : 压缩与解压缩
    -c:将压缩的数据输出到屏幕上,可通赤娄据流重导来处理
    -d:解压缩的参数
    -t:可以用来检验一个压缩文件的一致性,看文件有无错误
    -#:压缩等级,-1最快,但压缩比最差,-9最慢.
    zcat filename :查看一个压缩文件内容
41.    bzip2,bzcat:同上,compress扩展名为.Z,gzip为.gz,bzip2为.bz2.
42.    tar [-cxtzjvfpPN] filename\directory
    -c:建立压缩文件的参数命令(create的意思)
    -x:解压缩文件的参数命令
    -t:查看tarfile里的文件,前三个参数只能有一个存在,不能同时存在.
    -z:是否需要用gzip压缩
    -j:是否同时具有bzip2的属性,是否要用bzip2压缩.
    -v:压缩的过程中显示文件
    -f:使用文件名,在f后要立即接文件名,不要再加参数
    -p:使用原文件的原来属性,很重要
    -N:
    tar -cvf /tmp/etc.tar /etc 仅打包,不压缩.
    tar -zcvf /tmp/etc.tar.gz /etc 打包后,以gzip压缩
    tar -ztvf /tmp/etc.tar.gz 查看压缩文件内容,加上前面对应的方式z或j很重要
43.    dd if="input_file" of="outptu_file" bs="block_size" count="number"
    if:是输入文件,也可以是设备
    of:输出
    bs:规划的一个块的大小,如果没有设置时,默认是512字节
    count:多少个bs的意思
    例:    dd if=/etc/passwd of=/tmp/passwd.back
    一般用来备份文件.
44.    dos2unix -k -n hosts.dos hosts.linux将范例一已经变成DOS格工的hosts转换
    linux格式到hosts.linux
    unix2dos 相反
    在不同系统中共用文件时必须经过这两个转换. 不同系统中的换行符不同,windows的DOS是CRLF,linux是LF,windows占用空间大.
45.    alias lm='ls -al' 命令别名设置功能
46.    type [-tpa] name 不加任何参数时,type会显示出name是外部命令还是bash内置命令.
    加入-t参数时,type会将name通过下面这些文字显示出它的意义
    file:    表示为外部命令
    alias:    表示该命令为命令别名所设置的名称.
    builtin:表示该命令为bash内置的命令功能.
    -p:如果后面接的name为命令,会显示完整文件名或显示为内置命令
    -a:在PATH变量定义的路径中,列出所有含有name的命令,包含alias
47.    变量的使用:
    显示变量值, echo $variable 只需在变量名前加上$就能显示变量的值
    例:    myname=Kenfly && echo $myname 会显示Kenfly
    当一个变量名称尚未设置时,默认的内容是"空"的,变量设置是要符合某些规定,否则会失效:
    1.变量与变量内容以等号"="来连接
    2.等号两边不能直接接空格符
    3.变量名称只能是英文字毌与数字,但数字不能是开头字符
    4.若有空格符,可以使用双引号""或单引号将变量内容结合起来,但要特别注意,双引号内的特殊字符可以保持变量特性,但单引号内的特殊字符则仅为一般字符
    5.必要时需要以转义符"\"将特殊符号(如Enter,$,\,空格符,等)变成一般符号
    6.在一串命令中,还需要通过其他命令提供的信息,可以使用这样的方式`command`(特别注意,`是键盘上方的数字键1左边的那个键,非单引号)
    7.若变量为扩展变量内容,需要以双引号及$变量名称如"$PATH":/home继续类加内容
    8.若该变量需要在其他子程序中执行,则需要用export使变量变成环境变量,如"export PATH"
    9.通常大写字毌为系统默认变量,自行设置变量可以使用小写字毌,便于判断
    10.取消变量的方法:"unset 变量名称"
48.    在这串命令中,`之内的命令将先执行,而其执行出来的结果将作为外部输入信息
    如:    ls -l `locate crontab`,它的含义是,先用locate将文件名数据都列出来,再用ls命令来处理
49.    环境变量的使用:
    env:列出所有变量的信息:
    HOME:代表用户的家目录,我们使用的cd ~到用户的家目录就是用这个功能
    SHELL:告诉我们,当前的这个环境使用的shell是哪个程序
    HISTSIZE:与"历史命令"有关,即我们曾经执行过的命令可以被记录下来的数目
    ENV:这个是用户所遥的个性化环境设置文件的读取文件
    MAIL:当使用mail命令收信时,系统会去读取的邮件信箱文件
    PATH:就是执行文件搜索的路径,目录之间以冒号:分隔,文件的搜索是按顺序由PATH的变量内的目录来查询
    LANG:这个很重要,就是语系文件
    RANDOM:这是随机数变量,能产生介于0~32767这间的数,要使用0~9之间的数值时,可以用declare声明数值类型:
    declare -i number=$RANDOM*10/32767 ; echo $number
    PS1:提示符的设置
    \d:代表日期
    \H \h:代表主机名称
    \t \T \A:显示时间
    \u:当前用户的账号名称
    \v:bash的版本信息
    \w \W:利用basename取得工作目录名称
    \#:执行的第几个命令
    \$:提示符,如果是root时,提示符为#,否则就是$.
    如:    PS1='[\u@\h \w \A #\#]\$'
    $:    这个表示"当前这个Shell的进程号",即为PID
    ?:    表示上一个执行命公的回传码,成功一般返回0,否则返回非0值


50.    read [-pt] variable(变量)
    -p:后面可以接提示符
    -t:后面可以接等待的"秒数",这个比较有意思,不会一直等待用户.
    read var :    让用户通过键盘输入内容,将内容变成var变量值
60.    declare [-aixr] variable
    -a:将后面的variable定义为数组(array)
    -i:将后面的variable定义为整数数字(integer)
    -x:用法与export一样,就是将后面的variable变成环境变量
    -r:将一个variable的变量设置成只读,该变量不可更改内容,也不能取消设置(unset)
    范例:让变量sum对100+300+50求和
    # sum=100+300+50 && echo $sum :这命令将显示100+300+50,而不是我们想要的结果,这是因为sum是文字变量
    正确做法是应先声明sum为整型
    :    declare -i sum=100+300+50 && echo $sum
61.    var=${str-newvar}    :若str这个变量内容存在,刚var设置为str,否则设置为"newvar"
62.    alias rm='rm -i' :命令别名
    unalias rm     :取消命令别名
63.    history:列出当前内存的所有历史记忆
    history 3:列出当前最近的3个命令
    history -w:在默认的情况下,会将历史记录写入~/.bash_history中
    !number: 执行第几条命令的意思.
    !command: 由最近的命令向前搜索"命令串开头为command"的命令,并执行.
64.    如果想让用户登录后获取一些消息,可以将消息加入/etc/motd中 例:
    vi /etc/motd
    hello
    用户登录后会显示"hello"消息
65.    /etc/profile :这个文件设置了几个重要的变量,例如"PATH,USER,MAIL,HOSTNAME,HISTSIZE,umask"
    /etc/inputrc :这个文件设置了键盘热键设置的数据内容.
    /etc/bashrc :这个文件确定umask的功能,同时也确定了提示符的内容(就是那个PS1)
    ~/.bash_profile,~/.bash_login,~/.profile 这3个文件通常只要一个即可
    ~/.bashrc : 一般将自己的需要输入到这个文件,个性化设置等,命令别名,路径,每次执行shell脚本时都会重新读取这个文件,而~/.bash_profile则只有在登录时才读取一次
    ~/.bash_logout这个文件记录"当我注销bash后,系统再帮我做完什么操作后才离开"

66.    source file:让设置文件立即生效.也可以以小数点.代替source
67.    stty [-a]:(setting tty终端的意思) stty也可以帮组设置终端的输入按键代表的意义
    例: stty erase ^h :从此之后,删除字符就得要使用[Ctrl]+H键 执行stty erase ^?就可恢复[backspace]
68.    通配符的使用:
    cp *[A-Z]* /tmp :只要文件名里含有至少一个大写字母就可以将文件复制出来.
    [],仅表示一个字符,而这个字符的定义可以是范围
    ls -lda /etc/*[0-9]* :找出/etc下所有含有数字的文件
    ls -lda /etc/*[35]* : 只想找出含有3及5的文件名的文件
    ls -lda /etc/[!a-z]* :不想要有小写字母开头的文件
    ` `(非' '),的功能也可以利用$()来替换:
        例:cd /lib/modules/$(uname -r)/kernel 在$()里的命令会先执行
69.    [数据流重导向]
    "1>","1>>" ("1"可省)标准输出,stdin 前者是重建输出,后者是在原文件添加输出,都有创建文件功能.
    "2>","2>>" 错误输出,stderr.
    例:
    find / -neme sbin 1>./Desktop/right.txt 2> ./Desktop/wrong.txt
    PS: /dev/null 它的功能有点像"黑洞"的垃圾桶功能,当输入的任何东西导向到这个虚拟的垃圾桶设备时,"它就会凭空消失不见了".
    输入同一文件的正确写法: find /home -name testing >list 2>&1
        "<":解释是"将原本需要由键盘输入的数据通过文件来读入"
    如: cat > catfile :通过键盘输入数据保存在catfile上,按下C+D结束输入.
    可以:    cat > catfile < somefile :将文件somefile内容输入到catfile
    "<<":表示"结束输入字符" 如: cat > catfile << eof : 当键盘输入eof时结束输入,不需要按下C+D.很方便.PS:eof不会写入文件中
70.    [管道命令]: 每个管道的前后都是"命令",后一个命令的输入是前一个命令的输出.
    "|"  : ls -al /etc | less :
    cut:    [-d] 后面接分隔符,与-f一起使用
        [-f]根据-d的分隔符将一段消息分为数段,用-f取出第几段的意思.
        [-c] 以字符为单位取出固定的字符范围. 
    例:    echo $PATH | cut -d ':' -f 5
        echo $PATH | cut -c  4- 将第4个字符后的全部输出 还可以 4-5 -4...
        last | cut -d ' ' -f 1: 用last将这个月登录的信息中,仅留下用户名称.
    grep:
        grep [-acinv] '搜索字符串' filename
        -a: 将二进制文件以文本文件的方式搜索数据
        -c: 计算找到'搜索字符串' 的次数
        -i: 忽略大小写的不同,所以大小写视为相同.
        -n: 顺便输出行号.
        -v: 反向选择,即显示出没有'搜索字符串'内容的那一行
        例: last | grep 'root' : 将last中出现root的一行取出来.
    sort: [重要]
        sort [-fbMnrtuk] [file or stdin]
        -f: 忽略大小写的差异.
        -b: 忽略最前面的空格符部分.
        -M: 以月份的名字来排序,
        -n: 使用"纯数字"进行排序(默认是以文字类型来排序的).
        -r: 反向排序.
        -u: 就是uniq,相同的数据中,仅出现一行表示.
        -t: 分隔符,默认是tab键.
        -k: 按那个字段(field)来进行排序.
        例: cat /etc/passwd | sort -t ':' -k 3   :以':'来分隔,以第三栏来排序.
    uniq:
        -i: 忽略大小写
        -c: 进行计数
        例:     last | cut -d ' ' -f 1 | sort | uniq -c 使用last显示账号,仅取出账号栏,进行排序后令取出一位.
    wc:
        wc [-lwm]  可以知道文件有多少字,多少行,多少字符
        -l: 仅显示多少行.
        -w: 仅显示多少字(英文单词)
        -m: 多少字符.
        cat /etc/man.config | wc  输出的三个数字分别表示"行数,字数,字符数"
    [双向重导向]: tee [-a] file   :当想将一段数据流保存进文件里又想马上显示在stdout上.
        -a: 以累加(append)的方式将数据加入file中.
        例: last | tee last.list | cut -d " " -f1 :将last的输出存一份到last.list文件中.
    tr:
        tr [-ds] SET1 ...
        -d: 删除消息中的SET1字符串.
        -s: 替换重复的字符.
        例: last | tr '[a-z]' 'A-z' :将last输出的消息中,所有小写变成大写字母
            cat /home/test/dostxt | tr -d '\r' > dostxt-noM: 将DOS文件的换行符^M符号删除.
    col:
        -x: 将tab键转换成对等的空格键.
        例: cat -A /etc/man.config  此时会看到很多^I的符号,那就是tab.
            cat /etc/man.config | col -x | cat -A | more 如此一来,[tab]就会被替换成为空格键,输出美观多了.

    join, paste,expand 未看.


    [拆分命令][重要]
    split [-bl] file PREFIX : 可以将一个大文件,根据文件大小或行数来拆分,将大文件拆分为小文件,快速又有效.
        -b: 后接要拆分的文件大小,可加单位,如b,k,m等.
        -l: 按行数进行拆分.
        例: cd /tmp; split -b 300k /etc/termcap termcap(文件前缀名,将会生成XXXa,XXXb...).
        要将上面生成的3个小文件合成一个文件,文件名为termcapback.可以:
        cat termcap* >> termcapback
    例: ls -al / | split -l 10 - lsroot  :使用ls输出的作息中,每10行记录成一个文件.重点在"-", 一般来说如果需要stdout/stdin时,
                        但偏偏又没有文件,有的只是-,那么-就会被当成stdin或stdout.
71.    grep [-acinv] '搜索字符串' filename
    -a: 在二进制文件中,以文本文件的方式搜索数据
    -c: 计算找到'搜索字符串' 的次数
    -i: 忽略大小写的不同,所以大小写视为相同
    -n: 输出行号
    -v: 反向选择,即显示出没有'搜索字符串'内容的那一行
    例:  grep 'root' /var/log/secure
         last | grep root :用last显示最近登录信息,只显示行里有root的那些行
72.     临时修改语系: LANG=en; export LANG
73.    [正则表达式]:
    [1].    利用"[]"来搜过集合字符."[]"中不论有几个字符,都只代表"一个"字符.当要搜索test 或taste这两个单词时: [grep -n 't[ae]st' regular_express.txt]
    [2]    如果想搜索到有"oo"字符,则:[grep -n 'oo' regular_express.txt].
    [3]    如果不想前面有"g"的话,可以利用集合字符的反向选择"[^]"来实现: [grep -n '[^g]oo' regular_express.txt].   
    [4]    如果不想前面有小写字母可以 :[grep -n '[^a-z]oo' regular_express.txt].
    [5]    [a-z],[A-Z],[0-9],[a-zA-Z0-9].
    [6]行首与行尾字符^$.
        ^:查询一行字符串里有the,如果只想让the在行首列出:[grep -n '^the' regular_express.txt]
        ("^"在[]内和在[]外是不同的,在内表示反选,在外表示字位在行首)
        $:如果想查出行尾结束为小数点(.)的一行,处理方法为:[grep -n '\.$' regular_express.txt],注意小数点有特别含义,所以必须使用转义符.
        找出哪一行是空白行: [grep -n '^$' regular_express.txt].
        [GOOD]: 假设已经知道在一个shell脚本或设置文件中,空白行与开头为#的那一行是注释,如果将数据提供给别人参考时,可以将这些数据略掉,
            以节省纸张: [grep -v '^$' ~kenfly/.vimrc | grep -v '^#'] (-v表示反向选择输出)
    [7]任意一个字符(.)与重复字符(*):  (要与通配符区别开来)
        (.):表示"绝对有一个任意字符"
            假设要找出g??d字符串: [grep -n 'g..d' regular_express.txt]
        (*)表示"重复0个或多个前面的RE字符"
            如果:[grep -n 'o*' file]将会把所有数据显示出来
            如果要显示到少两个o以上的字符串时: [grep -n 'ooo*' file].
            如果要找出"任意数字"的行: [grep -n '[0-9][0-9]*' file].
        ".*" 表示"零个或多个任意字符"
            如要显示两边为g的字符即 "g......g" : [grep -n 'g.*g' file]
    [8]限定连续重复字符范围{}

74.    sudo apt-get remove --purge XX: 连配置文件一起清除
75.    终止一个进程可以使用[ services 服务名 stop ] 或[ kill 进程标识符 ]\
    查看进程可以用ps,pstree,top等.

0 0
原创粉丝点击