Как быстро перемещаться в и из глубоко вложенных каталогов через CLI? [Дубликат]

Если у вас есть права администратора по маршрутизатору, я бы предложил вам изменить шифрование из смешанного режима WPA и WPA2 только в один режим WPA2-AES. Я бы также экспериментировал с отключенным 802.11N; используйте только B и G. Я также включил «автоматический канал» и выберет фиксированный канал, такой как 1 или 11.

Вы также можете попробовать параметр драйвера:

sudo modprobe -r rtl8188ee
sudo modprobe rtl8188ee swenc=1

Если это помогает, мы можем написать файл .conf и сделать его постоянным.

В вашем syslog мы видим, что устройство перемещается из одной полосы в точке доступа в другую:

(wlan0): roamed из BSSID C8: CB: B8: F0: 76: F0 (HUB) - C8: CB: B8: F0: 76: 70 (HUB)

Мы можем попробовать другой параметр. Это очень сложно временно загрузить, поэтому мы напишем файл conf, перезагрузимся и попробуем его. Если это не поможет, мы просто удалим наш файл conf:

sudo -i
echo "options cfg80211 cfg80211_disable_40mhz_24ghz=Y"  >  /etc/modprobe.d/cfg80211.conf
exit

Перезагрузите и сообщите нам, есть ли какие-либо улучшения.

Поскольку это не сработало, давайте попробуем другой параметр:

sudo -i
rm /etc/modprobe.d/cfg80211.conf
echo "options mac80211 probe_wait_ms=3000"  >  /etc/modprobe.d/mac80211.conf
exit

Перезагрузите

1
задан 28 June 2016 в 08:19

10 ответов

В дополнение к очень хорошим ответам, уже предоставленным, вот несколько советов по эффективному использованию cd.

cd - вернет вас в последний каталог, в котором вы были. cd ../../.. возьмите 3 уровня одновременно, вы можете использовать ноту .., соединенную вместе, чтобы «переместить» столько каталогов, сколько захотите. Если вы не знаете, сколько раз вы хотите двигаться вверх, используйте cd .., а затем используйте историю bash, нажав на клавишу со стрелкой, чтобы снова использовать команду. Используйте ~ для входа в домашний каталог текущих пользователей, если вы вошли в систему как пользователь thina, cd ~/teams, вы перейдете к /home/thina/teams. Используйте автоматическое завершение Bash для путей, клавиша табуляции завершает раздел пути в команде cd, если вы наберете часть сегмента пути, за которой следует Tab, этот сегмент будет завершен, если другого допустимого выбора нет. Например, если вы набрали cd /home/thina/teams/td/t, а затем нажали Tab, слово tech будет заполнено для вас, если в каталоге td не было других файлов или каталогов, которые начинались с буквы t.

Используя эти советы, вы можете сделать каталоги перемещения с cd гораздо менее болезненными.

14
ответ дан 23 May 2018 в 08:50
  • 1
    Добавляя к пункту ~, особенно если вы являетесь пользователем root, ~user быстро доставит вас в домашний каталог user. – Michael Kjörling 27 June 2016 в 17:33
  • 2
    Спасибо, я не понимал этого, я добавлю его в следующее редактирование. – Arronical 27 June 2016 в 17:45

Чтобы подняться в дереве на несколько уровней за раз, вы можете использовать следующую функцию (спасибо muru для расширенной версии):

up ()
{
    local old="$PWD"
    for i in $(seq "${1:-1}"); do
        cd ..
    done
    OLDPWD="$old"
}

Тогда вы можете сделать:

$ pwd
/home/thina/teams/td/tech/app/release/apks
$ up 5
cd'ing into /home/thina/teams

Дополнительно:

