2018-07-28 10:05:10 gumengkai 阅读数 253
  • Linux系统编程第2期:文件IO编程实战

    本课程是《嵌入式工程师自我修养》自学教程第 3 步:Linux系统编程第02期。 本期课程主要介绍跟文件、目录相关的文件IO函数的使用,通过编程实战形式,实现了常用的shell命令:ls\cat\rmdir\wc等。以及实现音频播放器V2.0版本:支持循环列表播放。通过10来个Linux环境下shell命令的编程实现,达到熟练掌握文件IO编程的学习目标。

    327 人正在学习 去看看 王利涛

场景:在windows下编辑的脚本,使用paramiko编写的代码传到windows服务器并执行,但生成的目录总是带有问号

原因:windows下的换行符和linux不一致,导致执行脚本生成的目录带有问号(可能不仅限于此问题,其他莫名其妙的情况也可能的出现),出现这种情况,建议在Linux上编写脚本再拿到windows使用

[root@mysql app]# ls -ll
total 8
drwxrwxr-x 3 root   root     4096 Jul 24 19:35 oracle
drwxrwxr-x 2 oracle oinstall 4096 Jul 24 19:35 oraInventory?

 

2017-04-24 21:19:25 ch717828 阅读数 346
  • Linux系统编程第2期:文件IO编程实战

    本课程是《嵌入式工程师自我修养》自学教程第 3 步:Linux系统编程第02期。 本期课程主要介绍跟文件、目录相关的文件IO函数的使用,通过编程实战形式,实现了常用的shell命令:ls\cat\rmdir\wc等。以及实现音频播放器V2.0版本:支持循环列表播放。通过10来个Linux环境下shell命令的编程实现,达到熟练掌握文件IO编程的学习目标。

    327 人正在学习 去看看 王利涛

常用命令

  1. ls命令

    • ls -a #输出包括.开头的隐藏文件
    • ls -F #给条目追加文件类型标识符,若是目录,会有目录名/
    • ls -R #递归地列出子目录内容
    • ls -l #按长列表输出格式显示
    • ls -i #显示每个文件的索引值
    • ls -s #输出每个文件的块大小
    • 显示指定文件 myprog

      ls -l myprog

    • 显示指定文件 mypro? (问号代表一个字符)

      ls -l mypro?

    • 显示指定文件 mypro* (星号代表零个或多个字符)

      ls -l mypro*

  2. touch命令

    • touch test1 #创建文件test1
  3. cp命令

    • cp test1 test2 # test1复制到test2,test2有新的创建时间和修改时间
    • cp -p test1 test2 # 保留原文件的访问时间和修改时间
    • cp -R dir1 dir2 #递归复制整个目录
    • cp -f test1 test2 #强制复制,不提示用户
  4. mv命令

    • mv test1 test2 # test1重命名(移动)为test2
    • 移动有软链接指向的文件时,软链接可能会失效。
  5. rm命令
    • rm -i test1 #交互式删除test1
    • rm -f test1 #强制删除test1
  6. mkdir命令
    • mkdir dir1 #创建目录
  7. rmdir命令
    • rmdir dir1 #删除目录,默认只能删除空目录
    • rmdir --ignore-fail-on-non-empty #强制删除
  8. cat命令
    • cat test1 #显示test1中的内容
    • cat -n test1 #显示test1中的内容时加上行号
    • cat -b test1 #显示行号但忽略空白行
    • cat -s test1 #多个空白行压缩到单个空白行
  9. more命令
    • more命令会显示文本文件的内容,但会在显示每页数据之后停下来
  10. less命令
    • less命令实为more命令的升级版,可显示文件的内容,而不用读取整个文件
  11. tail命令
    • tail命令会显示文件末尾部分的内容
    • tail -f test1 #实时监测test1的内容
  12. head命令
    • head命令会显示文件开头部分的内容

2. 更多的bash shell命令

监测程序

  1. ps命令
    • 默认情况下,ps命令只会显示运行在当前控制台下的属于当前用户的进程
    • ps -ef #查看系统上运行的所有进程
    • ps -efH #查看系统上运行的所有进程,组织成一个层级格式
  2. top命令
    • top命令用于实时监测进程
  3. kill命令
    • 默认情况下,kill命令会发送一个TERM(尽可能终止)信号,但可能会被进程忽略
    • kill命令只能通过PID而不能通过进程名来停止进程
    • kill -s HUP 3940 #挂起pid为3940的进程
  4. killall命令
    - killall命令可以使用进程名停止进程
    • killall http* #停止所有http开头的进程

