###Linux基础命令

###Linux基础命令

点击查看Evernote原文

#@author:       gr
#@date:         2014-07-20
#@email:        forgerui@gmail.com

记录Linux常用命令。

  1. tree
  2. 文件目录通配符 * ? [ ]
  3. 链接
  • 硬链接 增加节点数,删除一个,节点减1
  • 软连接 新建一个链接文件,删除原文件,连接文件找不到文件
  1. ls 相关查询
    ls -lt 最后修改时间 mtime
    ls -lc 状态改变时间 ctime
    ls -lu 最后访问时间 atime

  2. 解压缩
    gzip .gz zxvf
    compress .Z Zxvf
    bzip2 .bz2 jxvf

  3. pidof

  4. iptables -A INPUT -m tcp -p tcp --dprot 10006 -j ACCEPT

  5. iostat,vmstat,mpstat

  6. 电源管理
    sudo pm-hibernate : 休眠
    sudo pm-suspend: 挂起
    sudo pm-powersave :省电模式

  7. 系统发行版本
    lsb_release -a
    cat /etc/issue

  8. 源管理
    #添加lauchpad软件源
    sudo add-apt-repository ppa:ailurus
    sudo apt-get update
    sudo apt-get dist-upgrade
    sudo apt-get install ailurus

  9. vi 中可以使用!使用shell系统命令,用r导入 :!r date

  10. vi 最后保存时发现没有权限,可以使用%! sudo tee %命令保存

  11. vi Ctrl+W:  = 窗口大小相等; _ 窗口最大; + 增大窗口; - 减小窗口.

  12. vi 行内移动:由于窗口太小,一行未显示全,通过 gj可以移动同一行显示中的第二行

  13. live cd 修复grub

    sudo -i
    mount /dev/sda9 /mnt
    mount /dev/sda6 /mnt/boot (如果没 /boot 单独分区这步跳过)
    grub-install --root-directory=/mnt/ /dev/sda
    reboot
    #重建grub列表
    sudo update-grub
    #重新写入第一分区mbr           
    sudo grub-install /dev/sda
    reboot
    
  14. grub2命令修复

    grub>find /boot/grub/core.img (有/boot分区的用find /grub/core.img)
    (hdx,y) (显示查找到的分区号)
    grub>root (hdx,y)
    grub>kernel /boot/grub/core.img (/boot分区的用 kernel /grub/core.img)
    grub>boot
    
  15. find

     find / -name 'helloworld'
    
  16. daily log
    1. 杀任务: jobs kill %1
    2. 踢除用户: pkill -kill -t pts/2
    3. sudo apt-get -f install
    4. split vspl
    5. ufw enable/disable
    ufw:uncomplicted firewall
    6. python -m SimpleHTTPServer
    7. sudo !!
    8. chkconfig --list mysql
    9. chkconfig --level 235 mysql on
    10. crontab Minute Hour Day Month DayOfWeek Command
    11. ^M可以先打Ctrl+v,再按Enter键实现
    12. 将^M去掉: %s/^M//g

  17. 使用命令行打开pdf
    evince hdfs_design.pdf

  18. man -7 可以查看相关文档
    man -7 fstab

  19. fstab
    fs_spec fs_file fs_type fs_mntops fs_dump(备份) fs_fsck(检查)
    /dev/sda1 /mnt vfat defaults 0 0

  20. mount
    mount -t [msdos | vfat | ntfs | iso9660]
    #mount -o用来描述设备或档案的挂接方式。 后面接loop是用来把一个文件当成硬盘分区挂接上系统。
    mount -t iso9660 -o loop a.iso /mnt

  21. sudo fdisk -l结果如下图,其中W95 Ext'd(LBA)是扩展分区的意思。
    ###Linux基础命令

  22. 今天遇到一个难受的问题,使用ifstream流处理数据时,总是无法读取全部数据,最后发现是终端显示的问题,直接读取输出的时候用的是cout<< val <<" ";,导致终端一行显示不下所有数据,修改为cout<< val <<endl;,发现实际上已经读取了全部数据。浪费了好多时间找答案...

  23. man页

    Mandatory arguments to long options are mandatory for short options too.长选项的强制参数对短选项也是必须的。

  24. >问题

    下面这段代码希望对文件进行排序,如下

    cat $FILE | sort -n | uniq > $FILE
    

    但运行的结果却是将$FILE文件清空了,因为先执行了>导致$FILE文件被清空,然后的操作 都是针对空文件。建议使用tee避免这种情况,即:

    cat $FILE | sort -n | uniq | tee $FILE
    
  25. linux中的常用变量

    $?      #上个语句执行的状况
    $#      #参数个数
    $@      #每个参数,可以用for遍历
    $*      #每个参数,字符串
    
    !!      #上一条命令,sudo !!
    !$      #上一条命令的最后一个参数
    

    注意:
    linux shell中,$#的参数个数是不计算命令的,$0代表命令,$1是第一个参数,如果只是 一个命令没有参数的话,$# 为0。可以通过这个判断是否输入参数。

  26. date

    //时间戳转换为时间
    date -d@1234567890
    //时间转为时间戳,%s表示转化为时间戳
    date -d20140815 +%s
    
  27. 命令替换

    //把上个命令中的a替换成b并重新执行一次
    ^a^b
    //同样的命令
    !!:gs/a/b
    

    注意: ^a^b只会替换第一处,不会替换所有,使用!!:gs/a/b将替换所有出现a的地方,其中的g表示global,去掉g之后,与上面的命令等价。

  28. the device is busy

    使用fuser /mount查看占用进程,或者使用fuser -k /mount直接杀死进程。有时候可能是终端cd到挂载目录导致占用。也可以使用lsof查看。

  29. 挂载Windows共享文件夹

    使用命令挂载Windows共享文件
    sudo mount.cifs <共享文件位置> <挂载点> <-o username=用户名>
    sudo mount.cifs //10.10.64.159/public /mount -o username=public

  30. history相关

    # `!-:` 上个命令除去最后一个参数以外的命令,下面的命令由a.txt换成b.txt
    $ ls -lt a.txt
    $ !-: b.txt
    # `!×` 上个命令所有参数
    # `!num`执行第num个命令
    $ !789      #执行history中第789个命令
    # `!cmd` 执行上个histroy中最近的命令
    $ !cat      #执行最上次执行的cat命令
    

    使用Ctrl+R搜索相关命令,使用!cmd执行上个命令,都可以极大帮助你。