вызов up без аргумента эквивалентен cd .. из-за ${1:-1}, который заменяет $1 при установке и 1 в противном случае устанавливает OLDPWD после последнего cd .. направлена ​​на сохранение обычного поведения cd -.
8
ответ дан 23 May 2018 в 08:50
  • 1
    Технически это функция, а не псевдоним. – Reinier Post 27 June 2016 в 18:09
  • 2
    @ReinierPost: Правильно! Я исправил соответственно. – user149018 27 June 2016 в 18:17
  • 3
    Большое спасибо ! – Reinier Post 27 June 2016 в 18:34
  • 4
    Предложения: -gt вместо >. > является лексикографическим, он сравнивается как строки. Кроме того, вместо того, чтобы строить путь, почему бы не сделать cd .. в цикле: for i in $(seq "${1:-1}"); cd ..; done? Это также может исключить условие if. – muru 27 June 2016 в 18:36
  • 5
    @Oliphaunt это не особенно сложно, вы просто установите OLDPWD на исходный путь. Вот полная версия: paste.ubuntu.com/17990874 – muru 27 June 2016 в 23:14

Для длинных имен каталогов используйте переменные с полным путем. Например,

APKS="/home/thina/teams/td/tech/app/release/apks"

Тогда вы можете сделать только cd "$APKS"

Что касается перехода на х число каталогов, то я имею эту функцию, определенную в моем .bashrc [!d2 ]

goup() # go up x number of dirs
{
  num=$1
  while [ $num -ne 0  ];do
    cd ..
    num=$( expr $num - 1   )
  done
}

Чтобы вернуться к /home/thina/teams из apks, вы бы сделали

goup  6

Вот пример использования:

$> pwd
/sys/class/backlight/intel_backlight
$> goup 3
$> pwd
/sys
$> 

Еще одна небольшая функция, которая я придумал, но никогда не использовал такую ​​функцию bookmark.

Вот как это работает: он сохраняет вашу текущую папку в каком-то файле, а затем вы можете записать cd в определенный каталог на основе номера строки в этом файле. Пример:

$> cd /etc/lightdm
$> bookmark
$> cat ~/.dirsbookmarks                                                                                                  
/home/xieerqi
/sys/class/backlight
/etc/lightdm
$> cd $( awk 'NR==2' ~/.dirsbookmarks  )                                                                                 
$> pwd
/sys/class/backlight

И вот сама функция:

bookmark()
{ # bookmarks current dir
  pwd >> $HOME/.dirsbookmarks
}
6
ответ дан 23 May 2018 в 08:50

Псевдонимы

У меня есть список часто используемых каталогов, напрямую доступных через псевдоним. Это также включает ярлыки для каталогов вверх по иерархии.

alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'
alias cdwork=/home/knub/Repositories/work
alias cduni=/home/knub/University

Теперь, когда я хочу идти на три уровня, я просто набираю ....<Enter>, и вот я!

3
ответ дан 23 May 2018 в 08:50
  • 1
    Мне тоже нравится это, потому что, хотя сначала я подумал, что «хмм 4 периода для 3 уровней ...» тогда я подумал: «О да ... Компьютеры! 0 , 1, 2, 3! " : D Теперь легко запомнить, полезно и что-то, с чем я буду играть. Ура! – P Smith 1 July 2016 в 17:27

Включите опцию autocd (shopt -s autocd), так что вам не нужно набирать cd. Например, вам нужна двухсимвольная команда .., чтобы перейти в родительский каталог.

Если вы перемещаетесь между двумя каталогами, вы можете переключаться между ними с помощью cd -, который идет на предыдущий рабочий каталог. Опция autocd не делает - run cd -, но вы можете определить псевдоним или функцию для этого.

Вы можете запомнить каталоги в стеке со встроенными autocd вариант и popd.

Если вы часто меняете подкаталоги определенного каталога, и эти подкаталоги имеют довольно уникальное имя, добавьте их в папку popd . Однако следует предупредить, что я никогда не находил ситуации, когда CDPATH был действительно удобен.

Вы можете установить переменную в имя каталога, а затем изменить ее с помощью $foo.

Zsh dirs имеет несколько приятных функций, которых у bash нет. Некоторые из них могут быть эмулированы путем написания функций, выполняющих ту же работу. В частности, форма с двумя аргументами cd позволяет удобно переключиться на другой каталог с похожим именем, например. из /home/thina/teams/td/tech/app/release/apks/com.acme/v1, запуск cd release beta переходит к /home/thina/teams/td/tech/app/beta/apks/com.acme/v1.