监测磁盘空间

  1. mount命令

    • 默认情况下,mount命令会输出当前系统上挂在的设备列表
    • 媒体设备挂在到了虚拟目录后,root用户就有了对该设备的所有访问权限
    • mount -t vfat /dev/sdb1 /media/disk #将设备/dev/sdb1挂在到/media/disk,设备的文件类型为vfat
    • mount命令可以将CD镜像.iso文件当作真实CD来挂载,用户就能访问该.iso的文件系统了
    mkdir mnt
    su
    mount -t iso9660 -o loop MEPIS_KDE4-LIVE-DVD_32.iso mnt
    ls -l mnt
    cd mnt/boot
    ls -l
  2. umount命令
    • 从Linux系统上移除一个可移动设备时,不能直接从系统上移除,而应该先卸载它。
    • umount命令支持通过设备文件或是挂载点来指定要卸载的设备
    • umount /home/rich/mnt
  3. df命令
    • df #用来查看所有已挂载磁盘的使用情况
    • df -h #以人类可读的形式显示
  4. du命令
    • 默认情况下,du命令会显示当前目录下所有文件、目录和子目录的磁盘使用情况。
    • du Desktop/pythonworkspace/ #显示Desktop/pythonworkspace磁盘使用情况
    • du -c Desktop/pythonworkspace/ #显示所以已列出文件总的大小
    • du -h Desktop/pythonworkspace/ #按人类可度的形式显示
    • du -s Desktop/pythonworkspace/ #只显示输出参数的总计

处理数据文件

  1. sort命令
    • sort file1 #按字符排序file1文件中的内容并打印
    • sort -n file1 #按数值排序
    • sort -M file1 #按月份排序,sort可以识别三个字符的月份
    • sort -t':' -k 3 -n /etc/passwd #-t指定字段分隔符,-k指定排序的字段
    • du -sh * | sort -nr #将系统文件按磁盘使用大小排序,-r为降序
  2. grep命令
    • grep命令会到输入中或你指定的文件中查找包含匹配制定模式的字符的行
    • grep t file1 #file1中查找包含字符t的行
    • grep -v t file1 #在file1中反向查找
    • grep -n t file1 #显示匹配的行号
    • grep -c t file1 #统计有多少行匹配
    • grep -e t -e f file1 #指定多个模式,匹配任意一个即可
    • grep [tf] file1 #正则匹配,t或f中的任意一个匹配
  3. bzip2命令
    • bzip2 myprog #bzip2命令尝试压缩myprog文件,并用压缩文件替换原始文件
    • bunzip2 myprog.bz2 #bunzip2解压文件
  4. gzip命令
    • gzip myprog # gzip压缩myprog文件
    • gzip my* #通配符会压缩目录中匹配的每个文件,每个文件都产生一个单独的压缩文件
  5. zip命令
    • zip的强大之处在于能够将整个目录下的文件都压缩进单个文件
    • zip -r testzip test #创建testzip.zip,并递归test的每个目录和文件,都压缩加进该zip文件
  6. tar命令
    • tar -cvf test.tar test/ test2/ #创建一个含有test和test2目录内容的叫test.tar的归档文件
    • tar -tf test.tar # 列出test.tar的内容,但不解压
    • tar -xvf test.tar #解压test.tar

问题

  1. zip , gzip的区别

gzip是一种文件压缩工具(或该压缩工具产生的压缩文件格式),它的设计目标是处理单个的文件。gzip在压缩文件中的数据时使用的就是zlib。我们在UNIX/Linux上经常看到的压缩包后缀都是.tar.gz或.tgz,也就是先用tar把多个文件打包成单个文件,再用gzip压缩的结果。

zip只是一种数据结构,跟rar同类型。zip是适用于压缩多个文件的格式(相应的工具有PkZip和WinZip等),因此,zip文件还要进一步包含文件目录结构的信息,比gzip的头信息更多。但需要注意,zip格式可采用多种压缩算法,我们常见的zip文件大多不是用zlib的算法压缩的,其压缩数据的格式与gzip大不一样。

2018-10-23 19:42:14 u012848709 阅读数 1143
  • Linux系统编程第2期:文件IO编程实战

    本课程是《嵌入式工程师自我修养》自学教程第 3 步:Linux系统编程第02期。 本期课程主要介绍跟文件、目录相关的文件IO函数的使用,通过编程实战形式,实现了常用的shell命令:ls\cat\rmdir\wc等。以及实现音频播放器V2.0版本:支持循环列表播放。通过10来个Linux环境下shell命令的编程实现,达到熟练掌握文件IO编程的学习目标。

    327 人正在学习 去看看 王利涛

