Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 切换文件不可变_Bash_File Attributes - Fatal编程技术网

Bash 切换文件不可变

Bash 切换文件不可变,bash,file-attributes,Bash,File Attributes,我需要制作一个简单的小bash脚本来切换一些文件(特别是我的桌面图标,这样它们就不会在不应该移动的时候移动) 我有使文件[im]可变的命令: sudo chattr +i ~/.config/xfce4/desktop/icons* 但是,要使脚本切换状态,我需要检查状态,并相应地执行操作。但我不太擅长bash代码,一些谷歌搜索也没有找到任何解决方案 答案可能与“lsattr”和“grep”有关,但我不确定它们应该采用哪种形式 (如果答案可以是If语句的形式,那就太好了:D)也许 for fi

我需要制作一个简单的小bash脚本来切换一些文件(特别是我的桌面图标,这样它们就不会在不应该移动的时候移动)

我有使文件[im]可变的命令:

sudo chattr +i ~/.config/xfce4/desktop/icons*
但是,要使脚本切换状态,我需要检查状态,并相应地执行操作。但我不太擅长bash代码,一些谷歌搜索也没有找到任何解决方案

答案可能与“lsattr”和“grep”有关,但我不确定它们应该采用哪种形式

(如果答案可以是If语句的形式,那就太好了:D)

也许

for file in ~/.config/xfce4/desktop/icons*
do
     sudo chattr \
       $(lsattr "$file" | cut -c 5 | fgrep -q 'i' \
            && echo "-i" || echo "+i") \
       "$file"
done
效率非常低,但是

作为“如果”——

  if lsattr "$file" | cut -c 5 | fgrep -q 'i'
  then
        # whatever
  fi