искажение немного сложного сценария на Linux/ударе

[113894] Для защиты пробела необходимо цитирование:[12246]
1
21.08.2014, 07:15
2 ответа

Другой способ: вы можете определить его как функцию в вашем .bashrc :

lsl() {
  { echo Permissions links Owner Group Size Last_modMonth Last_modTime Last_modTime Filename;
  ls -l; } | 
  column -t | 
  awk 'NR!~/^(2)$/'
  ls -l | head -1
}
3
27.01.2020, 23:17

Если вы должны сделать это как псевдоним:

alias lsl='{ echo Permissions links Owner Group Size Last_modMonth Last_modTime Last_modTime Filename; ls -l ; } | column -t | awk '\''NR!~/^(2)$/'\'';ls -l | head -1'

Нам нужно экранировать внутренние одинарные кавычки с помощью обратных косых черт, чтобы они не интерпретировались как остановка строки.

Если вместо этого использовать двойные кавычки, то ! интерпретируется как расширение истории и требует еще большего экранирования, что, вероятно, является самой запутанной проблемой, с которой вы столкнулись (что-то вроде " bash:! ~ / ^: Событие не найдено », что является непонятной тарабарщиной).


Вышеупомянутое будет работать, но лучше было бы просто поместить этот файл где-нибудь на своем пути и сделать его исполняемым. Создайте, скажем, ~ / .local / bin и скрипт lsl с точным содержанием вашего сообщения внутри, затем chmod + x ~ / .local / bin / lsl и добавьте строку в свой .bashrc :

export PATH="$HOME/.local/bin:$PATH"

, чтобы убедиться, что исполняемые файлы в этом каталоге будут найдены. Затем вы можете просто написать lsl где угодно, чтобы запустить код. Этот подход более удобен в обслуживании и проще для понимания.

2
27.01.2020, 23:17

Теги

Похожие вопросы