Linux shell路径变量出现空格时的处理方法

   当路径变量包含空格时,直接使用会出错

$ pwd
      /home/test/Desktop/中文 空格1/English space2/混合——1_1 空 格 3
$ DIR="/home/test/Desktop/中文 空格1/English space2/混合——1_1 空 格 3"


例如,直接cd到这个有空格的路径变量是不行的
 

cheng@cheng:~/Desktop$ cd $DIR
bash: cd: 参数太多


情况1:当外层无引号时,路径变量加上引号就行啦


   比如,把cd 后面的path变量用引号引起来就好了

cheng@cheng:~/Desktop$ cd "$DIR"
cheng@cheng:~/Desktop/中文 空格1/English space2/混合——1_1 空 格 3$ 


     比如,把cd 后面的path变量用引号引起来就好了

当外层没有引号,只能"$DIR" ,不能\"$DIR\",否则会报错:

cheng@cheng:~/Desktop$ sudo dpkg -i \"$DIR\"/apps/xxxx-4.2.1-arm64.deb
dpkg: 错误: 无法访问归档 '"/home/test/Desktop/中文 ': 没有那个文件或目录

cheng@cheng:~/Desktop$ sudo dpkg -i "$DIR"/apps/xxxx4.2.1-arm64.deb
cheng@cheng:~/Desktop$ sudo dpkg -i "$DIR"/apps/xxxx-4.2.1-arm64.deb

情况2:当外层有引号时,加引号并转义或者加单引号

方法1:路径变量加双引号并转义 
     echo 'rootpassword'|su -c "dpkg -i \"$DIR\"/apps/xxx.deb"
方法2:路径变量加单引号
     echo 'rootpassword'|su -c "dpkg -i '$DIR'/apps/xxx.deb"

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
解压密码:skyily.cublog.cn 第二版本 0.10.1 第0步骤: 1. 要求每个命令完成后,重新打印出提示符 2. 测试:ls cat 等命令 第1步骤:参数 1. 提示符中出现当前路径信息。 2. 测试命令“ls”,“ls<空格>”,“<空格>ls”,“<空格>ls<空格>” “ls -a -l” ,“<空格>ls <多个空格> -a <多个空格>-l” 第2步骤:cd exit 1. 测试"cd ..", "cd /home" , "cd -" , "cd~" 等命令 第4步骤:环境变量 1. 把/bin/ls文件拷贝到/home目录, 并将/bin/ls重命名为/bin/ls-bk,测试ls命令 2.在环境变量文件mysh_profile中添加"/home"目录,测试ls命令 第5步骤:重定向 ***(这里做了修改,重新用文件写了一个<<命令的重定向) ***(修复了ctrl+c 不能结束<<命令的bug)( signal(SIGINT, SIG_DFL); ) 1. 测试 "ls>test" , "ls(空格)>(空格)test" , "ls(空格)>test"命令 2. 测试 "ls>>test" , "ls(空格)>>(空格)test" , "ls(空格)>>test"命令 3. 测试"cat<test" , "cat(空格)<(空格)test", "cat(空格)<test"命令 4. 测试"cat>test<test1", "cat>test1<test"命令。test由 "ls -al >> test"生成 5. 测试"cat >test<<wo ", 输入,直到输入wo结束 第6步骤:管道 1. 测试"ls(空格)|(空格)more"命令 第7步骤:历史记录 1. 测试用上下键从历史记录中提取命令 第8步骤:作业管理 1. 测试jobs, bg , fg, "Ctrl+c","Ctrl+z" 命令 (jobs有个bug,ctrl+c的候,子程序后台的程序都回死掉) (而子进程里如果有while循环的话,ctrl+c 却杀不死while) 第9步骤: alias 别名命令 实现:alias 与 unalias 命令 alias 命令在隐藏文件 .aliasrc里,可自己手动向里面添加

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值