3
ответ дан 23 May 2018 в 08:50

Как я уже ответил на соответствующий вопрос в UnixSE, для этого я использую скрипт z [github].

Он запоминает каталоги, к которым вы подключились, оценивает их по частоте (частота + регент) и позволяет вам перейти на один из запоминаемых путей, используя некоторую часть его имени.

После того, как cd'ed в каталог, по крайней мере, один раз вы можете сделать, а не:

$ cd ~user/very/long/path/with/many/subfolders/

Просто выполните:

$ z sub

, который будет работать с использованием частичного совпадения имени (если у вас нет другого каталога, содержащего на своем пути термин sub и который имеет более высокую частоту).

Я также определил такую ​​функцию, которая сначала пробует нормальный cd, и если это не работает, используется z:

function cd() {
    builtin cd "$1" 2> /dev/null || z "$1" || (echo "cd: File or Directory not found: $1" >&2 && exit 1)
}

. Это дает вам лучшее из того и другого. Если папка находится в текущем каталоге или задан действительный полный путь, она будет просто cd, но если нет, она попытается найти совпадение в базе данных и cd. Это отнимает (небольшую) боль, иногда вынуждая использовать cd (для обучения базы данных, перехода в папку, в которой вы никогда не были), и иногда вспоминая использовать z, когда это применимо.

2
ответ дан 23 May 2018 в 08:50
  • 1
    Вы уверены, что ваш cd не вмешивается в то, как z создает базу данных часто посещаемых каталогов? – leftaroundabout 27 June 2016 в 21:41
  • 2
    как он отличается от autojump ? – Ciprian Tomoiagă 28 June 2016 в 03:44
  • 3
    @leftaroundabout: Не уверен, но пока это хорошо работает. z определенно строит базу данных всякий раз, когда вы используете встроенный cd (который моя установка пытается в первую очередь). Не так уверен, обновляется ли база данных, когда используется часть z. EDIT: просто проверьте, обновляется ли база данных при выполнении $ builtin cd ~ / folder / i / have / not / was / to / yet /. Это. – Graipher 28 June 2016 в 16:17
  • 4
    @CiprianTomoiaga Действительно, похоже, в основном то же самое. Для этого также может быть использована перезапись команды cd, которую я использую. Хотя разные команды автозаполнения кажутся интересными! – Graipher 28 June 2016 в 16:22
  • 5
    Кстати, я не автор z, просто считаю это очень полезным. – Graipher 28 June 2016 в 16:24

UPDATE: есть еще более мощный инструмент, чем autojump: fasd, но я не знаком с ним.

Я удивлен, что никто не упомянул fasd , но

работает, поддерживая базу данных каталогов, которые вы используете больше всего из командной строки (каталоги должны быть посещены первыми, прежде чем их можно будет перескочить на.)

Это в основном то, что построил @graipher, с несколькими дополнительными опциями.

Как я уже упомянул по другому вопросу:

После того, как вы несколько раз подключились к каталогу (даже один раз):

cd /home/thina/teams/td/tech/app/release/apks

вы можете использовать ярлык j, чтобы быстро перемещаться туда, независимо от того, в каком каталоге вы находитесь:

j apks

Обратите внимание, что использование любой части пути работает, если оно является самым большим в списке: j app также приведет вас к .../apks, если вы пошли туда больше раз чем .../app.

Я бы рекомендовал его вместо того, чтобы иметь собственный скрипт, так как он хорошо поддерживается, распространяется для Ubuntu и имеет другие опрятные f например, UPDATE: :

.../td/tech $ jc apk
.../release/apks $ 

Переместил вас в apks в td, а не какой-либо другой apks под другим деревом.

2
ответ дан 23 May 2018 в 08:50

Еще три варианта, которые я нахожу для работы (хотя в будущем я могу использовать pushd больше, я только что узнал об этом):

