参考: http://bbs.chinaunix.net/thread-1825455-1-1.html

但是, 经常处理更复杂的文件名, 这里给出一个加长版的例子, 换汤不换药.

查询当前shell正在使用的是哪个shell, 可以用命令:

$ echo $0
/bin/csh

在csh中, 文件名截取有以下几种方式, 按最后一次 '/' 和 '.' 号出现的位置对包括完整路径的文件名进行分割。

$ echo $
/bin/csh
$ set pfName=/media/Test/MyFile.tar.gz
$ echo ${pfName:r}
/media/Test/MyFile.tar
$ echo ${pfName:e}
gz
$ echo ${pfName:t}
MyFile.tar.gz
$ echo ${pfName:h}
/media/Test
$ echo ${pfName:r:t}
MyFile.tar

在bash中,对包含完整路径的文件名截取的方式如下:

$ /bin/bash
$ echo $
/bin/bash
$ pfName='/media/Test/MyFile.tar.gz' # 获取全路径文件名
$ echo ${pfname}
/media/Test/MyFile.tar.gz
# 获取后缀以外的完整文件名
$ echo ${pfName%.*}
/media/Test/MyFile.tar # 获取文件的后缀名
$ echo ${pfName##*.}
gz # 获取文件名
$ echo ${pfName##*/}
MyFile.tar.gz $ # 仅仅获取文件的前缀
$ echo ${pfName##*/} | sed -r 's/^(.*)\..*$/\1/g'
MyFile.tar # 获取该文件的位置
$ echo ${pfName%/*} # comment here only */
/media/Test

[Shell] 文件名截取的问题:bash .vs. csh的更多相关文章

  1. ash, bash, ksh, csh, zsh

    /bin/bash (就是 Linux 预设的 shell, 是现在很多Linux的发行版中默认的shell,综合了其他shell的很多优点.)/bin/ksh (Kornshell 由 AT& ...

  2. Shell字符串截取

    shell中截取字符串的方法有很多中, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ...

  3. shell中截取字符串的方法总结

    shell中截取字符串的方法有很多种, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ...

  4. 【Shell Basic】source . 与 bash sh 的区别

    一.在命令行窗口执行shell脚本时,source .所执行的脚本中,变量的作用域在当前shell窗口期,而bash.sh在shell脚本执行完了就失效了. dream361@master:~$ ca ...

  5. shell脚本报错:-bash: xxx: /bin/bash^M: bad interpreter: No such file or directory

    当我们把文件从windows系统中编辑的文件拷贝到linux系统中,如果我们执行文件会保存如下的错: shell脚本报错:-bash: xxx: /bin/bash^M: bad interprete ...

  6. linux shell 的前世今生和流行BASH SHELL的特点

    前言 shell作为用户和操作系统内核交互的接口,也不断的在发展迭代.shell的发展也离不开unix/linux 系统的发展.并且在开源社区对shell的发展也起到了推动作用. 内容思维导图简介 发 ...

  7. shell字符截取

    shell字符截取 截取文本中以vm开头的单词 grep -o vm.* text | cut -d' '  -f1 截取活动主机

  8. Linux Bash Shell字符串截取

    #!/bin/bash#定义变量赋值时等号两边不能有空格,否则会报命令不存在  # 运行shell脚本两种方式 # 1.作为解释参数 /bin/sh test.sh ;  2.作为可执行文件 chmo ...

  9. 【转】shell字符串截取

    shell字符串的截取的问题: 一.Linux shell 截取字符变量的前8位,有方法如下: 1.expr substr “$a” 1 8 2.echo $a|awk ‘{print substr( ...

随机推荐

  1. selenium启动Chrome浏览器和禁止证书错误提示弹出

    要把ChromeDriver放到代码中的文件夹中c://*******Application public static WebDriver WebDriverRun(WebDriver driver ...

  2. android 触摸事件分析

    背景知识: 触摸屏可以有多个触控点 android中管理触控点通过一个数组来管理,涉及到index和id两个变量, index表示在数组中的下标,id表示这个触控点(pointer)的id,point ...

  3. bash中使用mysql中的update命令

    mysql -uroot -ppasswd -e "update tbadmin set sPassword ='************' where sUserName='admin'& ...

  4. OpenCV绘图

    OpenCV绘图 rectangle(Mat& img,Point pt1, Point pt2, const Scalar&color, int thickness=1,int li ...

  5. 初识CEF

    介绍 CEF全称Chromium Embedded Framework,是一个基于Google Chromium 的开源项目.Google Chromium项目主要是为Google Chrome应用开 ...

  6. 2.用vs2015创建Dotnet Core的mvc项目

    如果你正确安装DotNetCore.1.0.1-VS2015Tools.Preview2.0.2,将会看到 就是第二个选项 ASP.NET Core Web Application 选择第三个,第一次 ...

  7. ubantu14下vim的配置...

    日出江花红胜火,春来江水绿如蓝.---

  8. 。U盘安装windows7操作系统

    1.下载. Windows 7微软原版无修改的系统镜像下载地址:Windows 764位旗舰版ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u ...

  9. SQL2008 的 日期数据类型

    摘要 你是否曾经想在数据库中存储一个日期而没有时间部分,或者想存储一个时间值希望有更高的精度?在SQL Server 2008的介绍中,微软介绍了一些新的日期数据类允许你只存储一个日期.更高精度的时间 ...

  10. CFNetwork的错误代码参考

    所有的错误代码是在对“CFNetwork的错误代码参考” 小提取CFURL和CFURLConnection错误: kCFURLErrorUnknown = -998, kCFURLErrorCance ...