Ubuntu – Comment activer ccache

Je suis complètement noob à cela. Je ne sais pas quel est le fichier make et je ne sais pas bashrc est.

Mais je sais où télécharger le code source et utiliser source somebash.sh puis créer le fichier (comme quelqu’un l’a dit pour exécuter ces commandes).

J’ai fait des recherches et découvertccachepeut accélérer la vitesse de construction séquentielle, mais je n’ai aucune idée de ce que je suis censé faire lors de la lecture de ces instructions en ligne (inclureccachedans chemin, quel chemin, où et comment, et gcc, colorgcc et bashrc. Qu’est-ce que c’est?)

Qu’est-ce qu’une instruction étape par étape?

Meilleure réponse

  • Je lirais cette documentation, puis

    1.  sudo apt-get install ccache 
    2. En supposant que vous créez un package source « standard »,
     export CC="ccache gcc"
    export CXX="ccache g++"
    ./configure
     

    Si vous voulez vraiment « remplacer » la norme gcc et g++ tu pourrais alors

     ln -s $(which ccache) /usr/local/bin/gcc
    ln -s $(which ccache) /usr/local/bin/g++
    ln -s $(which ccache) /usr/local/bin/cc
     

  • Ubuntu – Comment afficher un message avec le nom d’utilisateur et la date à la connexion

    Comment afficher le message « bonjour $ username, la date du jour est $ date » dès que vous vous connectez à Ubuntu.

    Meilleure réponse

  • Si vous voulez voir le message lorsque vous ouvrez le terminal ou après vous être connecté en tty1-6, mettez simplement cette ligne à la fin de ~/.bashrc fichier (ouvrez-le depuis le terminal avec gedit ~/.bashrc ):

     echo "Hello $USER, today's date is $(date +"%A, %d-%m-%y")"
     

    Si vous souhaitez voir le message après vous être connecté dans l’interface graphique, procédez comme suit:

    1. Créer un nouveau fichier name_and_date.sh :

       gedit ~/bin/name_and_date.sh
       
    2. Si vous souhaitez recevoir une notification sur le bureau, mettez les 2 lignes suivantes à l’intérieur:

       #!/bin/bash
      notify-send "Hello" "Hello $USER, today's date is $(date +"%A, %d-%m-%y")"
       

      Alternativement, si vous voulez qu’une popup (boîte de message) apparaisse, mettez les 2 lignes suivantes à l’intérieur:

       #!/bin/bash
      zenity --info --title "Hello" --text "Hello $USER, today's date is $(date +"%A, %d-%m-%y")"
       
    3. Enregistrez le fichier et fermez-le.

    4. Rendez le fichier exécutable:

       chmod +x ~/bin/name_and_date.sh
       
    5. Rechercher dansTiretpourApplications de démarrage, ouvrez-le et cliquezAjouter.
    6. Sous le nom, tapez « Afficher mon nom et ma date » ou quelque chose que vous reconnaîtrez.
    7. Sous type de commande: /home/$USER/bin/name_and_date.sh (changement $USER 
  • Ubuntu – Lorsque le terminal est ouvert, puis-je afficher le calendrier et l’heure actuels Version améliorée Version originale Le code

    En appuyant surCtrl+Alt+Tpour ouvrir le terminal, j’obtiens un écran vide avec une invite de saisie simpliste.

    Est-il possible (en modifiant ~/.bashrc peut-être) pour afficher le calendrier actuel avec aujourd’hui en surbrillance et l’heure actuelle?

    Si l’heure peut être affichée en grand nombre (à l’aide de figlet?), Ce serait un bonus.

    Meilleure réponse

  • Version améliorée

    Vous pouvez voir la version améliorée ici: https://askubuntu.com/a/1020693/307523

    Cela ressemble à ceci:


    Version originale

    Vous pouvez imprimer une bannière d’introduction lorsque le terminal est ouvert à l’aide du ~/.bashrc scénario. Si vous avez une figlet ( sudo apt install figlet ), vous pouvez profiter des grandes lettres pour afficher l’heure:

    En premier lieu figlet est utilisé pour afficher l’heure et dans la seconde une police régulière est utilisée.

    Exemples d’écran supplémentaires utilisant toilet 

    Cet écran utilise les polices du toilet paquet. Le dernier exemple utilise future police et est utilisé dans le code ci-dessous. En outre, le calendrier est défini sur la couleur cyan dans le code ci-dessous.

    le toilet package permet des types de police et des styles de mise en forme supplémentaires sur figlet paquet dont il est issu. Pour installer le package, utilisez sudo apt install toilet après l’installation figlet comme décrit ci-dessus.

    Le code

    Voici le code dont vous avez besoin pour que tout fonctionne. Il est recommandé de placer ce script dans votre /home/user/bin car il est automatiquement ajouté à votre chemin. Ce script est nommé now mais vous pouvez utiliser n’importe quel nom unique que vous aimez.

     #!/bin/bash
    
    # NAME: now
    # PATH: $HOME/bin
    # DESC: Display current calendar and time
    # CALL: Called from terminal or ~/.bashrc
    # DATE: Apr 6, 2017. Modified: Apr 10, 2017.
    
    # NOTE: To display all available toilet fonts use this one-liner:
    #       for i in ${TOILET_FONT_PATH:=/usr/share/figlet}/*.{t,f}lf; do j=${i##*/}; toilet -d "${i%/*}" -f "$j" "${j%.*}"; done
    
    # calendar current month with today higlighted.
    # colors 00=bright white, 31=red, 32=green, 33=yellow, 34=blue, 35=purple,
    #        36=cyan, 37=white
    printf "\033[36m"       # color 36=cyan
    echo ""; cal;
    printf "\033[00m"       # color bright white (default)
    echo ""
    
    tput sc                 # Save cursor position.
    # Move up 9 lines
    while [ $((++i)) -lt 10 ]; do tput cuu1; done
    tput cuf 25             # Move 25 columns right
    
    # Do we have the toilet package?
    if hash toilet 2>/dev/null; then
        echo " "$(date +"%I:%M %P")" " | \
            toilet -f future --filter border > /tmp/terminal
    # Do we have the figlet package?
    elif hash figlet 2>/dev/null; then
        echo $(date +"%I:%M %P") | figlet > /tmp/terminal
    # else use standard font
    else
        echo $(date +"%I:%M %P") > /tmp/terminal
    fi
    
    while IFS= read -r Time; do
        printf "\033[01;32m" # color green
        printf "$Time"
        tput cud1           # Up one line
        tput cuf 25         # Move 25 columns right
    done < /tmp/terminal
    
    tput rc                 # Restore saved cursor position.
    
    exit 0
     

    Marquer le script comme exécutable

    Copiez ce code dans votre éditeur et enregistrez-le dans le fichier now . Ensuite, marquez-le comme exécutable en utilisant:

     sudo chmod +x now
     

    Ajouter un script à ~./bashrc 

    Une fois cette opération terminée, vous pouvez taper now dans le terminal et vous verrez le calendrier et l’heure. Pour tout conclure et l’afficher automatiquement à chaque ouverture du terminal:

    • Modifier le fichier ~/.bashrc 
    • Allez à la fin et insérez une nouvelle ligne contenant now 
    • Sauvegardez le fichier

    Maintenant, lors de l’ouverture du terminal, vous serez accueilli avec le jour actuel en surbrillance sur le calendrier du mois en cours, suivi de l’heure actuelle.

    Disséquer le code

    Ici, nous verrons brièvement comment fonctionne le code sans discuter de chaque ligne.

     figlet et toilet paquets

    Le script vérifie d’abord si toilet est installé avec le hash commander. Si c’est le cas, c’est utilisé pour afficher l’heure. Si non figlet est utilisé s’il est installé. Si aucun n’est installé, une police standard est utilisée.

    Dans le code ci-dessus, un commentaire peut être copié sur votre ligne de commande et exécuté pour montrer disponible figlet et toilet polices sur votre terminal:

     for i in ${TOILET_FONT_PATH:=/usr/share/figlet}/*.{t,f}lf; do j=${i##*/}; toilet -d "${i%/*}" -f "$j" "${j%.*}"; done
     

    Pour changer la police utilisée pour l’affichage de l’heure, recherchez le code de cette ligne:

     toilet -f future --filter border > /tmp/terminal
     

    et changer le nom de la police future au nom de police que vous choisissez. N’oubliez pas que certaines polices sont trop grandes pour tenir sur l’écran.

    Sélection des couleurs

    Définissez séparément la couleur souhaitée pour le calendrier et l’heure. Dans le code ci-dessus, notez la commande:

     printf "\033[36m"       # color 36=cyan
     

  • Ubuntu – N’importe quel moyen d’utiliser l’éditeur de code Visual Studio au lieu de nano / vim / emacs pour modifier des fichiers

    J’ai un problème où je ne peux modifier que les fichiers .bashrc ou .zshrc avec le nano commander.

    Quand j’entre code .bashrc il ouvre simplement un fichier .bashrc vide. Avec nano il fonctionne dans le shell et affiche correctement le fichier via la commande nano .bashrc , mais je déteste modifier les fichiers via nano et je préfère le faire sur Visual Studio, toute idée de comment résoudre ce problème afin que Visual Studio Code puisse lire. des dossiers?

    Enfer, même lors de l’édition de fichiers normaux (c’est-à-dire des fichiers qui ne sont pas cachés avec . ) avec code , pendant que ça marche, git status n’enregistre pas la modification, mais il l’enregistre si le fichier a été modifié avec nano . Super frustrant en tant que personne qui n’aime pas éditer via shell et cela me fait envisager de revenir à Git Bash .. même si je préfère de loin travailler avec zsh sur WSL.

    Meilleure réponse

  • Vous pouvez démarrer Visual Studio Code dans Windows, puis vous connecter à votre système WSL avec celui-ci et ouvrir les fichiers que vous souhaitez modifier. Cela fonctionne presque de la même manière que l’édition à distance via SSH de fichiers sur une autre machine (ce qui peut être fait à la fois à partir de clients Windows et GNU / Linux et elle-même séparée de WSL). La seule différence du point de vue de l’interface utilisateur est l’élément de menu que vous sélectionnez pour vous connecter. De plus, en fonction de ce qui ne va pas, la procédure de configurationmaifaire aussi code commande fonctionne comme vous le souhaitez.

    Je recommande d’installer le pack d’extension de développement à distance dans Visual Studio Code, si ce n’est pas déjà fait. Mais en réalité, vous n’avez besoin que de l’extension WSL à distance pour cela. (Le pack d’extension de développement à distance installe cette extension ainsi que d’autres pour la modification à distance sur des systèmes non WSL via SSH.) Vous pouvez l’installer à partir de Visual Studio Code; ces liens sont principalement à titre de référence. Une fois installé, vousdevraitpouvoir courir code depuis le système WSL et ouvrez les fenêtres de l’éditeur sur le système hôte qui se connectent au système WSL, bien que j’ai toujours trouvé cela au mieux gênant.

    Notez que l’installation du code Visual Studio lui-même, c’est-à-dire le programme client, à l’intérieur d’un système WSL n’est pas prise en charge et n’est pas particulièrement susceptible de fonctionner même sur un système Windows avec un serveur X comme VcXsrv sur lequel d’autres programmes graphiques Ubuntu fonctionnent généralement. (J’ai essayé.) Si vous avez installé des packages Visual Studio Code dans le système WSL, je vous suggère de les supprimer, et cela pourrait même obtenir votre code pour commencer à fonctionner correctement.

    Quoi qu’il en soit, vous pouvez vous connecter au système WSL dans l’éditeur, ce que je recommande. Une fois les extensions nécessaires installées, vous devriez voir un > < bouton dans le coin inférieur gauche de chaque fenêtre Visual Studio Code, avec le texte de la sourisOuvrez une fenêtre distante.

    Lorsque vous cliquez dessus, un menu apparaît en haut de la fenêtre avec diverses actions pour démarrer l’édition à distance. Vous voudrez probablement sélectionnerRemote-WSL: nouvelle fenêtrele plus souvent.

    Dans la nouvelle fenêtre, dans le coin inférieur gauche, il afficheraWSL: Ubuntu.

    Si vous allez ouvrir un fichier dans la fenêtre d’édition à distance, au lieu de vous montrer une boîte de dialogue d’ouverture de fichier native, vous obtenez des menus dans Visual Studio Code à travers lesquels vous pouvez naviguer vers n’importe quel emplacement du système auquel vous êtes connecté. Dans ce cas, c’est votre système WSL.presseCtrl+Opour ouvrir un seul fichier.Vous pouvez également ouvrir des dossiers (de la manière habituelle) dans ce mode, ce que vous voudrez souvent faire, surtout si vous souhaitez l’intégration de Git dans l’éditeur. Mais pour éditer un .bashrc fichier en place, vous ne voudriez probablement pas le faire.

    Dans le menu qui apparaît lorsque vous appuyez surCtrl+O, il faut dire /home/you/ , mais avec votre nom d’utilisateur (sur le système WSL) à la place de you . Par exemple, il dit /home/ek/ pour moi. Si oui, vous êtes au bon endroit. Vous pouvez voir .bashrc répertorié si vous faites défiler vers le bas, mais vous pouvez simplement taper .bashrc , donc ça dit /home/you/.bashrc . Puis appuyezEntrerou cliquezOK.

    Vous pouvez ouvrir d’autres fichiers de la même manière; cette procédure n’est pas spécifique à .bashrc .

    Après avoir ouvert le fichier, vous pouvez le modifier et enregistrer vos modifications. Les modifications sont effectuées dans le système WSL.

    Bien que vous deviez ouvrir un dossier pour obtenir l’intégration de Git dans l’éditeur – tout comme vous le faites généralement lors d’une modification locale – vous pouvez utiliser Git et effectuer d’autres actions à partir d’un terminal. Lorsque vous ouvrez un terminal dans une fenêtre d’édition à distance, le terminal vous donne un shell sur le système auquel vous êtes connecté (qui dans ce cas est votre système WSL). Vous avez peut-être déjà un tel shell; sinon, appuyez surCtrl+`.

    La façon dont cela fonctionne est que Visual Studio Code exécute en fait un autreserveursur le système distant (dans ce cas, le système WSL). Il stocke ses fichiers dans ~/.vscode-server dans votre répertoire personnel sur ce système. Lors de la connexion à des machines distinctes réelles (ou machines virtuelles), ce répertoire est toujours utilisé, même si ces systèmes ont également une installation normale (c’est-à-dire client) de Visual Studio Code. Exécution du code 

  • Ubuntu – Personnalisation de l’invite du shell et comportement cmd

    Je veux que mon invite affiche:

    1. répertoire de travail actuel (absolu), coloré en vert et

    2. dans une NOUVELLE ligne, le signe dollar et un espace vide.

    J’utilise cette ligne dans .profile 

     export PS1='\e[0;32m$(pwd)\n\e[m$ ' 

    Donc, par exemple, Desktop , mon invite ressemble à ceci:

    Cependant, parfois lorsque vous appuyez sur la flèche vers le haut pour réexécuter les commandes précédentes, au début de l’invite, une séquence de caractères aléatoires apparaît qui ne semble pas disparaître à moins que je n’appuie sur Entrée, e. g.

    Je n’ai jamais touché un cd cd Desktop commander. La partie la plus étrange est que le retour arrière ne supprimera même pas le premier des deux cd commandes ci-dessus!

    Aucune suggestion?

    Meilleure réponse

  • Vous devez vous assurer que les caractères non imprimables de l’invite sont entre crochets d’échappement, sinon bash ne peut pas calculer correctement la taille de l’invite. Je pense que je l’ai réparé pour vous:

     PS1='\[\e[0;32m\]$PWD\n\[\e[m\]$ '
     

  • Ubuntu – Alias ​​pour tous les utilisateurs

    J’ai créé ce fichier: /etc/profile.d/pycharm_alias.sh 

     startPyCharm() {...
    
    }
    
    alias py=startPyCharm
     

    J’ai redémarré le PC, mais l’alias n’est pas disponible:

     ===> alias
    ...empty
     

    Si je me connecte au PC via ssh, l’alias est disponible:

     ===> ssh [email protected]
    ..
    [email protected]:~# alias
    alias py='startPyCharm'
     

    Comment rendre un alias disponible pour tous les utilisateurs d’un système Ubuntu Linux?

    Nous utilisons le shell bash.

    Meilleure réponse

  • Vous pouvez essayer de mettre cela /etc/bash.bashrc . Son objectif déclaré est # System-wide .bashrc file for interactive bash(1) shells. 

  • Ubuntu – Comment revenir de .bashrc s’il n’est pas exécuté de manière interactive

    J’ai deux déclarations de retour de ~/.bashrc si le shell n’est pas interactif, probablement à partir de deux versions d’Ubuntu, mais je ne peux pas reconstruire laquelle est la plus récente (et je suppose donc mieux) et je suis intéressé par l’effet des différentes approches:

     # If not running interactively, don't do anything
    [ -z "$PS1" ] && return
     

    contre.

     # If not running interactively, don't do anything
    case $- in
        *i*) ;;
          *) return;;
    esac
     

    Meilleure réponse

  • Selon le Bash Hackers Wiki, la méthode la plus fiable est de vérifier l’existence du i lettre dans la variable $- (votre deuxième méthode).

    Il existe des moyens plus propres de mettre en œuvre cette action, comme suit:

     [[ $- == *i* ]] || return
     

  • Ubuntu – Conserver $ OLDPWD entre les sessions shell

    Souvent, je quitte le terminal et le lendemain je le relance. Ensuite, je veux pouvoir revenir rapidement au dernier répertoire de travail.

    J’aimerais le faire en utilisant cd - comme d’habitude. Mais $OLDPWD n’est pas conservé entre les sessions terminales.

    J’ai donc ajouté un alias pour exit pour écrire pwd dans un fichier et lisez-le au prochain démarrage.

     alias exit='pwd > ~/.lwd && exit;'
    test -f ~/.lwd && export OLDPWD=`head -1 ~/.lwd`
     

    Cela fonctionne parfaitement pour exit .

    Comment puis-je créer le même alias (ou créer un piège) pour Ctrl+D  ?

    Meilleure réponse

  • Utilisation trap ajouter un gestionnaire pour EXIT :

     trap 'pwd > ~/.lwd' EXIT
     

    Cela devrait gérer à la fois exit 

  • Ubuntu – Où est définie la variable PATH

    J’essaie de définir ma variable de chemin d’accès pour ressembler à ceci:

     /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jgrande/android-sdk-linux/platform-tools:/usr/lib/jvm/java-7-openjdk-amd64/bin/:/usr/lib/jvm/java-7-openjdk-amd64/jre/bin
     

    Et pour certaines raisons, quel que soit le fichier que je modifie, la variable finit toujours par ressembler à ceci (avec le chemin java se répétant plusieurs fois):

     PATH=/usr/local/java/jdk1.7.0_79/bin:/home/jgrande/bin:/usr/local/java/jdk1.7.0_79/bin:/home/jgrande/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/java/jdk1.7.0_79/bin:/usr/local/java/jdk1.7.0_79/jre/bin:/usr/local/java/jdk1.7.0_79/bin:/usr/local/java/jdk1.7.0_79/jre/bin
     

    J’ai essayé de modifier mes données personnelles .bashrc et .profile aussi bien que /etc/environment ,  /etc/bash.bashrc ,  /etc/profile et placez-le dans /etc/profile.d . Maintenant, il y a jdk.sh dans /etc/profile.d où la variable PATH est identique à celle incorrecte que j’ai publiée ci-dessus. Cependant, j’ai essayé de commenter la ligne et même de supprimer jdk.sh tout à fait et cela n’a toujours pas résolu le problème.

    Sinon, j’ai remarqué que si je me connecte en tant qu’un autre utilisateur, j’aurai la bonne variable PATH, et je n’aurai pas la foireuse avec java répété plusieurs fois.

    Donc, je me demandais, où pourrait-on définir ma variable PATH que je n’ai pas encore vérifiée?

    Meilleure réponse

  • Le CHEMIN peut être défini dans l’un des différents fichiers lus par bash au démarrage. Pour les trouver tous, exécutez ceci:

     grep --color -H 'PATH=' ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login \
                         ~/.bash_aliases /etc/bash.bashrc /etc/profile \
                         /etc/profile.d/* /etc/environment 2> /dev/null
     

    Ce sont les standards. Si vous recherchez également d’autres fichiers à partir de l’un de ceux-ci, les choses peuvent devenir plus complexes.

    Quoi qu’il en soit, pour y remédier – en supposant que vous n’avez rien fait aux fichiers globaux dans /etc/ —Vous pouvez exécuter ceci:

     sed -i '/PATH=/d' ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login ~/.bash_aliases 
     

    Cela supprimera tout paramètre de ligne PATH à partir de ces fichiers. Maintenant, ajoutez le bon au bon endroit:

     pp='PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jgrande/android-sdk-linux/platform-tools:/usr/lib/jvm/java-7-openjdk-amd64/bin/:/usr/lib/jvm/java-7-openjdk-amd64/jre/bin'
    [[ -e '~/.bash_profile' ]] && echo "$pp" >> ~/bash_profile ||
                                  echo "$pp" >> ~/.profile
     

    Lorsqu’il est appelé en tant que shell de connexion, bash lit .bash_profile s’il est présent et, sinon, il indique ~/.profile (il ignorera .profile si .bash_login est présent mais je suppose que ce n’est pas le cas). Ainsi, les commandes ci-dessus enregistreront d’abord le chemin souhaité comme $pp puis vérifiez si un ~/.bash_profile existe, ajoutez-y la définition du chemin si c’est le cas et, si ce n’est pas le cas, il l’ajoutera à ~/.profile .

    À l’avenir, pour éviter ce type de problème, utilisez une fonction pour ajouter des répertoires à votre $PATH . Ajoutez ces lignes à votre ~/.profile :

     pathmunge () 
    { 
        if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)"; then
            if [ "$2" = "after" ]; then
                PATH=$PATH:$1;
            else
                PATH=$1:$PATH;
            fi;
        fi
    }
     

    Ensuite, pour ajouter quelque chose au début de votre $PATH , ajoutez cette ligne à ~/.profile :

     pathmunge "/path/to/foo"
     

    Et pour l’ajouter à la fin:

     pathmunge "/path/to/foo" after
     

    La fonction n’ajoutera qu’un nouveau répertoire à la $PATH 

  • Ubuntu – Ajouter un binaire au chemin

    J’ai un exécutable. Je veux exécuter l’exécutable dans le terminal avec un nom uniquement comme les autres commandes.

    Je peux mettre mon exécutable dans /usr/local/bin ou je pourrais ajouter son PATH à ~/.bashrc . Les deux fonctionneront.

    Qu’est-ce qui est mieux? Y a-t-il une différence?

    Meilleure réponse

  • Par exemple, laissez-moi supposer que vous avez un exécutable myscript . Vous devez l’exécuter à partir d’un terminal,

     /path/to/myscript
     

    Changement de niveau utilisateur

    Si vous ajoutez le PATH de cet exécutable à ~/.bashrc , vous pouvez exécuter l’exécutable avec un nom uniquement de n’importe où (Avinash Raj déjà mentionné), comme

     myscript
     

    Mais le changement sera affecté dansniveau de l’utilisateur. Cela signifie que si vous avez un ou plusieurs autres utilisateurs, ils ne peuvent pas accéder à l’exécutable avec un nom uniquement. S’ils ont l’autorisation appropriée, ils doivent exécuter l’exécutable en tant que,

     /path/to/myscript
     

    De plus, vous ne pourrez pas exécuter le script en tant quesudocar il n’est pas PATH de racine, pour exécuter en tant que sudo vous devez utiliser,

     sudo /path/to/myscript
     

    changement de niveau du système

    Si vous mettez votre script dans /usr/local/bin il est accessible à l’échelle du système et pour tous les utilisateurs. Dans ce cas, tout utilisateur peut exécuter votre exécutable en tant que (sous réserve des autorisations appropriées)

     myscript
     

    Dans ce cas, vous pouvez exécuter l’exécutable en tant que sudo aussi comme,

     sudo myscript