Расположите свои пути, чтобы вам не нужно было cd во глубоко вложенные каталоги, в первую очередь, а точнее: поэтому места, которые вам нужно часто посещать, прямо у вас под рукой. Способ достижения этого - с символическими ссылками: сохранить явные иерархически упорядоченные каталоги, как они есть, но сделать ссылку быстрого доступа для вашего удобства.
ln -s ~/teams/td/tech/app/release/apks ~/apks
Затем вместо того, чтобы вводить длинный путь к cd, просто используйте cd ~/apks и cd ../teams (или в этом примере предпочтительнее ~/teams), чтобы вернуться. Не используйте одну оболочку и компакт-диск назад и вперед между путями, но держите одну оболочку для каждого из путей, в которых вы должны работать. Для достижения этой многозадачности существует несколько уровней: Используйте несколько окон терминала. Работает лучше всего, если окна живут на разных рабочих площадках. Используйте несколько вкладок в одном окне. Это полезно для всего лишь нескольких команд в некоторых каталогах: чтобы вернуться, просто закройте вкладку терминала! (Не очень разумный IMO, но для полноты :) используйте терминальный мультиплексор, такой как tmux. Просто запустите действие в одноцелевой команде, которая cd спустится в папку, сделает там одну вещь и сразу же вернет управление исходной папке: вместо
$ cd /home/thina/teams/td/tech/app/release/apks
$ some_command this_file_here
$ cd ../../../../..
просто выполните однострочный (f3) или эквивалентный
$ sh -c 'cd ~/teams/td/tech/app/release/apks
> some_command this_file_here'
Не выполняйте cd, но просто выполните команду прямо из своего домашнего каталога. Расширения скобок могут помочь здесь много: вместо
$ cd /home/thina/teams/td/tech/app/release/apks
$ some_command this_file_here other_file_also_apks
$ cd ../../../../..
вы можете сделать
$ some_command ~/teams/td/tech/app/release/apks/{this_file_here,other_file_also_apks}
1
ответ дан 23 May 2018 в 08:50
  • 1
    pushd очень полезен. Возможно, вы захотите добавить дополнительную информацию о том, как использовать его для лучшего ответа. – Sergiy Kolodyazhnyy 27 June 2016 в 23:29
  • 2
    @Serg: да, но я сам знаю pushd только из ответа Джоса выше . – leftaroundabout 27 June 2016 в 23:33
  • 3
    Ах, я вижу. Ну, тогда это может быть полезно для будущих ответов. – Sergiy Kolodyazhnyy 27 June 2016 в 23:35

Pushd и Popd

Команды pushd и popd являются моими избранными. Команда pushd будет помнить каталоги, которые вы посетили, просматривать с помощью команды dirs, а когда вы готовы вернуться назад, используйте popd для возврата.

Вот пример использования bash функции и псевдонимы:

sd ()
{
    pushd "$1" > /dev/null
}

po ()
{
    popd
}

alias d='dirs'

Я постоянно использую сочетание этих команд различными способами.

Псевдонимы

Другим вариантом для часто используемых каталогов является просто псевдоним команд cd или pushd. Итак, используя примеры из вашего поста:

alias cdapks='cd /home/thina/teams/td/tech/app/release/apks'
alias cdteams='cd /home/thina/teams'

Комбинация

Объедините две идеи, и вы даже можете это сделать:

alias sdapks='sd /home/thina/teams/td/tech/app/release/apks'
alias sdteams='sd /home/thina/teams'

Что тогда дает вам большую гибкость в перемещении каталогов. Я сохраняю псевдонимы cd*** и sd*** для таких вещей, как Desktop, Documents, Music, Downloads и т. Д., И это очень удобно!

0
ответ дан 23 May 2018 в 08:50

у рыбы есть несколько приятных возможностей для быстрого передвижения.

Если вы наберете c d right-arrow enter, он повторит самый последний cd. Используя c d стрелка вправо-стрелка вверх, он повторяет второй самый последний cd. И т. Д. Предшествующий и следующий, которые часто проще в использовании, чем pushd и popd.

Кроме того, я сохраняю свои любимые каталоги, символически привязанные к ~ / f, поэтому я могу cd ~ / f / x добраться до ~ / foo / bar / baz / экспериментальных данных.

0
ответ дан 23 May 2018 в 08:50

Другие вопросы по тегам:

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