linux常用命令(自我总结)

  • 从某个文件取文件前2000行存到另一个文件中去
    • head -n 2000 part-00198 >test2.csv
  • 将某个数据文件以指定分隔符输出到另外一个文件中
    • awk 'BEGIN{FS=OFS=","}{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10}' file_name>new_file_name
    • $i代表你想输出文件中的哪个字段,请注意输入输出分隔符,可以自己指定输出分隔符
  • 将文本文件指定行的内容存储到另一个文件中去
    • 从第3000行开始,显示1000行。即显示3000~3999行
    • cat filename | tail -n +3000 | head -n 1000
    • 显示1000行到3000行
    • cat filename| head -n 3000 | tail -n +1000
    • tail -n 1000:显示最后1000行
    • tail -n +1000:从1000行开始显示,显示1000行以后的
    • head -n 1000:显示前面1000行
    • 用sed命令
    • sed -n '5,10p' filename 这样你就可以只查看文件的第5行到第10行。
    • 若数字前面不带加号,则代表原意,若加上加号,则代表从这一行开始
  • 统计文本记录行数
    • wc -l filename
    • awk ‘END{print NR}’ filename
    • grep -c ‘.*’ filename
    • sed -n ‘$=’ a.txt
    • cat -n a.txt |tail -1
    • 用vi打开文件就看到了,shift+G到尾行
    • :.=也可以看所在行。
    • :=看所有行
  • 在vim里面搜索关键字
    • 命令模式下输入'/'
    • 再输入要搜索的关键字
    • 回车
    • 输入n
    • 可以搜索下一个
  • 统计数据文件有多少个字段(打印某个文件的记录条数和字段个数)
    • awk 'BEGIN{FS=OFS=","}{print NF}' filename |sort|uniq -c|more
    • uniq(选项)(参数)
    • 选项
    • -c或——count:在每列旁边显示该行重复出现的次数;
    • -d或--repeated:仅显示重复出现的行列;
    • -f<栏位>或--skip-fields=<栏位>:忽略比较指定的栏位;
    • -s<字符位置>或--skip-chars=<字符位置>:忽略比较指定的字符;
    • -u或——unique:仅显示出一次的行列;
    • -w<字符位置>或--check-chars=<字符位置>:指定要比较的字符。
  • 执行从windows上传服务器新的文件,建议提前做此操作,避免出现编码问题
    • chmod +x load_ta_dt_action_hotspot_video_m.sh
    • dos2unix load_ta_dt_action_hotspot_video_m.sh
  • tee
    • 用于读取标准输入的数据,并将其内容输出成文件。
    • tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
    • tee [-ai][--help][--version][文件...]
    • 参数:
    • -a或--append  附加到既有文件的后面,而非覆盖它.
    • -i或--ignore-interrupts  忽略中断信号。
    • --help  在线帮助。
    • --version  显示版本信息。
  • wc
    • 统计多个文件的总行数
      • cat result_ott_distance_*|wc -l
    • 统计指定文件中的字节数、字数、行数, 并将统计结果显示输出
    • wc -l filename 报告行数
    • wc -c filename 报告字节数
    • wc -m filename 报告字符数
    • wc -w filename 报告单词数
    • ls -l|wc -l 用来统计当前目录下的文件数
    • ls BKK | egrep [^X]\.webp | wc 列出BKK目录下 后缀名是
    • 且前缀名不是以大写X结尾的文件的 文件数
    • find  . * | xargs wc -l 当前目录以及子目录的所有文件行数
  • xargs
    • 给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs的默认命令是echo,空格是默认定界符。这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。xargs是构建单行命令的重要组件之一。
    • -n选项多行输出
    • -d选项可以自定义一个定界符
  • egrep
    • 用于在文件内查找指定的字符串。egrep执行效果与grep -E相似,使用的语法及参数可参照grep指令,与grep的不同点在于解读字符串的方法。egrep是用extended regular expression语法来解读的,而grep则用basic regular expression 语法解读,extended regular expression比basic regular expression的表达更规范。
  • sort
    • 它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。sort将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出
    • sort(选项)(参数)
    • 忽略相同行使用-u选项或者uniq , -n(number)是按照数字大小排序,-r (reverse)是以相反顺序,-k 是指定需要要排序的栏位,-t (separator)指定栏位分隔符为冒号
  • uniq
    • 统计各行在文件中出现的次数
    • sort file.txt | uniq -c (count)
    • 在文件中找出重复的行
    • sort file.txt | uniq -d
    • 删除重复行
    • sort -n test.txt | uniq
  • linux中uniq与sort -u两种去重的对比
    • $ cat test
      • jason
      • jason
      • jason
      • fffff
      • jason
    • 下面分别执行三个命令
    • 1:sort -u test
      • sort -u test
      • fffff
      • jason
    • 2: uniq test
      • $uniq test
      • jason
      • fffff
      • jason
    • 3: sort test|uniq
      • $sort test |uniq
      • fffff
      • jason
    • uniq所谓的重复是连续出现的相同记录
  • 怎么样正确的查看Linux的内存占用情况 free -m
    • [root@host ~]# free -m
    • total used free shared buffers cached
    • Mem: 1024 1005 19 0 9 782
    • -/+ buffers/cache: 212 811
    • Swap: 996 0 995
    • 从上看出这个Linux系统一共有内存1024M,但当前Linux 系统已经占用的内存有多少呢?大多数用户的答案是1005M,其实不然。 当前VPS占用的内存应该是212M,也就是1005下面那个数字:212,代表已经占用的内存。后面的那个811,代表当前Linux系统的可用内存。 "-/+ buffers/cache:"开头的这行才是实际的占用内存和可用内存。 所以,看内存使用情况,应该看"-/+ buffers/cache:"开头的这一行,如果这一行最后的数字接近0,那么说明Linux系统的内存快用完了,这时候Linux系统反应就比较慢。如果这个数字还比较大,那么Linux系统还有较多内存可用,系统不应该慢。
  • linux查看磁盘空间大小
    • df -hl 查看磁盘剩余空间
    • df -h 查看每个根路径的分区大小/查看硬盘剩余空间
    • du -sh [目录名] 返回该目录的大小
    • du -sm [文件夹] 返回该文件夹总M数
    • du -h [目录名] 查看指定文件夹下的所有文件大小(包含子文件夹)
    • sudo fdisk -l 查看硬盘的分区
    • sudo hdparm -i /dev/hda 查看IDE硬盘信息
    • sudo hdparm -I /dev/sda 或 #sudo apt-get install blktool #sudo blktool /dev/sda id 查看STAT硬盘信息 #
    • du -hs 目录名 查看目录占用空间
    • sync fuser -km /media/usbdisk 优盘没法卸载
  • Linux vim 删除方法总结(删除全部,删除某行到结尾,删除某段内容,删除字符)
    • 1.打开文件 :vi filename
    • 以下所有输入均在命令模式下:
    • 2.转到文件结尾:G
    • 或转到第9行:9G
    • 3.删除所有内容(先用G转到文件尾) ,使用:
    • :1,.d
    • 或者删除第9行到第200行的内容(先用200G转到第200行) ,使用::9,.d
    • 4.删除光标所在处字符:x
    • 5.删除光标所在前字符(大写 X ):X
    • 6.删除到下一个单词开头:dw
    • 7.删除到本单词末尾:de
    • 8.删除到本单词末尾包括标点在内:dE
    • 9.删除到前一个单词:db
    • 10.删除到前一个单词包括标点在内:dB
    • 11.删除一整行:dd
    • 12.删除光标位置到本行结尾:D d$
    • 13.删除光标位置到本行开头:d0
  • sed命令
    • 数据的搜寻并显示:
      • 搜索 /etc/passwd有root关键字的行
        • nl /etc/passwd | sed '/root/p'
    • 数据的搜寻并删除:
      • 删除/etc/passwd所有包含root的行,其他行输出
        • nl /etc/passwd | sed '/root/d'
          • 2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh
          • 3 bin:x:2:2:bin:/bin:/bin/sh....
          • 下面忽略#第一行的匹配root已经删除了
    • 数据的搜寻并执行命令:
      • 找到匹配模式eastern的行后,搜索/etc/passwd,找到root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把bash替换为blueshell,再输出这行:
        • nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p}' 
          • 1  root:x:0:0:root:/root:/bin/blueshell
      • 如果只替换/etc/passwd的第一个bash关键字为blueshell,就退出
        • nl /etc/passwd | sed -n '/bash/{s/bash/blueshell/;p;q}' 1 root:x:0:0:root:/root:/bin/blueshell
        • 最后的q是退出。
    • 数据的搜寻并替换:
      • 除了整行的处理模式之外, sed 还可以用行为单位进行部分数据的搜寻并取代。基本上 sed 的搜寻与替代的与 vi 相当的类似!他有点像这样:
        • sed 's/要被取代的字串/新的字串/g'
  • ls 查看某个txt...等文档的大小
    • ls -lrth file_name
  • stat查看某个日志文件的详细时间(包括创建时间,结束时间)
    • stat  py_multimediabox_no_home_rel.log
  • 查看环境变量
    • env |grep
    • .bash_profilr
    • .bash_brc
  • vim全选复制粘贴
    • ggVG
    • gg 让光标移到首行,在vim才有效,vi中无效
    • V   是进入Visual(可视)模式
    • G  光标移到最后一行
    • 选中内容以后就可以其他的操作了,比如:
    • d  删除选中内容
    • y  复制选中内容到0号寄存器
    • "+y  复制选中内容到+寄存器,也就是系统的剪贴板,供其他程序用
    • 复制光标所在的一样 “Y”
    • 把内容粘贴到光标所在的位置,“p”
  • cron 各项的描述
    • 以下是 crontab 文件的格式:
    • {minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script}
    • o minute: 区间为 0 – 59
    • o hour: 区间为0 – 23
    • o day-of-month: 区间为0 – 31
    • o month: 区间为1 – 12. 1 是1月. 12是12月.
    • o Day-of-week: 区间为0 – 7. 周日可以是0或7.
    • 40 12 25 11 * sh /srv/user_five_app_types_pca_file/get_five_types_pca_result_all.sh20181001 20181031 > get_five_types_pca_result_all_20181125.log
  • split(选项)(file)PREFIX
    • -b:值为每一输出档案的大小,单位为 byte。
    • C:每一输出档中,单行的最大 byte 数。
    • -d:使用数字作为后缀。
    • -l:值为每一输出档的列数大小。
    • PREFIX:代表前导符,可作为切割文件的前导文件。
    •  
    • 使用split命令将上面创建的date.file文件分割成大小为10KB的小文件,文件被分割成多个带有字母的后缀文件,如果想用数字后缀可使用-d参数,同时可以使用-a length来指定后缀的长度,为分割后的文件指定文件名的前缀
    • split -b 10k date.file -d -a 3 split_file
    • ls 结果: date.file split_file000 split_file001 split_file002 split_file003 split_file004 split_file005 split_file006 split_file007 split_file008 split_file009
    • 将split分割的文件合并成一个
    • cat x*>>y*
  • shell脚本通过获取当月第一天来获取上个月第一天和最后一天
    • #! /bin/sh
    • nowdate=`date +%Y%m01` #本月第一天
    • startdate=`date -d"$nowdate last month" +%Y%m%d` #上个月第一天
    • enddate=`date -d"$nowdate last day" +%Y%m%d` #上个月最后一天
    • #遍历上个月的每一天
    • while (( $startdate <= $enddate ))
    • do
    • echo $startdate
    • startdate=`date -d "+1 day $startdate" +%Y%m%d`
    • done
  • 获取三个月以前的月份
    • echo `date --date='3 months ago' +%Y%m` 
    • 201809
  • 获取两天以前的日期
    • echo `date -d "2 day ago" +"%Y%m%d"`
    • 20181211
  • 挂载磁盘
  •  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值