楔子

使用shell工具连接Linux,由于没设置编码,导致了创建了带问号的文件,需要删除

[root@hadoop ~]# ls
?????  anaconda-ks.cfg  install.log  install.log.syslog  rmjdk.sh
[root@hadoop ~]# ls -i
927118 ?????  927048 anaconda-ks.cfg  912131 install.log  912132 install.log.syslog  927124 rmjdk.sh
[root@hadoop ~]# find . -inum 927118
./?????
[root@hadoop ~]# find . -inum 927118 |xargs rm -rf 
[root@hadoop ~]# ls
anaconda-ks.cfg  install.log  install.log.syslog  rmjdk.sh
[root@hadoop ~]#

先根据ID 找出文件,然后删除
ls -i 显示文件id
删除是find . -inum 927118 |xargs rm -rf
在这里插入图片描述

2019-08-09 15:56:14 CASTANEA 阅读数 26
  • Linux系统编程第2期:文件IO编程实战

    本课程是《嵌入式工程师自我修养》自学教程第 3 步:Linux系统编程第02期。 本期课程主要介绍跟文件、目录相关的文件IO函数的使用,通过编程实战形式,实现了常用的shell命令:ls\cat\rmdir\wc等。以及实现音频播放器V2.0版本:支持循环列表播放。通过10来个Linux环境下shell命令的编程实现,达到熟练掌握文件IO编程的学习目标。

    327 人正在学习 去看看 王利涛

cas@casmachine:~$ ls
examples.desktop  ??????     ??????  ??????  ??????
octave-workspace  ?????????  ??????  ??????  ??????

出现如上问题

1安装中文包

sudo apt-get install language-pack-zh-hans

2修改环境变量 

 sudo vim /etc/profile

i 开始输入

LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:en_US:en
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC=zh_CN.UTF-8
LC_TIME=zh_CN.UTF-8
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY=zh_CN.UTF-8
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER=zh_CN.UTF-8
LC_NAME=zh_CN.UTF-8
LC_ADDRESS=zh_CN.UTF-8
LC_TELEPHONE=zh_CN.UTF-8
LC_MEASUREMENT=zh_CN.UTF-8
LC_IDENTIFICATION=zh_CN.UTF-8
LC_ALL=

esc 输入:wq 保存写入并退出

3使环境变量生效

source /etc/profile

在再次尝试

cas@casmachine:~$ ls
examples.desktop  公共的  视频  文档  音乐
octave-workspace  模板    图片  下载  桌面

2018-10-22 22:38:51 weixin_43191956 阅读数 22
  • Linux系统编程第2期:文件IO编程实战

    本课程是《嵌入式工程师自我修养》自学教程第 3 步:Linux系统编程第02期。 本期课程主要介绍跟文件、目录相关的文件IO函数的使用,通过编程实战形式,实现了常用的shell命令:ls\cat\rmdir\wc等。以及实现音频播放器V2.0版本:支持循环列表播放。通过10来个Linux环境下shell命令的编程实现,达到熟练掌握文件IO编程的学习目标。

    327 人正在学习 去看看 王利涛

ls 的扩展

1.(星号)* 表示多个字符 ,假如目录中存在123.txt 文件 要切换到此文件,根据格式就可以找到 ls 1* 或者 ls *3.txt 第二种要 加文件后缀
2. (问号)?表示一个字符,如上的文件 ls 1?3.txt ls ?23.txt ls ??3.txt等等形式都可以切换到文件

cd 的扩展

1.~(波浪号) cd ~ 可以切换到主目录
2. 直接打cd也可以直接切换到主目录
3. …(切换到上一目录) cd …
4. .(当前目录) cd .
5. 绝对路径: 要以根目录开始再到确定到自己的目录 如: cd /home/python/Desktop
6. 相对路径:直接 打想进入的文件目录 如:cd Desktop
7. -(减号)切换到 最近两次的目录

mkdir的扩展

1.-p直接用递归的方式 创建一连串的文件夹
2.同一目录下文件不能与目录同名

rm的扩展

1.-f 直接删除文件无提示 ,只能是文件 如 cd -f 123.txt
注意!!!:利用rm指令删除的文件 无法恢复!!!
之前说过*号是代表多个字符 如果 rm * 会删除目录下所有的文件 如果想删除目录下所有东西 那就 rm -r * 这样就把文件跟文件夹都删除了

tree 命令

1.以树状形式显示目录中文件结构
tree 目录名
如 tree ~输出home目录下的文件结构
扩展
在tree后加-d 只显示目录下文件夹的树状图

没有更多推荐了,返回首页